From 9800298eeba529f428ff05e71f4ac6421a5566a2 Mon Sep 17 00:00:00 2001 From: aramalipoor Date: Thu, 22 Sep 2022 14:55:08 +0200 Subject: [PATCH] chore: update to latest contracts --- package-lock.json | 12 ++++++------ packages/registry/package-lock.json | 14 +++++++------- packages/registry/src/build-info.json | 2 +- packages/registry/src/facets.json | 2 +- packages/registry/src/registry-mapping.json | 2 +- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index 31590ae43..84b0bb844 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3966,9 +3966,9 @@ } }, "node_modules/@flair-sdk/contracts": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@flair-sdk/contracts/-/contracts-2.2.0.tgz", - "integrity": "sha512-enBa23gdWQEIjCLG938EXPUxYwzum7D+wE248AEquC9ulARep8cf0xmvkCDOdivDNko+WXXjh/XcWRkeZoeb4A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@flair-sdk/contracts/-/contracts-2.3.0.tgz", + "integrity": "sha512-cuH3Dcz1Yv8Ht3MZS/uyoXalVbOGh3A2QcWrh3Jm+ErB1a2t5OJsZteq6vE6+bTccOrh+l867Dbj4g3EQ7IIDQ==", "dependencies": { "@a16z/contracts": "^0.0.8", "@manifoldxyz/royalty-registry-solidity": "^1.0.9", @@ -54108,9 +54108,9 @@ } }, "@flair-sdk/contracts": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@flair-sdk/contracts/-/contracts-2.2.0.tgz", - "integrity": "sha512-enBa23gdWQEIjCLG938EXPUxYwzum7D+wE248AEquC9ulARep8cf0xmvkCDOdivDNko+WXXjh/XcWRkeZoeb4A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@flair-sdk/contracts/-/contracts-2.3.0.tgz", + "integrity": "sha512-cuH3Dcz1Yv8Ht3MZS/uyoXalVbOGh3A2QcWrh3Jm+ErB1a2t5OJsZteq6vE6+bTccOrh+l867Dbj4g3EQ7IIDQ==", "requires": { "@a16z/contracts": "^0.0.8", "@manifoldxyz/royalty-registry-solidity": "^1.0.9", diff --git a/packages/registry/package-lock.json b/packages/registry/package-lock.json index 1f5950657..6d7cd32a3 100644 --- a/packages/registry/package-lock.json +++ b/packages/registry/package-lock.json @@ -6,7 +6,7 @@ "packages": { "": { "name": "@flair-sdk/registry", - "version": "2.2.0", + "version": "2.2.1", "dependencies": { "flair-contracts-v1": "npm:@0xflair/evm-contracts@1.*", "flair-contracts-v2": "npm:@flair-sdk/contracts@2.*" @@ -5497,9 +5497,9 @@ }, "node_modules/flair-contracts-v2": { "name": "@flair-sdk/contracts", - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@flair-sdk/contracts/-/contracts-2.2.0.tgz", - "integrity": "sha512-enBa23gdWQEIjCLG938EXPUxYwzum7D+wE248AEquC9ulARep8cf0xmvkCDOdivDNko+WXXjh/XcWRkeZoeb4A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@flair-sdk/contracts/-/contracts-2.3.0.tgz", + "integrity": "sha512-cuH3Dcz1Yv8Ht3MZS/uyoXalVbOGh3A2QcWrh3Jm+ErB1a2t5OJsZteq6vE6+bTccOrh+l867Dbj4g3EQ7IIDQ==", "dependencies": { "@a16z/contracts": "^0.0.8", "@manifoldxyz/royalty-registry-solidity": "^1.0.9", @@ -9615,9 +9615,9 @@ } }, "flair-contracts-v2": { - "version": "npm:@flair-sdk/contracts@2.2.0", - "resolved": "https://registry.npmjs.org/@flair-sdk/contracts/-/contracts-2.2.0.tgz", - "integrity": "sha512-enBa23gdWQEIjCLG938EXPUxYwzum7D+wE248AEquC9ulARep8cf0xmvkCDOdivDNko+WXXjh/XcWRkeZoeb4A==", + "version": "npm:@flair-sdk/contracts@2.3.0", + "resolved": "https://registry.npmjs.org/@flair-sdk/contracts/-/contracts-2.3.0.tgz", + "integrity": "sha512-cuH3Dcz1Yv8Ht3MZS/uyoXalVbOGh3A2QcWrh3Jm+ErB1a2t5OJsZteq6vE6+bTccOrh+l867Dbj4g3EQ7IIDQ==", "requires": { "@a16z/contracts": "^0.0.8", "@manifoldxyz/royalty-registry-solidity": "^1.0.9", diff --git a/packages/registry/src/build-info.json b/packages/registry/src/build-info.json index 1853580c9..b1c7913f3 100644 --- a/packages/registry/src/build-info.json +++ b/packages/registry/src/build-info.json @@ -1 +1 @@ -{"v1":{"compilerVersion":"v0.8.15+commit.e14f2714","solcInput":{"language":"Solidity","sources":{"contracts/collections/ERC721/extensions/ERC721AutoIdMinterExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/math/SafeMath.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"./ERC721CollectionMetadataExtension.sol\";\n\ninterface IERC721AutoIdMinterExtension {\n function setMaxSupply(uint256 newValue) external;\n\n function freezeMaxSupply() external;\n\n function totalSupply() external view returns (uint256);\n}\n\n/**\n * @dev Extension to add minting capability with an auto incremented ID for each token and a maximum supply setting.\n */\nabstract contract ERC721AutoIdMinterExtension is\n IERC721AutoIdMinterExtension,\n ERC721CollectionMetadataExtension\n{\n using SafeMath for uint256;\n\n uint256 public maxSupply;\n bool public maxSupplyFrozen;\n\n uint256 internal _currentTokenId = 0;\n\n function __ERC721AutoIdMinterExtension_init(uint256 _maxSupply)\n internal\n onlyInitializing\n {\n __ERC721AutoIdMinterExtension_init_unchained(_maxSupply);\n }\n\n function __ERC721AutoIdMinterExtension_init_unchained(uint256 _maxSupply)\n internal\n onlyInitializing\n {\n maxSupply = _maxSupply;\n\n _registerInterface(type(IERC721AutoIdMinterExtension).interfaceId);\n _registerInterface(type(IERC721).interfaceId);\n }\n\n /* ADMIN */\n\n function setMaxSupply(uint256 newValue) public virtual override onlyOwner {\n require(!maxSupplyFrozen, \"FROZEN\");\n require(newValue >= totalSupply(), \"LOWER_THAN_SUPPLY\");\n maxSupply = newValue;\n }\n\n function freezeMaxSupply() external onlyOwner {\n maxSupplyFrozen = true;\n }\n\n /* PUBLIC */\n\n function totalSupply() public view returns (uint256) {\n return _currentTokenId;\n }\n\n /* INTERNAL */\n\n function _mintTo(address to, uint256 count) internal {\n require(totalSupply() + count <= maxSupply, \"EXCEEDS_SUPPLY\");\n\n for (uint256 i = 0; i < count; i++) {\n uint256 newTokenId = _currentTokenId;\n _safeMint(to, newTokenId);\n _incrementTokenId();\n }\n }\n\n /**\n * Increments the value of _currentTokenId\n */\n function _incrementTokenId() internal {\n _currentTokenId++;\n }\n}\n"},"contracts/collections/ERC721/extensions/ERC721CollectionMetadataExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\";\n\ninterface IERC721CollectionMetadataExtension {\n function setContractURI(string memory newValue) external;\n\n function contractURI() external view returns (string memory);\n}\n\n/**\n * @dev Extension to allow configuring contract-level collection metadata URI.\n */\nabstract contract ERC721CollectionMetadataExtension is\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721\n{\n string private _name;\n\n string private _symbol;\n\n string private _contractURI;\n\n function __ERC721CollectionMetadataExtension_init(\n string memory name_,\n string memory symbol_,\n string memory contractURI_\n ) internal onlyInitializing {\n __ERC721CollectionMetadataExtension_init_unchained(\n name_,\n symbol_,\n contractURI_\n );\n }\n\n function __ERC721CollectionMetadataExtension_init_unchained(\n string memory name_,\n string memory symbol_,\n string memory contractURI_\n ) internal onlyInitializing {\n _name = name_;\n _symbol = symbol_;\n _contractURI = contractURI_;\n\n _registerInterface(\n type(IERC721CollectionMetadataExtension).interfaceId\n );\n _registerInterface(type(IERC721).interfaceId);\n _registerInterface(type(IERC721Metadata).interfaceId);\n }\n\n /* ADMIN */\n\n function setContractURI(string memory newValue) external onlyOwner {\n _contractURI = newValue;\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n function contractURI() public view returns (string memory) {\n return _contractURI;\n }\n}\n"},"@openzeppelin/contracts/access/Ownable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n constructor() {\n _transferOwnership(_msgSender());\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions anymore. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby removing any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n"},"@openzeppelin/contracts/proxy/utils/Initializable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../../utils/Address.sol\";\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * contract MyToken is ERC20Upgradeable {\n * function initialize() initializer public {\n * __ERC20_init(\"MyToken\", \"MTK\");\n * }\n * }\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n * function initializeV2() reinitializer(2) public {\n * __ERC20Permit_init(\"MyToken\");\n * }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n * _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n /**\n * @dev Indicates that the contract has been initialized.\n * @custom:oz-retyped-from bool\n */\n uint8 private _initialized;\n\n /**\n * @dev Indicates that the contract is in the process of being initialized.\n */\n bool private _initializing;\n\n /**\n * @dev Triggered when the contract has been initialized or reinitialized.\n */\n event Initialized(uint8 version);\n\n /**\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n * `onlyInitializing` functions can be used to initialize parent contracts. Equivalent to `reinitializer(1)`.\n */\n modifier initializer() {\n bool isTopLevelCall = !_initializing;\n require(\n (isTopLevelCall && _initialized < 1) || (!Address.isContract(address(this)) && _initialized == 1),\n \"Initializable: contract is already initialized\"\n );\n _initialized = 1;\n if (isTopLevelCall) {\n _initializing = true;\n }\n _;\n if (isTopLevelCall) {\n _initializing = false;\n emit Initialized(1);\n }\n }\n\n /**\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n * used to initialize parent contracts.\n *\n * `initializer` is equivalent to `reinitializer(1)`, so a reinitializer may be used after the original\n * initialization step. This is essential to configure modules that are added through upgrades and that require\n * initialization.\n *\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n * a contract, executing them in the right order is up to the developer or operator.\n */\n modifier reinitializer(uint8 version) {\n require(!_initializing && _initialized < version, \"Initializable: contract is already initialized\");\n _initialized = version;\n _initializing = true;\n _;\n _initializing = false;\n emit Initialized(version);\n }\n\n /**\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\n */\n modifier onlyInitializing() {\n require(_initializing, \"Initializable: contract is not initializing\");\n _;\n }\n\n /**\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n * through proxies.\n */\n function _disableInitializers() internal virtual {\n require(!_initializing, \"Initializable: contract is initializing\");\n if (_initialized < type(uint8).max) {\n _initialized = type(uint8).max;\n emit Initialized(type(uint8).max);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/math/SafeMath.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol)\n\npragma solidity ^0.8.0;\n\n// CAUTION\n// This version of SafeMath should only be used with Solidity 0.8 or later,\n// because it relies on the compiler's built in overflow checks.\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations.\n *\n * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler\n * now has built in overflow checking.\n */\nlibrary SafeMath {\n /**\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n uint256 c = a + b;\n if (c < a) return (false, 0);\n return (true, c);\n }\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */\n function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n if (b > a) return (false, 0);\n return (true, a - b);\n }\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */\n function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n // benefit is lost if 'b' is also tested.\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n if (a == 0) return (true, 0);\n uint256 c = a * b;\n if (c / a != b) return (false, 0);\n return (true, c);\n }\n }\n\n /**\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\n *\n * _Available since v3.4._\n */\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n if (b == 0) return (false, 0);\n return (true, a / b);\n }\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n *\n * _Available since v3.4._\n */\n function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n if (b == 0) return (false, 0);\n return (true, a % b);\n }\n }\n\n /**\n * @dev Returns the addition of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `+` operator.\n *\n * Requirements:\n *\n * - Addition cannot overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n return a + b;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n return a - b;\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `*` operator.\n *\n * Requirements:\n *\n * - Multiplication cannot overflow.\n */\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n return a * b;\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers, reverting on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator.\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\n return a / b;\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * reverting when dividing by zero.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n return a % b;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n * overflow (when the result is negative).\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {trySub}.\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(\n uint256 a,\n uint256 b,\n string memory errorMessage\n ) internal pure returns (uint256) {\n unchecked {\n require(b <= a, errorMessage);\n return a - b;\n }\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers, reverting with custom message on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function div(\n uint256 a,\n uint256 b,\n string memory errorMessage\n ) internal pure returns (uint256) {\n unchecked {\n require(b > 0, errorMessage);\n return a / b;\n }\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * reverting with custom message when dividing by zero.\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {tryMod}.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function mod(\n uint256 a,\n uint256 b,\n string memory errorMessage\n ) internal pure returns (uint256) {\n unchecked {\n require(b > 0, errorMessage);\n return a % b;\n }\n }\n}\n"},"@openzeppelin/contracts/token/ERC721/ERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC721.sol\";\nimport \"./IERC721Receiver.sol\";\nimport \"./extensions/IERC721Metadata.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/Context.sol\";\nimport \"../../utils/Strings.sol\";\nimport \"../../utils/introspection/ERC165.sol\";\n\n/**\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\n * {ERC721Enumerable}.\n */\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\n using Address for address;\n using Strings for uint256;\n\n // Token name\n string private _name;\n\n // Token symbol\n string private _symbol;\n\n // Mapping from token ID to owner address\n mapping(uint256 => address) private _owners;\n\n // Mapping owner address to token count\n mapping(address => uint256) private _balances;\n\n // Mapping from token ID to approved address\n mapping(uint256 => address) private _tokenApprovals;\n\n // Mapping from owner to operator approvals\n mapping(address => mapping(address => bool)) private _operatorApprovals;\n\n /**\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\n return\n interfaceId == type(IERC721).interfaceId ||\n interfaceId == type(IERC721Metadata).interfaceId ||\n super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev See {IERC721-balanceOf}.\n */\n function balanceOf(address owner) public view virtual override returns (uint256) {\n require(owner != address(0), \"ERC721: address zero is not a valid owner\");\n return _balances[owner];\n }\n\n /**\n * @dev See {IERC721-ownerOf}.\n */\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\n address owner = _owners[tokenId];\n require(owner != address(0), \"ERC721: invalid token ID\");\n return owner;\n }\n\n /**\n * @dev See {IERC721Metadata-name}.\n */\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n /**\n * @dev See {IERC721Metadata-symbol}.\n */\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev See {IERC721Metadata-tokenURI}.\n */\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n _requireMinted(tokenId);\n\n string memory baseURI = _baseURI();\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \"\";\n }\n\n /**\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n * by default, can be overridden in child contracts.\n */\n function _baseURI() internal view virtual returns (string memory) {\n return \"\";\n }\n\n /**\n * @dev See {IERC721-approve}.\n */\n function approve(address to, uint256 tokenId) public virtual override {\n address owner = ERC721.ownerOf(tokenId);\n require(to != owner, \"ERC721: approval to current owner\");\n\n require(\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\n \"ERC721: approve caller is not token owner nor approved for all\"\n );\n\n _approve(to, tokenId);\n }\n\n /**\n * @dev See {IERC721-getApproved}.\n */\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\n _requireMinted(tokenId);\n\n return _tokenApprovals[tokenId];\n }\n\n /**\n * @dev See {IERC721-setApprovalForAll}.\n */\n function setApprovalForAll(address operator, bool approved) public virtual override {\n _setApprovalForAll(_msgSender(), operator, approved);\n }\n\n /**\n * @dev See {IERC721-isApprovedForAll}.\n */\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\n return _operatorApprovals[owner][operator];\n }\n\n /**\n * @dev See {IERC721-transferFrom}.\n */\n function transferFrom(\n address from,\n address to,\n uint256 tokenId\n ) public virtual override {\n //solhint-disable-next-line max-line-length\n require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: caller is not token owner nor approved\");\n\n _transfer(from, to, tokenId);\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId\n ) public virtual override {\n safeTransferFrom(from, to, tokenId, \"\");\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId,\n bytes memory data\n ) public virtual override {\n require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: caller is not token owner nor approved\");\n _safeTransfer(from, to, tokenId, data);\n }\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n *\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\n *\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n * implement alternative mechanisms to perform token transfer, such as signature-based.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeTransfer(\n address from,\n address to,\n uint256 tokenId,\n bytes memory data\n ) internal virtual {\n _transfer(from, to, tokenId);\n require(_checkOnERC721Received(from, to, tokenId, data), \"ERC721: transfer to non ERC721Receiver implementer\");\n }\n\n /**\n * @dev Returns whether `tokenId` exists.\n *\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n *\n * Tokens start existing when they are minted (`_mint`),\n * and stop existing when they are burned (`_burn`).\n */\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\n return _owners[tokenId] != address(0);\n }\n\n /**\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\n address owner = ERC721.ownerOf(tokenId);\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\n }\n\n /**\n * @dev Safely mints `tokenId` and transfers it to `to`.\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeMint(address to, uint256 tokenId) internal virtual {\n _safeMint(to, tokenId, \"\");\n }\n\n /**\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n */\n function _safeMint(\n address to,\n uint256 tokenId,\n bytes memory data\n ) internal virtual {\n _mint(to, tokenId);\n require(\n _checkOnERC721Received(address(0), to, tokenId, data),\n \"ERC721: transfer to non ERC721Receiver implementer\"\n );\n }\n\n /**\n * @dev Mints `tokenId` and transfers it to `to`.\n *\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - `to` cannot be the zero address.\n *\n * Emits a {Transfer} event.\n */\n function _mint(address to, uint256 tokenId) internal virtual {\n require(to != address(0), \"ERC721: mint to the zero address\");\n require(!_exists(tokenId), \"ERC721: token already minted\");\n\n _beforeTokenTransfer(address(0), to, tokenId);\n\n _balances[to] += 1;\n _owners[tokenId] = to;\n\n emit Transfer(address(0), to, tokenId);\n\n _afterTokenTransfer(address(0), to, tokenId);\n }\n\n /**\n * @dev Destroys `tokenId`.\n * The approval is cleared when the token is burned.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n *\n * Emits a {Transfer} event.\n */\n function _burn(uint256 tokenId) internal virtual {\n address owner = ERC721.ownerOf(tokenId);\n\n _beforeTokenTransfer(owner, address(0), tokenId);\n\n // Clear approvals\n _approve(address(0), tokenId);\n\n _balances[owner] -= 1;\n delete _owners[tokenId];\n\n emit Transfer(owner, address(0), tokenId);\n\n _afterTokenTransfer(owner, address(0), tokenId);\n }\n\n /**\n * @dev Transfers `tokenId` from `from` to `to`.\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n *\n * Emits a {Transfer} event.\n */\n function _transfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual {\n require(ERC721.ownerOf(tokenId) == from, \"ERC721: transfer from incorrect owner\");\n require(to != address(0), \"ERC721: transfer to the zero address\");\n\n _beforeTokenTransfer(from, to, tokenId);\n\n // Clear approvals from the previous owner\n _approve(address(0), tokenId);\n\n _balances[from] -= 1;\n _balances[to] += 1;\n _owners[tokenId] = to;\n\n emit Transfer(from, to, tokenId);\n\n _afterTokenTransfer(from, to, tokenId);\n }\n\n /**\n * @dev Approve `to` to operate on `tokenId`\n *\n * Emits an {Approval} event.\n */\n function _approve(address to, uint256 tokenId) internal virtual {\n _tokenApprovals[tokenId] = to;\n emit Approval(ERC721.ownerOf(tokenId), to, tokenId);\n }\n\n /**\n * @dev Approve `operator` to operate on all of `owner` tokens\n *\n * Emits an {ApprovalForAll} event.\n */\n function _setApprovalForAll(\n address owner,\n address operator,\n bool approved\n ) internal virtual {\n require(owner != operator, \"ERC721: approve to caller\");\n _operatorApprovals[owner][operator] = approved;\n emit ApprovalForAll(owner, operator, approved);\n }\n\n /**\n * @dev Reverts if the `tokenId` has not been minted yet.\n */\n function _requireMinted(uint256 tokenId) internal view virtual {\n require(_exists(tokenId), \"ERC721: invalid token ID\");\n }\n\n /**\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n * The call is not executed if the target address is not a contract.\n *\n * @param from address representing the previous owner of the given token ID\n * @param to target address that will receive the tokens\n * @param tokenId uint256 ID of the token to be transferred\n * @param data bytes optional data to send along with the call\n * @return bool whether the call correctly returned the expected magic value\n */\n function _checkOnERC721Received(\n address from,\n address to,\n uint256 tokenId,\n bytes memory data\n ) private returns (bool) {\n if (to.isContract()) {\n try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\n return retval == IERC721Receiver.onERC721Received.selector;\n } catch (bytes memory reason) {\n if (reason.length == 0) {\n revert(\"ERC721: transfer to non ERC721Receiver implementer\");\n } else {\n /// @solidity memory-safe-assembly\n assembly {\n revert(add(32, reason), mload(reason))\n }\n }\n }\n } else {\n return true;\n }\n }\n\n /**\n * @dev Hook that is called before any token transfer. This includes minting\n * and burning.\n *\n * Calling conditions:\n *\n * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n * transferred to `to`.\n * - When `from` is zero, `tokenId` will be minted for `to`.\n * - When `to` is zero, ``from``'s `tokenId` will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual {}\n\n /**\n * @dev Hook that is called after any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _afterTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual {}\n}\n"},"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165Storage.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./ERC165.sol\";\n\n/**\n * @dev Storage based implementation of the {IERC165} interface.\n *\n * Contracts may inherit from this and call {_registerInterface} to declare\n * their support of an interface.\n */\nabstract contract ERC165Storage is ERC165 {\n /**\n * @dev Mapping of interface ids to whether or not it's supported.\n */\n mapping(bytes4 => bool) private _supportedInterfaces;\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return super.supportsInterface(interfaceId) || _supportedInterfaces[interfaceId];\n }\n\n /**\n * @dev Registers the contract as an implementer of the interface defined by\n * `interfaceId`. Support of the actual ERC165 interface is automatic and\n * registering its interface id is not required.\n *\n * See {IERC165-supportsInterface}.\n *\n * Requirements:\n *\n * - `interfaceId` cannot be the ERC165 invalid interface (`0xffffffff`).\n */\n function _registerInterface(bytes4 interfaceId) internal virtual {\n require(interfaceId != 0xffffffff, \"ERC165: invalid interface id\");\n _supportedInterfaces[interfaceId] = true;\n }\n}\n"},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Metadata is IERC721 {\n /**\n * @dev Returns the token collection name.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the token collection symbol.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\n */\n function tokenURI(uint256 tokenId) external view returns (string memory);\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n}\n"},"@openzeppelin/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCall(target, data, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n require(isContract(target), \"Address: call to non-contract\");\n\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n require(isContract(target), \"Address: static call to non-contract\");\n\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(isContract(target), \"Address: delegate call to non-contract\");\n\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n }\n}\n"},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n *\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\n */\nabstract contract ERC165 is IERC165 {\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IERC165).interfaceId;\n }\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"@openzeppelin/contracts/utils/Strings.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n bytes16 private constant _HEX_SYMBOLS = \"0123456789abcdef\";\n uint8 private constant _ADDRESS_LENGTH = 20;\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n */\n function toString(uint256 value) internal pure returns (string memory) {\n // Inspired by OraclizeAPI's implementation - MIT licence\n // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\n\n if (value == 0) {\n return \"0\";\n }\n uint256 temp = value;\n uint256 digits;\n while (temp != 0) {\n digits++;\n temp /= 10;\n }\n bytes memory buffer = new bytes(digits);\n while (value != 0) {\n digits -= 1;\n buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\n value /= 10;\n }\n return string(buffer);\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n */\n function toHexString(uint256 value) internal pure returns (string memory) {\n if (value == 0) {\n return \"0x00\";\n }\n uint256 temp = value;\n uint256 length = 0;\n while (temp != 0) {\n length++;\n temp >>= 8;\n }\n return toHexString(value, length);\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n */\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n bytes memory buffer = new bytes(2 * length + 2);\n buffer[0] = \"0\";\n buffer[1] = \"x\";\n for (uint256 i = 2 * length + 1; i > 1; --i) {\n buffer[i] = _HEX_SYMBOLS[value & 0xf];\n value >>= 4;\n }\n require(value == 0, \"Strings: hex length insufficient\");\n return string(buffer);\n }\n\n /**\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\n */\n function toHexString(address addr) internal pure returns (string memory) {\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\n }\n}\n"},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC721 compliant contract.\n */\ninterface IERC721 is IERC165 {\n /**\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\n */\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\n\n /**\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\n */\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\n\n /**\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\n */\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n /**\n * @dev Returns the number of tokens in ``owner``'s account.\n */\n function balanceOf(address owner) external view returns (uint256 balance);\n\n /**\n * @dev Returns the owner of the `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function ownerOf(uint256 tokenId) external view returns (address owner);\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId,\n bytes calldata data\n ) external;\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId\n ) external;\n\n /**\n * @dev Transfers `tokenId` token from `from` to `to`.\n *\n * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address from,\n address to,\n uint256 tokenId\n ) external;\n\n /**\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\n * The approval is cleared when the token is transferred.\n *\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n *\n * Requirements:\n *\n * - The caller must own the token or be an approved operator.\n * - `tokenId` must exist.\n *\n * Emits an {Approval} event.\n */\n function approve(address to, uint256 tokenId) external;\n\n /**\n * @dev Approve or remove `operator` as an operator for the caller.\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n *\n * Requirements:\n *\n * - The `operator` cannot be the caller.\n *\n * Emits an {ApprovalForAll} event.\n */\n function setApprovalForAll(address operator, bool _approved) external;\n\n /**\n * @dev Returns the account approved for `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function getApproved(uint256 tokenId) external view returns (address operator);\n\n /**\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n *\n * See {setApprovalForAll}\n */\n function isApprovedForAll(address owner, address operator) external view returns (bool);\n}\n"},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title ERC721 token receiver interface\n * @dev Interface for any contract that wants to support safeTransfers\n * from ERC721 asset contracts.\n */\ninterface IERC721Receiver {\n /**\n * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n * by `operator` from `from`, this function is called.\n *\n * It must return its Solidity selector to confirm the token transfer.\n * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n *\n * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\n */\n function onERC721Received(\n address operator,\n address from,\n uint256 tokenId,\n bytes calldata data\n ) external returns (bytes4);\n}\n"},"contracts/collections/ERC721A/extensions/ERC721AMinterExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\nimport \"@openzeppelin/contracts/utils/math/SafeMath.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"erc721a/contracts/ERC721A.sol\";\n\nimport {IERC721AutoIdMinterExtension} from \"../../ERC721/extensions/ERC721AutoIdMinterExtension.sol\";\n\nimport \"./ERC721ACollectionMetadataExtension.sol\";\n\n/**\n * @dev Extension to add minting capability with an auto incremented ID for each token and a maximum supply setting.\n */\nabstract contract ERC721AMinterExtension is ERC721ACollectionMetadataExtension {\n using SafeMath for uint256;\n\n uint256 public maxSupply;\n bool public maxSupplyFrozen;\n\n function __ERC721AMinterExtension_init(uint256 _maxSupply)\n internal\n onlyInitializing\n {\n __ERC721AMinterExtension_init_unchained(_maxSupply);\n }\n\n function __ERC721AMinterExtension_init_unchained(uint256 _maxSupply)\n internal\n onlyInitializing\n {\n maxSupply = _maxSupply;\n\n _registerInterface(type(IERC721AutoIdMinterExtension).interfaceId);\n _registerInterface(type(IERC721).interfaceId);\n _registerInterface(type(IERC721A).interfaceId);\n }\n\n /* ADMIN */\n\n function setMaxSupply(uint256 newValue) public virtual onlyOwner {\n require(!maxSupplyFrozen, \"BASE_URI_FROZEN\");\n require(newValue >= totalSupply(), \"LOWER_THAN_SUPPLY\");\n maxSupply = newValue;\n }\n\n function freezeMaxSupply() external onlyOwner {\n maxSupplyFrozen = true;\n }\n\n /* INTERNAL */\n\n function _mintTo(address to, uint256 count) internal {\n require(totalSupply() + count <= maxSupply, \"EXCEEDS_SUPPLY\");\n _safeMint(to, count);\n }\n}\n"},"contracts/collections/ERC721A/extensions/ERC721ACollectionMetadataExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\";\n\nimport \"erc721a/contracts/ERC721A.sol\";\n\nimport {IERC721CollectionMetadataExtension} from \"../../ERC721/extensions/ERC721CollectionMetadataExtension.sol\";\n\n/**\n * @dev Extension to allow configuring contract-level collection metadata URI.\n */\nabstract contract ERC721ACollectionMetadataExtension is\n IERC721CollectionMetadataExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721A\n{\n string private _name;\n\n string private _symbol;\n\n string private _contractURI;\n\n function __ERC721ACollectionMetadataExtension_init(\n string memory name_,\n string memory symbol_,\n string memory contractURI_\n ) internal onlyInitializing {\n __ERC721ACollectionMetadataExtension_init_unchained(\n name_,\n symbol_,\n contractURI_\n );\n }\n\n function __ERC721ACollectionMetadataExtension_init_unchained(\n string memory name_,\n string memory symbol_,\n string memory contractURI_\n ) internal onlyInitializing {\n _name = name_;\n _symbol = symbol_;\n _contractURI = contractURI_;\n\n _registerInterface(\n type(IERC721CollectionMetadataExtension).interfaceId\n );\n _registerInterface(type(IERC721).interfaceId);\n _registerInterface(type(IERC721A).interfaceId);\n _registerInterface(type(IERC721Metadata).interfaceId);\n }\n\n /* ADMIN */\n\n function setContractURI(string memory newValue) external onlyOwner {\n _contractURI = newValue;\n }\n\n /* PUBLIC */\n\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721A)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function contractURI() public view returns (string memory) {\n return _contractURI;\n }\n}\n"},"erc721a/contracts/ERC721A.sol":{"content":"// SPDX-License-Identifier: MIT\n// ERC721A Contracts v4.2.2\n// Creator: Chiru Labs\n\npragma solidity ^0.8.4;\n\nimport './IERC721A.sol';\n\n/**\n * @dev Interface of ERC721 token receiver.\n */\ninterface ERC721A__IERC721Receiver {\n function onERC721Received(\n address operator,\n address from,\n uint256 tokenId,\n bytes calldata data\n ) external returns (bytes4);\n}\n\n/**\n * @title ERC721A\n *\n * @dev Implementation of the [ERC721](https://eips.ethereum.org/EIPS/eip-721)\n * Non-Fungible Token Standard, including the Metadata extension.\n * Optimized for lower gas during batch mints.\n *\n * Token IDs are minted in sequential order (e.g. 0, 1, 2, 3, ...)\n * starting from `_startTokenId()`.\n *\n * Assumptions:\n *\n * - An owner cannot have more than 2**64 - 1 (max value of uint64) of supply.\n * - The maximum token ID cannot exceed 2**256 - 1 (max value of uint256).\n */\ncontract ERC721A is IERC721A {\n // Reference type for token approval.\n struct TokenApprovalRef {\n address value;\n }\n\n // =============================================================\n // CONSTANTS\n // =============================================================\n\n // Mask of an entry in packed address data.\n uint256 private constant _BITMASK_ADDRESS_DATA_ENTRY = (1 << 64) - 1;\n\n // The bit position of `numberMinted` in packed address data.\n uint256 private constant _BITPOS_NUMBER_MINTED = 64;\n\n // The bit position of `numberBurned` in packed address data.\n uint256 private constant _BITPOS_NUMBER_BURNED = 128;\n\n // The bit position of `aux` in packed address data.\n uint256 private constant _BITPOS_AUX = 192;\n\n // Mask of all 256 bits in packed address data except the 64 bits for `aux`.\n uint256 private constant _BITMASK_AUX_COMPLEMENT = (1 << 192) - 1;\n\n // The bit position of `startTimestamp` in packed ownership.\n uint256 private constant _BITPOS_START_TIMESTAMP = 160;\n\n // The bit mask of the `burned` bit in packed ownership.\n uint256 private constant _BITMASK_BURNED = 1 << 224;\n\n // The bit position of the `nextInitialized` bit in packed ownership.\n uint256 private constant _BITPOS_NEXT_INITIALIZED = 225;\n\n // The bit mask of the `nextInitialized` bit in packed ownership.\n uint256 private constant _BITMASK_NEXT_INITIALIZED = 1 << 225;\n\n // The bit position of `extraData` in packed ownership.\n uint256 private constant _BITPOS_EXTRA_DATA = 232;\n\n // Mask of all 256 bits in a packed ownership except the 24 bits for `extraData`.\n uint256 private constant _BITMASK_EXTRA_DATA_COMPLEMENT = (1 << 232) - 1;\n\n // The mask of the lower 160 bits for addresses.\n uint256 private constant _BITMASK_ADDRESS = (1 << 160) - 1;\n\n // The maximum `quantity` that can be minted with {_mintERC2309}.\n // This limit is to prevent overflows on the address data entries.\n // For a limit of 5000, a total of 3.689e15 calls to {_mintERC2309}\n // is required to cause an overflow, which is unrealistic.\n uint256 private constant _MAX_MINT_ERC2309_QUANTITY_LIMIT = 5000;\n\n // The `Transfer` event signature is given by:\n // `keccak256(bytes(\"Transfer(address,address,uint256)\"))`.\n bytes32 private constant _TRANSFER_EVENT_SIGNATURE =\n 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef;\n\n // =============================================================\n // STORAGE\n // =============================================================\n\n // The next token ID to be minted.\n uint256 private _currentIndex;\n\n // The number of tokens burned.\n uint256 private _burnCounter;\n\n // Token name\n string private _name;\n\n // Token symbol\n string private _symbol;\n\n // Mapping from token ID to ownership details\n // An empty struct value does not necessarily mean the token is unowned.\n // See {_packedOwnershipOf} implementation for details.\n //\n // Bits Layout:\n // - [0..159] `addr`\n // - [160..223] `startTimestamp`\n // - [224] `burned`\n // - [225] `nextInitialized`\n // - [232..255] `extraData`\n mapping(uint256 => uint256) private _packedOwnerships;\n\n // Mapping owner address to address data.\n //\n // Bits Layout:\n // - [0..63] `balance`\n // - [64..127] `numberMinted`\n // - [128..191] `numberBurned`\n // - [192..255] `aux`\n mapping(address => uint256) private _packedAddressData;\n\n // Mapping from token ID to approved address.\n mapping(uint256 => TokenApprovalRef) private _tokenApprovals;\n\n // Mapping from owner to operator approvals\n mapping(address => mapping(address => bool)) private _operatorApprovals;\n\n // =============================================================\n // CONSTRUCTOR\n // =============================================================\n\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n _currentIndex = _startTokenId();\n }\n\n // =============================================================\n // TOKEN COUNTING OPERATIONS\n // =============================================================\n\n /**\n * @dev Returns the starting token ID.\n * To change the starting token ID, please override this function.\n */\n function _startTokenId() internal view virtual returns (uint256) {\n return 0;\n }\n\n /**\n * @dev Returns the next token ID to be minted.\n */\n function _nextTokenId() internal view virtual returns (uint256) {\n return _currentIndex;\n }\n\n /**\n * @dev Returns the total number of tokens in existence.\n * Burned tokens will reduce the count.\n * To get the total number of tokens minted, please see {_totalMinted}.\n */\n function totalSupply() public view virtual override returns (uint256) {\n // Counter underflow is impossible as _burnCounter cannot be incremented\n // more than `_currentIndex - _startTokenId()` times.\n unchecked {\n return _currentIndex - _burnCounter - _startTokenId();\n }\n }\n\n /**\n * @dev Returns the total amount of tokens minted in the contract.\n */\n function _totalMinted() internal view virtual returns (uint256) {\n // Counter underflow is impossible as `_currentIndex` does not decrement,\n // and it is initialized to `_startTokenId()`.\n unchecked {\n return _currentIndex - _startTokenId();\n }\n }\n\n /**\n * @dev Returns the total number of tokens burned.\n */\n function _totalBurned() internal view virtual returns (uint256) {\n return _burnCounter;\n }\n\n // =============================================================\n // ADDRESS DATA OPERATIONS\n // =============================================================\n\n /**\n * @dev Returns the number of tokens in `owner`'s account.\n */\n function balanceOf(address owner) public view virtual override returns (uint256) {\n if (owner == address(0)) revert BalanceQueryForZeroAddress();\n return _packedAddressData[owner] & _BITMASK_ADDRESS_DATA_ENTRY;\n }\n\n /**\n * Returns the number of tokens minted by `owner`.\n */\n function _numberMinted(address owner) internal view returns (uint256) {\n return (_packedAddressData[owner] >> _BITPOS_NUMBER_MINTED) & _BITMASK_ADDRESS_DATA_ENTRY;\n }\n\n /**\n * Returns the number of tokens burned by or on behalf of `owner`.\n */\n function _numberBurned(address owner) internal view returns (uint256) {\n return (_packedAddressData[owner] >> _BITPOS_NUMBER_BURNED) & _BITMASK_ADDRESS_DATA_ENTRY;\n }\n\n /**\n * Returns the auxiliary data for `owner`. (e.g. number of whitelist mint slots used).\n */\n function _getAux(address owner) internal view returns (uint64) {\n return uint64(_packedAddressData[owner] >> _BITPOS_AUX);\n }\n\n /**\n * Sets the auxiliary data for `owner`. (e.g. number of whitelist mint slots used).\n * If there are multiple variables, please pack them into a uint64.\n */\n function _setAux(address owner, uint64 aux) internal virtual {\n uint256 packed = _packedAddressData[owner];\n uint256 auxCasted;\n // Cast `aux` with assembly to avoid redundant masking.\n assembly {\n auxCasted := aux\n }\n packed = (packed & _BITMASK_AUX_COMPLEMENT) | (auxCasted << _BITPOS_AUX);\n _packedAddressData[owner] = packed;\n }\n\n // =============================================================\n // IERC165\n // =============================================================\n\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30000 gas.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n // The interface IDs are constants representing the first 4 bytes\n // of the XOR of all function selectors in the interface.\n // See: [ERC165](https://eips.ethereum.org/EIPS/eip-165)\n // (e.g. `bytes4(i.functionA.selector ^ i.functionB.selector ^ ...)`)\n return\n interfaceId == 0x01ffc9a7 || // ERC165 interface ID for ERC165.\n interfaceId == 0x80ac58cd || // ERC165 interface ID for ERC721.\n interfaceId == 0x5b5e139f; // ERC165 interface ID for ERC721Metadata.\n }\n\n // =============================================================\n // IERC721Metadata\n // =============================================================\n\n /**\n * @dev Returns the token collection name.\n */\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the token collection symbol.\n */\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\n */\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n if (!_exists(tokenId)) revert URIQueryForNonexistentToken();\n\n string memory baseURI = _baseURI();\n return bytes(baseURI).length != 0 ? string(abi.encodePacked(baseURI, _toString(tokenId))) : '';\n }\n\n /**\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n * by default, it can be overridden in child contracts.\n */\n function _baseURI() internal view virtual returns (string memory) {\n return '';\n }\n\n // =============================================================\n // OWNERSHIPS OPERATIONS\n // =============================================================\n\n /**\n * @dev Returns the owner of the `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\n return address(uint160(_packedOwnershipOf(tokenId)));\n }\n\n /**\n * @dev Gas spent here starts off proportional to the maximum mint batch size.\n * It gradually moves to O(1) as tokens get transferred around over time.\n */\n function _ownershipOf(uint256 tokenId) internal view virtual returns (TokenOwnership memory) {\n return _unpackedOwnership(_packedOwnershipOf(tokenId));\n }\n\n /**\n * @dev Returns the unpacked `TokenOwnership` struct at `index`.\n */\n function _ownershipAt(uint256 index) internal view virtual returns (TokenOwnership memory) {\n return _unpackedOwnership(_packedOwnerships[index]);\n }\n\n /**\n * @dev Initializes the ownership slot minted at `index` for efficiency purposes.\n */\n function _initializeOwnershipAt(uint256 index) internal virtual {\n if (_packedOwnerships[index] == 0) {\n _packedOwnerships[index] = _packedOwnershipOf(index);\n }\n }\n\n /**\n * Returns the packed ownership data of `tokenId`.\n */\n function _packedOwnershipOf(uint256 tokenId) private view returns (uint256) {\n uint256 curr = tokenId;\n\n unchecked {\n if (_startTokenId() <= curr)\n if (curr < _currentIndex) {\n uint256 packed = _packedOwnerships[curr];\n // If not burned.\n if (packed & _BITMASK_BURNED == 0) {\n // Invariant:\n // There will always be an initialized ownership slot\n // (i.e. `ownership.addr != address(0) && ownership.burned == false`)\n // before an unintialized ownership slot\n // (i.e. `ownership.addr == address(0) && ownership.burned == false`)\n // Hence, `curr` will not underflow.\n //\n // We can directly compare the packed value.\n // If the address is zero, packed will be zero.\n while (packed == 0) {\n packed = _packedOwnerships[--curr];\n }\n return packed;\n }\n }\n }\n revert OwnerQueryForNonexistentToken();\n }\n\n /**\n * @dev Returns the unpacked `TokenOwnership` struct from `packed`.\n */\n function _unpackedOwnership(uint256 packed) private pure returns (TokenOwnership memory ownership) {\n ownership.addr = address(uint160(packed));\n ownership.startTimestamp = uint64(packed >> _BITPOS_START_TIMESTAMP);\n ownership.burned = packed & _BITMASK_BURNED != 0;\n ownership.extraData = uint24(packed >> _BITPOS_EXTRA_DATA);\n }\n\n /**\n * @dev Packs ownership data into a single uint256.\n */\n function _packOwnershipData(address owner, uint256 flags) private view returns (uint256 result) {\n assembly {\n // Mask `owner` to the lower 160 bits, in case the upper bits somehow aren't clean.\n owner := and(owner, _BITMASK_ADDRESS)\n // `owner | (block.timestamp << _BITPOS_START_TIMESTAMP) | flags`.\n result := or(owner, or(shl(_BITPOS_START_TIMESTAMP, timestamp()), flags))\n }\n }\n\n /**\n * @dev Returns the `nextInitialized` flag set if `quantity` equals 1.\n */\n function _nextInitializedFlag(uint256 quantity) private pure returns (uint256 result) {\n // For branchless setting of the `nextInitialized` flag.\n assembly {\n // `(quantity == 1) << _BITPOS_NEXT_INITIALIZED`.\n result := shl(_BITPOS_NEXT_INITIALIZED, eq(quantity, 1))\n }\n }\n\n // =============================================================\n // APPROVAL OPERATIONS\n // =============================================================\n\n /**\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\n * The approval is cleared when the token is transferred.\n *\n * Only a single account can be approved at a time, so approving the\n * zero address clears previous approvals.\n *\n * Requirements:\n *\n * - The caller must own the token or be an approved operator.\n * - `tokenId` must exist.\n *\n * Emits an {Approval} event.\n */\n function approve(address to, uint256 tokenId) public virtual override {\n address owner = ownerOf(tokenId);\n\n if (_msgSenderERC721A() != owner)\n if (!isApprovedForAll(owner, _msgSenderERC721A())) {\n revert ApprovalCallerNotOwnerNorApproved();\n }\n\n _tokenApprovals[tokenId].value = to;\n emit Approval(owner, to, tokenId);\n }\n\n /**\n * @dev Returns the account approved for `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\n if (!_exists(tokenId)) revert ApprovalQueryForNonexistentToken();\n\n return _tokenApprovals[tokenId].value;\n }\n\n /**\n * @dev Approve or remove `operator` as an operator for the caller.\n * Operators can call {transferFrom} or {safeTransferFrom}\n * for any token owned by the caller.\n *\n * Requirements:\n *\n * - The `operator` cannot be the caller.\n *\n * Emits an {ApprovalForAll} event.\n */\n function setApprovalForAll(address operator, bool approved) public virtual override {\n if (operator == _msgSenderERC721A()) revert ApproveToCaller();\n\n _operatorApprovals[_msgSenderERC721A()][operator] = approved;\n emit ApprovalForAll(_msgSenderERC721A(), operator, approved);\n }\n\n /**\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n *\n * See {setApprovalForAll}.\n */\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\n return _operatorApprovals[owner][operator];\n }\n\n /**\n * @dev Returns whether `tokenId` exists.\n *\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n *\n * Tokens start existing when they are minted. See {_mint}.\n */\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\n return\n _startTokenId() <= tokenId &&\n tokenId < _currentIndex && // If within bounds,\n _packedOwnerships[tokenId] & _BITMASK_BURNED == 0; // and not burned.\n }\n\n /**\n * @dev Returns whether `msgSender` is equal to `approvedAddress` or `owner`.\n */\n function _isSenderApprovedOrOwner(\n address approvedAddress,\n address owner,\n address msgSender\n ) private pure returns (bool result) {\n assembly {\n // Mask `owner` to the lower 160 bits, in case the upper bits somehow aren't clean.\n owner := and(owner, _BITMASK_ADDRESS)\n // Mask `msgSender` to the lower 160 bits, in case the upper bits somehow aren't clean.\n msgSender := and(msgSender, _BITMASK_ADDRESS)\n // `msgSender == owner || msgSender == approvedAddress`.\n result := or(eq(msgSender, owner), eq(msgSender, approvedAddress))\n }\n }\n\n /**\n * @dev Returns the storage slot and value for the approved address of `tokenId`.\n */\n function _getApprovedSlotAndAddress(uint256 tokenId)\n private\n view\n returns (uint256 approvedAddressSlot, address approvedAddress)\n {\n TokenApprovalRef storage tokenApproval = _tokenApprovals[tokenId];\n // The following is equivalent to `approvedAddress = _tokenApprovals[tokenId]`.\n assembly {\n approvedAddressSlot := tokenApproval.slot\n approvedAddress := sload(approvedAddressSlot)\n }\n }\n\n // =============================================================\n // TRANSFER OPERATIONS\n // =============================================================\n\n /**\n * @dev Transfers `tokenId` from `from` to `to`.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token\n * by either {approve} or {setApprovalForAll}.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address from,\n address to,\n uint256 tokenId\n ) public virtual override {\n uint256 prevOwnershipPacked = _packedOwnershipOf(tokenId);\n\n if (address(uint160(prevOwnershipPacked)) != from) revert TransferFromIncorrectOwner();\n\n (uint256 approvedAddressSlot, address approvedAddress) = _getApprovedSlotAndAddress(tokenId);\n\n // The nested ifs save around 20+ gas over a compound boolean condition.\n if (!_isSenderApprovedOrOwner(approvedAddress, from, _msgSenderERC721A()))\n if (!isApprovedForAll(from, _msgSenderERC721A())) revert TransferCallerNotOwnerNorApproved();\n\n if (to == address(0)) revert TransferToZeroAddress();\n\n _beforeTokenTransfers(from, to, tokenId, 1);\n\n // Clear approvals from the previous owner.\n assembly {\n if approvedAddress {\n // This is equivalent to `delete _tokenApprovals[tokenId]`.\n sstore(approvedAddressSlot, 0)\n }\n }\n\n // Underflow of the sender's balance is impossible because we check for\n // ownership above and the recipient's balance can't realistically overflow.\n // Counter overflow is incredibly unrealistic as `tokenId` would have to be 2**256.\n unchecked {\n // We can directly increment and decrement the balances.\n --_packedAddressData[from]; // Updates: `balance -= 1`.\n ++_packedAddressData[to]; // Updates: `balance += 1`.\n\n // Updates:\n // - `address` to the next owner.\n // - `startTimestamp` to the timestamp of transfering.\n // - `burned` to `false`.\n // - `nextInitialized` to `true`.\n _packedOwnerships[tokenId] = _packOwnershipData(\n to,\n _BITMASK_NEXT_INITIALIZED | _nextExtraData(from, to, prevOwnershipPacked)\n );\n\n // If the next slot may not have been initialized (i.e. `nextInitialized == false`) .\n if (prevOwnershipPacked & _BITMASK_NEXT_INITIALIZED == 0) {\n uint256 nextTokenId = tokenId + 1;\n // If the next slot's address is zero and not burned (i.e. packed value is zero).\n if (_packedOwnerships[nextTokenId] == 0) {\n // If the next slot is within bounds.\n if (nextTokenId != _currentIndex) {\n // Initialize the next slot to maintain correctness for `ownerOf(tokenId + 1)`.\n _packedOwnerships[nextTokenId] = prevOwnershipPacked;\n }\n }\n }\n }\n\n emit Transfer(from, to, tokenId);\n _afterTokenTransfers(from, to, tokenId, 1);\n }\n\n /**\n * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId\n ) public virtual override {\n safeTransferFrom(from, to, tokenId, '');\n }\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token\n * by either {approve} or {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement\n * {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId,\n bytes memory _data\n ) public virtual override {\n transferFrom(from, to, tokenId);\n if (to.code.length != 0)\n if (!_checkContractOnERC721Received(from, to, tokenId, _data)) {\n revert TransferToNonERC721ReceiverImplementer();\n }\n }\n\n /**\n * @dev Hook that is called before a set of serially-ordered token IDs\n * are about to be transferred. This includes minting.\n * And also called before burning one token.\n *\n * `startTokenId` - the first token ID to be transferred.\n * `quantity` - the amount to be transferred.\n *\n * Calling conditions:\n *\n * - When `from` and `to` are both non-zero, `from`'s `tokenId` will be\n * transferred to `to`.\n * - When `from` is zero, `tokenId` will be minted for `to`.\n * - When `to` is zero, `tokenId` will be burned by `from`.\n * - `from` and `to` are never both zero.\n */\n function _beforeTokenTransfers(\n address from,\n address to,\n uint256 startTokenId,\n uint256 quantity\n ) internal virtual {}\n\n /**\n * @dev Hook that is called after a set of serially-ordered token IDs\n * have been transferred. This includes minting.\n * And also called after one token has been burned.\n *\n * `startTokenId` - the first token ID to be transferred.\n * `quantity` - the amount to be transferred.\n *\n * Calling conditions:\n *\n * - When `from` and `to` are both non-zero, `from`'s `tokenId` has been\n * transferred to `to`.\n * - When `from` is zero, `tokenId` has been minted for `to`.\n * - When `to` is zero, `tokenId` has been burned by `from`.\n * - `from` and `to` are never both zero.\n */\n function _afterTokenTransfers(\n address from,\n address to,\n uint256 startTokenId,\n uint256 quantity\n ) internal virtual {}\n\n /**\n * @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target contract.\n *\n * `from` - Previous owner of the given token ID.\n * `to` - Target address that will receive the token.\n * `tokenId` - Token ID to be transferred.\n * `_data` - Optional data to send along with the call.\n *\n * Returns whether the call correctly returned the expected magic value.\n */\n function _checkContractOnERC721Received(\n address from,\n address to,\n uint256 tokenId,\n bytes memory _data\n ) private returns (bool) {\n try ERC721A__IERC721Receiver(to).onERC721Received(_msgSenderERC721A(), from, tokenId, _data) returns (\n bytes4 retval\n ) {\n return retval == ERC721A__IERC721Receiver(to).onERC721Received.selector;\n } catch (bytes memory reason) {\n if (reason.length == 0) {\n revert TransferToNonERC721ReceiverImplementer();\n } else {\n assembly {\n revert(add(32, reason), mload(reason))\n }\n }\n }\n }\n\n // =============================================================\n // MINT OPERATIONS\n // =============================================================\n\n /**\n * @dev Mints `quantity` tokens and transfers them to `to`.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - `quantity` must be greater than 0.\n *\n * Emits a {Transfer} event for each mint.\n */\n function _mint(address to, uint256 quantity) internal virtual {\n uint256 startTokenId = _currentIndex;\n if (quantity == 0) revert MintZeroQuantity();\n\n _beforeTokenTransfers(address(0), to, startTokenId, quantity);\n\n // Overflows are incredibly unrealistic.\n // `balance` and `numberMinted` have a maximum limit of 2**64.\n // `tokenId` has a maximum limit of 2**256.\n unchecked {\n // Updates:\n // - `balance += quantity`.\n // - `numberMinted += quantity`.\n //\n // We can directly add to the `balance` and `numberMinted`.\n _packedAddressData[to] += quantity * ((1 << _BITPOS_NUMBER_MINTED) | 1);\n\n // Updates:\n // - `address` to the owner.\n // - `startTimestamp` to the timestamp of minting.\n // - `burned` to `false`.\n // - `nextInitialized` to `quantity == 1`.\n _packedOwnerships[startTokenId] = _packOwnershipData(\n to,\n _nextInitializedFlag(quantity) | _nextExtraData(address(0), to, 0)\n );\n\n uint256 toMasked;\n uint256 end = startTokenId + quantity;\n\n // Use assembly to loop and emit the `Transfer` event for gas savings.\n assembly {\n // Mask `to` to the lower 160 bits, in case the upper bits somehow aren't clean.\n toMasked := and(to, _BITMASK_ADDRESS)\n // Emit the `Transfer` event.\n log4(\n 0, // Start of data (0, since no data).\n 0, // End of data (0, since no data).\n _TRANSFER_EVENT_SIGNATURE, // Signature.\n 0, // `address(0)`.\n toMasked, // `to`.\n startTokenId // `tokenId`.\n )\n\n for {\n let tokenId := add(startTokenId, 1)\n } iszero(eq(tokenId, end)) {\n tokenId := add(tokenId, 1)\n } {\n // Emit the `Transfer` event. Similar to above.\n log4(0, 0, _TRANSFER_EVENT_SIGNATURE, 0, toMasked, tokenId)\n }\n }\n if (toMasked == 0) revert MintToZeroAddress();\n\n _currentIndex = end;\n }\n _afterTokenTransfers(address(0), to, startTokenId, quantity);\n }\n\n /**\n * @dev Mints `quantity` tokens and transfers them to `to`.\n *\n * This function is intended for efficient minting only during contract creation.\n *\n * It emits only one {ConsecutiveTransfer} as defined in\n * [ERC2309](https://eips.ethereum.org/EIPS/eip-2309),\n * instead of a sequence of {Transfer} event(s).\n *\n * Calling this function outside of contract creation WILL make your contract\n * non-compliant with the ERC721 standard.\n * For full ERC721 compliance, substituting ERC721 {Transfer} event(s) with the ERC2309\n * {ConsecutiveTransfer} event is only permissible during contract creation.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - `quantity` must be greater than 0.\n *\n * Emits a {ConsecutiveTransfer} event.\n */\n function _mintERC2309(address to, uint256 quantity) internal virtual {\n uint256 startTokenId = _currentIndex;\n if (to == address(0)) revert MintToZeroAddress();\n if (quantity == 0) revert MintZeroQuantity();\n if (quantity > _MAX_MINT_ERC2309_QUANTITY_LIMIT) revert MintERC2309QuantityExceedsLimit();\n\n _beforeTokenTransfers(address(0), to, startTokenId, quantity);\n\n // Overflows are unrealistic due to the above check for `quantity` to be below the limit.\n unchecked {\n // Updates:\n // - `balance += quantity`.\n // - `numberMinted += quantity`.\n //\n // We can directly add to the `balance` and `numberMinted`.\n _packedAddressData[to] += quantity * ((1 << _BITPOS_NUMBER_MINTED) | 1);\n\n // Updates:\n // - `address` to the owner.\n // - `startTimestamp` to the timestamp of minting.\n // - `burned` to `false`.\n // - `nextInitialized` to `quantity == 1`.\n _packedOwnerships[startTokenId] = _packOwnershipData(\n to,\n _nextInitializedFlag(quantity) | _nextExtraData(address(0), to, 0)\n );\n\n emit ConsecutiveTransfer(startTokenId, startTokenId + quantity - 1, address(0), to);\n\n _currentIndex = startTokenId + quantity;\n }\n _afterTokenTransfers(address(0), to, startTokenId, quantity);\n }\n\n /**\n * @dev Safely mints `quantity` tokens and transfers them to `to`.\n *\n * Requirements:\n *\n * - If `to` refers to a smart contract, it must implement\n * {IERC721Receiver-onERC721Received}, which is called for each safe transfer.\n * - `quantity` must be greater than 0.\n *\n * See {_mint}.\n *\n * Emits a {Transfer} event for each mint.\n */\n function _safeMint(\n address to,\n uint256 quantity,\n bytes memory _data\n ) internal virtual {\n _mint(to, quantity);\n\n unchecked {\n if (to.code.length != 0) {\n uint256 end = _currentIndex;\n uint256 index = end - quantity;\n do {\n if (!_checkContractOnERC721Received(address(0), to, index++, _data)) {\n revert TransferToNonERC721ReceiverImplementer();\n }\n } while (index < end);\n // Reentrancy protection.\n if (_currentIndex != end) revert();\n }\n }\n }\n\n /**\n * @dev Equivalent to `_safeMint(to, quantity, '')`.\n */\n function _safeMint(address to, uint256 quantity) internal virtual {\n _safeMint(to, quantity, '');\n }\n\n // =============================================================\n // BURN OPERATIONS\n // =============================================================\n\n /**\n * @dev Equivalent to `_burn(tokenId, false)`.\n */\n function _burn(uint256 tokenId) internal virtual {\n _burn(tokenId, false);\n }\n\n /**\n * @dev Destroys `tokenId`.\n * The approval is cleared when the token is burned.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n *\n * Emits a {Transfer} event.\n */\n function _burn(uint256 tokenId, bool approvalCheck) internal virtual {\n uint256 prevOwnershipPacked = _packedOwnershipOf(tokenId);\n\n address from = address(uint160(prevOwnershipPacked));\n\n (uint256 approvedAddressSlot, address approvedAddress) = _getApprovedSlotAndAddress(tokenId);\n\n if (approvalCheck) {\n // The nested ifs save around 20+ gas over a compound boolean condition.\n if (!_isSenderApprovedOrOwner(approvedAddress, from, _msgSenderERC721A()))\n if (!isApprovedForAll(from, _msgSenderERC721A())) revert TransferCallerNotOwnerNorApproved();\n }\n\n _beforeTokenTransfers(from, address(0), tokenId, 1);\n\n // Clear approvals from the previous owner.\n assembly {\n if approvedAddress {\n // This is equivalent to `delete _tokenApprovals[tokenId]`.\n sstore(approvedAddressSlot, 0)\n }\n }\n\n // Underflow of the sender's balance is impossible because we check for\n // ownership above and the recipient's balance can't realistically overflow.\n // Counter overflow is incredibly unrealistic as `tokenId` would have to be 2**256.\n unchecked {\n // Updates:\n // - `balance -= 1`.\n // - `numberBurned += 1`.\n //\n // We can directly decrement the balance, and increment the number burned.\n // This is equivalent to `packed -= 1; packed += 1 << _BITPOS_NUMBER_BURNED;`.\n _packedAddressData[from] += (1 << _BITPOS_NUMBER_BURNED) - 1;\n\n // Updates:\n // - `address` to the last owner.\n // - `startTimestamp` to the timestamp of burning.\n // - `burned` to `true`.\n // - `nextInitialized` to `true`.\n _packedOwnerships[tokenId] = _packOwnershipData(\n from,\n (_BITMASK_BURNED | _BITMASK_NEXT_INITIALIZED) | _nextExtraData(from, address(0), prevOwnershipPacked)\n );\n\n // If the next slot may not have been initialized (i.e. `nextInitialized == false`) .\n if (prevOwnershipPacked & _BITMASK_NEXT_INITIALIZED == 0) {\n uint256 nextTokenId = tokenId + 1;\n // If the next slot's address is zero and not burned (i.e. packed value is zero).\n if (_packedOwnerships[nextTokenId] == 0) {\n // If the next slot is within bounds.\n if (nextTokenId != _currentIndex) {\n // Initialize the next slot to maintain correctness for `ownerOf(tokenId + 1)`.\n _packedOwnerships[nextTokenId] = prevOwnershipPacked;\n }\n }\n }\n }\n\n emit Transfer(from, address(0), tokenId);\n _afterTokenTransfers(from, address(0), tokenId, 1);\n\n // Overflow not possible, as _burnCounter cannot be exceed _currentIndex times.\n unchecked {\n _burnCounter++;\n }\n }\n\n // =============================================================\n // EXTRA DATA OPERATIONS\n // =============================================================\n\n /**\n * @dev Directly sets the extra data for the ownership data `index`.\n */\n function _setExtraDataAt(uint256 index, uint24 extraData) internal virtual {\n uint256 packed = _packedOwnerships[index];\n if (packed == 0) revert OwnershipNotInitializedForExtraData();\n uint256 extraDataCasted;\n // Cast `extraData` with assembly to avoid redundant masking.\n assembly {\n extraDataCasted := extraData\n }\n packed = (packed & _BITMASK_EXTRA_DATA_COMPLEMENT) | (extraDataCasted << _BITPOS_EXTRA_DATA);\n _packedOwnerships[index] = packed;\n }\n\n /**\n * @dev Called during each token transfer to set the 24bit `extraData` field.\n * Intended to be overridden by the cosumer contract.\n *\n * `previousExtraData` - the value of `extraData` before transfer.\n *\n * Calling conditions:\n *\n * - When `from` and `to` are both non-zero, `from`'s `tokenId` will be\n * transferred to `to`.\n * - When `from` is zero, `tokenId` will be minted for `to`.\n * - When `to` is zero, `tokenId` will be burned by `from`.\n * - `from` and `to` are never both zero.\n */\n function _extraData(\n address from,\n address to,\n uint24 previousExtraData\n ) internal view virtual returns (uint24) {}\n\n /**\n * @dev Returns the next extra data for the packed ownership data.\n * The returned result is shifted into position.\n */\n function _nextExtraData(\n address from,\n address to,\n uint256 prevOwnershipPacked\n ) private view returns (uint256) {\n uint24 extraData = uint24(prevOwnershipPacked >> _BITPOS_EXTRA_DATA);\n return uint256(_extraData(from, to, extraData)) << _BITPOS_EXTRA_DATA;\n }\n\n // =============================================================\n // OTHER OPERATIONS\n // =============================================================\n\n /**\n * @dev Returns the message sender (defaults to `msg.sender`).\n *\n * If you are writing GSN compatible contracts, you need to override this function.\n */\n function _msgSenderERC721A() internal view virtual returns (address) {\n return msg.sender;\n }\n\n /**\n * @dev Converts a uint256 to its ASCII string decimal representation.\n */\n function _toString(uint256 value) internal pure virtual returns (string memory str) {\n assembly {\n // The maximum value of a uint256 contains 78 digits (1 byte per digit),\n // but we allocate 0x80 bytes to keep the free memory pointer 32-byte word aliged.\n // We will need 1 32-byte word to store the length,\n // and 3 32-byte words to store a maximum of 78 digits. Total: 0x20 + 3 * 0x20 = 0x80.\n str := add(mload(0x40), 0x80)\n // Update the free memory pointer to allocate.\n mstore(0x40, str)\n\n // Cache the end of the memory to calculate the length later.\n let end := str\n\n // We write the string from rightmost digit to leftmost digit.\n // The following is essentially a do-while loop that also handles the zero case.\n // prettier-ignore\n for { let temp := value } 1 {} {\n str := sub(str, 1)\n // Write the character to the pointer.\n // The ASCII index of the '0' character is 48.\n mstore8(str, add(48, mod(temp, 10)))\n // Keep dividing `temp` until zero.\n temp := div(temp, 10)\n // prettier-ignore\n if iszero(temp) { break }\n }\n\n let length := sub(end, str)\n // Move the pointer 32 bytes leftwards to make room for the length.\n str := sub(str, 0x20)\n // Store the length.\n mstore(str, length)\n }\n }\n}\n"},"erc721a/contracts/IERC721A.sol":{"content":"// SPDX-License-Identifier: MIT\n// ERC721A Contracts v4.2.2\n// Creator: Chiru Labs\n\npragma solidity ^0.8.4;\n\n/**\n * @dev Interface of ERC721A.\n */\ninterface IERC721A {\n /**\n * The caller must own the token or be an approved operator.\n */\n error ApprovalCallerNotOwnerNorApproved();\n\n /**\n * The token does not exist.\n */\n error ApprovalQueryForNonexistentToken();\n\n /**\n * The caller cannot approve to their own address.\n */\n error ApproveToCaller();\n\n /**\n * Cannot query the balance for the zero address.\n */\n error BalanceQueryForZeroAddress();\n\n /**\n * Cannot mint to the zero address.\n */\n error MintToZeroAddress();\n\n /**\n * The quantity of tokens minted must be more than zero.\n */\n error MintZeroQuantity();\n\n /**\n * The token does not exist.\n */\n error OwnerQueryForNonexistentToken();\n\n /**\n * The caller must own the token or be an approved operator.\n */\n error TransferCallerNotOwnerNorApproved();\n\n /**\n * The token must be owned by `from`.\n */\n error TransferFromIncorrectOwner();\n\n /**\n * Cannot safely transfer to a contract that does not implement the\n * ERC721Receiver interface.\n */\n error TransferToNonERC721ReceiverImplementer();\n\n /**\n * Cannot transfer to the zero address.\n */\n error TransferToZeroAddress();\n\n /**\n * The token does not exist.\n */\n error URIQueryForNonexistentToken();\n\n /**\n * The `quantity` minted with ERC2309 exceeds the safety limit.\n */\n error MintERC2309QuantityExceedsLimit();\n\n /**\n * The `extraData` cannot be set on an unintialized ownership slot.\n */\n error OwnershipNotInitializedForExtraData();\n\n // =============================================================\n // STRUCTS\n // =============================================================\n\n struct TokenOwnership {\n // The address of the owner.\n address addr;\n // Stores the start time of ownership with minimal overhead for tokenomics.\n uint64 startTimestamp;\n // Whether the token has been burned.\n bool burned;\n // Arbitrary data similar to `startTimestamp` that can be set via {_extraData}.\n uint24 extraData;\n }\n\n // =============================================================\n // TOKEN COUNTERS\n // =============================================================\n\n /**\n * @dev Returns the total number of tokens in existence.\n * Burned tokens will reduce the count.\n * To get the total number of tokens minted, please see {_totalMinted}.\n */\n function totalSupply() external view returns (uint256);\n\n // =============================================================\n // IERC165\n // =============================================================\n\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n\n // =============================================================\n // IERC721\n // =============================================================\n\n /**\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\n */\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\n\n /**\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\n */\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\n\n /**\n * @dev Emitted when `owner` enables or disables\n * (`approved`) `operator` to manage all of its assets.\n */\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n /**\n * @dev Returns the number of tokens in `owner`'s account.\n */\n function balanceOf(address owner) external view returns (uint256 balance);\n\n /**\n * @dev Returns the owner of the `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function ownerOf(uint256 tokenId) external view returns (address owner);\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`,\n * checking first that contract recipients are aware of the ERC721 protocol\n * to prevent tokens from being forever locked.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If the caller is not `from`, it must be have been allowed to move\n * this token by either {approve} or {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement\n * {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId,\n bytes calldata data\n ) external;\n\n /**\n * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId\n ) external;\n\n /**\n * @dev Transfers `tokenId` from `from` to `to`.\n *\n * WARNING: Usage of this method is discouraged, use {safeTransferFrom}\n * whenever possible.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token\n * by either {approve} or {setApprovalForAll}.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address from,\n address to,\n uint256 tokenId\n ) external;\n\n /**\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\n * The approval is cleared when the token is transferred.\n *\n * Only a single account can be approved at a time, so approving the\n * zero address clears previous approvals.\n *\n * Requirements:\n *\n * - The caller must own the token or be an approved operator.\n * - `tokenId` must exist.\n *\n * Emits an {Approval} event.\n */\n function approve(address to, uint256 tokenId) external;\n\n /**\n * @dev Approve or remove `operator` as an operator for the caller.\n * Operators can call {transferFrom} or {safeTransferFrom}\n * for any token owned by the caller.\n *\n * Requirements:\n *\n * - The `operator` cannot be the caller.\n *\n * Emits an {ApprovalForAll} event.\n */\n function setApprovalForAll(address operator, bool _approved) external;\n\n /**\n * @dev Returns the account approved for `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function getApproved(uint256 tokenId) external view returns (address operator);\n\n /**\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n *\n * See {setApprovalForAll}.\n */\n function isApprovedForAll(address owner, address operator) external view returns (bool);\n\n // =============================================================\n // IERC721Metadata\n // =============================================================\n\n /**\n * @dev Returns the token collection name.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the token collection symbol.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\n */\n function tokenURI(uint256 tokenId) external view returns (string memory);\n\n // =============================================================\n // IERC2309\n // =============================================================\n\n /**\n * @dev Emitted when tokens in `fromTokenId` to `toTokenId`\n * (inclusive) is transferred from `from` to `to`, as defined in the\n * [ERC2309](https://eips.ethereum.org/EIPS/eip-2309) standard.\n *\n * See {_mintERC2309} for more details.\n */\n event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to);\n}\n"},"contracts/collections/ERC721A/presets/ERC721ATieredSalesCollection.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\n\nimport \"../../../common/WithdrawExtension.sol\";\nimport \"../../../common/LicenseExtension.sol\";\nimport \"../../../common/meta-transactions/ERC2771ContextOwnable.sol\";\nimport \"../../ERC721/extensions/ERC721RoyaltyExtension.sol\";\nimport \"../extensions/ERC721ACollectionMetadataExtension.sol\";\nimport \"../extensions/ERC721APrefixedMetadataExtension.sol\";\nimport \"../extensions/ERC721AMinterExtension.sol\";\nimport \"../extensions/ERC721AOwnerMintExtension.sol\";\nimport \"../extensions/ERC721ATieringExtension.sol\";\nimport \"../extensions/ERC721ARoleBasedMintExtension.sol\";\nimport \"../extensions/ERC721ARoleBasedLockableExtension.sol\";\n\ncontract ERC721ATieredSalesCollection is\n Ownable,\n ERC165Storage,\n WithdrawExtension,\n LicenseExtension,\n ERC721ACollectionMetadataExtension,\n ERC721APrefixedMetadataExtension,\n ERC721AOwnerMintExtension,\n ERC721ATieringExtension,\n ERC721ARoleBasedMintExtension,\n ERC721ARoleBasedLockableExtension,\n ERC721RoyaltyExtension,\n ERC2771ContextOwnable\n{\n struct Config {\n string name;\n string symbol;\n string contractURI;\n string placeholderURI;\n string tokenURIPrefix;\n uint256 maxSupply;\n Tier[] tiers;\n address defaultRoyaltyAddress;\n uint16 defaultRoyaltyBps;\n address proceedsRecipient;\n address trustedForwarder;\n LicenseVersion licenseVersion;\n }\n\n constructor(Config memory config) ERC721A(config.name, config.symbol) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _setupRole(DEFAULT_ADMIN_ROLE, deployer);\n\n _transferOwnership(deployer);\n\n __WithdrawExtension_init(config.proceedsRecipient, WithdrawMode.ANYONE);\n __LicenseExtension_init(config.licenseVersion);\n __ERC721ACollectionMetadataExtension_init(\n config.name,\n config.symbol,\n config.contractURI\n );\n __ERC721APrefixedMetadataExtension_init(\n config.placeholderURI,\n config.tokenURIPrefix\n );\n __ERC721AMinterExtension_init(config.maxSupply);\n __ERC721AOwnerMintExtension_init();\n __ERC721ARoleBasedMintExtension_init(deployer);\n __ERC721ARoleBasedLockableExtension_init();\n __ERC721ATieringExtension_init(config.tiers);\n __ERC721RoyaltyExtension_init(\n config.defaultRoyaltyAddress,\n config.defaultRoyaltyBps\n );\n __ERC2771ContextOwnable_init(config.trustedForwarder);\n }\n\n function _msgSender()\n internal\n view\n virtual\n override(ERC2771ContextOwnable, Context)\n returns (address sender)\n {\n return ERC2771ContextOwnable._msgSender();\n }\n\n function _msgData()\n internal\n view\n virtual\n override(ERC2771ContextOwnable, Context)\n returns (bytes calldata)\n {\n return ERC2771ContextOwnable._msgData();\n }\n\n function _beforeTokenTransfers(\n address from,\n address to,\n uint256 startTokenId,\n uint256 quantity\n ) internal virtual override(ERC721A, ERC721ALockableExtension) {\n ERC721ALockableExtension._beforeTokenTransfers(\n from,\n to,\n startTokenId,\n quantity\n );\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(\n ERC165Storage,\n ERC721ACollectionMetadataExtension,\n ERC721APrefixedMetadataExtension,\n ERC721AOwnerMintExtension,\n ERC721ARoleBasedMintExtension,\n ERC721RoyaltyExtension,\n ERC721ARoleBasedLockableExtension,\n LicenseExtension\n )\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function name()\n public\n view\n override(ERC721A, ERC721ACollectionMetadataExtension)\n returns (string memory)\n {\n return ERC721ACollectionMetadataExtension.name();\n }\n\n function symbol()\n public\n view\n override(ERC721A, ERC721ACollectionMetadataExtension)\n returns (string memory)\n {\n return ERC721ACollectionMetadataExtension.symbol();\n }\n\n function tokenURI(uint256 _tokenId)\n public\n view\n virtual\n override(ERC721A, ERC721APrefixedMetadataExtension)\n returns (string memory)\n {\n return ERC721APrefixedMetadataExtension.tokenURI(_tokenId);\n }\n\n function setMaxSupply(uint256 newValue)\n public\n virtual\n override(ERC721AMinterExtension, ERC721ATieringExtension)\n onlyOwner\n {\n ERC721ATieringExtension.setMaxSupply(newValue);\n }\n}\n"},"contracts/common/WithdrawExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nenum WithdrawMode {\n OWNER,\n RECIPIENT,\n ANYONE,\n NOBODY\n}\n\ninterface IWithdrawExtension {\n function setWithdrawRecipient(address _withdrawRecipient) external;\n\n function lockWithdrawRecipient() external;\n\n function revokeWithdrawPower() external;\n\n function setWithdrawMode(WithdrawMode _withdrawMode) external;\n\n function lockWithdrawMode() external;\n\n function withdraw(\n address[] calldata claimTokens,\n uint256[] calldata amounts\n ) external;\n}\n\nabstract contract WithdrawExtension is\n IWithdrawExtension,\n Initializable,\n Ownable,\n ERC165Storage\n{\n using Address for address;\n using Address for address payable;\n\n event WithdrawPowerRevoked();\n event Withdrawn(address[] claimTokens, uint256[] amounts);\n\n address public withdrawRecipient;\n bool public withdrawRecipientLocked;\n\n bool public withdrawPowerRevoked;\n\n WithdrawMode public withdrawMode;\n bool public withdrawModeLocked;\n\n /* INTERNAL */\n\n function __WithdrawExtension_init(\n address _withdrawRecipient,\n WithdrawMode _withdrawMode\n ) internal onlyInitializing {\n __WithdrawExtension_init_unchained(_withdrawRecipient, _withdrawMode);\n }\n\n function __WithdrawExtension_init_unchained(\n address _withdrawRecipient,\n WithdrawMode _withdrawMode\n ) internal onlyInitializing {\n _registerInterface(type(IWithdrawExtension).interfaceId);\n\n withdrawRecipient = _withdrawRecipient;\n withdrawMode = _withdrawMode;\n }\n\n /* ADMIN */\n\n function setWithdrawRecipient(address _withdrawRecipient)\n external\n onlyOwner\n {\n require(!withdrawRecipientLocked, \"LOCKED\");\n withdrawRecipient = _withdrawRecipient;\n }\n\n function lockWithdrawRecipient() external onlyOwner {\n require(!withdrawRecipientLocked, \"LOCKED\");\n withdrawRecipientLocked = true;\n }\n\n function setWithdrawMode(WithdrawMode _withdrawMode) external onlyOwner {\n require(!withdrawModeLocked, \"LOCKED\");\n withdrawMode = _withdrawMode;\n }\n\n function lockWithdrawMode() external onlyOwner {\n require(!withdrawModeLocked, \"OCKED\");\n withdrawModeLocked = true;\n }\n\n /* PUBLIC */\n\n function withdraw(\n address[] calldata claimTokens,\n uint256[] calldata amounts\n ) external {\n /**\n * We are using msg.sender for smaller attack surface when evaluating\n * the sender of the function call. If in future we want to handle \"withdraw\"\n * functionality via meta transactions, we should consider using `_msgSender`\n */\n _assertWithdrawAccess(msg.sender);\n\n require(withdrawRecipient != address(0), \"WITHDRAW/NO_RECIPIENT\");\n require(!withdrawPowerRevoked, \"WITHDRAW/EMERGENCY_POWER_REVOKED\");\n\n for (uint256 i = 0; i < claimTokens.length; i++) {\n if (claimTokens[i] == address(0)) {\n payable(withdrawRecipient).sendValue(amounts[i]);\n } else {\n IERC20(claimTokens[i]).transfer(withdrawRecipient, amounts[i]);\n }\n }\n\n emit Withdrawn(claimTokens, amounts);\n }\n\n function revokeWithdrawPower() external onlyOwner {\n withdrawPowerRevoked = true;\n emit WithdrawPowerRevoked();\n }\n\n /* INTERNAL */\n\n function _assertWithdrawAccess(address account) internal view {\n if (withdrawMode == WithdrawMode.NOBODY) {\n revert(\"WITHDRAW/LOCKED\");\n } else if (withdrawMode == WithdrawMode.ANYONE) {\n return;\n } else if (withdrawMode == WithdrawMode.RECIPIENT) {\n require(withdrawRecipient == account, \"WITHDRAW/ONLY_RECIPIENT\");\n } else if (withdrawMode == WithdrawMode.OWNER) {\n require(owner() == account, \"WITHDRAW/ONLY_OWNER\");\n }\n }\n}\n"},"contracts/common/LicenseExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\nimport {LicenseVersion, CantBeEvil, ICantBeEvil} from \"@a16z/contracts/licenses/CantBeEvil.sol\";\n\ninterface ILicenseExtension {\n function setLicenseVersion(LicenseVersion licenseVersion) external;\n\n function lockLicenseVersion() external;\n}\n\n/**\n * @dev Extension to signal license for this NFT collection.\n */\nabstract contract LicenseExtension is\n ILicenseExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n CantBeEvil\n{\n bool public licenseVersionLocked;\n\n constructor() CantBeEvil(LicenseVersion.CBE_PR) {}\n\n function __LicenseExtension_init(LicenseVersion _licenseVersion)\n internal\n onlyInitializing\n {\n __LicenseExtension_init_unchained(_licenseVersion);\n }\n\n function __LicenseExtension_init_unchained(LicenseVersion _licenseVersion)\n internal\n onlyInitializing\n {\n _registerInterface(type(ILicenseExtension).interfaceId);\n _registerInterface(type(ICantBeEvil).interfaceId);\n\n licenseVersion = _licenseVersion;\n }\n\n /* ADMIN */\n\n function setLicenseVersion(LicenseVersion _licenseVersion)\n external\n override\n onlyOwner\n {\n require(!licenseVersionLocked, \"LICENSE_LOCKED\");\n licenseVersion = _licenseVersion;\n }\n\n function lockLicenseVersion() external override onlyOwner {\n licenseVersionLocked = true;\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, CantBeEvil)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n}\n"},"contracts/common/meta-transactions/ERC2771ContextOwnable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/utils/Context.sol\";\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\n/**\n * @dev Context variant with ERC2771 support.\n */\nabstract contract ERC2771ContextOwnable is Initializable, Context, Ownable {\n address public _trustedForwarder;\n\n function __ERC2771ContextOwnable_init(address trustedForwarder)\n internal\n onlyInitializing\n {\n __ERC2771ContextOwnable_init_unchained(trustedForwarder);\n }\n\n function __ERC2771ContextOwnable_init_unchained(address trustedForwarder)\n internal\n onlyInitializing\n {\n _trustedForwarder = trustedForwarder;\n }\n\n function setTrustedForwarder(address trustedForwarder) public onlyOwner {\n _trustedForwarder = trustedForwarder;\n }\n\n function isTrustedForwarder(address forwarder)\n public\n view\n virtual\n returns (bool)\n {\n return forwarder == _trustedForwarder;\n }\n\n function _msgSender()\n internal\n view\n virtual\n override\n returns (address sender)\n {\n if (isTrustedForwarder(msg.sender)) {\n // The assembly code is more direct than the Solidity version using `abi.decode`.\n assembly {\n sender := shr(96, calldataload(sub(calldatasize(), 20)))\n }\n } else {\n return super._msgSender();\n }\n }\n\n function _msgData()\n internal\n view\n virtual\n override\n returns (bytes calldata)\n {\n if (isTrustedForwarder(msg.sender)) {\n return msg.data[:msg.data.length - 20];\n } else {\n return super._msgData();\n }\n }\n}\n"},"contracts/collections/ERC721/extensions/ERC721RoyaltyExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@manifoldxyz/royalty-registry-solidity/contracts/overrides/IRoyaltyOverride.sol\";\nimport \"@manifoldxyz/royalty-registry-solidity/contracts/overrides/RoyaltyOverrideCore.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"../../../misc/rarible/IRoyalties.sol\";\nimport \"../../../misc/rarible/LibPart.sol\";\nimport \"../../../misc/rarible/LibRoyaltiesV2.sol\";\n\ninterface IERC721RoyaltyExtension {\n function setTokenRoyalties(\n IEIP2981RoyaltyOverride.TokenRoyaltyConfig[] calldata royaltyConfigs\n ) external;\n\n function setDefaultRoyalty(\n IEIP2981RoyaltyOverride.TokenRoyalty calldata royalty\n ) external;\n\n function getRaribleV2Royalties(uint256 id)\n external\n view\n returns (LibPart.Part[] memory result);\n}\n\n/**\n * @dev Extension to signal configured royalty to famous marketplaces as well as ERC2981.\n *\n * This extension currently supports Standard ERC2981, Rarible.\n * Note that OpenSea is supported via Flair metadata feature.\n */\nabstract contract ERC721RoyaltyExtension is\n IERC721RoyaltyExtension,\n IRoyalties,\n Initializable,\n Ownable,\n ERC165Storage,\n EIP2981RoyaltyOverrideCore\n{\n function __ERC721RoyaltyExtension_init(\n address defaultRoyaltyReceiver,\n uint16 defaultRoyaltyBps\n ) internal onlyInitializing {\n __ERC721RoyaltyExtension_init_unchained(\n defaultRoyaltyReceiver,\n defaultRoyaltyBps\n );\n }\n\n function __ERC721RoyaltyExtension_init_unchained(\n address defaultRoyaltyReceiver,\n uint16 defaultRoyaltyBps\n ) internal onlyInitializing {\n _registerInterface(type(IERC721RoyaltyExtension).interfaceId);\n _registerInterface(type(IEIP2981).interfaceId);\n _registerInterface(type(IEIP2981RoyaltyOverride).interfaceId);\n _registerInterface(LibRoyaltiesV2._INTERFACE_ID_ROYALTIES);\n\n TokenRoyalty memory royalty = TokenRoyalty(\n defaultRoyaltyReceiver,\n defaultRoyaltyBps\n );\n\n _setDefaultRoyalty(royalty);\n }\n\n function setTokenRoyalties(TokenRoyaltyConfig[] calldata royaltyConfigs)\n external\n override(IEIP2981RoyaltyOverride, IERC721RoyaltyExtension)\n onlyOwner\n {\n _setTokenRoyalties(royaltyConfigs);\n }\n\n function setDefaultRoyalty(TokenRoyalty calldata royalty)\n external\n override(IEIP2981RoyaltyOverride, IERC721RoyaltyExtension)\n onlyOwner\n {\n _setDefaultRoyalty(royalty);\n }\n\n function getRaribleV2Royalties(uint256 id)\n external\n view\n override(IRoyalties, IERC721RoyaltyExtension)\n returns (LibPart.Part[] memory result)\n {\n result = new LibPart.Part[](1);\n\n result[0].account = payable(defaultRoyalty.recipient);\n result[0].value = defaultRoyalty.bps;\n\n id;\n // avoid unused param warning\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, EIP2981RoyaltyOverrideCore)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n}\n"},"contracts/collections/ERC721A/extensions/ERC721APrefixedMetadataExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"erc721a/contracts/ERC721A.sol\";\n\nimport {IERC721PrefixedMetadataExtension} from \"../../ERC721/extensions/ERC721PrefixedMetadataExtension.sol\";\n\n/**\n * @dev Extension to allow configuring tokens metadata URI.\n * In this extension tokens will have a shared token URI prefix,\n * therefore on tokenURI() token's ID will be appended to the base URI.\n * It also allows configuring a fallback \"placeholder\" URI when prefix is not set yet.\n */\nabstract contract ERC721APrefixedMetadataExtension is\n IERC721PrefixedMetadataExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721A\n{\n string internal _placeholderURI;\n string internal _tokenURIPrefix;\n string internal _tokenURISuffix;\n\n bool public tokenURIFrozen;\n\n function __ERC721APrefixedMetadataExtension_init(\n string memory placeholderURI_,\n string memory tokenURIPrefix_\n ) internal onlyInitializing {\n __ERC721APrefixedMetadataExtension_init_unchained(\n placeholderURI_,\n tokenURIPrefix_\n );\n }\n\n function __ERC721APrefixedMetadataExtension_init_unchained(\n string memory placeholderURI_,\n string memory tokenURIPrefix_\n ) internal onlyInitializing {\n _placeholderURI = placeholderURI_;\n _tokenURIPrefix = tokenURIPrefix_;\n _tokenURISuffix = \".json\";\n\n _registerInterface(type(IERC721PrefixedMetadataExtension).interfaceId);\n _registerInterface(type(IERC721Metadata).interfaceId);\n }\n\n /* ADMIN */\n\n function setPlaceholderURI(string memory newValue) external onlyOwner {\n _placeholderURI = newValue;\n }\n\n function setTokenURIPrefix(string memory newValue) external onlyOwner {\n require(!tokenURIFrozen, \"FROZEN\");\n _tokenURIPrefix = newValue;\n }\n\n function setTokenURISuffix(string memory newValue) external onlyOwner {\n require(!tokenURIFrozen, \"FROZEN\");\n _tokenURISuffix = newValue;\n }\n\n function freezeTokenURI() external onlyOwner {\n tokenURIFrozen = true;\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721A)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function placeholderURI() public view returns (string memory) {\n return _placeholderURI;\n }\n\n function tokenURIPrefix() public view returns (string memory) {\n return _tokenURIPrefix;\n }\n\n function tokenURISuffix() public view returns (string memory) {\n return _tokenURISuffix;\n }\n\n function tokenURI(uint256 _tokenId)\n public\n view\n virtual\n override(ERC721A, IERC721PrefixedMetadataExtension)\n returns (string memory)\n {\n return\n bytes(_tokenURIPrefix).length > 0\n ? string(\n abi.encodePacked(\n _tokenURIPrefix,\n Strings.toString(_tokenId),\n _tokenURISuffix\n )\n )\n : _placeholderURI;\n }\n}\n"},"contracts/collections/ERC721A/extensions/ERC721AOwnerMintExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"./ERC721AMinterExtension.sol\";\n\nimport {IERC721OwnerMintExtension} from \"../../ERC721/extensions/ERC721OwnerMintExtension.sol\";\n\n/**\n * @dev Extension to allow owner to mint directly without paying.\n */\nabstract contract ERC721AOwnerMintExtension is\n IERC721OwnerMintExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721AMinterExtension\n{\n function __ERC721AOwnerMintExtension_init() internal onlyInitializing {\n __ERC721AOwnerMintExtension_init_unchained();\n }\n\n function __ERC721AOwnerMintExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721OwnerMintExtension).interfaceId);\n }\n\n /* ADMIN */\n\n function mintByOwner(address to, uint256 count) external onlyOwner {\n _mintTo(to, count);\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721ACollectionMetadataExtension)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n}\n"},"contracts/collections/ERC721A/extensions/ERC721ATieringExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport \"./ERC721AMinterExtension.sol\";\n\nimport {IERC721TieringExtension} from \"../../ERC721/extensions/ERC721TieringExtension.sol\";\n\n/**\n * @dev Extension to allow multiple tiers for minting,\n * you can configure, different minting window, price, currency, max per wallet, and allowlist per tier.\n */\nabstract contract ERC721ATieringExtension is\n IERC721TieringExtension,\n Initializable,\n Ownable,\n ERC721AMinterExtension,\n ReentrancyGuard\n{\n mapping(uint256 => Tier) public tiers;\n\n uint256 public totalReserved;\n\n mapping(uint256 => uint256) public tierMints;\n\n mapping(uint256 => mapping(address => uint256)) internal walletMinted;\n\n uint256 public reservedMints;\n\n function __ERC721ATieringExtension_init(Tier[] memory _tiers)\n internal\n onlyInitializing\n {\n __ERC721ATieringExtension_init_unchained(_tiers);\n }\n\n function __ERC721ATieringExtension_init_unchained(Tier[] memory _tiers)\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721TieringExtension).interfaceId);\n\n for (uint256 i = 0; i < _tiers.length; i++) {\n tiers[i] = _tiers[i];\n totalReserved += _tiers[i].reserved;\n }\n }\n\n /* ADMIN */\n\n function configureTiering(uint256 tierId, Tier calldata tier)\n public\n onlyOwner\n {\n require(tier.maxAllocation >= tierMints[tierId], \"LOWER_THAN_MINTED\");\n\n if (tiers[tierId].reserved > 0) {\n require(tier.reserved >= tierMints[tierId], \"LOW_RESERVE_AMOUNT\");\n }\n\n if (tierMints[tierId] > 0) {\n require(\n tier.maxPerWallet >= tiers[tierId].maxPerWallet,\n \"LOW_MAX_PER_WALLET\"\n );\n }\n\n totalReserved -= tiers[tierId].reserved;\n tiers[tierId] = tier;\n totalReserved += tier.reserved;\n\n require(totalReserved <= maxSupply, \"MAX_SUPPLY_EXCEEDED\");\n }\n\n function configureTiering(\n uint256[] calldata _tierIds,\n Tier[] calldata _tiers\n ) public onlyOwner {\n for (uint256 i = 0; i < _tierIds.length; i++) {\n configureTiering(_tierIds[i], _tiers[i]);\n }\n }\n\n /* PUBLIC */\n\n function setMaxSupply(uint256 newValue)\n public\n virtual\n override(ERC721AMinterExtension)\n onlyOwner\n {\n ERC721AMinterExtension.setMaxSupply(newValue);\n require(\n newValue - totalSupply() >= totalReserved - reservedMints,\n \"LOWER_THAN_RESERVED\"\n );\n }\n\n function onTierAllowlist(\n uint256 tierId,\n address minter,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) public view returns (bool) {\n return\n MerkleProof.verify(\n proof,\n tiers[tierId].merkleRoot,\n _generateMerkleLeaf(minter, maxAllowance)\n );\n }\n\n function eligibleForTier(\n uint256 tierId,\n address minter,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) public view returns (uint256 maxMintable) {\n require(tiers[tierId].maxPerWallet > 0, \"NOT_EXISTS\");\n require(block.timestamp >= tiers[tierId].start, \"NOT_STARTED\");\n require(block.timestamp <= tiers[tierId].end, \"ALREADY_ENDED\");\n\n maxMintable = tiers[tierId].maxPerWallet - walletMinted[tierId][minter];\n\n if (tiers[tierId].merkleRoot != bytes32(0)) {\n require(\n walletMinted[tierId][minter] < maxAllowance,\n \"MAXED_ALLOWANCE\"\n );\n require(\n onTierAllowlist(tierId, minter, maxAllowance, proof),\n \"NOT_ALLOWLISTED\"\n );\n\n uint256 remainingAllowance = maxAllowance -\n walletMinted[tierId][minter];\n\n if (maxMintable > remainingAllowance) {\n maxMintable = remainingAllowance;\n }\n }\n }\n\n function mintByTier(\n uint256 tierId,\n uint256 count,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) external payable nonReentrant {\n address minter = _msgSender();\n\n uint256 maxMintable = eligibleForTier(\n tierId,\n minter,\n maxAllowance,\n proof\n );\n\n require(count <= maxMintable, \"EXCEEDS_MAX\");\n require(count <= remainingForTier(tierId), \"EXCEEDS_ALLOCATION\");\n require(\n count + tierMints[tierId] <= tiers[tierId].maxAllocation,\n \"EXCEEDS_ALLOCATION\"\n );\n\n if (tiers[tierId].currency == address(0)) {\n require(\n tiers[tierId].price * count <= msg.value,\n \"INSUFFICIENT_AMOUNT\"\n );\n } else {\n IERC20(tiers[tierId].currency).transferFrom(\n minter,\n address(this),\n tiers[tierId].price * count\n );\n }\n\n walletMinted[tierId][minter] += count;\n tierMints[tierId] += count;\n\n if (tiers[tierId].reserved > 0) {\n reservedMints += count;\n }\n\n _mintTo(minter, count);\n }\n\n function remainingForTier(uint256 tierId)\n public\n view\n returns (uint256 tierRemaining)\n {\n // Substract all the remaining reserved spots from the total remaining supply...\n tierRemaining =\n (maxSupply - totalSupply()) -\n (totalReserved - reservedMints);\n\n // If this tier has reserved spots, add remaining spots back to result...\n if (tiers[tierId].reserved > 0) {\n tierRemaining += (tiers[tierId].reserved - tierMints[tierId]);\n }\n }\n\n function walletMintedByTier(uint256 tierId, address wallet)\n public\n view\n returns (uint256)\n {\n return walletMinted[tierId][wallet];\n }\n\n /* PRIVATE */\n\n function _generateMerkleLeaf(address account, uint256 maxAllowance)\n private\n pure\n returns (bytes32)\n {\n return keccak256(abi.encodePacked(account, maxAllowance));\n }\n}\n"},"contracts/collections/ERC721A/extensions/ERC721ARoleBasedMintExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"./ERC721AMinterExtension.sol\";\n\nimport {IERC721RoleBasedMintExtension} from \"../../ERC721/extensions/ERC721RoleBasedMintExtension.sol\";\n\n/**\n * @dev Extension to allow holders of a OpenZepplin-based role to mint directly.\n */\nabstract contract ERC721ARoleBasedMintExtension is\n IERC721RoleBasedMintExtension,\n ERC165Storage,\n ERC721AMinterExtension,\n AccessControl\n{\n bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n\n function __ERC721ARoleBasedMintExtension_init(address minter)\n internal\n onlyInitializing\n {\n __ERC721ARoleBasedMintExtension_init_unchained(minter);\n }\n\n function __ERC721ARoleBasedMintExtension_init_unchained(address minter)\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721RoleBasedMintExtension).interfaceId);\n\n _setupRole(MINTER_ROLE, minter);\n }\n\n /* ADMIN */\n\n function mintByRole(address to, uint256 count) external {\n require(hasRole(MINTER_ROLE, _msgSender()), \"NOT_MINTER_ROLE\");\n\n _mintTo(to, count);\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(\n ERC165Storage,\n AccessControl,\n ERC721ACollectionMetadataExtension\n )\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n}\n"},"contracts/collections/ERC721A/extensions/ERC721ARoleBasedLockableExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity ^0.8.15;\n\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\nimport \"@openzeppelin/contracts/utils/structs/BitMaps.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\n\nimport \"./ERC721ALockableExtension.sol\";\n\ninterface IERC721ARoleBasedLockableExtension {\n function hasRoleBasedLockableExtension() external view returns (bool);\n}\n\n/**\n * @dev Extension to allow locking NFTs, for use-cases like staking, without leaving holders wallet, using roles.\n */\nabstract contract ERC721ARoleBasedLockableExtension is\n IERC721ARoleBasedLockableExtension,\n ERC721ALockableExtension,\n AccessControl\n{\n using BitMaps for BitMaps.BitMap;\n\n bytes32 public constant LOCKER_ROLE = keccak256(\"LOCKER_ROLE\");\n\n function __ERC721ARoleBasedLockableExtension_init()\n internal\n onlyInitializing\n {\n __ERC721ARoleBasedLockableExtension_init_unchained();\n }\n\n function __ERC721ARoleBasedLockableExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(\n type(IERC721ARoleBasedLockableExtension).interfaceId\n );\n }\n\n // ADMIN\n\n /**\n * Locks token(s) to effectively lock them, while keeping in the same wallet.\n * This mechanism prevents them from being transferred, yet still will show correct owner.\n */\n function lock(uint256 tokenId) public virtual nonReentrant {\n require(hasRole(LOCKER_ROLE, msg.sender), \"NOT_LOCKER_ROLE\");\n _lock(tokenId);\n }\n\n function lock(uint256[] calldata tokenIds) public virtual nonReentrant {\n require(hasRole(LOCKER_ROLE, msg.sender), \"STAKABLE_NOT_LOCKER_ROLE\");\n\n for (uint256 i = 0; i < tokenIds.length; i++) {\n _lock(tokenIds[i]);\n }\n }\n\n /**\n * Unlocks locked token(s) to be able to transfer.\n */\n function unlock(uint256 tokenId) public virtual nonReentrant {\n require(hasRole(LOCKER_ROLE, msg.sender), \"NOT_LOCKER_ROLE\");\n _unlock(tokenId);\n }\n\n function unlock(uint256[] calldata tokenIds) public virtual nonReentrant {\n require(hasRole(LOCKER_ROLE, msg.sender), \"STAKABLE_NOT_LOCKER_ROLE\");\n\n for (uint256 i = 0; i < tokenIds.length; i++) {\n _unlock(tokenIds[i]);\n }\n }\n\n // PUBLIC\n\n function hasRoleBasedLockableExtension()\n public\n view\n virtual\n returns (bool)\n {\n return true;\n }\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(AccessControl, ERC721ALockableExtension)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n}\n"},"@openzeppelin/contracts/utils/Counters.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title Counters\n * @author Matt Condon (@shrugs)\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\n *\n * Include with `using Counters for Counters.Counter;`\n */\nlibrary Counters {\n struct Counter {\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\n // this feature: see https://github.com/ethereum/solidity/issues/4637\n uint256 _value; // default: 0\n }\n\n function current(Counter storage counter) internal view returns (uint256) {\n return counter._value;\n }\n\n function increment(Counter storage counter) internal {\n unchecked {\n counter._value += 1;\n }\n }\n\n function decrement(Counter storage counter) internal {\n uint256 value = counter._value;\n require(value > 0, \"Counter: decrement overflow\");\n unchecked {\n counter._value = value - 1;\n }\n }\n\n function reset(Counter storage counter) internal {\n counter._value = 0;\n }\n}\n"},"@openzeppelin/contracts/security/ReentrancyGuard.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Contract module that helps prevent reentrant calls to a function.\n *\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n * available, which can be applied to functions to make sure there are no nested\n * (reentrant) calls to them.\n *\n * Note that because there is a single `nonReentrant` guard, functions marked as\n * `nonReentrant` may not call one another. This can be worked around by making\n * those functions `private`, and then adding `external` `nonReentrant` entry\n * points to them.\n *\n * TIP: If you would like to learn more about reentrancy and alternative ways\n * to protect against it, check out our blog post\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n */\nabstract contract ReentrancyGuard {\n // Booleans are more expensive than uint256 or any type that takes up a full\n // word because each write operation emits an extra SLOAD to first read the\n // slot's contents, replace the bits taken up by the boolean, and then write\n // back. This is the compiler's defense against contract upgrades and\n // pointer aliasing, and it cannot be disabled.\n\n // The values being non-zero value makes deployment a bit more expensive,\n // but in exchange the refund on every call to nonReentrant will be lower in\n // amount. Since refunds are capped to a percentage of the total\n // transaction's gas, it is best to keep them low in cases like this one, to\n // increase the likelihood of the full refund coming into effect.\n uint256 private constant _NOT_ENTERED = 1;\n uint256 private constant _ENTERED = 2;\n\n uint256 private _status;\n\n constructor() {\n _status = _NOT_ENTERED;\n }\n\n /**\n * @dev Prevents a contract from calling itself, directly or indirectly.\n * Calling a `nonReentrant` function from another `nonReentrant`\n * function is not supported. It is possible to prevent this from happening\n * by making the `nonReentrant` function external, and making it call a\n * `private` function that does the actual work.\n */\n modifier nonReentrant() {\n // On the first call to nonReentrant, _notEntered will be true\n require(_status != _ENTERED, \"ReentrancyGuard: reentrant call\");\n\n // Any calls to nonReentrant after this point will fail\n _status = _ENTERED;\n\n _;\n\n // By storing the original value once again, a refund is triggered (see\n // https://eips.ethereum.org/EIPS/eip-2200)\n _status = _NOT_ENTERED;\n }\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address from,\n address to,\n uint256 amount\n ) external returns (bool);\n}\n"},"@a16z/contracts/licenses/CantBeEvil.sol":{"content":"// SPDX-License-Identifier: MIT\n// a16z Contracts v0.0.1 (CantBeEvil.sol)\npragma solidity ^0.8.13;\n\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\nimport \"./ICantBeEvil.sol\";\n\nenum LicenseVersion {\n CBE_CC0,\n CBE_ECR,\n CBE_NECR,\n CBE_NECR_HS,\n CBE_PR,\n CBE_PR_HS\n}\n\ncontract CantBeEvil is ERC165, ICantBeEvil {\n using Strings for uint;\n string internal constant _BASE_LICENSE_URI = \"ar://_D9kN1WrNWbCq55BSAGRbTB4bS3v8QAPTYmBThSbX3A/\";\n LicenseVersion public licenseVersion; // return string\n constructor(LicenseVersion _licenseVersion) {\n licenseVersion = _licenseVersion;\n }\n\n function getLicenseURI() public view returns (string memory) {\n return string.concat(_BASE_LICENSE_URI, uint(licenseVersion).toString());\n }\n\n function getLicenseName() public view returns (string memory) {\n return _getLicenseVersionKeyByValue(licenseVersion);\n }\n\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165) returns (bool) {\n return\n interfaceId == type(ICantBeEvil).interfaceId ||\n super.supportsInterface(interfaceId);\n }\n\n function _getLicenseVersionKeyByValue(LicenseVersion _licenseVersion) internal pure returns (string memory) {\n require(uint8(_licenseVersion) <= 6);\n if (LicenseVersion.CBE_CC0 == _licenseVersion) return \"CBE_CC0\";\n if (LicenseVersion.CBE_ECR == _licenseVersion) return \"CBE_ECR\";\n if (LicenseVersion.CBE_NECR == _licenseVersion) return \"CBE_NECR\";\n if (LicenseVersion.CBE_NECR_HS == _licenseVersion) return \"CBE_NECR_HS\";\n if (LicenseVersion.CBE_PR == _licenseVersion) return \"CBE_PR\";\n else return \"CBE_PR_HS\";\n }\n}\n"},"@a16z/contracts/licenses/ICantBeEvil.sol":{"content":"// SPDX-License-Identifier: MIT\n// a16z Contracts v0.0.1 (ICantBeEvil.sol)\npragma solidity ^0.8.13;\n\ninterface ICantBeEvil {\n function getLicenseURI() external view returns (string memory);\n function getLicenseName() external view returns (string memory);\n}"},"contracts/misc/rarible/IRoyalties.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\npragma abicoder v2;\n\nimport \"./LibPart.sol\";\n\ninterface IRoyalties {\n function getRaribleV2Royalties(uint256 id)\n external\n view\n returns (LibPart.Part[] memory);\n}\n"},"contracts/misc/rarible/LibPart.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nlibrary LibPart {\n bytes32 public constant TYPE_HASH =\n keccak256(\"Part(address account,uint96 value)\");\n\n struct Part {\n address payable account;\n uint96 value;\n }\n\n function hash(Part memory part) internal pure returns (bytes32) {\n return keccak256(abi.encode(TYPE_HASH, part.account, part.value));\n }\n}\n"},"contracts/misc/rarible/LibRoyaltiesV2.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nlibrary LibRoyaltiesV2 {\n /*\n * bytes4(keccak256('getRaribleV2Royalties(uint256)')) == 0xcad96cca\n */\n bytes4 constant _INTERFACE_ID_ROYALTIES = 0xcad96cca;\n}\n"},"@manifoldxyz/royalty-registry-solidity/contracts/overrides/IRoyaltyOverride.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/// @author: manifold.xyz\n\nimport \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\n\n/**\n * Simple EIP2981 reference override implementation\n */\ninterface IEIP2981RoyaltyOverride is IERC165 {\n\n event TokenRoyaltyRemoved(uint256 tokenId);\n event TokenRoyaltySet(uint256 tokenId, address recipient, uint16 bps);\n event DefaultRoyaltySet(address recipient, uint16 bps);\n\n struct TokenRoyalty {\n address recipient;\n uint16 bps;\n }\n\n struct TokenRoyaltyConfig {\n uint256 tokenId;\n address recipient;\n uint16 bps;\n }\n\n /**\n * @dev Set per token royalties. Passing a recipient of address(0) will delete any existing configuration\n */\n function setTokenRoyalties(TokenRoyaltyConfig[] calldata royalties) external;\n\n /**\n * @dev Get the number of token specific overrides. Used to enumerate over all configurations\n */\n function getTokenRoyaltiesCount() external view returns(uint256);\n\n /**\n * @dev Get a token royalty configuration by index. Use in conjunction with getTokenRoyaltiesCount to get all per token configurations\n */\n function getTokenRoyaltyByIndex(uint256 index) external view returns(TokenRoyaltyConfig memory);\n\n /**\n * @dev Set a default royalty configuration. Will be used if no token specific configuration is set\n */\n function setDefaultRoyalty(TokenRoyalty calldata royalty) external;\n\n}\n"},"@manifoldxyz/royalty-registry-solidity/contracts/overrides/RoyaltyOverrideCore.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/// @author: manifold.xyz\n\nimport \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\nimport \"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\";\n\nimport \"./IRoyaltyOverride.sol\";\nimport \"../specs/IEIP2981.sol\";\n\n/**\n * Simple EIP2981 reference override implementation\n */\nabstract contract EIP2981RoyaltyOverrideCore is IEIP2981, IEIP2981RoyaltyOverride, ERC165 {\n using EnumerableSet for EnumerableSet.UintSet;\n\n TokenRoyalty public defaultRoyalty;\n mapping(uint256 => TokenRoyalty) private _tokenRoyalties;\n EnumerableSet.UintSet private _tokensWithRoyalties;\n\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\n return interfaceId == type(IEIP2981).interfaceId || interfaceId == type(IEIP2981RoyaltyOverride).interfaceId || super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev Sets token royalties. When you override this in the implementation contract\n * ensure that you access restrict it to the contract owner or admin\n */\n function _setTokenRoyalties(TokenRoyaltyConfig[] memory royaltyConfigs) internal {\n for (uint i = 0; i < royaltyConfigs.length; i++) {\n TokenRoyaltyConfig memory royaltyConfig = royaltyConfigs[i];\n require(royaltyConfig.bps < 10000, \"Invalid bps\");\n if (royaltyConfig.recipient == address(0)) {\n delete _tokenRoyalties[royaltyConfig.tokenId];\n _tokensWithRoyalties.remove(royaltyConfig.tokenId);\n emit TokenRoyaltyRemoved(royaltyConfig.tokenId);\n } else {\n _tokenRoyalties[royaltyConfig.tokenId] = TokenRoyalty(royaltyConfig.recipient, royaltyConfig.bps);\n _tokensWithRoyalties.add(royaltyConfig.tokenId);\n emit TokenRoyaltySet(royaltyConfig.tokenId, royaltyConfig.recipient, royaltyConfig.bps);\n }\n }\n }\n\n /**\n * @dev Sets default royalty. When you override this in the implementation contract\n * ensure that you access restrict it to the contract owner or admin\n */\n function _setDefaultRoyalty(TokenRoyalty memory royalty) internal {\n require(royalty.bps < 10000, \"Invalid bps\");\n defaultRoyalty = TokenRoyalty(royalty.recipient, royalty.bps);\n emit DefaultRoyaltySet(royalty.recipient, royalty.bps);\n }\n\n /**\n * @dev See {IEIP2981RoyaltyOverride-getTokenRoyaltiesCount}.\n */\n function getTokenRoyaltiesCount() external override view returns(uint256) {\n return _tokensWithRoyalties.length();\n }\n\n /**\n * @dev See {IEIP2981RoyaltyOverride-getTokenRoyaltyByIndex}.\n */\n function getTokenRoyaltyByIndex(uint256 index) external override view returns(TokenRoyaltyConfig memory) {\n uint256 tokenId = _tokensWithRoyalties.at(index);\n TokenRoyalty memory royalty = _tokenRoyalties[tokenId];\n return TokenRoyaltyConfig(tokenId, royalty.recipient, royalty.bps);\n }\n\n /**\n * @dev See {IEIP2981RoyaltyOverride-royaltyInfo}.\n */\n function royaltyInfo(uint256 tokenId, uint256 value) public override view returns (address, uint256) {\n if (_tokenRoyalties[tokenId].recipient != address(0)) {\n return (_tokenRoyalties[tokenId].recipient, value*_tokenRoyalties[tokenId].bps/10000);\n }\n if (defaultRoyalty.recipient != address(0) && defaultRoyalty.bps != 0) {\n return (defaultRoyalty.recipient, value*defaultRoyalty.bps/10000);\n }\n return (address(0), 0);\n }\n}\n"},"@openzeppelin/contracts/utils/structs/EnumerableSet.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/structs/EnumerableSet.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for managing\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n * types.\n *\n * Sets have the following properties:\n *\n * - Elements are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```\n * contract Example {\n * // Add the library methods\n * using EnumerableSet for EnumerableSet.AddressSet;\n *\n * // Declare a set state variable\n * EnumerableSet.AddressSet private mySet;\n * }\n * ```\n *\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n * and `uint256` (`UintSet`) are supported.\n *\n * [WARNING]\n * ====\n * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure unusable.\n * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\n *\n * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an array of EnumerableSet.\n * ====\n */\nlibrary EnumerableSet {\n // To implement this library for multiple types with as little code\n // repetition as possible, we write it in terms of a generic Set type with\n // bytes32 values.\n // The Set implementation uses private functions, and user-facing\n // implementations (such as AddressSet) are just wrappers around the\n // underlying Set.\n // This means that we can only create new EnumerableSets for types that fit\n // in bytes32.\n\n struct Set {\n // Storage of set values\n bytes32[] _values;\n // Position of the value in the `values` array, plus 1 because index 0\n // means a value is not in the set.\n mapping(bytes32 => uint256) _indexes;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function _add(Set storage set, bytes32 value) private returns (bool) {\n if (!_contains(set, value)) {\n set._values.push(value);\n // The value is stored at length-1, but we add 1 to all indexes\n // and use 0 as a sentinel value\n set._indexes[value] = set._values.length;\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function _remove(Set storage set, bytes32 value) private returns (bool) {\n // We read and store the value's index to prevent multiple reads from the same storage slot\n uint256 valueIndex = set._indexes[value];\n\n if (valueIndex != 0) {\n // Equivalent to contains(set, value)\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\n // the array, and then remove the last element (sometimes called as 'swap and pop').\n // This modifies the order of the array, as noted in {at}.\n\n uint256 toDeleteIndex = valueIndex - 1;\n uint256 lastIndex = set._values.length - 1;\n\n if (lastIndex != toDeleteIndex) {\n bytes32 lastValue = set._values[lastIndex];\n\n // Move the last value to the index where the value to delete is\n set._values[toDeleteIndex] = lastValue;\n // Update the index for the moved value\n set._indexes[lastValue] = valueIndex; // Replace lastValue's index to valueIndex\n }\n\n // Delete the slot where the moved value was stored\n set._values.pop();\n\n // Delete the index for the deleted slot\n delete set._indexes[value];\n\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function _contains(Set storage set, bytes32 value) private view returns (bool) {\n return set._indexes[value] != 0;\n }\n\n /**\n * @dev Returns the number of values on the set. O(1).\n */\n function _length(Set storage set) private view returns (uint256) {\n return set._values.length;\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function _at(Set storage set, uint256 index) private view returns (bytes32) {\n return set._values[index];\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function _values(Set storage set) private view returns (bytes32[] memory) {\n return set._values;\n }\n\n // Bytes32Set\n\n struct Bytes32Set {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n return _add(set._inner, value);\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n return _remove(set._inner, value);\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\n return _contains(set._inner, value);\n }\n\n /**\n * @dev Returns the number of values in the set. O(1).\n */\n function length(Bytes32Set storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\n return _at(set._inner, index);\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {\n return _values(set._inner);\n }\n\n // AddressSet\n\n struct AddressSet {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(AddressSet storage set, address value) internal returns (bool) {\n return _add(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(AddressSet storage set, address value) internal returns (bool) {\n return _remove(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(AddressSet storage set, address value) internal view returns (bool) {\n return _contains(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Returns the number of values in the set. O(1).\n */\n function length(AddressSet storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\n return address(uint160(uint256(_at(set._inner, index))));\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function values(AddressSet storage set) internal view returns (address[] memory) {\n bytes32[] memory store = _values(set._inner);\n address[] memory result;\n\n /// @solidity memory-safe-assembly\n assembly {\n result := store\n }\n\n return result;\n }\n\n // UintSet\n\n struct UintSet {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(UintSet storage set, uint256 value) internal returns (bool) {\n return _add(set._inner, bytes32(value));\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(UintSet storage set, uint256 value) internal returns (bool) {\n return _remove(set._inner, bytes32(value));\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(UintSet storage set, uint256 value) internal view returns (bool) {\n return _contains(set._inner, bytes32(value));\n }\n\n /**\n * @dev Returns the number of values on the set. O(1).\n */\n function length(UintSet storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(UintSet storage set, uint256 index) internal view returns (uint256) {\n return uint256(_at(set._inner, index));\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function values(UintSet storage set) internal view returns (uint256[] memory) {\n bytes32[] memory store = _values(set._inner);\n uint256[] memory result;\n\n /// @solidity memory-safe-assembly\n assembly {\n result := store\n }\n\n return result;\n }\n}\n"},"@manifoldxyz/royalty-registry-solidity/contracts/specs/IEIP2981.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * EIP-2981\n */\ninterface IEIP2981 {\n /**\n * bytes4(keccak256(\"royaltyInfo(uint256,uint256)\")) == 0x2a55205a\n *\n * => 0x2a55205a = 0x2a55205a\n */\n function royaltyInfo(uint256 tokenId, uint256 value) external view returns (address, uint256);\n}"},"contracts/collections/ERC721/extensions/ERC721PrefixedMetadataExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"./ERC721CollectionMetadataExtension.sol\";\n\ninterface IERC721PrefixedMetadataExtension {\n function setPlaceholderURI(string memory newValue) external;\n\n function setTokenURIPrefix(string memory newValue) external;\n\n function setTokenURISuffix(string memory newValue) external;\n\n function placeholderURI() external view returns (string memory);\n\n function tokenURIPrefix() external view returns (string memory);\n\n function tokenURISuffix() external view returns (string memory);\n\n function tokenURI(uint256 _tokenId) external view returns (string memory);\n\n function freezeTokenURI() external;\n}\n\n/**\n * @dev Extension to allow configuring tokens metadata URI.\n * In this extension tokens will have a shared token URI prefix,\n * therefore on tokenURI() token's ID will be appended to the base URI.\n * It also allows configuring a fallback \"placeholder\" URI when prefix is not set yet.\n */\nabstract contract ERC721PrefixedMetadataExtension is\n IERC721PrefixedMetadataExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721\n{\n string internal _placeholderURI;\n string internal _tokenURIPrefix;\n string internal _tokenURISuffix;\n\n bool public tokenURIFrozen;\n\n function __ERC721PrefixedMetadataExtension_init(\n string memory placeholderURI_,\n string memory tokenURIPrefix_\n ) internal onlyInitializing {\n __ERC721PrefixedMetadataExtension_init_unchained(\n placeholderURI_,\n tokenURIPrefix_\n );\n }\n\n function __ERC721PrefixedMetadataExtension_init_unchained(\n string memory placeholderURI_,\n string memory tokenURIPrefix_\n ) internal onlyInitializing {\n _placeholderURI = placeholderURI_;\n _tokenURIPrefix = tokenURIPrefix_;\n _tokenURISuffix = \".json\";\n\n _registerInterface(type(IERC721PrefixedMetadataExtension).interfaceId);\n _registerInterface(type(IERC721Metadata).interfaceId);\n }\n\n /* ADMIN */\n\n function setPlaceholderURI(string memory newValue) external onlyOwner {\n _placeholderURI = newValue;\n }\n\n function setTokenURIPrefix(string memory newValue) external onlyOwner {\n require(!tokenURIFrozen, \"FROZEN\");\n _tokenURIPrefix = newValue;\n }\n\n function setTokenURISuffix(string memory newValue) external onlyOwner {\n require(!tokenURIFrozen, \"FROZEN\");\n _tokenURISuffix = newValue;\n }\n\n function freezeTokenURI() external onlyOwner {\n tokenURIFrozen = true;\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function placeholderURI() public view returns (string memory) {\n return _placeholderURI;\n }\n\n function tokenURIPrefix() public view returns (string memory) {\n return _tokenURIPrefix;\n }\n\n function tokenURISuffix() public view returns (string memory) {\n return _tokenURISuffix;\n }\n\n function tokenURI(uint256 _tokenId)\n public\n view\n virtual\n override(ERC721, IERC721PrefixedMetadataExtension)\n returns (string memory)\n {\n return\n bytes(_tokenURIPrefix).length > 0\n ? string(\n abi.encodePacked(\n _tokenURIPrefix,\n Strings.toString(_tokenId),\n _tokenURISuffix\n )\n )\n : _placeholderURI;\n }\n}\n"},"contracts/collections/ERC721/extensions/ERC721OwnerMintExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"./ERC721AutoIdMinterExtension.sol\";\n\ninterface IERC721OwnerMintExtension {\n function mintByOwner(address to, uint256 count) external;\n}\n\n/**\n * @dev Extension to allow owner to mint directly without paying.\n */\nabstract contract ERC721OwnerMintExtension is\n IERC721OwnerMintExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721AutoIdMinterExtension\n{\n function __ERC721OwnerMintExtension_init() internal onlyInitializing {\n __ERC721OwnerMintExtension_init_unchained();\n }\n\n function __ERC721OwnerMintExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721OwnerMintExtension).interfaceId);\n }\n\n /* ADMIN */\n\n function mintByOwner(address to, uint256 count) external onlyOwner {\n _mintTo(to, count);\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721CollectionMetadataExtension)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n}\n"},"contracts/collections/ERC721/extensions/ERC721TieringExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport \"./ERC721AutoIdMinterExtension.sol\";\n\ninterface IERC721TieringExtension {\n struct Tier {\n uint256 start;\n uint256 end;\n address currency;\n uint256 price;\n uint256 maxPerWallet;\n bytes32 merkleRoot;\n uint256 reserved;\n uint256 maxAllocation;\n }\n\n function onTierAllowlist(\n uint256 tierId,\n address minter,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) external view returns (bool);\n\n function eligibleForTier(\n uint256 tierId,\n address minter,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) external view returns (uint256);\n\n function mintByTier(\n uint256 tierId,\n uint256 count,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) external payable;\n}\n\n/**\n * @dev Extension to allow multiple tiers for minting,\n * you can configure, different minting window, price, currency, max per wallet, and allowlist per tier.\n */\nabstract contract ERC721TieringExtension is\n IERC721TieringExtension,\n Initializable,\n Ownable,\n ERC721AutoIdMinterExtension,\n ReentrancyGuard\n{\n mapping(uint256 => Tier) public tiers;\n\n uint256 public totalReserved;\n\n mapping(uint256 => uint256) public tierMints;\n\n mapping(uint256 => mapping(address => uint256)) public walletMinted;\n\n uint256 public reservedMints;\n\n function __ERC721TieringExtension_init(Tier[] memory _tiers)\n internal\n onlyInitializing\n {\n __ERC721TieringExtension_init_unchained(_tiers);\n }\n\n function __ERC721TieringExtension_init_unchained(Tier[] memory _tiers)\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721TieringExtension).interfaceId);\n\n for (uint256 i = 0; i < _tiers.length; i++) {\n tiers[i] = _tiers[i];\n totalReserved += _tiers[i].reserved;\n }\n }\n\n /* ADMIN */\n\n function configureTiering(uint256 tierId, Tier calldata tier)\n public\n onlyOwner\n {\n require(tier.maxAllocation >= tierMints[tierId], \"LOWER_THAN_MINTED\");\n\n if (tiers[tierId].reserved > 0) {\n require(tier.reserved >= tierMints[tierId], \"LOW_RESERVE_AMOUNT\");\n }\n\n if (tierMints[tierId] > 0) {\n require(\n tier.maxPerWallet >= tiers[tierId].maxPerWallet,\n \"LOW_MAX_PER_WALLET\"\n );\n }\n\n totalReserved -= tiers[tierId].reserved;\n tiers[tierId] = tier;\n totalReserved += tier.reserved;\n\n require(totalReserved <= maxSupply, \"MAX_SUPPLY_EXCEEDED\");\n }\n\n function configureTiering(\n uint256[] calldata _tierIds,\n Tier[] calldata _tiers\n ) public onlyOwner {\n for (uint256 i = 0; i < _tierIds.length; i++) {\n configureTiering(_tierIds[i], _tiers[i]);\n }\n }\n\n /* PUBLIC */\n\n function setMaxSupply(uint256 newValue)\n public\n virtual\n override(ERC721AutoIdMinterExtension)\n onlyOwner\n {\n ERC721AutoIdMinterExtension.setMaxSupply(newValue);\n require(\n newValue - totalSupply() >= totalReserved - reservedMints,\n \"LOWER_THAN_RESERVED\"\n );\n }\n\n function onTierAllowlist(\n uint256 tierId,\n address minter,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) public view returns (bool) {\n return\n MerkleProof.verify(\n proof,\n tiers[tierId].merkleRoot,\n _generateMerkleLeaf(minter, maxAllowance)\n );\n }\n\n function eligibleForTier(\n uint256 tierId,\n address minter,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) public view returns (uint256 maxMintable) {\n require(tiers[tierId].maxPerWallet > 0, \"NOT_EXISTS\");\n require(block.timestamp >= tiers[tierId].start, \"NOT_STARTED\");\n require(block.timestamp <= tiers[tierId].end, \"ALREADY_ENDED\");\n\n maxMintable = tiers[tierId].maxPerWallet - walletMinted[tierId][minter];\n\n if (tiers[tierId].merkleRoot != bytes32(0)) {\n require(\n walletMinted[tierId][minter] < maxAllowance,\n \"MAXED_ALLOWANCE\"\n );\n require(\n onTierAllowlist(tierId, minter, maxAllowance, proof),\n \"NOT_ALLOWLISTED\"\n );\n\n uint256 remainingAllowance = maxAllowance -\n walletMinted[tierId][minter];\n\n if (maxMintable > remainingAllowance) {\n maxMintable = remainingAllowance;\n }\n }\n }\n\n function mintByTier(\n uint256 tierId,\n uint256 count,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) external payable nonReentrant {\n address minter = _msgSender();\n\n uint256 maxMintable = eligibleForTier(\n tierId,\n minter,\n maxAllowance,\n proof\n );\n\n require(count <= maxMintable, \"EXCEEDS_MAX\");\n require(count <= remainingForTier(tierId), \"EXCEEDS_ALLOCATION\");\n require(\n count + tierMints[tierId] <= tiers[tierId].maxAllocation,\n \"EXCEEDS_ALLOCATION\"\n );\n\n if (tiers[tierId].currency == address(0)) {\n require(\n tiers[tierId].price * count <= msg.value,\n \"INSUFFICIENT_AMOUNT\"\n );\n } else {\n IERC20(tiers[tierId].currency).transferFrom(\n minter,\n address(this),\n tiers[tierId].price * count\n );\n }\n\n walletMinted[tierId][minter] += count;\n tierMints[tierId] += count;\n\n if (tiers[tierId].reserved > 0) {\n reservedMints += count;\n }\n\n _mintTo(minter, count);\n }\n\n function remainingForTier(uint256 tierId)\n public\n view\n returns (uint256 tierRemaining)\n {\n // Substract all the remaining reserved spots from the total remaining supply...\n tierRemaining =\n (maxSupply - totalSupply()) -\n (totalReserved - reservedMints);\n\n // If this tier has reserved spots, add remaining spots back to result...\n if (tiers[tierId].reserved > 0) {\n tierRemaining += (tiers[tierId].reserved - tierMints[tierId]);\n }\n }\n\n function walletMintedByTier(uint256 tierId, address wallet)\n public\n view\n returns (uint256)\n {\n return walletMinted[tierId][wallet];\n }\n\n /* PRIVATE */\n\n function _generateMerkleLeaf(address account, uint256 maxAllowance)\n private\n pure\n returns (bytes32)\n {\n return keccak256(abi.encodePacked(account, maxAllowance));\n }\n}\n"},"@openzeppelin/contracts/utils/cryptography/MerkleProof.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/cryptography/MerkleProof.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev These functions deal with verification of Merkle Tree proofs.\n *\n * The proofs can be generated using the JavaScript library\n * https://github.com/miguelmota/merkletreejs[merkletreejs].\n * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled.\n *\n * See `test/utils/cryptography/MerkleProof.test.js` for some examples.\n *\n * WARNING: You should avoid using leaf values that are 64 bytes long prior to\n * hashing, or use a hash function other than keccak256 for hashing leaves.\n * This is because the concatenation of a sorted pair of internal nodes in\n * the merkle tree could be reinterpreted as a leaf value.\n */\nlibrary MerkleProof {\n /**\n * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree\n * defined by `root`. For this, a `proof` must be provided, containing\n * sibling hashes on the branch from the leaf to the root of the tree. Each\n * pair of leaves and each pair of pre-images are assumed to be sorted.\n */\n function verify(\n bytes32[] memory proof,\n bytes32 root,\n bytes32 leaf\n ) internal pure returns (bool) {\n return processProof(proof, leaf) == root;\n }\n\n /**\n * @dev Calldata version of {verify}\n *\n * _Available since v4.7._\n */\n function verifyCalldata(\n bytes32[] calldata proof,\n bytes32 root,\n bytes32 leaf\n ) internal pure returns (bool) {\n return processProofCalldata(proof, leaf) == root;\n }\n\n /**\n * @dev Returns the rebuilt hash obtained by traversing a Merkle tree up\n * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt\n * hash matches the root of the tree. When processing the proof, the pairs\n * of leafs & pre-images are assumed to be sorted.\n *\n * _Available since v4.4._\n */\n function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) {\n bytes32 computedHash = leaf;\n for (uint256 i = 0; i < proof.length; i++) {\n computedHash = _hashPair(computedHash, proof[i]);\n }\n return computedHash;\n }\n\n /**\n * @dev Calldata version of {processProof}\n *\n * _Available since v4.7._\n */\n function processProofCalldata(bytes32[] calldata proof, bytes32 leaf) internal pure returns (bytes32) {\n bytes32 computedHash = leaf;\n for (uint256 i = 0; i < proof.length; i++) {\n computedHash = _hashPair(computedHash, proof[i]);\n }\n return computedHash;\n }\n\n /**\n * @dev Returns true if the `leaves` can be proved to be a part of a Merkle tree defined by\n * `root`, according to `proof` and `proofFlags` as described in {processMultiProof}.\n *\n * _Available since v4.7._\n */\n function multiProofVerify(\n bytes32[] memory proof,\n bool[] memory proofFlags,\n bytes32 root,\n bytes32[] memory leaves\n ) internal pure returns (bool) {\n return processMultiProof(proof, proofFlags, leaves) == root;\n }\n\n /**\n * @dev Calldata version of {multiProofVerify}\n *\n * _Available since v4.7._\n */\n function multiProofVerifyCalldata(\n bytes32[] calldata proof,\n bool[] calldata proofFlags,\n bytes32 root,\n bytes32[] memory leaves\n ) internal pure returns (bool) {\n return processMultiProofCalldata(proof, proofFlags, leaves) == root;\n }\n\n /**\n * @dev Returns the root of a tree reconstructed from `leaves` and the sibling nodes in `proof`,\n * consuming from one or the other at each step according to the instructions given by\n * `proofFlags`.\n *\n * _Available since v4.7._\n */\n function processMultiProof(\n bytes32[] memory proof,\n bool[] memory proofFlags,\n bytes32[] memory leaves\n ) internal pure returns (bytes32 merkleRoot) {\n // This function rebuild the root hash by traversing the tree up from the leaves. The root is rebuilt by\n // consuming and producing values on a queue. The queue starts with the `leaves` array, then goes onto the\n // `hashes` array. At the end of the process, the last hash in the `hashes` array should contain the root of\n // the merkle tree.\n uint256 leavesLen = leaves.length;\n uint256 totalHashes = proofFlags.length;\n\n // Check proof validity.\n require(leavesLen + proof.length - 1 == totalHashes, \"MerkleProof: invalid multiproof\");\n\n // The xxxPos values are \"pointers\" to the next value to consume in each array. All accesses are done using\n // `xxx[xxxPos++]`, which return the current value and increment the pointer, thus mimicking a queue's \"pop\".\n bytes32[] memory hashes = new bytes32[](totalHashes);\n uint256 leafPos = 0;\n uint256 hashPos = 0;\n uint256 proofPos = 0;\n // At each step, we compute the next hash using two values:\n // - a value from the \"main queue\". If not all leaves have been consumed, we get the next leaf, otherwise we\n // get the next hash.\n // - depending on the flag, either another value for the \"main queue\" (merging branches) or an element from the\n // `proof` array.\n for (uint256 i = 0; i < totalHashes; i++) {\n bytes32 a = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++];\n bytes32 b = proofFlags[i] ? leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++] : proof[proofPos++];\n hashes[i] = _hashPair(a, b);\n }\n\n if (totalHashes > 0) {\n return hashes[totalHashes - 1];\n } else if (leavesLen > 0) {\n return leaves[0];\n } else {\n return proof[0];\n }\n }\n\n /**\n * @dev Calldata version of {processMultiProof}\n *\n * _Available since v4.7._\n */\n function processMultiProofCalldata(\n bytes32[] calldata proof,\n bool[] calldata proofFlags,\n bytes32[] memory leaves\n ) internal pure returns (bytes32 merkleRoot) {\n // This function rebuild the root hash by traversing the tree up from the leaves. The root is rebuilt by\n // consuming and producing values on a queue. The queue starts with the `leaves` array, then goes onto the\n // `hashes` array. At the end of the process, the last hash in the `hashes` array should contain the root of\n // the merkle tree.\n uint256 leavesLen = leaves.length;\n uint256 totalHashes = proofFlags.length;\n\n // Check proof validity.\n require(leavesLen + proof.length - 1 == totalHashes, \"MerkleProof: invalid multiproof\");\n\n // The xxxPos values are \"pointers\" to the next value to consume in each array. All accesses are done using\n // `xxx[xxxPos++]`, which return the current value and increment the pointer, thus mimicking a queue's \"pop\".\n bytes32[] memory hashes = new bytes32[](totalHashes);\n uint256 leafPos = 0;\n uint256 hashPos = 0;\n uint256 proofPos = 0;\n // At each step, we compute the next hash using two values:\n // - a value from the \"main queue\". If not all leaves have been consumed, we get the next leaf, otherwise we\n // get the next hash.\n // - depending on the flag, either another value for the \"main queue\" (merging branches) or an element from the\n // `proof` array.\n for (uint256 i = 0; i < totalHashes; i++) {\n bytes32 a = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++];\n bytes32 b = proofFlags[i] ? leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++] : proof[proofPos++];\n hashes[i] = _hashPair(a, b);\n }\n\n if (totalHashes > 0) {\n return hashes[totalHashes - 1];\n } else if (leavesLen > 0) {\n return leaves[0];\n } else {\n return proof[0];\n }\n }\n\n function _hashPair(bytes32 a, bytes32 b) private pure returns (bytes32) {\n return a < b ? _efficientHash(a, b) : _efficientHash(b, a);\n }\n\n function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) {\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x00, a)\n mstore(0x20, b)\n value := keccak256(0x00, 0x40)\n }\n }\n}\n"},"contracts/collections/ERC721/extensions/ERC721RoleBasedMintExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"./ERC721AutoIdMinterExtension.sol\";\n\ninterface IERC721RoleBasedMintExtension {\n function mintByRole(address to, uint256 count) external;\n}\n\n/**\n * @dev Extension to allow holders of a OpenZepplin-based role to mint directly.\n */\nabstract contract ERC721RoleBasedMintExtension is\n IERC721RoleBasedMintExtension,\n Initializable,\n ERC165Storage,\n ERC721AutoIdMinterExtension,\n AccessControl\n{\n bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n\n function __ERC721RoleBasedMintExtension_init(address minter)\n internal\n onlyInitializing\n {\n __ERC721RoleBasedMintExtension_init_unchained(minter);\n }\n\n function __ERC721RoleBasedMintExtension_init_unchained(address minter)\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721RoleBasedMintExtension).interfaceId);\n\n _setupRole(MINTER_ROLE, minter);\n }\n\n /* ADMIN */\n\n function mintByRole(address to, uint256 count) external {\n require(hasRole(MINTER_ROLE, _msgSender()), \"NOT_MINTER_ROLE\");\n\n _mintTo(to, count);\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(\n ERC165Storage,\n AccessControl,\n ERC721CollectionMetadataExtension\n )\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n}\n"},"@openzeppelin/contracts/access/AccessControl.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (access/AccessControl.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IAccessControl.sol\";\nimport \"../utils/Context.sol\";\nimport \"../utils/Strings.sol\";\nimport \"../utils/introspection/ERC165.sol\";\n\n/**\n * @dev Contract module that allows children to implement role-based access\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\n * members except through off-chain means by accessing the contract event logs. Some\n * applications may benefit from on-chain enumerability, for those cases see\n * {AccessControlEnumerable}.\n *\n * Roles are referred to by their `bytes32` identifier. These should be exposed\n * in the external API and be unique. The best way to achieve this is by\n * using `public constant` hash digests:\n *\n * ```\n * bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n * ```\n *\n * Roles can be used to represent a set of permissions. To restrict access to a\n * function call, use {hasRole}:\n *\n * ```\n * function foo() public {\n * require(hasRole(MY_ROLE, msg.sender));\n * ...\n * }\n * ```\n *\n * Roles can be granted and revoked dynamically via the {grantRole} and\n * {revokeRole} functions. Each role has an associated admin role, and only\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n *\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n * that only accounts with this role will be able to grant or revoke other\n * roles. More complex role relationships can be created by using\n * {_setRoleAdmin}.\n *\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n * grant and revoke this role. Extra precautions should be taken to secure\n * accounts that have been granted it.\n */\nabstract contract AccessControl is Context, IAccessControl, ERC165 {\n struct RoleData {\n mapping(address => bool) members;\n bytes32 adminRole;\n }\n\n mapping(bytes32 => RoleData) private _roles;\n\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\n\n /**\n * @dev Modifier that checks that an account has a specific role. Reverts\n * with a standardized message including the required role.\n *\n * The format of the revert reason is given by the following regular expression:\n *\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\n *\n * _Available since v4.1._\n */\n modifier onlyRole(bytes32 role) {\n _checkRole(role);\n _;\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) public view virtual override returns (bool) {\n return _roles[role].members[account];\n }\n\n /**\n * @dev Revert with a standard message if `_msgSender()` is missing `role`.\n * Overriding this function changes the behavior of the {onlyRole} modifier.\n *\n * Format of the revert message is described in {_checkRole}.\n *\n * _Available since v4.6._\n */\n function _checkRole(bytes32 role) internal view virtual {\n _checkRole(role, _msgSender());\n }\n\n /**\n * @dev Revert with a standard message if `account` is missing `role`.\n *\n * The format of the revert reason is given by the following regular expression:\n *\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\n */\n function _checkRole(bytes32 role, address account) internal view virtual {\n if (!hasRole(role, account)) {\n revert(\n string(\n abi.encodePacked(\n \"AccessControl: account \",\n Strings.toHexString(uint160(account), 20),\n \" is missing role \",\n Strings.toHexString(uint256(role), 32)\n )\n )\n );\n }\n }\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) {\n return _roles[role].adminRole;\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n *\n * May emit a {RoleGranted} event.\n */\n function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\n _grantRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n *\n * May emit a {RoleRevoked} event.\n */\n function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\n _revokeRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been revoked `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `account`.\n *\n * May emit a {RoleRevoked} event.\n */\n function renounceRole(bytes32 role, address account) public virtual override {\n require(account == _msgSender(), \"AccessControl: can only renounce roles for self\");\n\n _revokeRole(role, account);\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event. Note that unlike {grantRole}, this function doesn't perform any\n * checks on the calling account.\n *\n * May emit a {RoleGranted} event.\n *\n * [WARNING]\n * ====\n * This function should only be called from the constructor when setting\n * up the initial roles for the system.\n *\n * Using this function in any other way is effectively circumventing the admin\n * system imposed by {AccessControl}.\n * ====\n *\n * NOTE: This function is deprecated in favor of {_grantRole}.\n */\n function _setupRole(bytes32 role, address account) internal virtual {\n _grantRole(role, account);\n }\n\n /**\n * @dev Sets `adminRole` as ``role``'s admin role.\n *\n * Emits a {RoleAdminChanged} event.\n */\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\n bytes32 previousAdminRole = getRoleAdmin(role);\n _roles[role].adminRole = adminRole;\n emit RoleAdminChanged(role, previousAdminRole, adminRole);\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * Internal function without access restriction.\n *\n * May emit a {RoleGranted} event.\n */\n function _grantRole(bytes32 role, address account) internal virtual {\n if (!hasRole(role, account)) {\n _roles[role].members[account] = true;\n emit RoleGranted(role, account, _msgSender());\n }\n }\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * Internal function without access restriction.\n *\n * May emit a {RoleRevoked} event.\n */\n function _revokeRole(bytes32 role, address account) internal virtual {\n if (hasRole(role, account)) {\n _roles[role].members[account] = false;\n emit RoleRevoked(role, account, _msgSender());\n }\n }\n}\n"},"@openzeppelin/contracts/access/IAccessControl.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev External interface of AccessControl declared to support ERC165 detection.\n */\ninterface IAccessControl {\n /**\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n *\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n * {RoleAdminChanged} not being emitted signaling this.\n *\n * _Available since v3.1._\n */\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n /**\n * @dev Emitted when `account` is granted `role`.\n *\n * `sender` is the account that originated the contract call, an admin role\n * bearer except when using {AccessControl-_setupRole}.\n */\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Emitted when `account` is revoked `role`.\n *\n * `sender` is the account that originated the contract call:\n * - if using `revokeRole`, it is the admin role bearer\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\n */\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) external view returns (bool);\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function grantRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function revokeRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been granted `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `account`.\n */\n function renounceRole(bytes32 role, address account) external;\n}\n"},"contracts/collections/ERC721A/extensions/ERC721ALockableExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity ^0.8.15;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\nimport \"@openzeppelin/contracts/utils/structs/BitMaps.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\n\nimport \"./ERC721AMinterExtension.sol\";\n\ninterface IERC721ALockableExtension {\n function locked(uint256 tokenId) external view returns (bool);\n\n function lock(uint256 tokenId) external;\n\n function lock(uint256[] calldata tokenIds) external;\n\n function unlock(uint256 tokenId) external;\n\n function unlock(uint256[] calldata tokenIds) external;\n}\n\n/**\n * @dev Extension to allow locking NFTs, for use-cases like staking, without leaving holders wallet.\n */\nabstract contract ERC721ALockableExtension is\n IERC721ALockableExtension,\n Initializable,\n ERC165Storage,\n ERC721AMinterExtension,\n ReentrancyGuard\n{\n using BitMaps for BitMaps.BitMap;\n\n BitMaps.BitMap internal lockedTokens;\n\n function __ERC721ALockableExtension_init() internal onlyInitializing {\n __ERC721ALockableExtension_init_unchained();\n }\n\n function __ERC721ALockableExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721ALockableExtension).interfaceId);\n }\n\n // PUBLIC\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721ACollectionMetadataExtension)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n /**\n * At this moment staking is only possible from a certain address (usually a smart contract).\n *\n * This is because in almost all cases you want another contract to perform custom logic on lock and unlock operations,\n * without allowing users to directly unlock their tokens and sell them, for example.\n */\n function _lock(uint256 tokenId) internal virtual {\n require(!lockedTokens.get(tokenId), \"LOCKED\");\n lockedTokens.set(tokenId);\n }\n\n function _unlock(uint256 tokenId) internal virtual {\n require(lockedTokens.get(tokenId), \"NOT_LOCKED\");\n lockedTokens.unset(tokenId);\n }\n\n /**\n * Returns if a token is locked or not.\n */\n function locked(uint256 tokenId) public view virtual returns (bool) {\n return lockedTokens.get(tokenId);\n }\n\n function filterUnlocked(uint256[] calldata ticketTokenIds)\n public\n view\n returns (uint256[] memory)\n {\n uint256[] memory unlocked = new uint256[](ticketTokenIds.length);\n\n for (uint256 i = 0; i < ticketTokenIds.length; i++) {\n if (!locked(ticketTokenIds[i])) {\n unlocked[i] = ticketTokenIds[i];\n }\n }\n\n return unlocked;\n }\n\n function _beforeTokenTransfers(\n address from,\n address to,\n uint256 startTokenId,\n uint256 quantity\n ) internal virtual override(ERC721A) {\n require(\n // We are not checking the quantity because it is only used during mint where users cannot stake/unstake.\n !lockedTokens.get(startTokenId),\n \"LOCKED\"\n );\n super._beforeTokenTransfers(from, to, startTokenId, quantity);\n }\n}\n"},"@openzeppelin/contracts/utils/structs/BitMaps.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/structs/BitMaps.sol)\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for managing uint256 to bool mapping in a compact and efficient way, providing the keys are sequential.\n * Largelly inspired by Uniswap's https://github.com/Uniswap/merkle-distributor/blob/master/contracts/MerkleDistributor.sol[merkle-distributor].\n */\nlibrary BitMaps {\n struct BitMap {\n mapping(uint256 => uint256) _data;\n }\n\n /**\n * @dev Returns whether the bit at `index` is set.\n */\n function get(BitMap storage bitmap, uint256 index) internal view returns (bool) {\n uint256 bucket = index >> 8;\n uint256 mask = 1 << (index & 0xff);\n return bitmap._data[bucket] & mask != 0;\n }\n\n /**\n * @dev Sets the bit at `index` to the boolean `value`.\n */\n function setTo(\n BitMap storage bitmap,\n uint256 index,\n bool value\n ) internal {\n if (value) {\n set(bitmap, index);\n } else {\n unset(bitmap, index);\n }\n }\n\n /**\n * @dev Sets the bit at `index`.\n */\n function set(BitMap storage bitmap, uint256 index) internal {\n uint256 bucket = index >> 8;\n uint256 mask = 1 << (index & 0xff);\n bitmap._data[bucket] |= mask;\n }\n\n /**\n * @dev Unsets the bit at `index`.\n */\n function unset(BitMap storage bitmap, uint256 index) internal {\n uint256 bucket = index >> 8;\n uint256 mask = 1 << (index & 0xff);\n bitmap._data[bucket] &= ~mask;\n }\n}\n"},"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/ERC721Enumerable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../ERC721.sol\";\nimport \"./IERC721Enumerable.sol\";\n\n/**\n * @dev This implements an optional extension of {ERC721} defined in the EIP that adds\n * enumerability of all the token ids in the contract as well as all token ids owned by each\n * account.\n */\nabstract contract ERC721Enumerable is ERC721, IERC721Enumerable {\n // Mapping from owner to list of owned token IDs\n mapping(address => mapping(uint256 => uint256)) private _ownedTokens;\n\n // Mapping from token ID to index of the owner tokens list\n mapping(uint256 => uint256) private _ownedTokensIndex;\n\n // Array with all token ids, used for enumeration\n uint256[] private _allTokens;\n\n // Mapping from token id to position in the allTokens array\n mapping(uint256 => uint256) private _allTokensIndex;\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) {\n return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.\n */\n function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {\n require(index < ERC721.balanceOf(owner), \"ERC721Enumerable: owner index out of bounds\");\n return _ownedTokens[owner][index];\n }\n\n /**\n * @dev See {IERC721Enumerable-totalSupply}.\n */\n function totalSupply() public view virtual override returns (uint256) {\n return _allTokens.length;\n }\n\n /**\n * @dev See {IERC721Enumerable-tokenByIndex}.\n */\n function tokenByIndex(uint256 index) public view virtual override returns (uint256) {\n require(index < ERC721Enumerable.totalSupply(), \"ERC721Enumerable: global index out of bounds\");\n return _allTokens[index];\n }\n\n /**\n * @dev Hook that is called before any token transfer. This includes minting\n * and burning.\n *\n * Calling conditions:\n *\n * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n * transferred to `to`.\n * - When `from` is zero, `tokenId` will be minted for `to`.\n * - When `to` is zero, ``from``'s `tokenId` will be burned.\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual override {\n super._beforeTokenTransfer(from, to, tokenId);\n\n if (from == address(0)) {\n _addTokenToAllTokensEnumeration(tokenId);\n } else if (from != to) {\n _removeTokenFromOwnerEnumeration(from, tokenId);\n }\n if (to == address(0)) {\n _removeTokenFromAllTokensEnumeration(tokenId);\n } else if (to != from) {\n _addTokenToOwnerEnumeration(to, tokenId);\n }\n }\n\n /**\n * @dev Private function to add a token to this extension's ownership-tracking data structures.\n * @param to address representing the new owner of the given token ID\n * @param tokenId uint256 ID of the token to be added to the tokens list of the given address\n */\n function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {\n uint256 length = ERC721.balanceOf(to);\n _ownedTokens[to][length] = tokenId;\n _ownedTokensIndex[tokenId] = length;\n }\n\n /**\n * @dev Private function to add a token to this extension's token tracking data structures.\n * @param tokenId uint256 ID of the token to be added to the tokens list\n */\n function _addTokenToAllTokensEnumeration(uint256 tokenId) private {\n _allTokensIndex[tokenId] = _allTokens.length;\n _allTokens.push(tokenId);\n }\n\n /**\n * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that\n * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for\n * gas optimizations e.g. when performing a transfer operation (avoiding double writes).\n * This has O(1) time complexity, but alters the order of the _ownedTokens array.\n * @param from address representing the previous owner of the given token ID\n * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address\n */\n function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {\n // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and\n // then delete the last slot (swap and pop).\n\n uint256 lastTokenIndex = ERC721.balanceOf(from) - 1;\n uint256 tokenIndex = _ownedTokensIndex[tokenId];\n\n // When the token to delete is the last token, the swap operation is unnecessary\n if (tokenIndex != lastTokenIndex) {\n uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];\n\n _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token\n _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index\n }\n\n // This also deletes the contents at the last position of the array\n delete _ownedTokensIndex[tokenId];\n delete _ownedTokens[from][lastTokenIndex];\n }\n\n /**\n * @dev Private function to remove a token from this extension's token tracking data structures.\n * This has O(1) time complexity, but alters the order of the _allTokens array.\n * @param tokenId uint256 ID of the token to be removed from the tokens list\n */\n function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {\n // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and\n // then delete the last slot (swap and pop).\n\n uint256 lastTokenIndex = _allTokens.length - 1;\n uint256 tokenIndex = _allTokensIndex[tokenId];\n\n // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so\n // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding\n // an 'if' statement (like in _removeTokenFromOwnerEnumeration)\n uint256 lastTokenId = _allTokens[lastTokenIndex];\n\n _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token\n _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index\n\n // This also deletes the contents at the last position of the array\n delete _allTokensIndex[tokenId];\n _allTokens.pop();\n }\n}\n"},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/IERC721Enumerable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Enumerable is IERC721 {\n /**\n * @dev Returns the total amount of tokens stored by the contract.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns a token ID owned by `owner` at a given `index` of its token list.\n * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\n */\n function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);\n\n /**\n * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\n * Use along with {totalSupply} to enumerate all tokens.\n */\n function tokenByIndex(uint256 index) external view returns (uint256);\n}\n"},"contracts/collections/ERC721A/presets/ERC721ASimpleSalesCollection.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"../../../common/WithdrawExtension.sol\";\nimport \"../../../common/LicenseExtension.sol\";\nimport \"../../../common/meta-transactions/ERC2771ContextOwnable.sol\";\nimport \"../../ERC721/extensions/ERC721RoyaltyExtension.sol\";\nimport \"../extensions/ERC721ACollectionMetadataExtension.sol\";\nimport \"../extensions/ERC721APrefixedMetadataExtension.sol\";\nimport \"../extensions/ERC721AMinterExtension.sol\";\nimport \"../extensions/ERC721AOwnerMintExtension.sol\";\nimport \"../extensions/ERC721APreSaleExtension.sol\";\nimport \"../extensions/ERC721APublicSaleExtension.sol\";\nimport \"../extensions/ERC721ARoleBasedMintExtension.sol\";\nimport \"../extensions/ERC721ARoleBasedLockableExtension.sol\";\n\ncontract ERC721ASimpleSalesCollection is\n Initializable,\n Ownable,\n ERC165Storage,\n WithdrawExtension,\n LicenseExtension,\n ERC721ACollectionMetadataExtension,\n ERC721APrefixedMetadataExtension,\n ERC721AMinterExtension,\n ERC721AOwnerMintExtension,\n ERC721APreSaleExtension,\n ERC721APublicSaleExtension,\n ERC721ARoleBasedMintExtension,\n ERC721ARoleBasedLockableExtension,\n ERC721RoyaltyExtension,\n ERC2771ContextOwnable\n{\n struct Config {\n string name;\n string symbol;\n string contractURI;\n string placeholderURI;\n string tokenURIPrefix;\n uint256 maxSupply;\n uint256 preSalePrice;\n uint256 preSaleMaxMintPerWallet;\n uint256 publicSalePrice;\n uint256 publicSaleMaxMintPerTx;\n address defaultRoyaltyAddress;\n uint16 defaultRoyaltyBps;\n address proceedsRecipient;\n address trustedForwarder;\n LicenseVersion licenseVersion;\n }\n\n constructor(Config memory config) ERC721A(config.name, config.symbol) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _setupRole(DEFAULT_ADMIN_ROLE, deployer);\n\n _transferOwnership(deployer);\n\n __WithdrawExtension_init(config.proceedsRecipient, WithdrawMode.ANYONE);\n __LicenseExtension_init(config.licenseVersion);\n __ERC721ACollectionMetadataExtension_init(\n config.name,\n config.symbol,\n config.contractURI\n );\n __ERC721APrefixedMetadataExtension_init(\n config.placeholderURI,\n config.tokenURIPrefix\n );\n __ERC721AMinterExtension_init(config.maxSupply);\n __ERC721AOwnerMintExtension_init();\n __ERC721ARoleBasedMintExtension_init(deployer);\n __ERC721ARoleBasedLockableExtension_init();\n __ERC721APreSaleExtension_init_unchained(\n config.preSalePrice,\n config.preSaleMaxMintPerWallet\n );\n __ERC721APublicSaleExtension_init(\n config.publicSalePrice,\n config.publicSaleMaxMintPerTx\n );\n __ERC721RoyaltyExtension_init(\n config.defaultRoyaltyAddress,\n config.defaultRoyaltyBps\n );\n __ERC2771ContextOwnable_init(config.trustedForwarder);\n }\n\n function _msgSender()\n internal\n view\n virtual\n override(ERC2771ContextOwnable, Context)\n returns (address sender)\n {\n return super._msgSender();\n }\n\n function _msgData()\n internal\n view\n virtual\n override(ERC2771ContextOwnable, Context)\n returns (bytes calldata)\n {\n return super._msgData();\n }\n\n function _beforeTokenTransfers(\n address from,\n address to,\n uint256 startTokenId,\n uint256 quantity\n ) internal virtual override(ERC721A, ERC721ALockableExtension) {\n ERC721ALockableExtension._beforeTokenTransfers(\n from,\n to,\n startTokenId,\n quantity\n );\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(\n ERC165Storage,\n ERC721ACollectionMetadataExtension,\n ERC721APrefixedMetadataExtension,\n ERC721APreSaleExtension,\n ERC721APublicSaleExtension,\n ERC721AOwnerMintExtension,\n ERC721ARoleBasedMintExtension,\n ERC721ARoleBasedLockableExtension,\n ERC721RoyaltyExtension,\n LicenseExtension\n )\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function name()\n public\n view\n override(ERC721A, ERC721ACollectionMetadataExtension)\n returns (string memory)\n {\n return ERC721ACollectionMetadataExtension.name();\n }\n\n function symbol()\n public\n view\n override(ERC721A, ERC721ACollectionMetadataExtension)\n returns (string memory)\n {\n return ERC721ACollectionMetadataExtension.symbol();\n }\n\n function tokenURI(uint256 _tokenId)\n public\n view\n virtual\n override(ERC721A, ERC721APrefixedMetadataExtension)\n returns (string memory)\n {\n return ERC721APrefixedMetadataExtension.tokenURI(_tokenId);\n }\n}\n"},"contracts/collections/ERC721A/extensions/ERC721APreSaleExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"erc721a/contracts/ERC721A.sol\";\n\nimport \"./ERC721AMinterExtension.sol\";\n\nimport {IERC721PreSaleExtension} from \"../../ERC721/extensions/ERC721PreSaleExtension.sol\";\n\n/**\n * @dev Extension to provide pre-sale capabilities for certain collectors to mint for a specific price.\n */\nabstract contract ERC721APreSaleExtension is\n IERC721PreSaleExtension,\n Initializable,\n ERC165Storage,\n ERC721AMinterExtension,\n ReentrancyGuard\n{\n uint256 public preSalePrice;\n uint256 public preSaleMaxMintPerWallet;\n bytes32 public preSaleAllowlistMerkleRoot;\n bool public preSaleStatus;\n\n mapping(address => uint256) internal preSaleAllowlistClaimed;\n\n function __ERC721APreSaleExtension_init(\n uint256 _preSalePrice,\n uint256 _preSaleMaxMintPerWallet\n ) internal onlyInitializing {\n __ERC721APreSaleExtension_init_unchained(\n _preSalePrice,\n _preSaleMaxMintPerWallet\n );\n }\n\n function __ERC721APreSaleExtension_init_unchained(\n uint256 _preSalePrice,\n uint256 _preSaleMaxMintPerWallet\n ) internal onlyInitializing {\n _registerInterface(type(IERC721PreSaleExtension).interfaceId);\n\n preSalePrice = _preSalePrice;\n preSaleMaxMintPerWallet = _preSaleMaxMintPerWallet;\n }\n\n /* ADMIN */\n\n function setPreSalePrice(uint256 newValue) external onlyOwner {\n preSalePrice = newValue;\n }\n\n function setPreSaleMaxMintPerWallet(uint256 newValue) external onlyOwner {\n preSaleMaxMintPerWallet = newValue;\n }\n\n function setAllowlistMerkleRoot(bytes32 newRoot) external onlyOwner {\n preSaleAllowlistMerkleRoot = newRoot;\n }\n\n function togglePreSaleStatus(bool isActive) external onlyOwner {\n preSaleStatus = isActive;\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721ACollectionMetadataExtension)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function onPreSaleAllowList(address minter, bytes32[] calldata proof)\n external\n view\n returns (bool)\n {\n return\n MerkleProof.verify(\n proof,\n preSaleAllowlistMerkleRoot,\n _generateMerkleLeaf(minter)\n );\n }\n\n function mintPreSale(uint256 count, bytes32[] calldata proof)\n external\n payable\n nonReentrant\n {\n require(preSaleStatus, \"NOT_ACTIVE\");\n\n address to = _msgSender();\n\n require(\n MerkleProof.verify(\n proof,\n preSaleAllowlistMerkleRoot,\n _generateMerkleLeaf(to)\n ),\n \"WRONG_PROOF\"\n );\n require(\n preSaleAllowlistClaimed[to] + count <= preSaleMaxMintPerWallet,\n \"PRE_SALE_LIMIT\"\n );\n require(preSalePrice * count <= msg.value, \"INSUFFICIENT_AMOUNT\");\n\n preSaleAllowlistClaimed[to] += count;\n\n _mintTo(to, count);\n }\n\n /* INTERNAL */\n\n function _generateMerkleLeaf(address account)\n internal\n pure\n returns (bytes32)\n {\n return keccak256(abi.encodePacked(account));\n }\n}\n"},"contracts/collections/ERC721A/extensions/ERC721APublicSaleExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"./ERC721AMinterExtension.sol\";\n\nimport {IERC721PublicSaleExtension} from \"../../ERC721/extensions/ERC721PublicSaleExtension.sol\";\n\n/**\n * @dev Extension to provide pre-sale and public-sale capabilities for collectors to mint for a specific price.\n */\nabstract contract ERC721APublicSaleExtension is\n IERC721PublicSaleExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721AMinterExtension,\n ReentrancyGuard\n{\n uint256 public publicSalePrice;\n uint256 public publicSaleMaxMintPerTx;\n bool public publicSaleStatus;\n\n function __ERC721APublicSaleExtension_init(\n uint256 _publicSalePrice,\n uint256 _publicSaleMaxMintPerTx\n ) internal onlyInitializing {\n __ERC721APublicSaleExtension_init_unchained(\n _publicSalePrice,\n _publicSaleMaxMintPerTx\n );\n }\n\n function __ERC721APublicSaleExtension_init_unchained(\n uint256 _publicSalePrice,\n uint256 _publicSaleMaxMintPerTx\n ) internal onlyInitializing {\n _registerInterface(type(IERC721PublicSaleExtension).interfaceId);\n\n publicSalePrice = _publicSalePrice;\n publicSaleMaxMintPerTx = _publicSaleMaxMintPerTx;\n }\n\n /* ADMIN */\n\n function setPublicSalePrice(uint256 newValue) external onlyOwner {\n publicSalePrice = newValue;\n }\n\n function setPublicSaleMaxMintPerTx(uint256 newValue) external onlyOwner {\n publicSaleMaxMintPerTx = newValue;\n }\n\n function togglePublicSaleStatus(bool isActive) external onlyOwner {\n publicSaleStatus = isActive;\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721ACollectionMetadataExtension)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function mintPublicSale(address to, uint256 count)\n external\n payable\n nonReentrant\n {\n require(publicSaleStatus, \"PUBLIC_SALE_NOT_ACTIVE\");\n require(count <= publicSaleMaxMintPerTx, \"PUBLIC_SALE_LIMIT\");\n require(publicSalePrice * count <= msg.value, \"INSUFFICIENT_AMOUNT\");\n\n _mintTo(to, count);\n }\n}\n"},"contracts/collections/ERC721/extensions/ERC721PreSaleExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"./ERC721AutoIdMinterExtension.sol\";\n\ninterface IERC721PreSaleExtension {\n function setPreSalePrice(uint256 newValue) external;\n\n function setPreSaleMaxMintPerWallet(uint256 newValue) external;\n\n function setAllowlistMerkleRoot(bytes32 newRoot) external;\n\n function togglePreSaleStatus(bool isActive) external;\n\n function onPreSaleAllowList(address minter, bytes32[] calldata proof)\n external\n view\n returns (bool);\n\n function mintPreSale(uint256 count, bytes32[] calldata proof)\n external\n payable;\n}\n\n/**\n * @dev Extension to provide pre-sale capabilities for certain collectors to mint for a specific price.\n */\nabstract contract ERC721PreSaleExtension is\n IERC721PreSaleExtension,\n Initializable,\n ERC165Storage,\n ERC721AutoIdMinterExtension,\n ReentrancyGuard\n{\n uint256 public preSalePrice;\n uint256 public preSaleMaxMintPerWallet;\n bytes32 public preSaleAllowlistMerkleRoot;\n bool public preSaleStatus;\n\n mapping(address => uint256) internal preSaleAllowlistClaimed;\n\n function __ERC721PreSaleExtension_init(\n uint256 _preSalePrice,\n uint256 _preSaleMaxMintPerWallet\n ) internal onlyInitializing {\n __ERC721PreSaleExtension_init_unchained(\n _preSalePrice,\n _preSaleMaxMintPerWallet\n );\n }\n\n function __ERC721PreSaleExtension_init_unchained(\n uint256 _preSalePrice,\n uint256 _preSaleMaxMintPerWallet\n ) internal onlyInitializing {\n _registerInterface(type(IERC721PreSaleExtension).interfaceId);\n\n preSalePrice = _preSalePrice;\n preSaleMaxMintPerWallet = _preSaleMaxMintPerWallet;\n }\n\n /* ADMIN */\n\n function setPreSalePrice(uint256 newValue) external onlyOwner {\n preSalePrice = newValue;\n }\n\n function setPreSaleMaxMintPerWallet(uint256 newValue) external onlyOwner {\n preSaleMaxMintPerWallet = newValue;\n }\n\n function setAllowlistMerkleRoot(bytes32 newRoot) external onlyOwner {\n preSaleAllowlistMerkleRoot = newRoot;\n }\n\n function togglePreSaleStatus(bool isActive) external onlyOwner {\n preSaleStatus = isActive;\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721CollectionMetadataExtension)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function onPreSaleAllowList(address minter, bytes32[] calldata proof)\n external\n view\n returns (bool)\n {\n return\n MerkleProof.verify(\n proof,\n preSaleAllowlistMerkleRoot,\n _generateMerkleLeaf(minter)\n );\n }\n\n function mintPreSale(uint256 count, bytes32[] calldata proof)\n external\n payable\n nonReentrant\n {\n require(preSaleStatus, \"NOT_ACTIVE\");\n\n address to = _msgSender();\n\n require(\n MerkleProof.verify(\n proof,\n preSaleAllowlistMerkleRoot,\n _generateMerkleLeaf(to)\n ),\n \"WRONG_PROOF\"\n );\n require(\n preSaleAllowlistClaimed[to] + count <= preSaleMaxMintPerWallet,\n \"PRE_SALE_LIMIT\"\n );\n require(preSalePrice * count <= msg.value, \"INSUFFICIENT_AMOUNT\");\n\n preSaleAllowlistClaimed[to] += count;\n\n _mintTo(to, count);\n }\n\n /* INTERNAL */\n\n function _generateMerkleLeaf(address account)\n internal\n pure\n returns (bytes32)\n {\n return keccak256(abi.encodePacked(account));\n }\n}\n"},"contracts/collections/ERC721/extensions/ERC721PublicSaleExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"./ERC721AutoIdMinterExtension.sol\";\n\ninterface IERC721PublicSaleExtension {\n function setPublicSalePrice(uint256 newValue) external;\n\n function setPublicSaleMaxMintPerTx(uint256 newValue) external;\n\n function togglePublicSaleStatus(bool isActive) external;\n\n function mintPublicSale(address to, uint256 count) external payable;\n}\n\n/**\n * @dev Extension to provide pre-sale and public-sale capabilities for collectors to mint for a specific price.\n */\nabstract contract ERC721PublicSaleExtension is\n IERC721PublicSaleExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721AutoIdMinterExtension,\n ReentrancyGuard\n{\n uint256 public publicSalePrice;\n uint256 public publicSaleMaxMintPerTx;\n bool public publicSaleStatus;\n\n function __ERC721PublicSaleExtension_init(\n uint256 _publicSalePrice,\n uint256 _publicSaleMaxMintPerTx\n ) internal onlyInitializing {\n __ERC721PublicSaleExtension_init_unchained(\n _publicSalePrice,\n _publicSaleMaxMintPerTx\n );\n }\n\n function __ERC721PublicSaleExtension_init_unchained(\n uint256 _publicSalePrice,\n uint256 _publicSaleMaxMintPerTx\n ) internal onlyInitializing {\n _registerInterface(type(IERC721PublicSaleExtension).interfaceId);\n\n publicSalePrice = _publicSalePrice;\n publicSaleMaxMintPerTx = _publicSaleMaxMintPerTx;\n }\n\n /* ADMIN */\n\n function setPublicSalePrice(uint256 newValue) external onlyOwner {\n publicSalePrice = newValue;\n }\n\n function setPublicSaleMaxMintPerTx(uint256 newValue) external onlyOwner {\n publicSaleMaxMintPerTx = newValue;\n }\n\n function togglePublicSaleStatus(bool isActive) external onlyOwner {\n publicSaleStatus = isActive;\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721CollectionMetadataExtension)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function mintPublicSale(address to, uint256 count)\n external\n payable\n nonReentrant\n {\n require(publicSaleStatus, \"PUBLIC_SALE_NOT_ACTIVE\");\n require(count <= publicSaleMaxMintPerTx, \"PUBLIC_SALE_LIMIT\");\n require(publicSalePrice * count <= msg.value, \"INSUFFICIENT_AMOUNT\");\n\n _mintTo(to, count);\n }\n}\n"},"@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../ERC20.sol\";\nimport \"../../../utils/Context.sol\";\n\n/**\n * @dev Extension of {ERC20} that allows token holders to destroy both their own\n * tokens and those that they have an allowance for, in a way that can be\n * recognized off-chain (via event analysis).\n */\nabstract contract ERC20Burnable is Context, ERC20 {\n /**\n * @dev Destroys `amount` tokens from the caller.\n *\n * See {ERC20-_burn}.\n */\n function burn(uint256 amount) public virtual {\n _burn(_msgSender(), amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, deducting from the caller's\n * allowance.\n *\n * See {ERC20-_burn} and {ERC20-allowance}.\n *\n * Requirements:\n *\n * - the caller must have allowance for ``accounts``'s tokens of at least\n * `amount`.\n */\n function burnFrom(address account, uint256 amount) public virtual {\n _spendAllowance(account, _msgSender(), amount);\n _burn(account, amount);\n }\n}\n"},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC20.sol\";\nimport \"./extensions/IERC20Metadata.sol\";\nimport \"../../utils/Context.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC20\n * applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is Context, IERC20, IERC20Metadata {\n mapping(address => uint256) private _balances;\n\n mapping(address => mapping(address => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n\n /**\n * @dev Sets the values for {name} and {symbol}.\n *\n * The default value of {decimals} is 18. To select a different value for\n * {decimals} you should overload it.\n *\n * All two of these values are immutable: they can only be set once during\n * construction.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the value {ERC20} uses, unless this function is\n * overridden;\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view virtual override returns (uint8) {\n return 18;\n }\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view virtual override returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view virtual override returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */\n function transfer(address to, uint256 amount) public virtual override returns (bool) {\n address owner = _msgSender();\n _transfer(owner, to, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20}.\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `amount`.\n */\n function transferFrom(\n address from,\n address to,\n uint256 amount\n ) public virtual override returns (bool) {\n address spender = _msgSender();\n _spendAllowance(from, spender, amount);\n _transfer(from, to, amount);\n return true;\n }\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, allowance(owner, spender) + addedValue);\n return true;\n }\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\n address owner = _msgSender();\n uint256 currentAllowance = allowance(owner, spender);\n require(currentAllowance >= subtractedValue, \"ERC20: decreased allowance below zero\");\n unchecked {\n _approve(owner, spender, currentAllowance - subtractedValue);\n }\n\n return true;\n }\n\n /**\n * @dev Moves `amount` of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n */\n function _transfer(\n address from,\n address to,\n uint256 amount\n ) internal virtual {\n require(from != address(0), \"ERC20: transfer from the zero address\");\n require(to != address(0), \"ERC20: transfer to the zero address\");\n\n _beforeTokenTransfer(from, to, amount);\n\n uint256 fromBalance = _balances[from];\n require(fromBalance >= amount, \"ERC20: transfer amount exceeds balance\");\n unchecked {\n _balances[from] = fromBalance - amount;\n }\n _balances[to] += amount;\n\n emit Transfer(from, to, amount);\n\n _afterTokenTransfer(from, to, amount);\n }\n\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n */\n function _mint(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: mint to the zero address\");\n\n _beforeTokenTransfer(address(0), account, amount);\n\n _totalSupply += amount;\n _balances[account] += amount;\n emit Transfer(address(0), account, amount);\n\n _afterTokenTransfer(address(0), account, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */\n function _burn(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: burn from the zero address\");\n\n _beforeTokenTransfer(account, address(0), amount);\n\n uint256 accountBalance = _balances[account];\n require(accountBalance >= amount, \"ERC20: burn amount exceeds balance\");\n unchecked {\n _balances[account] = accountBalance - amount;\n }\n _totalSupply -= amount;\n\n emit Transfer(account, address(0), amount);\n\n _afterTokenTransfer(account, address(0), amount);\n }\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */\n function _approve(\n address owner,\n address spender,\n uint256 amount\n ) internal virtual {\n require(owner != address(0), \"ERC20: approve from the zero address\");\n require(spender != address(0), \"ERC20: approve to the zero address\");\n\n _allowances[owner][spender] = amount;\n emit Approval(owner, spender, amount);\n }\n\n /**\n * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\n *\n * Does not update the allowance amount in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Might emit an {Approval} event.\n */\n function _spendAllowance(\n address owner,\n address spender,\n uint256 amount\n ) internal virtual {\n uint256 currentAllowance = allowance(owner, spender);\n if (currentAllowance != type(uint256).max) {\n require(currentAllowance >= amount, \"ERC20: insufficient allowance\");\n unchecked {\n _approve(owner, spender, currentAllowance - amount);\n }\n }\n }\n\n /**\n * @dev Hook that is called before any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * will be transferred to `to`.\n * - when `from` is zero, `amount` tokens will be minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 amount\n ) internal virtual {}\n\n /**\n * @dev Hook that is called after any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * has been transferred to `to`.\n * - when `from` is zero, `amount` tokens have been minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _afterTokenTransfer(\n address from,\n address to,\n uint256 amount\n ) internal virtual {}\n}\n"},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n *\n * _Available since v4.1._\n */\ninterface IERC20Metadata is IERC20 {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the decimals places of the token.\n */\n function decimals() external view returns (uint8);\n}\n"},"contracts/tokens/presets/ERC20LockableToken.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\nimport \"@openzeppelin/contracts/security/Pausable.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol\";\n\nimport \"../extensions/ERC20RoleBasedLockingExtension.sol\";\n\ncontract ERC20LockableToken is\n Initializable,\n ERC165Storage,\n AccessControl,\n ERC20,\n ERC20Burnable,\n Pausable,\n ERC20RoleBasedLockingExtension\n{\n bytes32 public constant PAUSER_ROLE = keccak256(\"PAUSER_ROLE\");\n bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n\n string private _name;\n string private _symbol;\n\n struct Config {\n string name;\n string symbol;\n }\n\n constructor(Config memory config) ERC20(config.name, config.symbol) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _name = config.name;\n _symbol = config.symbol;\n\n _grantRole(DEFAULT_ADMIN_ROLE, deployer);\n _grantRole(PAUSER_ROLE, deployer);\n _grantRole(MINTER_ROLE, deployer);\n\n __ERC20RoleBasedLockingExtension_init(deployer);\n }\n\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n /* ADMIN */\n\n function pause() public onlyRole(PAUSER_ROLE) {\n _pause();\n }\n\n function unpause() public onlyRole(PAUSER_ROLE) {\n _unpause();\n }\n\n function mint(address to, uint256 amount) public onlyRole(MINTER_ROLE) {\n _mint(to, amount);\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, AccessControl, ERC20RoleBasedLockingExtension)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 amount\n )\n internal\n virtual\n override(ERC20, ERC20RoleBasedLockingExtension)\n whenNotPaused\n {\n ERC20RoleBasedLockingExtension._beforeTokenTransfer(from, to, amount);\n }\n}\n"},"contracts/tokens/extensions/ERC20RoleBasedLockingExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\ninterface ERC20RoleBasedLockingExtensionInterface {\n function lockForAll() external;\n\n function unlockForAll() external;\n\n function canTransfer(address) external view returns (bool);\n}\n\n/**\n * @dev Extension to allow locking transfers and only allow certain addresses do to transfers.\n */\nabstract contract ERC20RoleBasedLockingExtension is\n Initializable,\n ERC165Storage,\n AccessControl,\n ERC20,\n ERC20RoleBasedLockingExtensionInterface\n{\n bytes32 public constant TRANSFER_ROLE = keccak256(\"TRANSFER_ROLE\");\n\n constructor() {}\n\n function __ERC20RoleBasedLockingExtension_init(address deployer)\n internal\n onlyInitializing\n {\n __ERC20RoleBasedLockingExtension_init_unchained(deployer);\n }\n\n function __ERC20RoleBasedLockingExtension_init_unchained(address deployer)\n internal\n onlyInitializing\n {\n _registerInterface(\n type(ERC20RoleBasedLockingExtensionInterface).interfaceId\n );\n\n _grantRole(TRANSFER_ROLE, deployer);\n }\n\n /* ADMIN */\n\n function lockForAll() external {\n require(hasRole(DEFAULT_ADMIN_ROLE, _msgSender()), \"NOT_ADMIN\");\n\n _revokeRole(TRANSFER_ROLE, address(0));\n }\n\n function unlockForAll() external {\n require(hasRole(DEFAULT_ADMIN_ROLE, _msgSender()), \"NOT_ADMIN\");\n\n _grantRole(TRANSFER_ROLE, address(0));\n }\n\n /* PUBLIC */\n\n function canTransfer(address operator)\n external\n view\n override\n returns (bool)\n {\n return hasRole(TRANSFER_ROLE, operator);\n }\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, AccessControl)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 amount\n ) internal virtual override {\n require(\n hasRole(TRANSFER_ROLE, address(0)) ||\n hasRole(TRANSFER_ROLE, _msgSender()),\n \"TRANSFER_LOCKED\"\n );\n\n super._beforeTokenTransfer(from, to, amount);\n }\n}\n"},"@openzeppelin/contracts/security/Pausable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which allows children to implement an emergency stop\n * mechanism that can be triggered by an authorized account.\n *\n * This module is used through inheritance. It will make available the\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n * the functions of your contract. Note that they will not be pausable by\n * simply including this module, only once the modifiers are put in place.\n */\nabstract contract Pausable is Context {\n /**\n * @dev Emitted when the pause is triggered by `account`.\n */\n event Paused(address account);\n\n /**\n * @dev Emitted when the pause is lifted by `account`.\n */\n event Unpaused(address account);\n\n bool private _paused;\n\n /**\n * @dev Initializes the contract in unpaused state.\n */\n constructor() {\n _paused = false;\n }\n\n /**\n * @dev Modifier to make a function callable only when the contract is not paused.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n modifier whenNotPaused() {\n _requireNotPaused();\n _;\n }\n\n /**\n * @dev Modifier to make a function callable only when the contract is paused.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n modifier whenPaused() {\n _requirePaused();\n _;\n }\n\n /**\n * @dev Returns true if the contract is paused, and false otherwise.\n */\n function paused() public view virtual returns (bool) {\n return _paused;\n }\n\n /**\n * @dev Throws if the contract is paused.\n */\n function _requireNotPaused() internal view virtual {\n require(!paused(), \"Pausable: paused\");\n }\n\n /**\n * @dev Throws if the contract is not paused.\n */\n function _requirePaused() internal view virtual {\n require(paused(), \"Pausable: not paused\");\n }\n\n /**\n * @dev Triggers stopped state.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n function _pause() internal virtual whenNotPaused {\n _paused = true;\n emit Paused(_msgSender());\n }\n\n /**\n * @dev Returns to normal state.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n function _unpause() internal virtual whenPaused {\n _paused = false;\n emit Unpaused(_msgSender());\n }\n}\n"},"contracts/collections/ERC721A/presets/ERC721AOneOfOneCollection.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"../../../common/LicenseExtension.sol\";\nimport \"../../../common/meta-transactions/ERC2771ContextOwnable.sol\";\nimport \"../../ERC721/extensions/ERC721RoyaltyExtension.sol\";\nimport \"../extensions/ERC721AMinterExtension.sol\";\nimport \"../extensions/ERC721ACollectionMetadataExtension.sol\";\nimport \"../extensions/ERC721APerTokenMetadataExtension.sol\";\nimport \"../extensions/ERC721AOneOfOneMintExtension.sol\";\nimport \"../extensions/ERC721AOwnerMintExtension.sol\";\n\ncontract ERC721AOneOfOneCollection is\n Initializable,\n Ownable,\n ERC165Storage,\n LicenseExtension,\n ERC721ACollectionMetadataExtension,\n ERC721AOwnerMintExtension,\n ERC721AOneOfOneMintExtension,\n ERC721RoyaltyExtension,\n ERC2771ContextOwnable\n{\n struct Config {\n string name;\n string symbol;\n string contractURI;\n uint256 maxSupply;\n address defaultRoyaltyAddress;\n uint16 defaultRoyaltyBps;\n address trustedForwarder;\n LicenseVersion licenseVersion;\n }\n\n constructor(Config memory config) ERC721A(config.name, config.symbol) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _setupRole(DEFAULT_ADMIN_ROLE, deployer);\n _setupRole(MINTER_ROLE, deployer);\n\n _transferOwnership(deployer);\n\n __ERC721ACollectionMetadataExtension_init(\n config.name,\n config.symbol,\n config.contractURI\n );\n __ERC721APerTokenMetadataExtension_init();\n __ERC721AOwnerMintExtension_init();\n __ERC721AOneOfOneMintExtension_init();\n __ERC721AMinterExtension_init(config.maxSupply);\n __ERC721RoyaltyExtension_init(\n config.defaultRoyaltyAddress,\n config.defaultRoyaltyBps\n );\n __ERC2771ContextOwnable_init(config.trustedForwarder);\n __LicenseExtension_init(config.licenseVersion);\n }\n\n function _burn(uint256 tokenId)\n internal\n virtual\n override(ERC721A, ERC721AOneOfOneMintExtension)\n {\n return ERC721AOneOfOneMintExtension._burn(tokenId);\n }\n\n function _msgSender()\n internal\n view\n virtual\n override(ERC2771ContextOwnable, Context)\n returns (address sender)\n {\n return super._msgSender();\n }\n\n function _msgData()\n internal\n view\n virtual\n override(ERC2771ContextOwnable, Context)\n returns (bytes calldata)\n {\n return super._msgData();\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(\n ERC165Storage,\n ERC721ACollectionMetadataExtension,\n ERC721AOwnerMintExtension,\n ERC721AOneOfOneMintExtension,\n ERC721RoyaltyExtension,\n LicenseExtension\n )\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function name()\n public\n view\n override(\n ERC721ACollectionMetadataExtension,\n ERC721AOneOfOneMintExtension\n )\n returns (string memory)\n {\n return ERC721AOneOfOneMintExtension.name();\n }\n\n function symbol()\n public\n view\n override(\n ERC721ACollectionMetadataExtension,\n ERC721AOneOfOneMintExtension\n )\n returns (string memory)\n {\n return ERC721AOneOfOneMintExtension.symbol();\n }\n\n function tokenURI(uint256 _tokenId)\n public\n view\n virtual\n override(ERC721A, ERC721AOneOfOneMintExtension)\n returns (string memory)\n {\n return ERC721AOneOfOneMintExtension.tokenURI(_tokenId);\n }\n\n function getInfo()\n external\n view\n returns (\n uint256 _maxSupply,\n uint256 _totalSupply,\n uint256 _senderBalance\n )\n {\n uint256 balance = 0;\n\n if (_msgSender() != address(0)) {\n balance = this.balanceOf(_msgSender());\n }\n\n return (maxSupply, this.totalSupply(), balance);\n }\n}\n"},"contracts/collections/ERC721A/extensions/ERC721APerTokenMetadataExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"erc721a/contracts/ERC721A.sol\";\n\nimport {IERC721PerTokenMetadataExtension} from \"../../ERC721/extensions/ERC721PerTokenMetadataExtension.sol\";\n\n/**\n * @dev Extension to allow configuring collection and tokens metadata URI.\n * In this extension each token will have a different independent token URI set by contract owner.\n * To enable true self-custody for token owners, an admin can freeze URIs using a token ID pointer that can only be increased.\n */\nabstract contract ERC721APerTokenMetadataExtension is\n IERC721PerTokenMetadataExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721A\n{\n uint256 public lastFrozenTokenId;\n\n using Strings for uint256;\n\n // Optional mapping for token URIs\n mapping(uint256 => string) private _tokenURIs;\n\n function __ERC721APerTokenMetadataExtension_init()\n internal\n onlyInitializing\n {\n __ERC721APerTokenMetadataExtension_init_unchained();\n }\n\n function __ERC721APerTokenMetadataExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721PerTokenMetadataExtension).interfaceId);\n }\n\n /* ADMIN */\n\n function freezeTokenURIs(uint256 _lastFrozenTokenId) external onlyOwner {\n require(_lastFrozenTokenId > lastFrozenTokenId, \"CANNOT_UNFREEZE\");\n lastFrozenTokenId = _lastFrozenTokenId;\n }\n\n function setTokenURI(uint256 tokenId, string memory tokenURI)\n external\n onlyOwner\n {\n require(tokenId > lastFrozenTokenId, \"FROZEN\");\n _setTokenURI(tokenId, tokenURI);\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721A)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n /**\n * @dev See {IERC721Metadata-tokenURI}.\n */\n function tokenURI(uint256 tokenId)\n public\n view\n virtual\n override\n returns (string memory)\n {\n require(\n _exists(tokenId),\n \"ERC721URIStorage: URI query for nonexistent token\"\n );\n\n string memory _tokenURI = _tokenURIs[tokenId];\n string memory base = _baseURI();\n\n // If there is no base URI, return the token URI.\n if (bytes(base).length == 0) {\n return _tokenURI;\n }\n // If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked).\n if (bytes(_tokenURI).length > 0) {\n return string(abi.encodePacked(base, _tokenURI));\n }\n\n return super.tokenURI(tokenId);\n }\n\n /**\n * @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function _setTokenURI(uint256 tokenId, string memory _tokenURI)\n internal\n virtual\n {\n require(\n _exists(tokenId),\n \"ERC721URIStorage: URI set of nonexistent token\"\n );\n _tokenURIs[tokenId] = _tokenURI;\n }\n\n /**\n * @dev Destroys `tokenId`.\n * The approval is cleared when the token is burned.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n *\n * Emits a {Transfer} event.\n */\n function _burn(uint256 tokenId) internal virtual override {\n super._burn(tokenId);\n\n if (bytes(_tokenURIs[tokenId]).length != 0) {\n delete _tokenURIs[tokenId];\n }\n }\n}\n"},"contracts/collections/ERC721A/extensions/ERC721AOneOfOneMintExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"./ERC721AMinterExtension.sol\";\nimport \"./ERC721APerTokenMetadataExtension.sol\";\n\nimport {IERC721OneOfOneMintExtension} from \"../../ERC721/extensions/ERC721OneOfOneMintExtension.sol\";\n\n/**\n * @dev Extension to allow owner to mint 1-of-1 NFTs by providing dedicated metadata URI for each token.\n */\nabstract contract ERC721AOneOfOneMintExtension is\n IERC721OneOfOneMintExtension,\n AccessControl,\n ERC721AMinterExtension,\n ERC721APerTokenMetadataExtension\n{\n bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n\n function __ERC721AOneOfOneMintExtension_init() internal onlyInitializing {\n __ERC721APerTokenMetadataExtension_init();\n __ERC721AOneOfOneMintExtension_init_unchained();\n }\n\n function __ERC721AOneOfOneMintExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721OneOfOneMintExtension).interfaceId);\n }\n\n /* ADMIN */\n\n function mintWithTokenURIsByOwner(\n address to,\n uint256 count,\n string[] memory tokenURIs\n ) external onlyOwner {\n uint256 startingTokenId = _nextTokenId();\n _mintTo(to, count);\n for (uint256 i = 0; i < count; i++) {\n _setTokenURI(startingTokenId + i, tokenURIs[i]);\n }\n }\n\n function mintWithTokenURIsByRole(\n address to,\n uint256 count,\n string[] memory tokenURIs\n ) external {\n require(hasRole(MINTER_ROLE, _msgSender()), \"NOT_MINTER_ROLE\");\n\n uint256 startingTokenId = _nextTokenId();\n _mintTo(to, count);\n for (uint256 i = 0; i < count; i++) {\n _setTokenURI(startingTokenId + i, tokenURIs[i]);\n }\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(\n AccessControl,\n ERC721ACollectionMetadataExtension,\n ERC721APerTokenMetadataExtension\n )\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function name()\n public\n view\n virtual\n override(ERC721A, ERC721ACollectionMetadataExtension)\n returns (string memory)\n {\n return ERC721ACollectionMetadataExtension.name();\n }\n\n function symbol()\n public\n view\n virtual\n override(ERC721A, ERC721ACollectionMetadataExtension)\n returns (string memory)\n {\n return ERC721ACollectionMetadataExtension.symbol();\n }\n\n function tokenURI(uint256 tokenId)\n public\n view\n virtual\n override(\n ERC721A,\n ERC721APerTokenMetadataExtension,\n IERC721OneOfOneMintExtension\n )\n returns (string memory)\n {\n return ERC721APerTokenMetadataExtension.tokenURI(tokenId);\n }\n\n function _burn(uint256 tokenId)\n internal\n virtual\n override(ERC721A, ERC721APerTokenMetadataExtension)\n {\n return ERC721APerTokenMetadataExtension._burn(tokenId);\n }\n}\n"},"contracts/collections/ERC721/extensions/ERC721PerTokenMetadataExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\ninterface IERC721PerTokenMetadataExtension {\n function freezeTokenURIs(uint256 _lastFrozenTokenId) external;\n\n function setTokenURI(uint256 tokenId, string memory tokenURI) external;\n}\n\n/**\n * @dev Extension to allow configuring collection and tokens metadata URI.\n * In this extension each token will have a different independent token URI set by contract owner.\n * To enable true self-custody for token owners, an admin can freeze URIs using a token ID pointer that can only be increased.\n */\nabstract contract ERC721PerTokenMetadataExtension is\n IERC721PerTokenMetadataExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721URIStorage\n{\n uint256 public lastFrozenTokenId;\n\n function __ERC721PerTokenMetadataExtension_init()\n internal\n onlyInitializing\n {\n __ERC721PerTokenMetadataExtension_init_unchained();\n }\n\n function __ERC721PerTokenMetadataExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721PerTokenMetadataExtension).interfaceId);\n }\n\n /* ADMIN */\n\n function freezeTokenURIs(uint256 _lastFrozenTokenId) external onlyOwner {\n require(_lastFrozenTokenId > lastFrozenTokenId, \"CANNOT_UNFREEZE\");\n lastFrozenTokenId = _lastFrozenTokenId;\n }\n\n function setTokenURI(uint256 tokenId, string memory tokenURI)\n external\n onlyOwner\n {\n require(tokenId > lastFrozenTokenId, \"FROZEN\");\n _setTokenURI(tokenId, tokenURI);\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n}\n"},"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/extensions/ERC721URIStorage.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../ERC721.sol\";\n\n/**\n * @dev ERC721 token with storage based token URI management.\n */\nabstract contract ERC721URIStorage is ERC721 {\n using Strings for uint256;\n\n // Optional mapping for token URIs\n mapping(uint256 => string) private _tokenURIs;\n\n /**\n * @dev See {IERC721Metadata-tokenURI}.\n */\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n _requireMinted(tokenId);\n\n string memory _tokenURI = _tokenURIs[tokenId];\n string memory base = _baseURI();\n\n // If there is no base URI, return the token URI.\n if (bytes(base).length == 0) {\n return _tokenURI;\n }\n // If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked).\n if (bytes(_tokenURI).length > 0) {\n return string(abi.encodePacked(base, _tokenURI));\n }\n\n return super.tokenURI(tokenId);\n }\n\n /**\n * @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual {\n require(_exists(tokenId), \"ERC721URIStorage: URI set of nonexistent token\");\n _tokenURIs[tokenId] = _tokenURI;\n }\n\n /**\n * @dev See {ERC721-_burn}. This override additionally checks to see if a\n * token-specific URI was set for the token, and if so, it deletes the token URI from\n * the storage mapping.\n */\n function _burn(uint256 tokenId) internal virtual override {\n super._burn(tokenId);\n\n if (bytes(_tokenURIs[tokenId]).length != 0) {\n delete _tokenURIs[tokenId];\n }\n }\n}\n"},"contracts/collections/ERC721/extensions/ERC721OneOfOneMintExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"./ERC721AutoIdMinterExtension.sol\";\nimport \"./ERC721PerTokenMetadataExtension.sol\";\n\ninterface IERC721OneOfOneMintExtension {\n function mintWithTokenURIsByOwner(\n address to,\n uint256 count,\n string[] memory tokenURIs\n ) external;\n\n function mintWithTokenURIsByRole(\n address to,\n uint256 count,\n string[] memory tokenURIs\n ) external;\n\n function tokenURI(uint256 tokenId) external view returns (string memory);\n}\n\n/**\n * @dev Extension to allow owner to mint 1-of-1 NFTs by providing dedicated metadata URI for each token.\n */\nabstract contract ERC721OneOfOneMintExtension is\n IERC721OneOfOneMintExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n AccessControl,\n ERC721AutoIdMinterExtension,\n ERC721PerTokenMetadataExtension\n{\n bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n\n function __ERC721OneOfOneMintExtension_init() internal onlyInitializing {\n __ERC721OneOfOneMintExtension_init_unchained();\n }\n\n function __ERC721OneOfOneMintExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721OneOfOneMintExtension).interfaceId);\n }\n\n /* ADMIN */\n\n function mintWithTokenURIsByOwner(\n address to,\n uint256 count,\n string[] memory tokenURIs\n ) external onlyOwner {\n uint256 startingTokenId = _currentTokenId;\n _mintTo(to, count);\n for (uint256 i = 0; i < count; i++) {\n _setTokenURI(startingTokenId + i, tokenURIs[i]);\n }\n }\n\n function mintWithTokenURIsByRole(\n address to,\n uint256 count,\n string[] memory tokenURIs\n ) external {\n require(hasRole(MINTER_ROLE, _msgSender()), \"NOT_MINTER_ROLE\");\n\n uint256 startingTokenId = _currentTokenId;\n _mintTo(to, count);\n for (uint256 i = 0; i < count; i++) {\n _setTokenURI(startingTokenId + i, tokenURIs[i]);\n }\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(\n ERC165Storage,\n AccessControl,\n ERC721CollectionMetadataExtension,\n ERC721PerTokenMetadataExtension\n )\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function name()\n public\n view\n virtual\n override(ERC721, ERC721CollectionMetadataExtension)\n returns (string memory)\n {\n return ERC721CollectionMetadataExtension.name();\n }\n\n function symbol()\n public\n view\n virtual\n override(ERC721, ERC721CollectionMetadataExtension)\n returns (string memory)\n {\n return ERC721CollectionMetadataExtension.symbol();\n }\n\n function tokenURI(uint256 tokenId)\n public\n view\n virtual\n override(ERC721, ERC721URIStorage, IERC721OneOfOneMintExtension)\n returns (string memory)\n {\n return ERC721URIStorage.tokenURI(tokenId);\n }\n\n function _burn(uint256 tokenId)\n internal\n virtual\n override(ERC721, ERC721URIStorage)\n {\n return ERC721URIStorage._burn(tokenId);\n }\n}\n"},"contracts/streams/ERC721/presets/ERC721ShareVestingStream.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport \"../../../common/WithdrawExtension.sol\";\nimport \"../extensions/ERC721ShareSplitExtension.sol\";\nimport \"../extensions/ERC721VestingReleaseExtension.sol\";\nimport \"../extensions/ERC721LockableClaimExtension.sol\";\n\ncontract ERC721ShareVestingStream is\n Initializable,\n Ownable,\n ERC721VestingReleaseExtension,\n ERC721ShareSplitExtension,\n ERC721LockableClaimExtension,\n WithdrawExtension\n{\n string public constant name = \"ERC721 Share Vesting Stream\";\n\n string public constant version = \"0.1\";\n\n struct Config {\n // Core\n address ticketToken;\n uint64 lockedUntilTimestamp;\n // Vesting release extension\n uint64 startTimestamp;\n uint64 durationSeconds;\n // Share split extension\n uint256[] tokenIds;\n uint256[] shares;\n // Lockable claim extension\n uint64 claimLockedUntil;\n }\n\n /* INTERNAL */\n\n constructor(Config memory config) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _transferOwnership(deployer);\n\n __WithdrawExtension_init(deployer, WithdrawMode.OWNER);\n __ERC721MultiTokenStream_init(\n config.ticketToken,\n config.lockedUntilTimestamp\n );\n __ERC721VestingReleaseExtension_init(\n config.startTimestamp,\n config.durationSeconds\n );\n __ERC721ShareSplitExtension_init(config.tokenIds, config.shares);\n __ERC721LockableClaimExtension_init(config.claimLockedUntil);\n }\n\n function _beforeClaim(\n uint256 ticketTokenId_,\n address claimToken_,\n address beneficiary_\n ) internal override(ERC721MultiTokenStream, ERC721LockableClaimExtension) {\n ERC721MultiTokenStream._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n ERC721LockableClaimExtension._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n }\n}\n"},"contracts/streams/ERC721/extensions/ERC721ShareSplitExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport \"../base/ERC721MultiTokenStream.sol\";\n\ninterface IERC721ShareSplitExtension {\n function hasERC721ShareSplitExtension() external view returns (bool);\n\n function setSharesForTokens(\n uint256[] memory _tokenIds,\n uint256[] memory _shares\n ) external;\n\n function getSharesByTokens(uint256[] calldata _tokenIds)\n external\n view\n returns (uint256[] memory);\n}\n\nabstract contract ERC721ShareSplitExtension is\n IERC721ShareSplitExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721MultiTokenStream\n{\n event SharesUpdated(uint256 tokenId, uint256 prevShares, uint256 newShares);\n\n // Sum of all the share units ever configured\n uint256 public totalShares;\n\n // Map of ticket token ID -> share of the stream\n mapping(uint256 => uint256) public shares;\n\n /* INTERNAL */\n\n function __ERC721ShareSplitExtension_init(\n uint256[] memory _tokenIds,\n uint256[] memory _shares\n ) internal onlyInitializing {\n __ERC721ShareSplitExtension_init_unchained(_tokenIds, _shares);\n }\n\n function __ERC721ShareSplitExtension_init_unchained(\n uint256[] memory _tokenIds,\n uint256[] memory _shares\n ) internal onlyInitializing {\n require(_shares.length == _tokenIds.length, \"ARGS_MISMATCH\");\n _updateShares(_tokenIds, _shares);\n\n _registerInterface(type(IERC721ShareSplitExtension).interfaceId);\n }\n\n function setSharesForTokens(\n uint256[] memory _tokenIds,\n uint256[] memory _shares\n ) public onlyOwner {\n require(_shares.length == _tokenIds.length, \"ARGS_MISMATCH\");\n require(lockedUntilTimestamp < block.timestamp, \"CONFIG_LOCKED\");\n\n _updateShares(_tokenIds, _shares);\n }\n\n /* PUBLIC */\n\n function hasERC721ShareSplitExtension() external pure returns (bool) {\n return true;\n }\n\n function getSharesByTokens(uint256[] calldata _tokenIds)\n public\n view\n returns (uint256[] memory)\n {\n uint256[] memory _shares = new uint256[](_tokenIds.length);\n\n for (uint256 i = 0; i < _shares.length; i++) {\n _shares[i] = shares[_tokenIds[i]];\n }\n\n return _shares;\n }\n\n function _totalTokenReleasedAmount(\n uint256 totalReleasedAmount_,\n uint256 ticketTokenId_,\n address claimToken_\n ) internal view override returns (uint256) {\n claimToken_;\n\n return (totalReleasedAmount_ * shares[ticketTokenId_]) / totalShares;\n }\n\n /* INTERNAL */\n\n function _updateShares(uint256[] memory _tokenIds, uint256[] memory _shares)\n private\n {\n for (uint256 i = 0; i < _shares.length; i++) {\n _updateShares(_tokenIds[i], _shares[i]);\n }\n }\n\n function _updateShares(uint256 tokenId, uint256 newShares) private {\n uint256 prevShares = shares[tokenId];\n\n shares[tokenId] = newShares;\n totalShares = totalShares + newShares - prevShares;\n\n require(totalShares >= 0, \"NEGATIVE_SHARES\");\n\n emit SharesUpdated(tokenId, prevShares, newShares);\n }\n}\n"},"contracts/streams/ERC721/extensions/ERC721VestingReleaseExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport \"../base/ERC721MultiTokenStream.sol\";\n\ninterface IERC721VestingReleaseExtension {\n function hasERC721VestingReleaseExtension() external view returns (bool);\n\n function setVestingStartTimestamp(uint64 newValue) external;\n\n function setVestingDurationSeconds(uint64 newValue) external;\n}\n\nabstract contract ERC721VestingReleaseExtension is\n IERC721VestingReleaseExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721MultiTokenStream\n{\n // Start of the vesting schedule\n uint64 public vestingStartTimestamp;\n\n // Duration of the vesting schedule\n uint64 public vestingDurationSeconds;\n\n /* INTERNAL */\n\n function __ERC721VestingReleaseExtension_init(\n uint64 _vestingStartTimestamp,\n uint64 _vestingDurationSeconds\n ) internal onlyInitializing {\n __ERC721VestingReleaseExtension_init_unchained(\n _vestingStartTimestamp,\n _vestingDurationSeconds\n );\n }\n\n function __ERC721VestingReleaseExtension_init_unchained(\n uint64 _vestingStartTimestamp,\n uint64 _vestingDurationSeconds\n ) internal onlyInitializing {\n vestingStartTimestamp = _vestingStartTimestamp;\n vestingDurationSeconds = _vestingDurationSeconds;\n\n _registerInterface(type(IERC721VestingReleaseExtension).interfaceId);\n }\n\n /* ADMIN */\n\n function setVestingStartTimestamp(uint64 newValue) public onlyOwner {\n require(lockedUntilTimestamp < block.timestamp, \"CONFIG_LOCKED\");\n vestingStartTimestamp = newValue;\n }\n\n function setVestingDurationSeconds(uint64 newValue) public onlyOwner {\n require(lockedUntilTimestamp < block.timestamp, \"CONFIG_LOCKED\");\n vestingDurationSeconds = newValue;\n }\n\n /* PUBLIC */\n\n function hasERC721VestingReleaseExtension() external pure returns (bool) {\n return true;\n }\n\n /* INTERNAL */\n\n function _totalStreamReleasedAmount(\n uint256 _streamTotalSupply,\n uint256 _ticketTokenId,\n address _claimToken\n ) internal view override returns (uint256) {\n _ticketTokenId;\n _claimToken;\n\n if (block.timestamp < vestingStartTimestamp) {\n return 0;\n } else if (\n block.timestamp > vestingStartTimestamp + vestingDurationSeconds\n ) {\n return _streamTotalSupply;\n } else {\n return\n (_streamTotalSupply *\n (block.timestamp - vestingStartTimestamp)) /\n vestingDurationSeconds;\n }\n }\n}\n"},"contracts/streams/ERC721/extensions/ERC721LockableClaimExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport \"../base/ERC721MultiTokenStream.sol\";\n\ninterface IERC721LockableClaimExtension {\n function hasERC721LockableClaimExtension() external view returns (bool);\n\n function setClaimLockedUntil(uint64 newValue) external;\n}\n\nabstract contract ERC721LockableClaimExtension is\n IERC721LockableClaimExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721MultiTokenStream\n{\n // Claiming is only possible after this time (unix timestamp)\n uint64 public claimLockedUntil;\n\n /* INTERNAL */\n\n function __ERC721LockableClaimExtension_init(uint64 _claimLockedUntil)\n internal\n onlyInitializing\n {\n __ERC721LockableClaimExtension_init_unchained(_claimLockedUntil);\n }\n\n function __ERC721LockableClaimExtension_init_unchained(\n uint64 _claimLockedUntil\n ) internal onlyInitializing {\n claimLockedUntil = _claimLockedUntil;\n\n _registerInterface(type(IERC721LockableClaimExtension).interfaceId);\n }\n\n /* ADMIN */\n\n function setClaimLockedUntil(uint64 newValue) public onlyOwner {\n require(lockedUntilTimestamp < block.timestamp, \"CONFIG_LOCKED\");\n claimLockedUntil = newValue;\n }\n\n /* PUBLIC */\n\n function hasERC721LockableClaimExtension() external pure returns (bool) {\n return true;\n }\n\n /* INTERNAL */\n\n function _beforeClaim(\n uint256 ticketTokenId_,\n address claimToken_,\n address beneficiary_\n ) internal virtual override {\n ticketTokenId_;\n claimToken_;\n beneficiary_;\n\n require(claimLockedUntil < block.timestamp, \"CLAIM_LOCKED\");\n }\n}\n"},"contracts/streams/ERC721/base/ERC721MultiTokenStream.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\";\n\ninterface IERC721MultiTokenStream {\n // Claim native currency for a single ticket token\n function claim(uint256 ticketTokenId) external;\n\n // Claim an erc20 claim token for a single ticket token\n function claim(uint256 ticketTokenId, address claimToken) external;\n\n // Claim native currency for multiple ticket tokens (only if all owned by sender)\n function claim(uint256[] calldata ticketTokenIds) external;\n\n // Claim native or erc20 tokens for multiple ticket tokens (only if all owned by `owner`)\n function claim(\n uint256[] calldata ticketTokenIds,\n address claimToken,\n address owner\n ) external;\n\n // Total native currency ever supplied to this stream\n function streamTotalSupply() external view returns (uint256);\n\n // Total erc20 token ever supplied to this stream by claim token address\n function streamTotalSupply(address claimToken)\n external\n view\n returns (uint256);\n\n // Total native currency ever claimed from this stream\n function streamTotalClaimed() external view returns (uint256);\n\n // Total erc20 token ever claimed from this stream by claim token address\n function streamTotalClaimed(address claimToken)\n external\n view\n returns (uint256);\n\n // Total native currency ever claimed for a single ticket token\n function streamTotalClaimed(uint256 ticketTokenId)\n external\n view\n returns (uint256);\n\n // Total native currency ever claimed for multiple token IDs\n function streamTotalClaimed(uint256[] calldata ticketTokenIds)\n external\n view\n returns (uint256);\n\n // Total erc20 token ever claimed for multiple token IDs\n function streamTotalClaimed(\n uint256[] calldata ticketTokenIds,\n address claimToken\n ) external view returns (uint256);\n\n // Calculate currently claimable amount for a specific ticket token ID and a specific claim token address\n // Pass 0x0000000000000000000000000000000000000000 as claim token to represent native currency\n function streamClaimableAmount(uint256 ticketTokenId, address claimToken)\n external\n view\n returns (uint256 claimableAmount);\n}\n\nabstract contract ERC721MultiTokenStream is\n IERC721MultiTokenStream,\n IERC721Receiver,\n Initializable,\n Ownable,\n ERC165Storage,\n ReentrancyGuard\n{\n using Address for address;\n using Address for address payable;\n\n struct Entitlement {\n uint256 totalClaimed;\n uint256 lastClaimedAt;\n }\n\n // Config\n address public ticketToken;\n\n // Locks changing the config until this timestamp is reached\n uint64 public lockedUntilTimestamp;\n\n // Map of ticket token ID -> claim token address -> entitlement\n mapping(uint256 => mapping(address => Entitlement)) public entitlements;\n\n // Map of claim token address -> Total amount claimed by all holders\n mapping(address => uint256) internal _streamTotalClaimed;\n\n /* EVENTS */\n\n event Claim(\n address operator,\n address beneficiary,\n uint256 ticketTokenId,\n address claimToken,\n uint256 releasedAmount\n );\n\n event ClaimMany(\n address operator,\n address beneficiary,\n uint256[] ticketTokenIds,\n address claimToken,\n uint256 releasedAmount\n );\n\n function __ERC721MultiTokenStream_init(\n address _ticketToken,\n uint64 _lockedUntilTimestamp\n ) internal onlyInitializing {\n __ERC721MultiTokenStream_init_unchained(\n _ticketToken,\n _lockedUntilTimestamp\n );\n }\n\n function __ERC721MultiTokenStream_init_unchained(\n address _ticketToken,\n uint64 _lockedUntilTimestamp\n ) internal onlyInitializing {\n ticketToken = _ticketToken;\n lockedUntilTimestamp = _lockedUntilTimestamp;\n\n _registerInterface(type(IERC721MultiTokenStream).interfaceId);\n }\n\n /* ADMIN */\n\n function lockUntil(uint64 newValue) public onlyOwner {\n require(newValue > lockedUntilTimestamp, \"CANNOT_REWIND\");\n lockedUntilTimestamp = newValue;\n }\n\n /* PUBLIC */\n\n receive() external payable {\n require(msg.value > 0);\n }\n\n function onERC721Received(\n address,\n address,\n uint256,\n bytes memory\n ) public virtual override returns (bytes4) {\n return this.onERC721Received.selector;\n }\n\n function claim(uint256 ticketTokenId) public {\n claim(ticketTokenId, address(0));\n }\n\n function claim(uint256 ticketTokenId, address claimToken)\n public\n nonReentrant\n {\n /* CHECKS */\n address beneficiary = _msgSender();\n _beforeClaim(ticketTokenId, claimToken, beneficiary);\n\n uint256 claimable = streamClaimableAmount(ticketTokenId, claimToken);\n require(claimable > 0, \"NOTHING_TO_CLAIM\");\n\n /* EFFECTS */\n\n entitlements[ticketTokenId][claimToken].totalClaimed += claimable;\n entitlements[ticketTokenId][claimToken].lastClaimedAt = block.timestamp;\n\n _streamTotalClaimed[claimToken] += claimable;\n\n /* INTERACTIONS */\n\n if (claimToken == address(0)) {\n payable(address(beneficiary)).sendValue(claimable);\n } else {\n IERC20(claimToken).transfer(beneficiary, claimable);\n }\n\n /* LOGS */\n\n emit Claim(\n _msgSender(),\n beneficiary,\n ticketTokenId,\n claimToken,\n claimable\n );\n }\n\n function claim(uint256[] calldata ticketTokenIds) public {\n claim(ticketTokenIds, address(0), _msgSender());\n }\n\n function claim(\n uint256[] calldata ticketTokenIds,\n address claimToken,\n address beneficiary\n ) public nonReentrant {\n uint256 totalClaimable;\n\n for (uint256 i = 0; i < ticketTokenIds.length; i++) {\n _beforeClaim(ticketTokenIds[i], claimToken, beneficiary);\n\n /* EFFECTS */\n uint256 claimable = streamClaimableAmount(\n ticketTokenIds[i],\n claimToken\n );\n\n if (claimable > 0) {\n entitlements[ticketTokenIds[i]][claimToken]\n .totalClaimed += claimable;\n entitlements[ticketTokenIds[i]][claimToken]\n .lastClaimedAt = block.timestamp;\n\n totalClaimable += claimable;\n }\n }\n\n _streamTotalClaimed[claimToken] += totalClaimable;\n\n /* INTERACTIONS */\n\n if (claimToken == address(0)) {\n payable(address(beneficiary)).sendValue(totalClaimable);\n } else {\n IERC20(claimToken).transfer(beneficiary, totalClaimable);\n }\n\n /* LOGS */\n\n emit ClaimMany(\n _msgSender(),\n beneficiary,\n ticketTokenIds,\n claimToken,\n totalClaimable\n );\n }\n\n /* READ ONLY */\n\n function streamTotalSupply() public view returns (uint256) {\n return streamTotalSupply(address(0));\n }\n\n function streamTotalSupply(address claimToken)\n public\n view\n returns (uint256)\n {\n if (claimToken == address(0)) {\n return _streamTotalClaimed[claimToken] + address(this).balance;\n }\n\n return\n _streamTotalClaimed[claimToken] +\n IERC20(claimToken).balanceOf(address(this));\n }\n\n function streamTotalClaimed() public view returns (uint256) {\n return _streamTotalClaimed[address(0)];\n }\n\n function streamTotalClaimed(address claimToken)\n public\n view\n returns (uint256)\n {\n return _streamTotalClaimed[claimToken];\n }\n\n function streamTotalClaimed(uint256 ticketTokenId)\n public\n view\n returns (uint256)\n {\n return entitlements[ticketTokenId][address(0)].totalClaimed;\n }\n\n function streamTotalClaimed(uint256 ticketTokenId, address claimToken)\n public\n view\n returns (uint256)\n {\n return entitlements[ticketTokenId][claimToken].totalClaimed;\n }\n\n function streamTotalClaimed(uint256[] calldata ticketTokenIds)\n public\n view\n returns (uint256)\n {\n return streamTotalClaimed(ticketTokenIds, address(0));\n }\n\n function streamTotalClaimed(\n uint256[] calldata ticketTokenIds,\n address claimToken\n ) public view returns (uint256) {\n uint256 claimed = 0;\n\n for (uint256 i = 0; i < ticketTokenIds.length; i++) {\n claimed += entitlements[ticketTokenIds[i]][claimToken].totalClaimed;\n }\n\n return claimed;\n }\n\n function streamClaimableAmount(\n uint256[] calldata ticketTokenIds,\n address claimToken\n ) public view returns (uint256) {\n uint256 claimable = 0;\n\n for (uint256 i = 0; i < ticketTokenIds.length; i++) {\n claimable += streamClaimableAmount(ticketTokenIds[i], claimToken);\n }\n\n return claimable;\n }\n\n function streamClaimableAmount(uint256 ticketTokenId)\n public\n view\n returns (uint256)\n {\n return streamClaimableAmount(ticketTokenId, address(0));\n }\n\n function streamClaimableAmount(uint256 ticketTokenId, address claimToken)\n public\n view\n virtual\n returns (uint256)\n {\n uint256 totalReleased = _totalTokenReleasedAmount(\n _totalStreamReleasedAmount(\n streamTotalSupply(claimToken),\n ticketTokenId,\n claimToken\n ),\n ticketTokenId,\n claimToken\n );\n\n return\n totalReleased -\n entitlements[ticketTokenId][claimToken].totalClaimed;\n }\n\n function _totalStreamReleasedAmount(\n uint256 streamTotalSupply_,\n uint256 ticketTokenId_,\n address claimToken_\n ) internal view virtual returns (uint256);\n\n function _totalTokenReleasedAmount(\n uint256 totalReleasedAmount_,\n uint256 ticketTokenId_,\n address claimToken_\n ) internal view virtual returns (uint256);\n\n /* INTERNAL */\n\n function _beforeClaim(\n uint256 ticketTokenId_,\n address claimToken_,\n address beneficiary_\n ) internal virtual {\n require(\n IERC721(ticketToken).ownerOf(ticketTokenId_) == beneficiary_,\n \"NOT_NFT_OWNER\"\n );\n }\n}\n"},"contracts/streams/ERC721/presets/ERC721ShareInstantStream.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport \"../../../common/WithdrawExtension.sol\";\nimport \"../extensions/ERC721InstantReleaseExtension.sol\";\nimport \"../extensions/ERC721ShareSplitExtension.sol\";\nimport \"../extensions/ERC721LockableClaimExtension.sol\";\n\ncontract ERC721ShareInstantStream is\n Initializable,\n Ownable,\n ERC721InstantReleaseExtension,\n ERC721ShareSplitExtension,\n ERC721LockableClaimExtension,\n WithdrawExtension\n{\n string public constant name = \"ERC721 Share Instant Stream\";\n\n string public constant version = \"0.1\";\n\n struct Config {\n // Base\n address ticketToken;\n uint64 lockedUntilTimestamp;\n // Share split extension\n uint256[] tokenIds;\n uint256[] shares;\n // Lockable claim extension\n uint64 claimLockedUntil;\n }\n\n /* INTERNAL */\n\n constructor(Config memory config) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _transferOwnership(deployer);\n\n __WithdrawExtension_init(deployer, WithdrawMode.OWNER);\n __ERC721MultiTokenStream_init(\n config.ticketToken,\n config.lockedUntilTimestamp\n );\n __ERC721InstantReleaseExtension_init();\n __ERC721ShareSplitExtension_init(config.tokenIds, config.shares);\n __ERC721LockableClaimExtension_init(config.claimLockedUntil);\n }\n\n function _beforeClaim(\n uint256 ticketTokenId_,\n address claimToken_,\n address beneficiary_\n ) internal override(ERC721MultiTokenStream, ERC721LockableClaimExtension) {\n ERC721MultiTokenStream._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n ERC721LockableClaimExtension._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n }\n}\n"},"contracts/streams/ERC721/extensions/ERC721InstantReleaseExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport \"../base/ERC721MultiTokenStream.sol\";\n\ninterface IERC721InstantReleaseExtension {\n function hasERC721InstantReleaseExtension() external view returns (bool);\n}\n\nabstract contract ERC721InstantReleaseExtension is\n IERC721InstantReleaseExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721MultiTokenStream\n{\n /* INIT */\n\n function __ERC721InstantReleaseExtension_init() internal onlyInitializing {\n __ERC721InstantReleaseExtension_init_unchained();\n }\n\n function __ERC721InstantReleaseExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721InstantReleaseExtension).interfaceId);\n }\n\n /* PUBLIC */\n\n function hasERC721InstantReleaseExtension() external pure returns (bool) {\n return true;\n }\n\n /* INTERNAL */\n\n function _totalStreamReleasedAmount(\n uint256 streamTotalSupply_,\n uint256 ticketTokenId_,\n address claimToken_\n ) internal pure override returns (uint256) {\n ticketTokenId_;\n claimToken_;\n\n return streamTotalSupply_;\n }\n}\n"},"contracts/streams/ERC721/presets/ERC721ShareEmissionStream.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport \"../../../common/WithdrawExtension.sol\";\nimport \"../extensions/ERC721EmissionReleaseExtension.sol\";\nimport \"../extensions/ERC721ShareSplitExtension.sol\";\nimport \"../extensions/ERC721LockableClaimExtension.sol\";\n\ncontract ERC721ShareEmissionStream is\n Initializable,\n Ownable,\n ERC721EmissionReleaseExtension,\n ERC721ShareSplitExtension,\n ERC721LockableClaimExtension,\n WithdrawExtension\n{\n using Address for address;\n using Address for address payable;\n\n string public constant name = \"ERC721 Share Emission Stream\";\n\n string public constant version = \"0.1\";\n\n struct Config {\n // Base\n address ticketToken;\n uint64 lockedUntilTimestamp;\n // Emission release extension\n uint256 emissionRate;\n uint64 emissionTimeUnit;\n uint64 emissionStart;\n uint64 emissionEnd;\n // Share split extension\n uint256[] tokenIds;\n uint256[] shares;\n // Lockable claim extension\n uint64 claimLockedUntil;\n }\n\n /* INTERNAL */\n\n constructor(Config memory config) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _transferOwnership(deployer);\n\n __WithdrawExtension_init(deployer, WithdrawMode.OWNER);\n __ERC721MultiTokenStream_init(\n config.ticketToken,\n config.lockedUntilTimestamp\n );\n __ERC721EmissionReleaseExtension_init(\n config.emissionRate,\n config.emissionTimeUnit,\n config.emissionStart,\n config.emissionEnd\n );\n __ERC721ShareSplitExtension_init(config.tokenIds, config.shares);\n __ERC721LockableClaimExtension_init(config.claimLockedUntil);\n }\n\n function rateByToken(uint256[] calldata tokenIds)\n public\n view\n virtual\n override\n returns (uint256 totalRate)\n {\n for (uint256 i = 0; i < tokenIds.length; i++) {\n totalRate += emissionRate / shares[tokenIds[i]];\n }\n\n return totalRate;\n }\n\n function _beforeClaim(\n uint256 ticketTokenId_,\n address claimToken_,\n address beneficiary_\n )\n internal\n override(\n ERC721MultiTokenStream,\n ERC721LockableClaimExtension,\n ERC721EmissionReleaseExtension\n )\n {\n ERC721MultiTokenStream._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n ERC721LockableClaimExtension._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n ERC721EmissionReleaseExtension._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n }\n}\n"},"contracts/streams/ERC721/extensions/ERC721EmissionReleaseExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport \"../base/ERC721MultiTokenStream.sol\";\n\ninterface IERC721EmissionReleaseExtension {\n function hasERC721EmissionReleaseExtension() external view returns (bool);\n\n function setEmissionRate(uint256 newValue) external;\n\n function setEmissionTimeUnit(uint64 newValue) external;\n\n function setEmissionStart(uint64 newValue) external;\n\n function setEmissionEnd(uint64 newValue) external;\n\n function releasedAmountUntil(uint64 calcUntil)\n external\n view\n returns (uint256);\n\n function emissionAmountUntil(uint64 calcUntil)\n external\n view\n returns (uint256);\n\n function rateByToken(uint256[] calldata tokenIds)\n external\n view\n returns (uint256);\n}\n\n/**\n * @author Flair (https://flair.finance)\n */\nabstract contract ERC721EmissionReleaseExtension is\n IERC721EmissionReleaseExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721MultiTokenStream\n{\n // Number of tokens released every `emissionTimeUnit`\n uint256 public emissionRate;\n\n // Time unit to release tokens, users can only claim once every `emissionTimeUnit`\n uint64 public emissionTimeUnit;\n\n // When emission and calculating tokens starts\n uint64 public emissionStart;\n\n // When to stop calculating the tokens released\n uint64 public emissionEnd;\n\n /* INIT */\n\n function __ERC721EmissionReleaseExtension_init(\n uint256 _emissionRate,\n uint64 _emissionTimeUnit,\n uint64 _emissionStart,\n uint64 _emissionEnd\n ) internal onlyInitializing {\n __ERC721EmissionReleaseExtension_init_unchained(\n _emissionRate,\n _emissionTimeUnit,\n _emissionStart,\n _emissionEnd\n );\n }\n\n function __ERC721EmissionReleaseExtension_init_unchained(\n uint256 _emissionRate,\n uint64 _emissionTimeUnit,\n uint64 _emissionStart,\n uint64 _emissionEnd\n ) internal onlyInitializing {\n emissionRate = _emissionRate;\n emissionTimeUnit = _emissionTimeUnit;\n emissionStart = _emissionStart;\n emissionEnd = _emissionEnd;\n\n _registerInterface(type(IERC721EmissionReleaseExtension).interfaceId);\n }\n\n /* ADMIN */\n\n function setEmissionRate(uint256 newValue) public onlyOwner {\n require(lockedUntilTimestamp < block.timestamp, \"CONFIG_LOCKED\");\n emissionRate = newValue;\n }\n\n function setEmissionTimeUnit(uint64 newValue) public onlyOwner {\n require(lockedUntilTimestamp < block.timestamp, \"CONFIG_LOCKED\");\n emissionTimeUnit = newValue;\n }\n\n function setEmissionStart(uint64 newValue) public onlyOwner {\n require(lockedUntilTimestamp < block.timestamp, \"CONFIG_LOCKED\");\n emissionStart = newValue;\n }\n\n function setEmissionEnd(uint64 newValue) public onlyOwner {\n require(lockedUntilTimestamp < block.timestamp, \"CONFIG_LOCKED\");\n emissionEnd = newValue;\n }\n\n /* PUBLIC */\n\n function hasERC721EmissionReleaseExtension() external pure returns (bool) {\n return true;\n }\n\n function releasedAmountUntil(uint64 calcUntil)\n public\n view\n virtual\n returns (uint256)\n {\n return\n emissionRate *\n // Intentionally rounded down:\n ((calcUntil - emissionStart) / emissionTimeUnit);\n }\n\n function emissionAmountUntil(uint64 calcUntil)\n public\n view\n virtual\n returns (uint256)\n {\n return ((calcUntil - emissionStart) * emissionRate) / emissionTimeUnit;\n }\n\n function rateByToken(uint256[] calldata tokenIds)\n public\n view\n virtual\n returns (uint256);\n\n /* INTERNAL */\n\n function _totalStreamReleasedAmount(\n uint256 streamTotalSupply_,\n uint256 ticketTokenId_,\n address claimToken_\n ) internal view virtual override returns (uint256) {\n streamTotalSupply_;\n ticketTokenId_;\n claimToken_;\n\n if (block.timestamp < emissionStart) {\n return 0;\n } else if (emissionEnd > 0 && block.timestamp > emissionEnd) {\n return releasedAmountUntil(emissionEnd);\n } else {\n return releasedAmountUntil(uint64(block.timestamp));\n }\n }\n\n function _beforeClaim(\n uint256 ticketTokenId_,\n address claimToken_,\n address beneficiary_\n ) internal virtual override {\n beneficiary_;\n\n require(emissionStart < block.timestamp, \"NOT_STARTED\");\n\n require(\n entitlements[ticketTokenId_][claimToken_].lastClaimedAt <\n block.timestamp - emissionTimeUnit,\n \"TOO_EARLY\"\n );\n }\n}\n"},"contracts/streams/ERC721/presets/ERC721LockedStakingEmissionStream.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport \"../../../common/WithdrawExtension.sol\";\nimport \"../extensions/ERC721EmissionReleaseExtension.sol\";\nimport \"../extensions/ERC721EqualSplitExtension.sol\";\nimport \"../extensions/ERC721LockedStakingExtension.sol\";\nimport \"../extensions/ERC721LockableClaimExtension.sol\";\n\n/**\n * @author Flair (https://flair.finance)\n */\ncontract ERC721LockedStakingEmissionStream is\n Initializable,\n Ownable,\n ERC721EmissionReleaseExtension,\n ERC721EqualSplitExtension,\n ERC721LockedStakingExtension,\n ERC721LockableClaimExtension,\n WithdrawExtension\n{\n using Address for address;\n using Address for address payable;\n\n string public constant name = \"ERC721 Locked Staking Emission Stream\";\n\n string public constant version = \"0.1\";\n\n struct Config {\n // Base\n address ticketToken;\n uint64 lockedUntilTimestamp;\n // Locked staking extension\n uint64 minStakingDuration; // in seconds. Minimum time the NFT must stay locked before unstaking.\n uint64 maxStakingTotalDurations; // in seconds. Maximum sum total of all durations staking that will be counted (across all stake/unstakes for each token).\n // Emission release extension\n uint256 emissionRate;\n uint64 emissionTimeUnit;\n uint64 emissionStart;\n uint64 emissionEnd;\n // Equal split extension\n uint256 totalTickets;\n // Lockable claim extension\n uint64 claimLockedUntil;\n }\n\n /* INTERNAL */\n\n constructor(Config memory config) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _transferOwnership(deployer);\n\n __WithdrawExtension_init(deployer, WithdrawMode.OWNER);\n __ERC721MultiTokenStream_init(\n config.ticketToken,\n config.lockedUntilTimestamp\n );\n __ERC721LockedStakingExtension_init(\n config.minStakingDuration,\n config.maxStakingTotalDurations\n );\n __ERC721EmissionReleaseExtension_init(\n config.emissionRate,\n config.emissionTimeUnit,\n config.emissionStart,\n config.emissionEnd\n );\n __ERC721EqualSplitExtension_init(config.totalTickets);\n __ERC721LockableClaimExtension_init(config.claimLockedUntil);\n }\n\n function _totalStreamReleasedAmount(\n uint256 streamTotalSupply_,\n uint256 ticketTokenId_,\n address claimToken_\n )\n internal\n view\n virtual\n override(ERC721MultiTokenStream, ERC721EmissionReleaseExtension)\n returns (uint256)\n {\n // Removing the logic from emission extension because it is irrevelant when staking.\n return 0;\n }\n\n function _totalTokenReleasedAmount(\n uint256 totalReleasedAmount_,\n uint256 ticketTokenId_,\n address claimToken_\n )\n internal\n view\n virtual\n override(ERC721MultiTokenStream, ERC721EqualSplitExtension)\n returns (uint256)\n {\n totalReleasedAmount_;\n ticketTokenId_;\n claimToken_;\n\n // Get the rate per token to calculate based on stake duration\n return\n (emissionRate / totalTickets) *\n // Intentionally rounded down\n (totalStakedDuration(ticketTokenId_) / emissionTimeUnit);\n }\n\n function _stakingTimeLimit()\n internal\n view\n virtual\n override\n returns (uint64)\n {\n if (emissionEnd > 0) {\n return emissionEnd;\n }\n\n return super._stakingTimeLimit();\n }\n\n function _beforeClaim(\n uint256 ticketTokenId_,\n address claimToken_,\n address beneficiary_\n )\n internal\n override(\n ERC721MultiTokenStream,\n ERC721EmissionReleaseExtension,\n ERC721LockableClaimExtension\n )\n {\n ERC721MultiTokenStream._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n ERC721LockableClaimExtension._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n ERC721EmissionReleaseExtension._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n }\n\n /* PUBLIC */\n\n function stake(uint256 tokenId) public override nonReentrant {\n require(uint64(block.timestamp) >= emissionStart, \"NOT_STARTED_YET\");\n\n super.stake(tokenId);\n }\n\n function stake(uint256[] calldata tokenIds) public override nonReentrant {\n require(uint64(block.timestamp) >= emissionStart, \"NOT_STARTED_YET\");\n\n super.stake(tokenIds);\n }\n\n function unstake(uint256 tokenId) public override nonReentrant {\n super.unstake(tokenId);\n }\n\n function unstake(uint256[] calldata tokenIds) public override nonReentrant {\n super.unstake(tokenIds);\n }\n\n function rateByToken(uint256[] calldata tokenIds)\n public\n view\n virtual\n override\n returns (uint256)\n {\n uint256 staked;\n\n for (uint256 i = 0; i < tokenIds.length; i++) {\n if (lastStakingTime[tokenIds[i]] > 0) {\n staked++;\n }\n }\n\n return (emissionRate * staked) / totalTickets;\n }\n\n function rewardAmountByToken(uint256 ticketTokenId)\n public\n view\n virtual\n returns (uint256)\n {\n return\n ((emissionRate * totalStakedDuration(ticketTokenId)) /\n totalTickets) / emissionTimeUnit;\n }\n\n function rewardAmountByToken(uint256[] calldata ticketTokenIds)\n public\n view\n virtual\n returns (uint256 total)\n {\n for (uint256 i = 0; i < ticketTokenIds.length; i++) {\n total += rewardAmountByToken(ticketTokenIds[i]);\n }\n }\n}\n"},"contracts/streams/ERC721/extensions/ERC721EqualSplitExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport \"../base/ERC721MultiTokenStream.sol\";\n\ninterface IERC721EqualSplitExtension {\n function hasERC721EqualSplitExtension() external view returns (bool);\n\n function setTotalTickets(uint256 newValue) external;\n}\n\nabstract contract ERC721EqualSplitExtension is\n IERC721EqualSplitExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721MultiTokenStream\n{\n // Total number of ERC721 tokens to calculate their equal split share\n uint256 public totalTickets;\n\n /* INTERNAL */\n\n function __ERC721EqualSplitExtension_init(uint256 _totalTickets)\n internal\n onlyInitializing\n {\n __ERC721EqualSplitExtension_init_unchained(_totalTickets);\n }\n\n function __ERC721EqualSplitExtension_init_unchained(uint256 _totalTickets)\n internal\n onlyInitializing\n {\n totalTickets = _totalTickets;\n\n _registerInterface(type(IERC721EqualSplitExtension).interfaceId);\n }\n\n /* ADMIN */\n\n function setTotalTickets(uint256 newValue) public onlyOwner {\n require(lockedUntilTimestamp < block.timestamp, \"CONFIG_LOCKED\");\n totalTickets = newValue;\n }\n\n /* PUBLIC */\n\n function hasERC721EqualSplitExtension() external pure returns (bool) {\n return true;\n }\n\n /* INTERNAL */\n\n function _totalTokenReleasedAmount(\n uint256 totalReleasedAmount_,\n uint256 ticketTokenId_,\n address claimToken_\n ) internal view virtual override returns (uint256) {\n ticketTokenId_;\n claimToken_;\n\n return totalReleasedAmount_ / totalTickets;\n }\n}\n"},"contracts/streams/ERC721/extensions/ERC721LockedStakingExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport {IERC721LockableExtension} from \"../../../collections/ERC721/extensions/ERC721LockableExtension.sol\";\n\nimport \"./ERC721StakingExtension.sol\";\n\n/**\n * @author Flair (https://flair.finance)\n */\ninterface IERC721LockedStakingExtension {\n function hasERC721LockedStakingExtension() external view returns (bool);\n}\n\n/**\n * @author Flair (https://flair.finance)\n */\nabstract contract ERC721LockedStakingExtension is\n IERC721LockedStakingExtension,\n ERC721StakingExtension\n{\n /* INIT */\n\n function __ERC721LockedStakingExtension_init(\n uint64 _minStakingDuration,\n uint64 _maxStakingTotalDurations\n ) internal onlyInitializing {\n __ERC721LockedStakingExtension_init_unchained();\n __ERC721StakingExtension_init_unchained(\n _minStakingDuration,\n _maxStakingTotalDurations\n );\n }\n\n function __ERC721LockedStakingExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721LockedStakingExtension).interfaceId);\n }\n\n /* PUBLIC */\n\n function hasERC721LockedStakingExtension() external pure returns (bool) {\n return true;\n }\n\n function stake(uint256 tokenId) public virtual override {\n ERC721StakingExtension.stake(tokenId);\n IERC721LockableExtension(ticketToken).lock(tokenId);\n }\n\n function stake(uint256[] calldata tokenIds) public virtual override {\n ERC721StakingExtension.stake(tokenIds);\n IERC721LockableExtension(ticketToken).lock(tokenIds);\n }\n\n function unstake(uint256 tokenId) public virtual override {\n ERC721StakingExtension.unstake(tokenId);\n IERC721LockableExtension(ticketToken).unlock(tokenId);\n }\n\n function unstake(uint256[] calldata tokenIds) public virtual override {\n ERC721StakingExtension.unstake(tokenIds);\n IERC721LockableExtension(ticketToken).unlock(tokenIds);\n }\n\n function _stake(\n address operator,\n uint64 currentTime,\n uint256 tokenId\n ) internal virtual override {\n require(\n operator == IERC721(ticketToken).ownerOf(tokenId),\n \"NOT_TOKEN_OWNER\"\n );\n ERC721StakingExtension._stake(operator, currentTime, tokenId);\n }\n\n function _unstake(\n address operator,\n uint64 currentTime,\n uint256 tokenId\n ) internal virtual override {\n require(\n operator == IERC721(ticketToken).ownerOf(tokenId),\n \"NOT_TOKEN_OWNER\"\n );\n ERC721StakingExtension._unstake(operator, currentTime, tokenId);\n }\n}\n"},"contracts/collections/ERC721/extensions/ERC721LockableExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity ^0.8.15;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\nimport \"@openzeppelin/contracts/utils/structs/BitMaps.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\n\nimport \"./ERC721AutoIdMinterExtension.sol\";\n\ninterface IERC721LockableExtension {\n function locked(uint256 tokenId) external view returns (bool);\n\n function lock(uint256 tokenId) external;\n\n function lock(uint256[] calldata tokenIds) external;\n\n function unlock(uint256 tokenId) external;\n\n function unlock(uint256[] calldata tokenIds) external;\n}\n\n/**\n * @dev Extension to allow locking NFTs, for use-cases like staking, without leaving holders wallet.\n */\nabstract contract ERC721LockableExtension is\n IERC721LockableExtension,\n Initializable,\n ERC165Storage,\n ERC721AutoIdMinterExtension,\n ReentrancyGuard\n{\n using BitMaps for BitMaps.BitMap;\n\n BitMaps.BitMap internal lockedTokens;\n\n function __ERC721LockableExtension_init() internal onlyInitializing {\n __ERC721LockableExtension_init_unchained();\n }\n\n function __ERC721LockableExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721LockableExtension).interfaceId);\n }\n\n // PUBLIC\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721CollectionMetadataExtension)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n /**\n * Returns if a token is locked or not.\n */\n function locked(uint256 tokenId) public view virtual returns (bool) {\n return lockedTokens.get(tokenId);\n }\n\n function filterUnlocked(uint256[] calldata ticketTokenIds)\n public\n view\n returns (uint256[] memory)\n {\n uint256[] memory unlocked = new uint256[](ticketTokenIds.length);\n\n for (uint256 i = 0; i < ticketTokenIds.length; i++) {\n if (!locked(ticketTokenIds[i])) {\n unlocked[i] = ticketTokenIds[i];\n }\n }\n\n return unlocked;\n }\n\n /* INTERNAL */\n\n /**\n * At this moment staking is only possible from a certain address (usually a smart contract).\n *\n * This is because in almost all cases you want another contract to perform custom logic on lock and unlock operations,\n * without allowing users to directly unlock their tokens and sell them, for example.\n */\n function _lock(uint256 tokenId) internal virtual {\n require(!lockedTokens.get(tokenId), \"LOCKED\");\n lockedTokens.set(tokenId);\n }\n\n function _unlock(uint256 tokenId) internal virtual {\n require(lockedTokens.get(tokenId), \"NOT_LOCKED\");\n lockedTokens.unset(tokenId);\n }\n\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual override(ERC721) {\n require(!lockedTokens.get(tokenId), \"LOCKED\");\n super._beforeTokenTransfer(from, to, tokenId);\n }\n}\n"},"contracts/streams/ERC721/extensions/ERC721StakingExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport \"../base/ERC721MultiTokenStream.sol\";\n\n/**\n * @author Flair (https://flair.finance)\n */\ninterface IERC721StakingExtension {\n function hasERC721StakingExtension() external view returns (bool);\n\n function stake(uint256 tokenId) external;\n\n function stake(uint256[] calldata tokenIds) external;\n}\n\n/**\n * @author Flair (https://flair.finance)\n */\nabstract contract ERC721StakingExtension is\n IERC721StakingExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721MultiTokenStream\n{\n // Minimum seconds that token must be staked before unstaking.\n uint64 public minStakingDuration;\n\n // Maximum sum total of all durations staking that will be counted (across all stake/unstakes for each token). Staked durations beyond this number is ignored.\n uint64 public maxStakingTotalDurations;\n\n // Map of token ID to the time of last staking\n mapping(uint256 => uint64) public lastStakingTime;\n\n // Map of token ID to the sum total of all previous staked durations\n mapping(uint256 => uint64) public savedStakedDurations;\n\n /* INIT */\n\n function __ERC721StakingExtension_init(\n uint64 _minStakingDuration,\n uint64 _maxStakingTotalDurations\n ) internal onlyInitializing {\n __ERC721StakingExtension_init_unchained(\n _minStakingDuration,\n _maxStakingTotalDurations\n );\n }\n\n function __ERC721StakingExtension_init_unchained(\n uint64 _minStakingDuration,\n uint64 _maxStakingTotalDurations\n ) internal onlyInitializing {\n minStakingDuration = _minStakingDuration;\n maxStakingTotalDurations = _maxStakingTotalDurations;\n\n _registerInterface(type(IERC721StakingExtension).interfaceId);\n }\n\n /* ADMIN */\n\n function setMinStakingDuration(uint64 newValue) public onlyOwner {\n require(lockedUntilTimestamp < block.timestamp, \"CONFIG_LOCKED\");\n minStakingDuration = newValue;\n }\n\n function setMaxStakingTotalDurations(uint64 newValue) public onlyOwner {\n require(lockedUntilTimestamp < block.timestamp, \"CONFIG_LOCKED\");\n maxStakingTotalDurations = newValue;\n }\n\n /* PUBLIC */\n\n function hasERC721StakingExtension() external pure returns (bool) {\n return true;\n }\n\n function stake(uint256 tokenId) public virtual {\n _stake(_msgSender(), uint64(block.timestamp), tokenId);\n }\n\n function stake(uint256[] calldata tokenIds) public virtual {\n address operator = _msgSender();\n uint64 currentTime = uint64(block.timestamp);\n\n for (uint256 i = 0; i < tokenIds.length; i++) {\n _stake(operator, currentTime, tokenIds[i]);\n }\n }\n\n function unstake(uint256 tokenId) public virtual {\n _unstake(_msgSender(), uint64(block.timestamp), tokenId);\n }\n\n function unstake(uint256[] calldata tokenIds) public virtual {\n address operator = _msgSender();\n uint64 currentTime = uint64(block.timestamp);\n\n for (uint256 i = 0; i < tokenIds.length; i++) {\n _unstake(operator, currentTime, tokenIds[i]);\n }\n }\n\n function totalStakedDuration(uint256[] calldata ticketTokenIds)\n public\n view\n virtual\n returns (uint64)\n {\n uint64 totalDurations = 0;\n\n for (uint256 i = 0; i < ticketTokenIds.length; i++) {\n totalDurations += totalStakedDuration(ticketTokenIds[i]);\n }\n\n return totalDurations;\n }\n\n function totalStakedDuration(uint256 ticketTokenId)\n public\n view\n virtual\n returns (uint64)\n {\n uint64 total = savedStakedDurations[ticketTokenId];\n\n if (lastStakingTime[ticketTokenId] > 0) {\n uint64 targetTime = _stakingTimeLimit();\n\n if (targetTime > block.timestamp) {\n targetTime = uint64(block.timestamp);\n }\n\n if (lastStakingTime[ticketTokenId] > 0) {\n if (targetTime > lastStakingTime[ticketTokenId]) {\n total += (targetTime - lastStakingTime[ticketTokenId]);\n }\n }\n }\n\n if (total > maxStakingTotalDurations) {\n total = maxStakingTotalDurations;\n }\n\n return total;\n }\n\n function unlockingTime(uint256 ticketTokenId)\n public\n view\n returns (uint256)\n {\n return\n lastStakingTime[ticketTokenId] > 0\n ? lastStakingTime[ticketTokenId] + minStakingDuration\n : 0;\n }\n\n function unlockingTime(uint256[] calldata ticketTokenIds)\n public\n view\n returns (uint256[] memory)\n {\n uint256[] memory unlockedAt = new uint256[](ticketTokenIds.length);\n\n for (uint256 i = 0; i < ticketTokenIds.length; i++) {\n unlockedAt[i] = unlockingTime(ticketTokenIds[i]);\n }\n\n return unlockedAt;\n }\n\n /* INTERNAL */\n\n function _stakingTimeLimit() internal view virtual returns (uint64) {\n return 18_446_744_073_709_551_615; // max(uint64)\n }\n\n function _stake(\n address operator,\n uint64 currentTime,\n uint256 tokenId\n ) internal virtual {\n require(\n totalStakedDuration(tokenId) < maxStakingTotalDurations,\n \"MAX_DURATION_EXCEEDED\"\n );\n\n lastStakingTime[tokenId] = currentTime;\n }\n\n function _unstake(\n address operator,\n uint64 currentTime,\n uint256 tokenId\n ) internal virtual {\n operator;\n\n require(lastStakingTime[tokenId] > 0, \"NOT_STAKED\");\n\n require(\n currentTime >= lastStakingTime[tokenId] + minStakingDuration,\n \"NOT_STAKED_LONG_ENOUGH\"\n );\n\n savedStakedDurations[tokenId] = totalStakedDuration(tokenId);\n\n lastStakingTime[tokenId] = 0;\n }\n}\n"},"contracts/streams/ERC721/presets/ERC721EqualVestingStream.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport \"../../../common/WithdrawExtension.sol\";\nimport \"../extensions/ERC721VestingReleaseExtension.sol\";\nimport \"../extensions/ERC721EqualSplitExtension.sol\";\nimport \"../extensions/ERC721LockableClaimExtension.sol\";\n\ncontract ERC721EqualVestingStream is\n Initializable,\n Ownable,\n ERC721VestingReleaseExtension,\n ERC721EqualSplitExtension,\n ERC721LockableClaimExtension,\n WithdrawExtension\n{\n using Address for address;\n using Address for address payable;\n\n string public constant name = \"ERC721 Equal Vesting Stream\";\n\n string public constant version = \"0.1\";\n\n struct Config {\n // Base\n address ticketToken;\n uint64 lockedUntilTimestamp;\n // Vesting release extension\n uint64 startTimestamp;\n uint64 durationSeconds;\n // Equal split extension\n uint256 totalTickets;\n // Lockable claim extension\n uint64 claimLockedUntil;\n }\n\n /* INTERNAL */\n\n constructor(Config memory config) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _transferOwnership(deployer);\n\n __WithdrawExtension_init(deployer, WithdrawMode.OWNER);\n __ERC721MultiTokenStream_init(\n config.ticketToken,\n config.lockedUntilTimestamp\n );\n __ERC721VestingReleaseExtension_init(\n config.startTimestamp,\n config.durationSeconds\n );\n __ERC721EqualSplitExtension_init(config.totalTickets);\n __ERC721LockableClaimExtension_init(config.claimLockedUntil);\n }\n\n function _beforeClaim(\n uint256 ticketTokenId_,\n address claimToken_,\n address beneficiary_\n ) internal override(ERC721MultiTokenStream, ERC721LockableClaimExtension) {\n ERC721MultiTokenStream._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n ERC721LockableClaimExtension._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n }\n}\n"},"contracts/streams/ERC721/presets/ERC721EqualInstantStream.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport \"../../../common/WithdrawExtension.sol\";\nimport \"../extensions/ERC721InstantReleaseExtension.sol\";\nimport \"../extensions/ERC721EqualSplitExtension.sol\";\nimport \"../extensions/ERC721LockableClaimExtension.sol\";\n\ncontract ERC721EqualInstantStream is\n Initializable,\n Ownable,\n ERC721InstantReleaseExtension,\n ERC721EqualSplitExtension,\n ERC721LockableClaimExtension,\n WithdrawExtension\n{\n string public constant name = \"ERC721 Equal Instant Stream\";\n\n string public constant version = \"0.1\";\n\n struct Config {\n // Base\n address ticketToken;\n uint64 lockedUntilTimestamp;\n // Equal split extension\n uint256 totalTickets;\n // Lockable claim extension\n uint64 claimLockedUntil;\n }\n\n /* INTERNAL */\n\n constructor(Config memory config) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _transferOwnership(deployer);\n\n __WithdrawExtension_init(deployer, WithdrawMode.OWNER);\n __ERC721MultiTokenStream_init(\n config.ticketToken,\n config.lockedUntilTimestamp\n );\n __ERC721EqualSplitExtension_init(config.totalTickets);\n __ERC721LockableClaimExtension_init(config.claimLockedUntil);\n }\n\n function _beforeClaim(\n uint256 ticketTokenId_,\n address claimToken_,\n address beneficiary_\n ) internal override(ERC721MultiTokenStream, ERC721LockableClaimExtension) {\n ERC721MultiTokenStream._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n ERC721LockableClaimExtension._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n }\n}\n"},"contracts/streams/ERC721/presets/ERC721EqualEmissionStream.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport \"../../../common/WithdrawExtension.sol\";\nimport \"../extensions/ERC721EmissionReleaseExtension.sol\";\nimport \"../extensions/ERC721EqualSplitExtension.sol\";\nimport \"../extensions/ERC721LockableClaimExtension.sol\";\n\ncontract ERC721EqualEmissionStream is\n Initializable,\n Ownable,\n ERC721EmissionReleaseExtension,\n ERC721EqualSplitExtension,\n ERC721LockableClaimExtension,\n WithdrawExtension\n{\n using Address for address;\n using Address for address payable;\n\n string public constant name = \"ERC721 Equal Emission Stream\";\n\n string public constant version = \"0.1\";\n\n struct Config {\n // Base\n address ticketToken;\n uint64 lockedUntilTimestamp;\n // Equal split extension\n uint256 totalTickets;\n // Emission release extension\n uint256 emissionRate;\n uint64 emissionTimeUnit;\n uint64 emissionStart;\n uint64 emissionEnd;\n }\n\n /* INTERNAL */\n\n constructor(Config memory config) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _transferOwnership(deployer);\n\n __WithdrawExtension_init(deployer, WithdrawMode.OWNER);\n __ERC721MultiTokenStream_init(\n config.ticketToken,\n config.lockedUntilTimestamp\n );\n __ERC721EmissionReleaseExtension_init(\n config.emissionRate,\n config.emissionTimeUnit,\n config.emissionStart,\n config.emissionEnd\n );\n __ERC721EqualSplitExtension_init(config.totalTickets);\n }\n\n function rateByToken(uint256[] calldata tokenIds)\n public\n view\n virtual\n override\n returns (uint256)\n {\n return ((emissionRate * tokenIds.length) / totalTickets);\n }\n\n function _beforeClaim(\n uint256 ticketTokenId_,\n address claimToken_,\n address beneficiary_\n )\n internal\n override(\n ERC721MultiTokenStream,\n ERC721EmissionReleaseExtension,\n ERC721LockableClaimExtension\n )\n {\n ERC721MultiTokenStream._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n ERC721LockableClaimExtension._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n ERC721EmissionReleaseExtension._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n }\n}\n"},"contracts/streams/ERC721/presets/ERC721CustodialStakingEmissionStream.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport \"../../../common/WithdrawExtension.sol\";\nimport \"../extensions/ERC721EmissionReleaseExtension.sol\";\nimport \"../extensions/ERC721EqualSplitExtension.sol\";\nimport \"../extensions/ERC721CustodialStakingExtension.sol\";\nimport \"../extensions/ERC721LockableClaimExtension.sol\";\n\n/**\n * @author Flair (https://flair.finance)\n */\ncontract ERC721CustodialStakingEmissionStream is\n Initializable,\n Ownable,\n ERC721EmissionReleaseExtension,\n ERC721EqualSplitExtension,\n ERC721CustodialStakingExtension,\n ERC721LockableClaimExtension,\n WithdrawExtension\n{\n using Address for address;\n using Address for address payable;\n\n string public constant name = \"ERC721 Custodial Staking Emission Stream\";\n\n string public constant version = \"0.1\";\n\n struct Config {\n // Base\n address ticketToken;\n uint64 lockedUntilTimestamp;\n // Locked staking extension\n uint64 minStakingDuration; // in seconds. Minimum time the NFT must stay locked before unstaking.\n uint64 maxStakingTotalDurations; // in seconds. Maximum sum total of all durations staking that will be counted (across all stake/unstakes for each token).\n // Emission release extension\n uint256 emissionRate;\n uint64 emissionTimeUnit;\n uint64 emissionStart;\n uint64 emissionEnd;\n // Equal split extension\n uint256 totalTickets;\n // Lockable claim extension\n uint64 claimLockedUntil;\n }\n\n /* INTERNAL */\n\n constructor(Config memory config) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _transferOwnership(deployer);\n\n __WithdrawExtension_init(deployer, WithdrawMode.OWNER);\n __ERC721MultiTokenStream_init(\n config.ticketToken,\n config.lockedUntilTimestamp\n );\n __ERC721CustodialStakingExtension_init(\n config.minStakingDuration,\n config.maxStakingTotalDurations\n );\n __ERC721EmissionReleaseExtension_init(\n config.emissionRate,\n config.emissionTimeUnit,\n config.emissionStart,\n config.emissionEnd\n );\n __ERC721EqualSplitExtension_init(config.totalTickets);\n __ERC721LockableClaimExtension_init(config.claimLockedUntil);\n }\n\n function _totalStreamReleasedAmount(\n uint256 streamTotalSupply_,\n uint256 ticketTokenId_,\n address claimToken_\n )\n internal\n view\n virtual\n override(ERC721MultiTokenStream, ERC721EmissionReleaseExtension)\n returns (uint256)\n {\n // Removing the logic from emission extension because it is irrevelant when staking.\n return 0;\n }\n\n function _totalTokenReleasedAmount(\n uint256 totalReleasedAmount_,\n uint256 ticketTokenId_,\n address claimToken_\n )\n internal\n view\n virtual\n override(ERC721MultiTokenStream, ERC721EqualSplitExtension)\n returns (uint256)\n {\n totalReleasedAmount_;\n ticketTokenId_;\n claimToken_;\n\n // Get the rate per token to calculate based on stake duration\n return\n (emissionRate / totalTickets) *\n // Intentionally rounded down\n (totalStakedDuration(ticketTokenId_) / emissionTimeUnit);\n }\n\n function _stakingTimeLimit()\n internal\n view\n virtual\n override\n returns (uint64)\n {\n if (emissionEnd > 0) {\n return emissionEnd;\n }\n\n return super._stakingTimeLimit();\n }\n\n function _beforeClaim(\n uint256 ticketTokenId_,\n address claimToken_,\n address beneficiary_\n )\n internal\n override(\n ERC721MultiTokenStream,\n ERC721CustodialStakingExtension,\n ERC721EmissionReleaseExtension,\n ERC721LockableClaimExtension\n )\n {\n // Intentionally skipping ERC721MultiTokenStream because we need to check ownership based on current status of custody.\n ERC721CustodialStakingExtension._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n ERC721LockableClaimExtension._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n ERC721EmissionReleaseExtension._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n }\n\n /* PUBLIC */\n\n function stake(uint256 tokenId) public override nonReentrant {\n require(uint64(block.timestamp) >= emissionStart, \"NOT_STARTED_YET\");\n\n super.stake(tokenId);\n }\n\n function stake(uint256[] calldata tokenIds) public override nonReentrant {\n require(uint64(block.timestamp) >= emissionStart, \"NOT_STARTED_YET\");\n\n super.stake(tokenIds);\n }\n\n function unstake(uint256 tokenId) public override nonReentrant {\n super.unstake(tokenId);\n }\n\n function unstake(uint256[] calldata tokenIds) public override nonReentrant {\n super.unstake(tokenIds);\n }\n\n function rateByToken(uint256[] calldata tokenIds)\n public\n view\n virtual\n override\n returns (uint256)\n {\n uint256 staked;\n\n for (uint256 i = 0; i < tokenIds.length; i++) {\n if (lastStakingTime[tokenIds[i]] > 0) {\n staked++;\n }\n }\n\n return (emissionRate * staked) / totalTickets;\n }\n\n function rewardAmountByToken(uint256 ticketTokenId)\n public\n view\n virtual\n returns (uint256)\n {\n return\n ((emissionRate * totalStakedDuration(ticketTokenId)) /\n totalTickets) / emissionTimeUnit;\n }\n\n function rewardAmountByToken(uint256[] calldata ticketTokenIds)\n public\n view\n virtual\n returns (uint256 total)\n {\n for (uint256 i = 0; i < ticketTokenIds.length; i++) {\n total += rewardAmountByToken(ticketTokenIds[i]);\n }\n }\n}\n"},"contracts/streams/ERC721/extensions/ERC721CustodialStakingExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport {IERC721LockableExtension} from \"../../../collections/ERC721/extensions/ERC721LockableExtension.sol\";\n\nimport \"./ERC721StakingExtension.sol\";\n\n/**\n * @author Flair (https://flair.finance)\n */\ninterface IERC721CustodialStakingExtension {\n function hasERC721CustodialStakingExtension() external view returns (bool);\n\n function tokensInCustody(\n address staker,\n uint256 startTokenId,\n uint256 endTokenId\n ) external view returns (bool[] memory);\n}\n\n/**\n * @author Flair (https://flair.finance)\n */\nabstract contract ERC721CustodialStakingExtension is\n IERC721CustodialStakingExtension,\n ERC721StakingExtension\n{\n mapping(uint256 => address) public stakers;\n\n /* INIT */\n\n function __ERC721CustodialStakingExtension_init(\n uint64 _minStakingDuration,\n uint64 _maxStakingTotalDurations\n ) internal onlyInitializing {\n __ERC721CustodialStakingExtension_init_unchained();\n __ERC721StakingExtension_init_unchained(\n _minStakingDuration,\n _maxStakingTotalDurations\n );\n }\n\n function __ERC721CustodialStakingExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721CustodialStakingExtension).interfaceId);\n }\n\n /* PUBLIC */\n\n function hasERC721CustodialStakingExtension() external pure returns (bool) {\n return true;\n }\n\n function tokensInCustody(\n address staker,\n uint256 startTokenId,\n uint256 endTokenId\n ) external view returns (bool[] memory tokens) {\n tokens = new bool[](endTokenId - startTokenId + 1);\n\n for (uint256 i = startTokenId; i <= endTokenId; i++) {\n if (stakers[i] == staker) {\n tokens[i - startTokenId] = true;\n }\n }\n\n return tokens;\n }\n\n /* INTERNAL */\n\n function _stake(\n address operator,\n uint64 currentTime,\n uint256 tokenId\n ) internal virtual override {\n stakers[tokenId] = operator;\n super._stake(operator, currentTime, tokenId);\n IERC721(ticketToken).transferFrom(operator, address(this), tokenId);\n }\n\n function _unstake(\n address operator,\n uint64 currentTime,\n uint256 tokenId\n ) internal virtual override {\n require(stakers[tokenId] == operator, \"NOT_STAKER\");\n delete stakers[tokenId];\n\n super._unstake(operator, currentTime, tokenId);\n IERC721(ticketToken).transferFrom(address(this), operator, tokenId);\n }\n\n function _beforeClaim(\n uint256 ticketTokenId_,\n address claimToken_,\n address beneficiary_\n ) internal virtual override {\n claimToken_;\n\n if (stakers[ticketTokenId_] == address(0)) {\n require(\n IERC721(ticketToken).ownerOf(ticketTokenId_) == beneficiary_,\n \"NOT_NFT_OWNER\"\n );\n } else {\n require(beneficiary_ == stakers[ticketTokenId_], \"NOT_STAKER\");\n }\n }\n}\n"},"contracts/collections/ERC721/extensions/ERC721RoleBasedLockableExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity ^0.8.15;\n\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\nimport \"@openzeppelin/contracts/utils/structs/BitMaps.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\n\nimport \"./ERC721LockableExtension.sol\";\n\ninterface IERC721RoleBasedLockableExtension {\n function hasRoleBasedLockableExtension() external view returns (bool);\n}\n\n/**\n * @dev Extension to allow locking NFTs, for use-cases like staking, without leaving holders wallet, using roles.\n */\nabstract contract ERC721RoleBasedLockableExtension is\n IERC721RoleBasedLockableExtension,\n ERC721LockableExtension,\n AccessControl\n{\n using BitMaps for BitMaps.BitMap;\n\n bytes32 public constant LOCKER_ROLE = keccak256(\"LOCKER_ROLE\");\n\n function __ERC721RoleBasedLockableExtension_init()\n internal\n onlyInitializing\n {\n __ERC721RoleBasedLockableExtension_init_unchained();\n }\n\n function __ERC721RoleBasedLockableExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721RoleBasedLockableExtension).interfaceId);\n }\n\n // ADMIN\n\n /**\n * Locks token(s) to effectively lock them, while keeping in the same wallet.\n * This mechanism prevents them from being transferred, yet still will show correct owner.\n */\n function lock(uint256 tokenId) public virtual nonReentrant {\n require(hasRole(LOCKER_ROLE, msg.sender), \"NOT_LOCKER_ROLE\");\n _lock(tokenId);\n }\n\n function lock(uint256[] calldata tokenIds) public virtual nonReentrant {\n require(hasRole(LOCKER_ROLE, msg.sender), \"NOT_LOCKER_ROLE\");\n\n for (uint256 i = 0; i < tokenIds.length; i++) {\n _lock(tokenIds[i]);\n }\n }\n\n /**\n * Unlocks locked token(s) to be able to transfer.\n */\n function unlock(uint256 tokenId) public virtual nonReentrant {\n require(hasRole(LOCKER_ROLE, msg.sender), \"NOT_LOCKER_ROLE\");\n _unlock(tokenId);\n }\n\n function unlock(uint256[] calldata tokenIds) public virtual nonReentrant {\n require(hasRole(LOCKER_ROLE, msg.sender), \"NOT_LOCKER_ROLE\");\n\n for (uint256 i = 0; i < tokenIds.length; i++) {\n _unlock(tokenIds[i]);\n }\n }\n\n // PUBLIC\n\n function hasRoleBasedLockableExtension()\n public\n view\n virtual\n returns (bool)\n {\n return true;\n }\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(AccessControl, ERC721LockableExtension)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n}\n"},"contracts/collections/ERC721/presets/ERC721TieredSalesCollection.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\n\nimport \"../../../common/WithdrawExtension.sol\";\nimport \"../../../common/LicenseExtension.sol\";\nimport \"../../../common/meta-transactions/ERC2771ContextOwnable.sol\";\nimport \"../extensions/ERC721CollectionMetadataExtension.sol\";\nimport \"../extensions/ERC721PrefixedMetadataExtension.sol\";\nimport \"../extensions/ERC721AutoIdMinterExtension.sol\";\nimport \"../extensions/ERC721OwnerMintExtension.sol\";\nimport \"../extensions/ERC721TieringExtension.sol\";\nimport \"../extensions/ERC721RoleBasedMintExtension.sol\";\nimport \"../extensions/ERC721RoyaltyExtension.sol\";\nimport \"../extensions/ERC721RoleBasedLockableExtension.sol\";\n\ncontract ERC721TieredSalesCollection is\n Ownable,\n ERC165Storage,\n WithdrawExtension,\n LicenseExtension,\n ERC721PrefixedMetadataExtension,\n ERC721OwnerMintExtension,\n ERC721TieringExtension,\n ERC721RoleBasedMintExtension,\n ERC721RoleBasedLockableExtension,\n ERC721RoyaltyExtension,\n ERC2771ContextOwnable\n{\n struct Config {\n string name;\n string symbol;\n string contractURI;\n string placeholderURI;\n string tokenURIPrefix;\n uint256 maxSupply;\n Tier[] tiers;\n address defaultRoyaltyAddress;\n uint16 defaultRoyaltyBps;\n address proceedsRecipient;\n address trustedForwarder;\n LicenseVersion licenseVersion;\n }\n\n constructor(Config memory config) ERC721(config.name, config.symbol) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _setupRole(DEFAULT_ADMIN_ROLE, deployer);\n\n _transferOwnership(deployer);\n\n __WithdrawExtension_init(config.proceedsRecipient, WithdrawMode.ANYONE);\n __LicenseExtension_init(config.licenseVersion);\n __ERC721CollectionMetadataExtension_init(\n config.name,\n config.symbol,\n config.contractURI\n );\n __ERC721PrefixedMetadataExtension_init(\n config.placeholderURI,\n config.tokenURIPrefix\n );\n __ERC721AutoIdMinterExtension_init(config.maxSupply);\n __ERC721OwnerMintExtension_init();\n __ERC721RoleBasedMintExtension_init(deployer);\n __ERC721RoleBasedLockableExtension_init();\n __ERC721TieringExtension_init(config.tiers);\n __ERC721RoyaltyExtension_init(\n config.defaultRoyaltyAddress,\n config.defaultRoyaltyBps\n );\n __ERC2771ContextOwnable_init(config.trustedForwarder);\n }\n\n function _msgSender()\n internal\n view\n virtual\n override(ERC2771ContextOwnable, Context)\n returns (address sender)\n {\n return ERC2771ContextOwnable._msgSender();\n }\n\n function _msgData()\n internal\n view\n virtual\n override(ERC2771ContextOwnable, Context)\n returns (bytes calldata)\n {\n return ERC2771ContextOwnable._msgData();\n }\n\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal override(ERC721, ERC721LockableExtension) {\n return ERC721LockableExtension._beforeTokenTransfer(from, to, tokenId);\n }\n\n /* PUBLIC */\n\n function name()\n public\n view\n override(ERC721, ERC721CollectionMetadataExtension)\n returns (string memory)\n {\n return ERC721CollectionMetadataExtension.name();\n }\n\n function symbol()\n public\n view\n override(ERC721, ERC721CollectionMetadataExtension)\n returns (string memory)\n {\n return ERC721CollectionMetadataExtension.symbol();\n }\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(\n ERC165Storage,\n ERC721CollectionMetadataExtension,\n ERC721PrefixedMetadataExtension,\n ERC721OwnerMintExtension,\n ERC721RoleBasedMintExtension,\n ERC721RoyaltyExtension,\n ERC721RoleBasedLockableExtension,\n LicenseExtension\n )\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function tokenURI(uint256 _tokenId)\n public\n view\n virtual\n override(ERC721, ERC721PrefixedMetadataExtension)\n returns (string memory)\n {\n return ERC721PrefixedMetadataExtension.tokenURI(_tokenId);\n }\n\n function setMaxSupply(uint256 newValue)\n public\n virtual\n override(ERC721AutoIdMinterExtension, ERC721TieringExtension)\n onlyOwner\n {\n ERC721TieringExtension.setMaxSupply(newValue);\n }\n}\n"},"@openzeppelin/contracts/utils/cryptography/ECDSA.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.3) (utils/cryptography/ECDSA.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../Strings.sol\";\n\n/**\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n *\n * These functions can be used to verify that a message was signed by the holder\n * of the private keys of a given address.\n */\nlibrary ECDSA {\n enum RecoverError {\n NoError,\n InvalidSignature,\n InvalidSignatureLength,\n InvalidSignatureS,\n InvalidSignatureV\n }\n\n function _throwError(RecoverError error) private pure {\n if (error == RecoverError.NoError) {\n return; // no error: do nothing\n } else if (error == RecoverError.InvalidSignature) {\n revert(\"ECDSA: invalid signature\");\n } else if (error == RecoverError.InvalidSignatureLength) {\n revert(\"ECDSA: invalid signature length\");\n } else if (error == RecoverError.InvalidSignatureS) {\n revert(\"ECDSA: invalid signature 's' value\");\n } else if (error == RecoverError.InvalidSignatureV) {\n revert(\"ECDSA: invalid signature 'v' value\");\n }\n }\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with\n * `signature` or error string. This address can then be used for verification purposes.\n *\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {toEthSignedMessageHash} on it.\n *\n * Documentation for signature generation:\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n *\n * _Available since v4.3._\n */\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\n if (signature.length == 65) {\n bytes32 r;\n bytes32 s;\n uint8 v;\n // ecrecover takes the signature parameters, and the only way to get them\n // currently is to use assembly.\n /// @solidity memory-safe-assembly\n assembly {\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n }\n return tryRecover(hash, v, r, s);\n } else {\n return (address(0), RecoverError.InvalidSignatureLength);\n }\n }\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with\n * `signature`. This address can then be used for verification purposes.\n *\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {toEthSignedMessageHash} on it.\n */\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\n (address recovered, RecoverError error) = tryRecover(hash, signature);\n _throwError(error);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n *\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\n *\n * _Available since v4.3._\n */\n function tryRecover(\n bytes32 hash,\n bytes32 r,\n bytes32 vs\n ) internal pure returns (address, RecoverError) {\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\n uint8 v = uint8((uint256(vs) >> 255) + 27);\n return tryRecover(hash, v, r, s);\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n *\n * _Available since v4.2._\n */\n function recover(\n bytes32 hash,\n bytes32 r,\n bytes32 vs\n ) internal pure returns (address) {\n (address recovered, RecoverError error) = tryRecover(hash, r, vs);\n _throwError(error);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n * `r` and `s` signature fields separately.\n *\n * _Available since v4.3._\n */\n function tryRecover(\n bytes32 hash,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal pure returns (address, RecoverError) {\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\n // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\n //\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\n // these malleable signatures as well.\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\n return (address(0), RecoverError.InvalidSignatureS);\n }\n if (v != 27 && v != 28) {\n return (address(0), RecoverError.InvalidSignatureV);\n }\n\n // If the signature is valid (and not malleable), return the signer address\n address signer = ecrecover(hash, v, r, s);\n if (signer == address(0)) {\n return (address(0), RecoverError.InvalidSignature);\n }\n\n return (signer, RecoverError.NoError);\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `v`,\n * `r` and `s` signature fields separately.\n */\n function recover(\n bytes32 hash,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal pure returns (address) {\n (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\n _throwError(error);\n return recovered;\n }\n\n /**\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\n * produces hash corresponding to the one signed with the\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n * JSON-RPC method as part of EIP-191.\n *\n * See {recover}.\n */\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\n // 32 is the length in bytes of hash,\n // enforced by the type signature above\n return keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", hash));\n }\n\n /**\n * @dev Returns an Ethereum Signed Message, created from `s`. This\n * produces hash corresponding to the one signed with the\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n * JSON-RPC method as part of EIP-191.\n *\n * See {recover}.\n */\n function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n\", Strings.toString(s.length), s));\n }\n\n /**\n * @dev Returns an Ethereum Signed Typed Data, created from a\n * `domainSeparator` and a `structHash`. This produces hash corresponding\n * to the one signed with the\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\n * JSON-RPC method as part of EIP-712.\n *\n * See {recover}.\n */\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"\\x19\\x01\", domainSeparator, structHash));\n }\n}\n"},"@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/cryptography/draft-EIP712.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./ECDSA.sol\";\n\n/**\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\n *\n * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\n * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\n * they need in their contracts using a combination of `abi.encode` and `keccak256`.\n *\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n * ({_hashTypedDataV4}).\n *\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n * the chain id to protect against replay attacks on an eventual fork of the chain.\n *\n * NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n *\n * _Available since v3.4._\n */\nabstract contract EIP712 {\n /* solhint-disable var-name-mixedcase */\n // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to\n // invalidate the cached domain separator if the chain id changes.\n bytes32 private immutable _CACHED_DOMAIN_SEPARATOR;\n uint256 private immutable _CACHED_CHAIN_ID;\n address private immutable _CACHED_THIS;\n\n bytes32 private immutable _HASHED_NAME;\n bytes32 private immutable _HASHED_VERSION;\n bytes32 private immutable _TYPE_HASH;\n\n /* solhint-enable var-name-mixedcase */\n\n /**\n * @dev Initializes the domain separator and parameter caches.\n *\n * The meaning of `name` and `version` is specified in\n * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\n *\n * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n * - `version`: the current major version of the signing domain.\n *\n * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n * contract upgrade].\n */\n constructor(string memory name, string memory version) {\n bytes32 hashedName = keccak256(bytes(name));\n bytes32 hashedVersion = keccak256(bytes(version));\n bytes32 typeHash = keccak256(\n \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"\n );\n _HASHED_NAME = hashedName;\n _HASHED_VERSION = hashedVersion;\n _CACHED_CHAIN_ID = block.chainid;\n _CACHED_DOMAIN_SEPARATOR = _buildDomainSeparator(typeHash, hashedName, hashedVersion);\n _CACHED_THIS = address(this);\n _TYPE_HASH = typeHash;\n }\n\n /**\n * @dev Returns the domain separator for the current chain.\n */\n function _domainSeparatorV4() internal view returns (bytes32) {\n if (address(this) == _CACHED_THIS && block.chainid == _CACHED_CHAIN_ID) {\n return _CACHED_DOMAIN_SEPARATOR;\n } else {\n return _buildDomainSeparator(_TYPE_HASH, _HASHED_NAME, _HASHED_VERSION);\n }\n }\n\n function _buildDomainSeparator(\n bytes32 typeHash,\n bytes32 nameHash,\n bytes32 versionHash\n ) private view returns (bytes32) {\n return keccak256(abi.encode(typeHash, nameHash, versionHash, block.chainid, address(this)));\n }\n\n /**\n * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n * function returns the hash of the fully encoded EIP712 message for this domain.\n *\n * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n *\n * ```solidity\n * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n * keccak256(\"Mail(address to,string contents)\"),\n * mailTo,\n * keccak256(bytes(mailContents))\n * )));\n * address signer = ECDSA.recover(digest, signature);\n * ```\n */\n function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\n return ECDSA.toTypedDataHash(_domainSeparatorV4(), structHash);\n }\n}\n"},"contracts/misc/polygon/NativeMetaTransaction.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport {SafeMath} from \"@openzeppelin/contracts/utils/math/SafeMath.sol\";\nimport \"@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol\";\nimport \"@openzeppelin/contracts/utils/Context.sol\";\n\nabstract contract NativeMetaTransaction is Context, EIP712 {\n using SafeMath for uint256;\n\n bytes32 private constant META_TRANSACTION_TYPEHASH =\n keccak256(\n bytes(\n \"MetaTransaction(uint256 nonce,address from,bytes functionSignature)\"\n )\n );\n\n event MetaTransactionExecuted(\n address userAddress,\n address payable relayerAddress,\n bytes functionSignature\n );\n\n mapping(address => uint256) nonces;\n\n /*\n * Meta transaction structure.\n * No point of including value field here as if user is doing value transfer then he has the funds to pay for gas\n * He should call the desired function directly in that case.\n */\n struct MetaTransaction {\n uint256 nonce;\n address from;\n bytes functionSignature;\n }\n\n function _msgSender() internal view override returns (address sender) {\n if (msg.sender == address(this)) {\n bytes memory array = msg.data;\n uint256 index = msg.data.length;\n assembly {\n // Load the 32 bytes word from memory with the address on the lower 20 bytes, and mask those.\n sender := and(\n mload(add(array, index)),\n 0xffffffffffffffffffffffffffffffffffffffff\n )\n }\n } else {\n sender = msg.sender;\n }\n\n return sender;\n }\n\n function executeMetaTransaction(\n address userAddress,\n bytes memory functionSignature,\n bytes32 sigR,\n bytes32 sigS,\n uint8 sigV\n ) public payable returns (bytes memory) {\n MetaTransaction memory metaTx = MetaTransaction({\n nonce: nonces[userAddress],\n from: userAddress,\n functionSignature: functionSignature\n });\n\n require(\n verify(userAddress, metaTx, sigR, sigS, sigV),\n \"Signer and signature do not match\"\n );\n\n // increase nonce for user (to avoid re-use)\n nonces[userAddress] = nonces[userAddress].add(1);\n\n emit MetaTransactionExecuted(\n userAddress,\n payable(msg.sender),\n functionSignature\n );\n\n // Append userAddress and relayer address at the end to extract it from calling context\n (bool success, bytes memory returnData) = address(this).call(\n abi.encodePacked(functionSignature, userAddress)\n );\n\n require(success, \"Function call not successful\");\n\n return returnData;\n }\n\n function hashMetaTransaction(MetaTransaction memory metaTx)\n internal\n pure\n returns (bytes32)\n {\n return\n keccak256(\n abi.encode(\n META_TRANSACTION_TYPEHASH,\n metaTx.nonce,\n metaTx.from,\n keccak256(metaTx.functionSignature)\n )\n );\n }\n\n function getNonce(address user) public view returns (uint256 nonce) {\n nonce = nonces[user];\n }\n\n function verify(\n address signer,\n MetaTransaction memory metaTx,\n bytes32 sigR,\n bytes32 sigS,\n uint8 sigV\n ) internal view returns (bool) {\n require(signer != address(0), \"NativeMetaTransaction: INVALID_SIGNER\");\n return\n signer ==\n ecrecover(\n _hashTypedDataV4(hashMetaTransaction(metaTx)),\n sigV,\n sigR,\n sigS\n );\n }\n}\n"},"contracts/common/meta-transactions/UnorderedForwarder.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/utils/Context.sol\";\nimport \"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\";\nimport \"@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\n\ncontract UnorderedForwarder is EIP712, ReentrancyGuard {\n using ECDSA for bytes32;\n\n struct MetaTransaction {\n address from;\n address to;\n uint256 value;\n uint256 minGasPrice;\n uint256 maxGasPrice;\n uint256 expiresAt;\n uint256 nonce;\n bytes data;\n }\n\n bytes32 private constant _TYPEHASH =\n keccak256(\n \"MetaTransaction(address from,address to,uint256 value,uint256 minGasPrice,uint256 maxGasPrice,uint256 expiresAt,uint256 nonce,bytes data)\"\n );\n\n mapping(bytes32 => uint256) mtxHashToExecutedBlockNumber;\n\n constructor() EIP712(\"UnorderedForwarder\", \"0.0.1\") {}\n\n /// @dev Refunds up to `msg.value` leftover ETH at the end of the call.\n modifier refundsAttachedEth() {\n _;\n uint256 remainingBalance = msg.value > address(this).balance\n ? address(this).balance\n : msg.value;\n if (remainingBalance > 0) {\n payable(msg.sender).transfer(remainingBalance);\n }\n }\n\n /// @dev Ensures that the ETH balance of `this` does not go below the\n /// initial ETH balance before the call (excluding ETH attached to the call).\n modifier doesNotReduceEthBalance() {\n uint256 initialBalance = address(this).balance - msg.value;\n _;\n require(initialBalance <= address(this).balance, \"FWD_ETH_LEAK\");\n }\n\n function verify(MetaTransaction calldata mtx, bytes calldata signature)\n public\n view\n returns (bytes32 mtxHash)\n {\n mtxHash = _hashTypedDataV4(\n keccak256(\n abi.encode(\n _TYPEHASH,\n mtx.from,\n mtx.to,\n mtx.value,\n mtx.minGasPrice,\n mtx.maxGasPrice,\n mtx.expiresAt,\n mtx.nonce,\n keccak256(mtx.data)\n )\n )\n );\n\n // Must not be expired.\n require(mtx.expiresAt > block.timestamp, \"FWD_EXPIRED\");\n\n // Must be signed by the signer.\n require(\n mtxHash.recover(signature) == mtx.from,\n \"FWD_INVALID_SIGNATURE\"\n );\n\n // Transaction must not have been already executed.\n require(mtxHashToExecutedBlockNumber[mtxHash] == 0, \"FWD_REPLAYED\");\n\n return mtxHash;\n }\n\n function execute(MetaTransaction calldata mtx, bytes calldata signature)\n public\n payable\n nonReentrant\n doesNotReduceEthBalance\n refundsAttachedEth\n returns (bytes memory)\n {\n return _execute(mtx, signature);\n }\n\n function batchExecute(\n MetaTransaction[] calldata mtxs,\n bytes[] calldata signatures\n )\n public\n payable\n nonReentrant\n doesNotReduceEthBalance\n refundsAttachedEth\n returns (bytes[] memory returnResults)\n {\n require(mtxs.length == signatures.length, \"FWD_MISMATCH_SIGNATURES\");\n\n returnResults = new bytes[](mtxs.length);\n\n for (uint256 i = 0; i < mtxs.length; ++i) {\n returnResults[i] = _execute(mtxs[i], signatures[i]);\n }\n }\n\n function _execute(MetaTransaction calldata mtx, bytes calldata signature)\n internal\n returns (bytes memory)\n {\n // Must have a valid gas price.\n require(\n mtx.minGasPrice <= tx.gasprice && tx.gasprice <= mtx.maxGasPrice,\n \"FWD_INVALID_GAS\"\n );\n\n // Must have enough ETH.\n require(mtx.value <= address(this).balance, \"FWD_INVALID_VALUE\");\n\n bytes32 mtxHash = verify(mtx, signature);\n\n mtxHashToExecutedBlockNumber[mtxHash] = block.number;\n\n (bool success, bytes memory returndata) = mtx.to.call{value: mtx.value}(\n abi.encodePacked(mtx.data, mtx.from)\n );\n\n if (!success) {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(\"FWD_CALL_FAILED\");\n }\n }\n\n return returndata;\n }\n}\n"},"contracts/collections/ERC721/presets/ERC721SimpleSalesCollection.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\n\nimport \"../../../common/WithdrawExtension.sol\";\nimport \"../../../common/LicenseExtension.sol\";\nimport \"../../../common/meta-transactions/ERC2771ContextOwnable.sol\";\nimport \"../extensions/ERC721CollectionMetadataExtension.sol\";\nimport \"../extensions/ERC721PrefixedMetadataExtension.sol\";\nimport \"../extensions/ERC721AutoIdMinterExtension.sol\";\nimport \"../extensions/ERC721OwnerMintExtension.sol\";\nimport \"../extensions/ERC721PreSaleExtension.sol\";\nimport \"../extensions/ERC721PublicSaleExtension.sol\";\nimport \"../extensions/ERC721RoleBasedMintExtension.sol\";\nimport \"../extensions/ERC721RoyaltyExtension.sol\";\nimport \"../extensions/ERC721RoleBasedLockableExtension.sol\";\nimport \"../extensions/ERC721BulkifyExtension.sol\";\n\ncontract ERC721SimpleSalesCollection is\n Initializable,\n Ownable,\n ERC165Storage,\n WithdrawExtension,\n LicenseExtension,\n ERC721PrefixedMetadataExtension,\n ERC721OwnerMintExtension,\n ERC721PreSaleExtension,\n ERC721PublicSaleExtension,\n ERC721RoleBasedMintExtension,\n ERC721RoleBasedLockableExtension,\n ERC721RoyaltyExtension,\n ERC2771ContextOwnable,\n ERC721BulkifyExtension\n{\n struct Config {\n string name;\n string symbol;\n string contractURI;\n string placeholderURI;\n string tokenURIPrefix;\n uint256 maxSupply;\n uint256 preSalePrice;\n uint256 preSaleMaxMintPerWallet;\n uint256 publicSalePrice;\n uint256 publicSaleMaxMintPerTx;\n address defaultRoyaltyAddress;\n uint16 defaultRoyaltyBps;\n address proceedsRecipient;\n address trustedForwarder;\n LicenseVersion licenseVersion;\n }\n\n constructor(Config memory config) ERC721(config.name, config.symbol) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _setupRole(DEFAULT_ADMIN_ROLE, deployer);\n\n _transferOwnership(deployer);\n\n __WithdrawExtension_init(config.proceedsRecipient, WithdrawMode.ANYONE);\n __LicenseExtension_init(config.licenseVersion);\n __ERC721CollectionMetadataExtension_init(\n config.name,\n config.symbol,\n config.contractURI\n );\n __ERC721PrefixedMetadataExtension_init(\n config.placeholderURI,\n config.tokenURIPrefix\n );\n __ERC721AutoIdMinterExtension_init(config.maxSupply);\n __ERC721OwnerMintExtension_init();\n __ERC721RoleBasedMintExtension_init(deployer);\n __ERC721RoleBasedLockableExtension_init();\n __ERC721PreSaleExtension_init_unchained(\n config.preSalePrice,\n config.preSaleMaxMintPerWallet\n );\n __ERC721PublicSaleExtension_init(\n config.publicSalePrice,\n config.publicSaleMaxMintPerTx\n );\n __ERC721RoyaltyExtension_init(\n config.defaultRoyaltyAddress,\n config.defaultRoyaltyBps\n );\n __ERC2771ContextOwnable_init(config.trustedForwarder);\n __ERC721BulkifyExtension_init();\n }\n\n function _msgSender()\n internal\n view\n virtual\n override(ERC2771ContextOwnable, Context)\n returns (address sender)\n {\n return super._msgSender();\n }\n\n function _msgData()\n internal\n view\n virtual\n override(ERC2771ContextOwnable, Context)\n returns (bytes calldata)\n {\n return super._msgData();\n }\n\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal override(ERC721, ERC721LockableExtension) {\n return ERC721LockableExtension._beforeTokenTransfer(from, to, tokenId);\n }\n\n /* PUBLIC */\n\n function name()\n public\n view\n override(ERC721, ERC721CollectionMetadataExtension)\n returns (string memory)\n {\n return ERC721CollectionMetadataExtension.name();\n }\n\n function symbol()\n public\n view\n override(ERC721, ERC721CollectionMetadataExtension)\n returns (string memory)\n {\n return ERC721CollectionMetadataExtension.symbol();\n }\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(\n ERC165Storage,\n ERC721PrefixedMetadataExtension,\n ERC721PreSaleExtension,\n ERC721PublicSaleExtension,\n ERC721OwnerMintExtension,\n ERC721RoleBasedMintExtension,\n ERC721RoyaltyExtension,\n ERC721RoleBasedLockableExtension,\n ERC721BulkifyExtension,\n LicenseExtension\n )\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function tokenURI(uint256 _tokenId)\n public\n view\n virtual\n override(ERC721, ERC721PrefixedMetadataExtension)\n returns (string memory)\n {\n return ERC721PrefixedMetadataExtension.tokenURI(_tokenId);\n }\n\n function getInfo()\n external\n view\n returns (\n uint256 _maxSupply,\n uint256 _totalSupply,\n uint256 _senderBalance,\n uint256 _preSalePrice,\n uint256 _preSaleMaxMintPerWallet,\n uint256 _preSaleAlreadyClaimed,\n bool _preSaleActive,\n uint256 _publicSalePrice,\n uint256 _publicSaleMaxMintPerTx,\n bool _publicSaleActive\n )\n {\n uint256 balance = 0;\n\n if (_msgSender() != address(0)) {\n balance = this.balanceOf(_msgSender());\n }\n\n return (\n maxSupply,\n this.totalSupply(),\n balance,\n preSalePrice,\n preSaleMaxMintPerWallet,\n preSaleAllowlistClaimed[_msgSender()],\n preSaleStatus,\n publicSalePrice,\n publicSaleMaxMintPerTx,\n publicSaleStatus\n );\n }\n}\n"},"contracts/collections/ERC721/extensions/ERC721BulkifyExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\ninterface IERC721BulkifyExtension {\n function transferFromBulk(\n address from,\n address to,\n uint256[] memory tokenIds\n ) external;\n\n function transferFromBulk(\n address[] memory from,\n address[] memory to,\n uint256[] memory tokenIds\n ) external;\n}\n\n/**\n * @dev Extension to add bulk operations to a standard ERC721 contract.\n */\nabstract contract ERC721BulkifyExtension is\n IERC721BulkifyExtension,\n Initializable,\n ERC165Storage\n{\n function __ERC721BulkifyExtension_init() internal onlyInitializing {\n __ERC721BulkifyExtension_init_unchained();\n }\n\n function __ERC721BulkifyExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721BulkifyExtension).interfaceId);\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n /**\n * Useful for when user wants to return tokens to get a refund,\n * or when they want to transfer lots of tokens by paying gas fee only once.\n */\n function transferFromBulk(\n address from,\n address to,\n uint256[] memory tokenIds\n ) public virtual {\n for (uint256 i = 0; i < tokenIds.length; i++) {\n IERC721(address(this)).transferFrom(from, to, tokenIds[i]);\n }\n }\n\n /**\n * Useful for transferring multiple tokens from/to multiple addresses.\n */\n function transferFromBulk(\n address[] memory from,\n address[] memory to,\n uint256[] memory tokenIds\n ) public virtual {\n require(from.length == to.length, \"FROM_TO_LENGTH_MISMATCH\");\n require(from.length == tokenIds.length, \"FROM_TOKEN_LENGTH_MISMATCH\");\n\n for (uint256 i = 0; i < tokenIds.length; i++) {\n IERC721(address(this)).transferFrom(from[i], to[i], tokenIds[i]);\n }\n }\n}\n"},"contracts/collections/ERC721/presets/ERC721ManagedPrefixedCollection.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\n\nimport \"../../../common/LicenseExtension.sol\";\nimport \"../../../common/meta-transactions/ERC2771ContextOwnable.sol\";\nimport \"../extensions/ERC721CollectionMetadataExtension.sol\";\nimport \"../extensions/ERC721PrefixedMetadataExtension.sol\";\nimport \"../extensions/ERC721AutoIdMinterExtension.sol\";\nimport \"../extensions/ERC721OwnerMintExtension.sol\";\nimport \"../extensions/ERC721OwnerManagedExtension.sol\";\nimport \"../extensions/ERC721RoyaltyExtension.sol\";\nimport \"../extensions/ERC721BulkifyExtension.sol\";\n\ncontract ERC721ManagedPrefixedCollection is\n Initializable,\n Ownable,\n ERC165Storage,\n LicenseExtension,\n ERC2771ContextOwnable,\n ERC721CollectionMetadataExtension,\n ERC721PrefixedMetadataExtension,\n ERC721AutoIdMinterExtension,\n ERC721OwnerMintExtension,\n ERC721OwnerManagedExtension,\n ERC721RoyaltyExtension,\n ERC721BulkifyExtension\n{\n struct Config {\n string name;\n string symbol;\n string contractURI;\n string placeholderURI;\n string tokenURIPrefix;\n address[] initialHolders;\n uint256[] initialAmounts;\n uint256 maxSupply;\n address defaultRoyaltyAddress;\n uint16 defaultRoyaltyBps;\n address trustedForwarder;\n LicenseVersion licenseVersion;\n }\n\n constructor(Config memory config) ERC721(config.name, config.symbol) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n require(\n config.initialHolders.length == config.initialAmounts.length,\n \"ERC721/INVALID_INITIAL_ARGS\"\n );\n\n _transferOwnership(deployer);\n\n __LicenseExtension_init(config.licenseVersion);\n __ERC721CollectionMetadataExtension_init(\n config.name,\n config.symbol,\n config.contractURI\n );\n __ERC721PrefixedMetadataExtension_init(\n config.placeholderURI,\n config.tokenURIPrefix\n );\n __ERC721AutoIdMinterExtension_init(config.maxSupply);\n __ERC721OwnerMintExtension_init();\n __ERC721OwnerManagedExtension_init();\n __ERC721RoyaltyExtension_init(\n config.defaultRoyaltyAddress,\n config.defaultRoyaltyBps\n );\n __ERC2771ContextOwnable_init(config.trustedForwarder);\n __ERC721BulkifyExtension_init();\n\n maxSupply = config.maxSupply;\n\n for (uint256 i = 0; i < config.initialHolders.length; i++) {\n _mintTo(config.initialHolders[i], config.initialAmounts[i]);\n }\n }\n\n function _msgSender()\n internal\n view\n virtual\n override(ERC2771ContextOwnable, Context)\n returns (address sender)\n {\n return super._msgSender();\n }\n\n function _msgData()\n internal\n view\n virtual\n override(ERC2771ContextOwnable, Context)\n returns (bytes calldata)\n {\n return super._msgData();\n }\n\n /* PUBLIC */\n\n function name()\n public\n view\n override(ERC721, ERC721CollectionMetadataExtension)\n returns (string memory)\n {\n return ERC721CollectionMetadataExtension.name();\n }\n\n function symbol()\n public\n view\n override(ERC721, ERC721CollectionMetadataExtension)\n returns (string memory)\n {\n return ERC721CollectionMetadataExtension.symbol();\n }\n\n function isApprovedForAll(address owner, address operator)\n public\n view\n virtual\n override(ERC721, ERC721OwnerManagedExtension)\n returns (bool)\n {\n return ERC721OwnerManagedExtension.isApprovedForAll(owner, operator);\n }\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(\n ERC165Storage,\n ERC721CollectionMetadataExtension,\n ERC721OwnerMintExtension,\n ERC721OwnerManagedExtension,\n ERC721PrefixedMetadataExtension,\n ERC721RoyaltyExtension,\n ERC721BulkifyExtension,\n LicenseExtension\n )\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function tokenURI(uint256 _tokenId)\n public\n view\n virtual\n override(ERC721, ERC721PrefixedMetadataExtension)\n returns (string memory)\n {\n return ERC721PrefixedMetadataExtension.tokenURI(_tokenId);\n }\n\n function getInfo()\n external\n view\n returns (\n uint256 _maxSupply,\n uint256 _totalSupply,\n uint256 _senderBalance\n )\n {\n uint256 balance = 0;\n\n if (_msgSender() != address(0)) {\n balance = this.balanceOf(_msgSender());\n }\n\n return (maxSupply, this.totalSupply(), balance);\n }\n}\n"},"contracts/collections/ERC721/extensions/ERC721OwnerManagedExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"./ERC721AutoIdMinterExtension.sol\";\n\ninterface IERC721OwnerManagedExtension {\n function revokeManagementPower() external;\n}\n\n/**\n * @dev Extension to allow owner to transfer tokens on behalf of owners. Only useful for certain use-cases.\n */\nabstract contract ERC721OwnerManagedExtension is\n IERC721OwnerManagedExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721AutoIdMinterExtension\n{\n bool public managementPowerRevoked;\n\n function __ERC721OwnerManagedExtension_init() internal onlyInitializing {\n __ERC721OwnerManagedExtension_init_unchained();\n }\n\n function __ERC721OwnerManagedExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721OwnerManagedExtension).interfaceId);\n }\n\n /* ADMIN */\n\n function revokeManagementPower() external onlyOwner {\n managementPowerRevoked = true;\n }\n\n /* PUBLIC */\n\n /**\n * Override isApprovedForAll to allow owner to transfer tokens.\n */\n function isApprovedForAll(address owner, address operator)\n public\n view\n virtual\n override(ERC721)\n returns (bool)\n {\n if (!managementPowerRevoked) {\n if (operator == super.owner()) {\n return true;\n }\n }\n\n return super.isApprovedForAll(owner, operator);\n }\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721CollectionMetadataExtension)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n}\n"},"contracts/collections/ERC721A/extensions/ERC721AOwnerManagedExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"./ERC721AMinterExtension.sol\";\n\nimport {IERC721OwnerManagedExtension} from \"../../ERC721/extensions/ERC721OwnerManagedExtension.sol\";\n\n/**\n * @dev Extension to allow owner to transfer tokens on behalf of owners. Only useful for certain use-cases.\n */\nabstract contract ERC721AOwnerManagedExtension is\n IERC721OwnerManagedExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721AMinterExtension\n{\n bool public managementPowerRevoked;\n\n function __ERC721AOwnerManagedExtension_init() internal onlyInitializing {\n __ERC721AOwnerManagedExtension_init_unchained();\n }\n\n function __ERC721AOwnerManagedExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721OwnerManagedExtension).interfaceId);\n }\n\n /* ADMIN */\n\n function revokeManagementPower() external onlyOwner {\n managementPowerRevoked = true;\n }\n\n /* PUBLIC */\n\n /**\n * Override isApprovedForAll to allow owner to transfer tokens.\n */\n function isApprovedForAll(address owner, address operator)\n public\n view\n virtual\n override(ERC721A)\n returns (bool)\n {\n if (!managementPowerRevoked) {\n if (operator == super.owner()) {\n return true;\n }\n }\n\n return super.isApprovedForAll(owner, operator);\n }\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721ACollectionMetadataExtension)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n}\n"},"contracts/collections/ERC721/presets/ERC721OneOfOneCollection.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\n\nimport \"../../../common/meta-transactions/ERC2771ContextOwnable.sol\";\nimport \"../../../common/LicenseExtension.sol\";\nimport \"../extensions/ERC721CollectionMetadataExtension.sol\";\nimport \"../extensions/ERC721PerTokenMetadataExtension.sol\";\nimport \"../extensions/ERC721OneOfOneMintExtension.sol\";\nimport \"../extensions/ERC721AutoIdMinterExtension.sol\";\nimport \"../extensions/ERC721OwnerMintExtension.sol\";\nimport \"../extensions/ERC721RoyaltyExtension.sol\";\n\ncontract ERC721OneOfOneCollection is\n Initializable,\n Ownable,\n ERC165Storage,\n LicenseExtension,\n ERC721PerTokenMetadataExtension,\n ERC721OwnerMintExtension,\n ERC721RoyaltyExtension,\n ERC721OneOfOneMintExtension,\n ERC2771ContextOwnable\n{\n struct Config {\n string name;\n string symbol;\n string contractURI;\n uint256 maxSupply;\n address defaultRoyaltyAddress;\n uint16 defaultRoyaltyBps;\n address trustedForwarder;\n LicenseVersion licenseVersion;\n }\n\n constructor(Config memory config) ERC721(config.name, config.symbol) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _setupRole(DEFAULT_ADMIN_ROLE, deployer);\n _setupRole(MINTER_ROLE, deployer);\n\n _transferOwnership(deployer);\n\n __LicenseExtension_init(config.licenseVersion);\n __ERC721CollectionMetadataExtension_init(\n config.name,\n config.symbol,\n config.contractURI\n );\n __ERC721PerTokenMetadataExtension_init();\n __ERC721OwnerMintExtension_init();\n __ERC721OneOfOneMintExtension_init();\n __ERC721AutoIdMinterExtension_init(config.maxSupply);\n __ERC721RoyaltyExtension_init(\n config.defaultRoyaltyAddress,\n config.defaultRoyaltyBps\n );\n __ERC2771ContextOwnable_init(config.trustedForwarder);\n }\n\n function _burn(uint256 tokenId)\n internal\n virtual\n override(ERC721, ERC721OneOfOneMintExtension, ERC721URIStorage)\n {\n return ERC721OneOfOneMintExtension._burn(tokenId);\n }\n\n function _msgSender()\n internal\n view\n virtual\n override(ERC2771ContextOwnable, Context)\n returns (address sender)\n {\n return super._msgSender();\n }\n\n function _msgData()\n internal\n view\n virtual\n override(ERC2771ContextOwnable, Context)\n returns (bytes calldata)\n {\n return super._msgData();\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(\n ERC165Storage,\n ERC721OwnerMintExtension,\n ERC721OneOfOneMintExtension,\n ERC721PerTokenMetadataExtension,\n ERC721RoyaltyExtension,\n LicenseExtension\n )\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function name()\n public\n view\n override(\n ERC721,\n ERC721OneOfOneMintExtension,\n ERC721CollectionMetadataExtension\n )\n returns (string memory)\n {\n return ERC721CollectionMetadataExtension.name();\n }\n\n function symbol()\n public\n view\n override(\n ERC721,\n ERC721OneOfOneMintExtension,\n ERC721CollectionMetadataExtension\n )\n returns (string memory)\n {\n return ERC721CollectionMetadataExtension.symbol();\n }\n\n function tokenURI(uint256 _tokenId)\n public\n view\n virtual\n override(ERC721, ERC721OneOfOneMintExtension, ERC721URIStorage)\n returns (string memory)\n {\n return ERC721OneOfOneMintExtension.tokenURI(_tokenId);\n }\n\n function getInfo()\n external\n view\n returns (\n uint256 _maxSupply,\n uint256 _totalSupply,\n uint256 _senderBalance\n )\n {\n uint256 balance = 0;\n\n if (_msgSender() != address(0)) {\n balance = this.balanceOf(_msgSender());\n }\n\n return (maxSupply, this.totalSupply(), balance);\n }\n}\n"},"contracts/tokens/presets/ERC20BasicToken.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol\";\nimport \"@openzeppelin/contracts/security/Pausable.sol\";\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\n\ncontract ERC20BasicToken is\n Initializable,\n ERC20,\n ERC20Burnable,\n Pausable,\n AccessControl\n{\n bytes32 public constant PAUSER_ROLE = keccak256(\"PAUSER_ROLE\");\n bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n\n string private _name;\n string private _symbol;\n\n struct Config {\n string name;\n string symbol;\n }\n\n constructor(Config memory config) ERC20(config.name, config.symbol) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _name = config.name;\n _symbol = config.symbol;\n\n _grantRole(DEFAULT_ADMIN_ROLE, deployer);\n _grantRole(PAUSER_ROLE, deployer);\n _grantRole(MINTER_ROLE, deployer);\n }\n\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n function pause() public onlyRole(PAUSER_ROLE) {\n _pause();\n }\n\n function unpause() public onlyRole(PAUSER_ROLE) {\n _unpause();\n }\n\n function mint(address to, uint256 amount) public onlyRole(MINTER_ROLE) {\n _mint(to, amount);\n }\n\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 amount\n ) internal override whenNotPaused {\n super._beforeTokenTransfer(from, to, amount);\n }\n}\n"},"contracts/factory/FlairFactoryNewable.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"../common/WithdrawExtension.sol\";\nimport \"./Clones.sol\";\nimport \"./MinimalProxy.sol\";\n\ncontract FlairFactoryNewable is Initializable, Ownable, WithdrawExtension {\n event ProxyCreated(address indexed deployer, address indexed proxyAddress);\n\n constructor() {\n initialize();\n }\n\n function initialize() public initializer {\n __WithdrawExtension_init(_msgSender(), WithdrawMode.OWNER);\n }\n\n function cloneDeterministicSimple(\n address implementation,\n bytes32 salt,\n bytes calldata data\n ) external payable returns (address deployedProxy) {\n MinimalProxy p = new MinimalProxy{salt: salt}(implementation);\n deployedProxy = address(p);\n\n if (data.length > 0) {\n (bool success, bytes memory returndata) = deployedProxy.call(data);\n\n if (!success) {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(\"FAILED_TO_CLONE\");\n }\n }\n }\n\n emit ProxyCreated(msg.sender, address(deployedProxy));\n }\n}\n"},"contracts/factory/Clones.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nlibrary Clones {\n /**\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n *\n * This function uses the create opcode, which should never revert.\n */\n function clone(address implementation) internal returns (address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n let ptr := mload(0x40)\n mstore(\n ptr,\n 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000\n )\n mstore(add(ptr, 0x14), shl(0x60, implementation))\n mstore(\n add(ptr, 0x28),\n 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000\n )\n instance := create(0, ptr, 0x37)\n }\n require(instance != address(0), \"ERC1167: create failed\");\n }\n\n /**\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n *\n * This function uses the create2 opcode and a `salt` to deterministically deploy\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\n * the clones cannot be deployed twice at the same address.\n */\n function cloneDeterministic(address implementation, bytes32 salt)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let ptr := mload(0x40)\n mstore(\n ptr,\n 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000\n )\n mstore(add(ptr, 0x14), shl(0x60, implementation))\n mstore(\n add(ptr, 0x28),\n 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000\n )\n instance := create2(0, ptr, 0x37, salt)\n }\n require(instance != address(0), \"ERC1167: create2 failed\");\n }\n\n /**\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\n */\n function predictDeterministicAddress(\n address implementation,\n bytes32 salt,\n address deployer\n ) internal pure returns (address predicted) {\n /// @solidity memory-safe-assembly\n assembly {\n let ptr := mload(0x40)\n mstore(\n ptr,\n 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000\n )\n mstore(add(ptr, 0x14), shl(0x60, implementation))\n mstore(\n add(ptr, 0x28),\n 0x5af43d82803e903d91602b57fd5bf3ff00000000000000000000000000000000\n )\n mstore(add(ptr, 0x38), shl(0x60, deployer))\n mstore(add(ptr, 0x4c), salt)\n mstore(add(ptr, 0x6c), keccak256(ptr, 0x37))\n predicted := keccak256(add(ptr, 0x37), 0x55)\n }\n }\n\n /**\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\n */\n function predictDeterministicAddress(address implementation, bytes32 salt)\n internal\n view\n returns (address predicted)\n {\n return predictDeterministicAddress(implementation, salt, address(this));\n }\n}\n"},"contracts/factory/MinimalProxy.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/Proxy.sol\";\nimport \"@openzeppelin/contracts/utils/StorageSlot.sol\";\n\ncontract MinimalProxy is Proxy {\n /**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n * validated in the constructor.\n */\n bytes32 internal constant _IMPLEMENTATION_SLOT =\n 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n constructor(address _impl) payable {\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = _impl;\n }\n\n function _implementation() internal view override returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n}\n"},"@openzeppelin/contracts/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */\nabstract contract Proxy {\n /**\n * @dev Delegates the current call to `implementation`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _delegate(address implementation) internal virtual {\n assembly {\n // Copy msg.data. We take full control of memory in this inline assembly\n // block because it will not return to Solidity code. We overwrite the\n // Solidity scratch pad at memory position 0.\n calldatacopy(0, 0, calldatasize())\n\n // Call the implementation.\n // out and outsize are 0 because we don't know the size yet.\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n // Copy the returned data.\n returndatacopy(0, 0, returndatasize())\n\n switch result\n // delegatecall returns 0 on error.\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n }\n }\n\n /**\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\n * and {_fallback} should delegate.\n */\n function _implementation() internal view virtual returns (address);\n\n /**\n * @dev Delegates the current call to the address returned by `_implementation()`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _fallback() internal virtual {\n _beforeFallback();\n _delegate(_implementation());\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n * function in the contract matches the call data.\n */\n fallback() external payable virtual {\n _fallback();\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n * is empty.\n */\n receive() external payable virtual {\n _fallback();\n }\n\n /**\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n * call, or as part of the Solidity `fallback` or `receive` functions.\n *\n * If overridden should call `super._beforeFallback()`.\n */\n function _beforeFallback() internal virtual {}\n}\n"},"@openzeppelin/contracts/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n *\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\n */\nlibrary StorageSlot {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n}\n"},"contracts/factory/FlairFactory.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"../common/WithdrawExtension.sol\";\nimport \"./Clones.sol\";\n\ncontract FlairFactory is Initializable, Ownable, WithdrawExtension {\n event ProxyCreated(address indexed deployer, address indexed proxyAddress);\n\n constructor() {\n initialize();\n }\n\n function initialize() public initializer {\n __WithdrawExtension_init(_msgSender(), WithdrawMode.OWNER);\n }\n\n function cloneDeterministicSimple(\n address implementation,\n bytes32 salt,\n bytes calldata data\n ) external payable returns (address deployedProxy) {\n bytes32 _salt = keccak256(abi.encodePacked(msg.sender, salt));\n deployedProxy = Clones.cloneDeterministic(implementation, _salt);\n\n if (data.length > 0) {\n (bool success, bytes memory returndata) = deployedProxy.call(data);\n\n if (!success) {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(\"FAILED_TO_CLONE\");\n }\n }\n }\n\n emit ProxyCreated(msg.sender, deployedProxy);\n }\n\n function predictDeterministicSimple(address implementation, bytes32 salt)\n external\n view\n returns (address deployedProxy)\n {\n bytes32 _salt = keccak256(abi.encodePacked(msg.sender, salt));\n deployedProxy = Clones.predictDeterministicAddress(\n implementation,\n _salt\n );\n }\n}\n"},"contracts/collections/ERC721A/extensions/ERC721AFreeMintExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"./ERC721AMinterExtension.sol\";\n\nimport {IERC721FreeMintExtension} from \"../../ERC721/extensions/ERC721FreeMintExtension.sol\";\n\n/**\n * @dev Extension to allow anyone to mint directly without paying.\n */\nabstract contract ERC721AFreeMintExtension is\n IERC721FreeMintExtension,\n Initializable,\n ERC165Storage,\n ERC721AMinterExtension\n{\n function __ERC721AFreeMintExtension_init() internal onlyInitializing {\n __ERC721AFreeMintExtension_init_unchained();\n }\n\n function __ERC721AFreeMintExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721FreeMintExtension).interfaceId);\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721ACollectionMetadataExtension)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function mintFree(address to, uint256 count) external {\n _mintTo(to, count);\n }\n}\n"},"contracts/collections/ERC721/extensions/ERC721FreeMintExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"./ERC721AutoIdMinterExtension.sol\";\n\ninterface IERC721FreeMintExtension {\n function mintFree(address to, uint256 count) external;\n}\n\n/**\n * @dev Extension to allow anyone to mint directly without paying.\n */\nabstract contract ERC721FreeMintExtension is\n IERC721FreeMintExtension,\n Initializable,\n ERC165Storage,\n ERC721AutoIdMinterExtension\n{\n function __ERC721FreeMintExtension_init() internal onlyInitializing {\n __ERC721FreeMintExtension_init_unchained();\n }\n\n function __ERC721FreeMintExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721FreeMintExtension).interfaceId);\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721CollectionMetadataExtension)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function mintFree(address to, uint256 count) external {\n _mintTo(to, count);\n }\n}\n"},"contracts/test/TestERC20.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\ncontract TestERC20 is ERC20(\"FlairTest\", \"FTS\") {\n function mint(address to, uint256 amount) public {\n _mint(to, amount);\n }\n}\n"},"contracts/test/TestERC721.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol\";\n\ncontract TestERC721 is ERC721(\"FlairTest\", \"FTS\"), ERC721Enumerable {\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC721, ERC721Enumerable)\n returns (bool)\n {\n return super.supportsInterface(interfaceId);\n }\n\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual override(ERC721, ERC721Enumerable) {\n return super._beforeTokenTransfer(from, to, tokenId);\n }\n\n function mintExact(address to, uint256 tokenId) public returns (bool) {\n _mint(to, tokenId);\n return true;\n }\n\n function mintBulk(address to, uint256 total) public returns (bool) {\n for (uint256 i = 0; i < total; i++) {\n _mint(to, totalSupply());\n }\n return true;\n }\n}\n"},"contracts/misc/opensea/ProxyRegistry.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\ncontract OwnableDelegateProxy {}\n\ncontract ProxyRegistry {\n mapping(address => OwnableDelegateProxy) public proxies;\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":20},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","devdoc","userdoc","storageLayout","evm.gasEstimates"],"":["ast"]}},"metadata":{"useLiteralContent":true}}}},"v2":{"compilerVersion":"v0.8.15+commit.e14f2714","solcInput":{"language":"Solidity","sources":{"src/access/ownable/IERC173.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./IERC173Events.sol\";\n\n/**\n * @title Contract ownership standard interface\n * @dev see https://eips.ethereum.org/EIPS/eip-173\n */\ninterface IERC173 is IERC173Events {\n /**\n * @notice get the ERC173 contract owner\n * @return conrtact owner\n */\n function owner() external view returns (address);\n\n /**\n * @notice transfer contract ownership to new account\n * @param account address of new owner\n */\n function transferOwnership(address account) external;\n}\n"},"src/access/ownable/IERC173Events.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\n/**\n * @title Contract ownership standard interface (event only)\n * @dev see https://eips.ethereum.org/EIPS/eip-173\n */\ninterface IERC173Events {\n event OwnershipTransferred(\n address indexed previousOwner,\n address indexed newOwner\n );\n}\n"},"src/diamond/Diamond.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../access/ownable/OwnableStorage.sol\";\nimport \"../access/ownable/IERC173.sol\";\nimport \"../introspection/ERC165.sol\";\nimport \"../metatx/ERC2771Context.sol\";\nimport \"../diamond/IDiamondCut.sol\";\nimport \"../diamond/IDiamondLoupe.sol\";\n\nimport \"@openzeppelin/contracts/utils/Multicall.sol\";\n\nimport \"./DiamondStorage.sol\";\n\ncontract Diamond is Multicall {\n using ERC165Storage for ERC165Storage.Layout;\n using OwnableStorage for OwnableStorage.Layout;\n\n struct Initialization {\n address initContract;\n bytes initData;\n }\n\n struct CoreFacets {\n address diamondCutFacet;\n address diamondLoupeFacet;\n address erc165Facet;\n address erc173Facet;\n }\n\n constructor(\n address owner,\n CoreFacets memory _coreFacets,\n IDiamondCut.FacetCut[] memory _facets,\n Initialization[] memory _initializations\n ) {\n ERC165Storage.Layout storage erc165 = ERC165Storage.layout();\n\n // register DiamondCut\n\n bytes4[] memory selectorsDiamondCut = new bytes4[](1);\n selectorsDiamondCut[0] = IDiamondCut.diamondCut.selector;\n\n erc165.setSupportedInterface(type(IDiamondCut).interfaceId, true);\n\n // register DiamondLoupe\n\n bytes4[] memory selectorsDiamondLoupe = new bytes4[](4);\n selectorsDiamondLoupe[0] = IDiamondLoupe.facets.selector;\n selectorsDiamondLoupe[1] = IDiamondLoupe.facetFunctionSelectors.selector;\n selectorsDiamondLoupe[2] = IDiamondLoupe.facetAddresses.selector;\n selectorsDiamondLoupe[3] = IDiamondLoupe.facetAddress.selector;\n\n erc165.setSupportedInterface(type(IDiamondLoupe).interfaceId, true);\n\n // register ERC165 (supportsInterface)\n\n bytes4[] memory selectorsERC165 = new bytes4[](1);\n selectorsERC165[0] = IERC165.supportsInterface.selector;\n\n erc165.setSupportedInterface(type(IERC165).interfaceId, true);\n\n // register ERC173 (Ownable)\n\n bytes4[] memory selectorsERC173 = new bytes4[](2);\n selectorsERC173[0] = IERC173.owner.selector;\n selectorsERC173[1] = IERC173.transferOwnership.selector;\n\n erc165.setSupportedInterface(type(IERC173).interfaceId, true);\n\n // execute the first ever diamond cut,\n // we are calling the addFunctions directly to save ~ %50 gas\n\n DiamondStorage.addFunctions(_coreFacets.diamondCutFacet, selectorsDiamondCut);\n DiamondStorage.addFunctions(_coreFacets.diamondLoupeFacet, selectorsDiamondLoupe);\n DiamondStorage.addFunctions(_coreFacets.erc165Facet, selectorsERC165);\n DiamondStorage.addFunctions(_coreFacets.erc173Facet, selectorsERC173);\n\n // set owner\n\n OwnableStorage.layout().setOwner(owner);\n\n // initialization\n\n for (uint256 i = 0; i < _facets.length; i++) {\n DiamondStorage.addFunctions(_facets[i].facetAddress, _facets[i].functionSelectors);\n }\n\n for (uint256 i = 0; i < _initializations.length; i++) {\n DiamondStorage.initializeDiamondCut(_initializations[i].initContract, _initializations[i].initData);\n }\n }\n\n // Find facet for function that is called and execute the\n // function if a facet is found and return any value.\n fallback() external payable {\n DiamondStorage.Layout storage l;\n bytes32 position = DiamondStorage.DIAMOND_STORAGE_POSITION;\n // get diamond storage\n assembly {\n l.slot := position\n }\n\n // get facet from function selector\n address facet = l.selectorToFacetAndPosition[msg.sig].facetAddress;\n require(facet != address(0), \"BAD_FUNC\");\n\n // Execute external function from facet using delegatecall and return any value.\n assembly {\n // copy function selector and any arguments\n calldatacopy(0, 0, calldatasize())\n // execute function call using the facet\n let result := delegatecall(gas(), facet, 0, calldatasize(), 0, 0)\n // get any return value\n returndatacopy(0, 0, returndatasize())\n // return any return value or error back to the caller\n switch result\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n }\n }\n\n receive() external payable {}\n}\n"},"src/access/ownable/OwnableStorage.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nlibrary OwnableStorage {\n struct Layout {\n address owner;\n }\n\n bytes32 internal constant STORAGE_SLOT =\n keccak256(\"openzeppelin.contracts.storage.Ownable\");\n\n function layout() internal pure returns (Layout storage l) {\n bytes32 slot = STORAGE_SLOT;\n assembly {\n l.slot := slot\n }\n }\n\n function setOwner(Layout storage l, address owner) internal {\n l.owner = owner;\n }\n}\n"},"src/introspection/ERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./IERC165.sol\";\nimport \"./ERC165Storage.sol\";\n\n/**\n * @title ERC165 implementation\n */\ncontract ERC165 is IERC165 {\n using ERC165Storage for ERC165Storage.Layout;\n\n /**\n * @inheritdoc IERC165\n */\n function supportsInterface(bytes4 interfaceId) public view returns (bool) {\n return ERC165Storage.layout().isSupportedInterface(interfaceId);\n }\n}\n"},"src/metatx/ERC2771Context.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./ERC2771ContextStorage.sol\";\nimport \"./ERC2771ContextInternal.sol\";\nimport \"./IERC2771Context.sol\";\n\ncontract ERC2771Context is IERC2771Context, ERC2771ContextInternal {\n using ERC2771ContextStorage for ERC2771ContextStorage.Layout;\n\n function isTrustedForwarder(address forwarder) public view virtual returns (bool) {\n return _isTrustedForwarder(forwarder);\n }\n}\n"},"src/diamond/IDiamondCut.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\n/******************************************************************************\\\n* Author: Nick Mudge (https://twitter.com/mudgen)\n* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535\n/******************************************************************************/\n\ninterface IDiamondCut {\n enum FacetCutAction {\n Add,\n Replace,\n Remove\n }\n // Add=0, Replace=1, Remove=2\n\n struct FacetCut {\n address facetAddress;\n FacetCutAction action;\n bytes4[] functionSelectors;\n }\n\n /// @notice Add/replace/remove any number of functions and optionally execute\n /// a function with delegatecall\n /// @param _diamondCut Contains the facet addresses and function selectors\n /// @param _init The address of the contract or facet to execute _calldata\n /// @param _calldata A function call, including function selector and arguments\n /// _calldata is executed with delegatecall on _init\n function diamondCut(\n FacetCut[] calldata _diamondCut,\n address _init,\n bytes calldata _calldata\n ) external;\n\n event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata);\n}\n"},"src/diamond/IDiamondLoupe.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\n/******************************************************************************\\\n* Author: Nick Mudge (https://twitter.com/mudgen)\n* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535\n/******************************************************************************/\n\n// A loupe is a small magnifying glass used to look at diamonds.\n// These functions look at diamonds\ninterface IDiamondLoupe {\n /// These functions are expected to be called frequently\n /// by tools.\n\n struct Facet {\n address facetAddress;\n bytes4[] functionSelectors;\n }\n\n /// @notice Gets all facet addresses and their four byte function selectors.\n /// @return facets_ Facet\n function facets() external view returns (Facet[] memory facets_);\n\n /// @notice Gets all the function selectors supported by a specific facet.\n /// @param _facet The facet address.\n /// @return facetFunctionSelectors_\n function facetFunctionSelectors(address _facet)\n external\n view\n returns (bytes4[] memory facetFunctionSelectors_);\n\n /// @notice Get all the facet addresses used by a diamond.\n /// @return facetAddresses_\n function facetAddresses()\n external\n view\n returns (address[] memory facetAddresses_);\n\n /// @notice Gets the facet that supports the given selector.\n /// @dev If facet is not found return address(0).\n /// @param _functionSelector The function selector.\n /// @return facetAddress_ The facet address.\n function facetAddress(bytes4 _functionSelector)\n external\n view\n returns (address facetAddress_);\n}\n"},"src/diamond/DiamondStorage.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\n/******************************************************************************\\\n* Author: Nick Mudge (https://twitter.com/mudgen)\n* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535\n/******************************************************************************/\n\nimport \"../diamond/IDiamondCut.sol\";\n\n// Remember to add the loupe functions from DiamondLoupeFacet to the diamond.\n// The loupe functions are required by the EIP2535 Diamonds standard\n\nerror DiamondFacetAlreadyExists(address facet, bytes4 selector);\nerror DiamondFacetSameFunction(address facet, bytes4 selector);\n\nlibrary DiamondStorage {\n bytes32 constant DIAMOND_STORAGE_POSITION = keccak256(\"diamond.standard.diamond.storage\");\n\n struct FacetAddressAndPosition {\n address facetAddress;\n uint96 functionSelectorPosition; // position in facetFunctionSelectors.functionSelectors array\n }\n\n struct FacetFunctionSelectors {\n bytes4[] functionSelectors;\n uint256 facetAddressPosition; // position of facetAddress in facetAddresses array\n }\n\n struct Layout {\n // maps function selector to the facet address and\n // the position of the selector in the facetFunctionSelectors.selectors array\n mapping(bytes4 => FacetAddressAndPosition) selectorToFacetAndPosition;\n // maps facet addresses to function selectors\n mapping(address => FacetFunctionSelectors) facetFunctionSelectors;\n // facet addresses\n address[] facetAddresses;\n }\n\n function layout() internal pure returns (Layout storage l) {\n bytes32 position = DIAMOND_STORAGE_POSITION;\n assembly {\n l.slot := position\n }\n }\n\n event DiamondCut(IDiamondCut.FacetCut[] _diamondCut, address _init, bytes _calldata);\n\n // Internal function version of diamondCut\n function diamondCut(\n IDiamondCut.FacetCut[] memory _diamondCut,\n address _init,\n bytes memory _calldata\n ) internal {\n for (uint256 facetIndex; facetIndex < _diamondCut.length; facetIndex++) {\n IDiamondCut.FacetCutAction action = _diamondCut[facetIndex].action;\n if (action == IDiamondCut.FacetCutAction.Add) {\n addFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);\n } else if (action == IDiamondCut.FacetCutAction.Replace) {\n replaceFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);\n } else if (action == IDiamondCut.FacetCutAction.Remove) {\n removeFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);\n } else {\n revert(\"LibDiamondCut: Incorrect FacetCutAction\");\n }\n }\n emit DiamondCut(_diamondCut, _init, _calldata);\n initializeDiamondCut(_init, _calldata);\n }\n\n function addFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {\n // require(\n // _functionSelectors.length > 0,\n // \"LibDiamondCut: No selectors in facet to cut\"\n // );\n Layout storage l = layout();\n // require(\n // _facetAddress != address(0),\n // \"LibDiamondCut: Add facet can't be address(0)\"\n // );\n uint96 selectorPosition = uint96(l.facetFunctionSelectors[_facetAddress].functionSelectors.length);\n // add new facet address if it does not exist\n if (selectorPosition == 0) {\n addFacet(l, _facetAddress);\n }\n for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {\n bytes4 selector = _functionSelectors[selectorIndex];\n address oldFacetAddress = l.selectorToFacetAndPosition[selector].facetAddress;\n\n if (oldFacetAddress != address(0)) {\n revert DiamondFacetAlreadyExists(oldFacetAddress, selector);\n }\n\n addFunction(l, selector, selectorPosition, _facetAddress);\n selectorPosition++;\n }\n }\n\n function replaceFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {\n // require(\n // _functionSelectors.length > 0,\n // \"LibDiamondCut: No selectors in facet to cut\"\n // );\n Layout storage l = layout();\n // require(\n // _facetAddress != address(0),\n // \"LibDiamondCut: Add facet can't be address(0)\"\n // );\n uint96 selectorPosition = uint96(l.facetFunctionSelectors[_facetAddress].functionSelectors.length);\n // add new facet address if it does not exist\n if (selectorPosition == 0) {\n addFacet(l, _facetAddress);\n }\n for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {\n bytes4 selector = _functionSelectors[selectorIndex];\n address oldFacetAddress = l.selectorToFacetAndPosition[selector].facetAddress;\n\n if (oldFacetAddress == _facetAddress) {\n revert DiamondFacetSameFunction(oldFacetAddress, selector);\n }\n\n removeFunction(l, oldFacetAddress, selector);\n addFunction(l, selector, selectorPosition, _facetAddress);\n selectorPosition++;\n }\n }\n\n function removeFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {\n // require(\n // _functionSelectors.length > 0,\n // \"LibDiamondCut: No selectors in facet to cut\"\n // );\n Layout storage l = layout();\n // if function does not exist then do nothing and return\n // require(\n // _facetAddress == address(0),\n // \"LibDiamondCut: Remove facet address must be address(0)\"\n // );\n for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {\n bytes4 selector = _functionSelectors[selectorIndex];\n address oldFacetAddress = l.selectorToFacetAndPosition[selector].facetAddress;\n removeFunction(l, oldFacetAddress, selector);\n }\n }\n\n function addFacet(Layout storage l, address _facetAddress) internal {\n enforceHasContractCode(_facetAddress, \"LibDiamondCut: New facet has no code\");\n l.facetFunctionSelectors[_facetAddress].facetAddressPosition = l.facetAddresses.length;\n l.facetAddresses.push(_facetAddress);\n }\n\n function addFunction(\n Layout storage l,\n bytes4 _selector,\n uint96 _selectorPosition,\n address _facetAddress\n ) internal {\n l.selectorToFacetAndPosition[_selector].functionSelectorPosition = _selectorPosition;\n l.facetFunctionSelectors[_facetAddress].functionSelectors.push(_selector);\n l.selectorToFacetAndPosition[_selector].facetAddress = _facetAddress;\n }\n\n function removeFunction(\n Layout storage l,\n address _facetAddress,\n bytes4 _selector\n ) internal {\n // require(\n // _facetAddress != address(0),\n // \"LibDiamondCut: Can't remove function that doesn't exist\"\n // );\n // an immutable function is a function defined directly in a diamond\n // require(\n // _facetAddress != address(this),\n // \"LibDiamondCut: Can't remove immutable function\"\n // );\n // replace selector with last selector, then delete last selector\n uint256 selectorPosition = l.selectorToFacetAndPosition[_selector].functionSelectorPosition;\n uint256 lastSelectorPosition = l.facetFunctionSelectors[_facetAddress].functionSelectors.length - 1;\n // if not the same then replace _selector with lastSelector\n if (selectorPosition != lastSelectorPosition) {\n bytes4 lastSelector = l.facetFunctionSelectors[_facetAddress].functionSelectors[lastSelectorPosition];\n l.facetFunctionSelectors[_facetAddress].functionSelectors[selectorPosition] = lastSelector;\n l.selectorToFacetAndPosition[lastSelector].functionSelectorPosition = uint96(selectorPosition);\n }\n // delete the last selector\n l.facetFunctionSelectors[_facetAddress].functionSelectors.pop();\n delete l.selectorToFacetAndPosition[_selector];\n\n // if no more selectors for facet address then delete the facet address\n if (lastSelectorPosition == 0) {\n // replace facet address with last facet address and delete last facet address\n uint256 lastFacetAddressPosition = l.facetAddresses.length - 1;\n uint256 facetAddressPosition = l.facetFunctionSelectors[_facetAddress].facetAddressPosition;\n if (facetAddressPosition != lastFacetAddressPosition) {\n address lastFacetAddress = l.facetAddresses[lastFacetAddressPosition];\n l.facetAddresses[facetAddressPosition] = lastFacetAddress;\n l.facetFunctionSelectors[lastFacetAddress].facetAddressPosition = facetAddressPosition;\n }\n l.facetAddresses.pop();\n delete l.facetFunctionSelectors[_facetAddress].facetAddressPosition;\n }\n }\n\n function initializeDiamondCut(address _init, bytes memory _calldata) internal {\n if (_init == address(0)) {\n require(_calldata.length == 0, \"LibDiamondCut: _init is address(0) but_calldata is not empty\");\n } else {\n require(_calldata.length > 0, \"LibDiamondCut: _calldata is empty but _init is not address(0)\");\n if (_init != address(this)) {\n enforceHasContractCode(_init, \"LibDiamondCut: _init address has no code\");\n }\n (bool success, bytes memory error) = _init.delegatecall(_calldata);\n if (!success) {\n if (error.length > 0) {\n // bubble up the error\n revert(string(error));\n } else {\n revert(\"LibDiamondCut: _init function reverted\");\n }\n }\n }\n }\n\n function enforceHasContractCode(address _contract, string memory _errorMessage) internal view {\n uint256 contractSize;\n assembly {\n contractSize := extcodesize(_contract)\n }\n require(contractSize > 0, _errorMessage);\n }\n}\n"},"@openzeppelin/contracts/utils/Multicall.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (utils/Multicall.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./Address.sol\";\n\n/**\n * @dev Provides a function to batch together multiple calls in a single external call.\n *\n * _Available since v4.1._\n */\nabstract contract Multicall {\n /**\n * @dev Receives and executes a batch of function calls on this contract.\n */\n function multicall(bytes[] calldata data) external virtual returns (bytes[] memory results) {\n results = new bytes[](data.length);\n for (uint256 i = 0; i < data.length; i++) {\n results[i] = Address.functionDelegateCall(address(this), data[i]);\n }\n return results;\n }\n}\n"},"src/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\n/**\n * @title ERC165 interface registration interface\n * @dev see https://eips.ethereum.org/EIPS/eip-165\n */\ninterface IERC165 {\n /**\n * @notice query whether contract has registered support for given interface\n * @param interfaceId interface id\n * @return bool whether interface is supported\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"src/introspection/ERC165Storage.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nlibrary ERC165Storage {\n struct Layout {\n mapping(bytes4 => bool) supportedInterfaces;\n }\n\n bytes32 internal constant STORAGE_SLOT = keccak256(\"openzeppelin.contracts.storage.ERC165\");\n\n function layout() internal pure returns (Layout storage l) {\n bytes32 slot = STORAGE_SLOT;\n assembly {\n l.slot := slot\n }\n }\n\n function isSupportedInterface(Layout storage l, bytes4 interfaceId) internal view returns (bool) {\n return l.supportedInterfaces[interfaceId];\n }\n\n function setSupportedInterface(\n Layout storage l,\n bytes4 interfaceId,\n bool status\n ) internal {\n require(interfaceId != 0xffffffff, \"ERC165: invalid interface id\");\n l.supportedInterfaces[interfaceId] = status;\n }\n}\n"},"src/metatx/ERC2771ContextStorage.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nlibrary ERC2771ContextStorage {\n struct Layout {\n address trustedForwarder;\n }\n\n bytes32 internal constant STORAGE_SLOT = keccak256(\"openzeppelin.contracts.storage.ERC2771Context\");\n\n function layout() internal pure returns (Layout storage l) {\n bytes32 slot = STORAGE_SLOT;\n assembly {\n l.slot := slot\n }\n }\n}\n"},"src/metatx/ERC2771ContextInternal.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/utils/Context.sol\";\n\nimport \"./ERC2771ContextStorage.sol\";\n\nabstract contract ERC2771ContextInternal is Context {\n function _isTrustedForwarder(address operator) internal view returns (bool) {\n return ERC2771ContextStorage.layout().trustedForwarder == operator;\n }\n\n function _msgSender() internal view virtual override returns (address sender) {\n if (_isTrustedForwarder(msg.sender)) {\n // The assembly code is more direct than the Solidity version using `abi.decode`.\n /// @solidity memory-safe-assembly\n assembly {\n sender := shr(96, calldataload(sub(calldatasize(), 20)))\n }\n } else {\n return super._msgSender();\n }\n }\n\n function _msgData() internal view virtual override returns (bytes calldata) {\n if (_isTrustedForwarder(msg.sender)) {\n return msg.data[:msg.data.length - 20];\n } else {\n return super._msgData();\n }\n }\n}\n"},"src/metatx/IERC2771Context.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\ninterface IERC2771Context {\n function isTrustedForwarder(address forwarder) external view returns (bool);\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n}\n"},"@openzeppelin/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCall(target, data, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n require(isContract(target), \"Address: call to non-contract\");\n\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n require(isContract(target), \"Address: static call to non-contract\");\n\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(isContract(target), \"Address: delegate call to non-contract\");\n\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n }\n}\n"},"@openzeppelin/contracts/proxy/utils/Initializable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../../utils/Address.sol\";\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * contract MyToken is ERC20Upgradeable {\n * function initialize() initializer public {\n * __ERC20_init(\"MyToken\", \"MTK\");\n * }\n * }\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n * function initializeV2() reinitializer(2) public {\n * __ERC20Permit_init(\"MyToken\");\n * }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n * _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n /**\n * @dev Indicates that the contract has been initialized.\n * @custom:oz-retyped-from bool\n */\n uint8 private _initialized;\n\n /**\n * @dev Indicates that the contract is in the process of being initialized.\n */\n bool private _initializing;\n\n /**\n * @dev Triggered when the contract has been initialized or reinitialized.\n */\n event Initialized(uint8 version);\n\n /**\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n * `onlyInitializing` functions can be used to initialize parent contracts. Equivalent to `reinitializer(1)`.\n */\n modifier initializer() {\n bool isTopLevelCall = !_initializing;\n require(\n (isTopLevelCall && _initialized < 1) || (!Address.isContract(address(this)) && _initialized == 1),\n \"Initializable: contract is already initialized\"\n );\n _initialized = 1;\n if (isTopLevelCall) {\n _initializing = true;\n }\n _;\n if (isTopLevelCall) {\n _initializing = false;\n emit Initialized(1);\n }\n }\n\n /**\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n * used to initialize parent contracts.\n *\n * `initializer` is equivalent to `reinitializer(1)`, so a reinitializer may be used after the original\n * initialization step. This is essential to configure modules that are added through upgrades and that require\n * initialization.\n *\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n * a contract, executing them in the right order is up to the developer or operator.\n */\n modifier reinitializer(uint8 version) {\n require(!_initializing && _initialized < version, \"Initializable: contract is already initialized\");\n _initialized = version;\n _initializing = true;\n _;\n _initializing = false;\n emit Initialized(version);\n }\n\n /**\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\n */\n modifier onlyInitializing() {\n require(_initializing, \"Initializable: contract is not initializing\");\n _;\n }\n\n /**\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n * through proxies.\n */\n function _disableInitializers() internal virtual {\n require(!_initializing, \"Initializable: contract is initializing\");\n if (_initialized < type(uint8).max) {\n _initialized = type(uint8).max;\n emit Initialized(type(uint8).max);\n }\n }\n}\n"},"src/factory/FlairFactoryNewable.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"../common/WithdrawExtension.sol\";\nimport \"./Clones.sol\";\nimport \"./MinimalProxy.sol\";\n\ncontract FlairFactoryNewable is Initializable, Ownable, WithdrawExtension {\n event ProxyCreated(address indexed deployer, address indexed proxyAddress);\n\n constructor() {\n initialize();\n }\n\n function initialize() public initializer {\n __WithdrawExtension_init(_msgSender(), WithdrawMode.OWNER);\n }\n\n function cloneDeterministicSimple(\n address implementation,\n bytes32 salt,\n bytes calldata data\n ) external payable returns (address deployedProxy) {\n MinimalProxy p = new MinimalProxy{salt: salt}(implementation);\n deployedProxy = address(p);\n\n if (data.length > 0) {\n (bool success, bytes memory returndata) = deployedProxy.call(data);\n\n if (!success) {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(\"FAILED_TO_CLONE\");\n }\n }\n }\n\n emit ProxyCreated(msg.sender, address(deployedProxy));\n }\n}\n"},"src/common/WithdrawExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nenum WithdrawMode {\n OWNER,\n RECIPIENT,\n ANYONE,\n NOBODY\n}\n\ninterface IWithdrawExtension {\n function setWithdrawRecipient(address _withdrawRecipient) external;\n\n function lockWithdrawRecipient() external;\n\n function revokeWithdrawPower() external;\n\n function setWithdrawMode(WithdrawMode _withdrawMode) external;\n\n function lockWithdrawMode() external;\n\n function withdraw(\n address[] calldata claimTokens,\n uint256[] calldata amounts\n ) external;\n}\n\nabstract contract WithdrawExtension is\n IWithdrawExtension,\n Initializable,\n Ownable,\n ERC165Storage\n{\n using Address for address;\n using Address for address payable;\n\n event WithdrawPowerRevoked();\n event Withdrawn(address[] claimTokens, uint256[] amounts);\n\n address public withdrawRecipient;\n bool public withdrawRecipientLocked;\n\n bool public withdrawPowerRevoked;\n\n WithdrawMode public withdrawMode;\n bool public withdrawModeLocked;\n\n /* INTERNAL */\n\n function __WithdrawExtension_init(\n address _withdrawRecipient,\n WithdrawMode _withdrawMode\n ) internal onlyInitializing {\n __WithdrawExtension_init_unchained(_withdrawRecipient, _withdrawMode);\n }\n\n function __WithdrawExtension_init_unchained(\n address _withdrawRecipient,\n WithdrawMode _withdrawMode\n ) internal onlyInitializing {\n _registerInterface(type(IWithdrawExtension).interfaceId);\n\n withdrawRecipient = _withdrawRecipient;\n withdrawMode = _withdrawMode;\n }\n\n /* ADMIN */\n\n function setWithdrawRecipient(address _withdrawRecipient)\n external\n onlyOwner\n {\n require(!withdrawRecipientLocked, \"LOCKED\");\n withdrawRecipient = _withdrawRecipient;\n }\n\n function lockWithdrawRecipient() external onlyOwner {\n require(!withdrawRecipientLocked, \"LOCKED\");\n withdrawRecipientLocked = true;\n }\n\n function setWithdrawMode(WithdrawMode _withdrawMode) external onlyOwner {\n require(!withdrawModeLocked, \"LOCKED\");\n withdrawMode = _withdrawMode;\n }\n\n function lockWithdrawMode() external onlyOwner {\n require(!withdrawModeLocked, \"OCKED\");\n withdrawModeLocked = true;\n }\n\n /* PUBLIC */\n\n function withdraw(\n address[] calldata claimTokens,\n uint256[] calldata amounts\n ) external {\n /**\n * We are using msg.sender for smaller attack surface when evaluating\n * the sender of the function call. If in future we want to handle \"withdraw\"\n * functionality via meta transactions, we should consider using `_msgSender`\n */\n _assertWithdrawAccess(msg.sender);\n\n require(withdrawRecipient != address(0), \"WITHDRAW/NO_RECIPIENT\");\n require(!withdrawPowerRevoked, \"WITHDRAW/EMERGENCY_POWER_REVOKED\");\n\n for (uint256 i = 0; i < claimTokens.length; i++) {\n if (claimTokens[i] == address(0)) {\n payable(withdrawRecipient).sendValue(amounts[i]);\n } else {\n IERC20(claimTokens[i]).transfer(withdrawRecipient, amounts[i]);\n }\n }\n\n emit Withdrawn(claimTokens, amounts);\n }\n\n function revokeWithdrawPower() external onlyOwner {\n withdrawPowerRevoked = true;\n emit WithdrawPowerRevoked();\n }\n\n /* INTERNAL */\n\n function _assertWithdrawAccess(address account) internal view {\n if (withdrawMode == WithdrawMode.NOBODY) {\n revert(\"WITHDRAW/LOCKED\");\n } else if (withdrawMode == WithdrawMode.ANYONE) {\n return;\n } else if (withdrawMode == WithdrawMode.RECIPIENT) {\n require(withdrawRecipient == account, \"WITHDRAW/ONLY_RECIPIENT\");\n } else if (withdrawMode == WithdrawMode.OWNER) {\n require(owner() == account, \"WITHDRAW/ONLY_OWNER\");\n }\n }\n}\n"},"src/factory/Clones.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nlibrary Clones {\n /**\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n *\n * This function uses the create opcode, which should never revert.\n */\n function clone(address implementation) internal returns (address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n let ptr := mload(0x40)\n mstore(\n ptr,\n 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000\n )\n mstore(add(ptr, 0x14), shl(0x60, implementation))\n mstore(\n add(ptr, 0x28),\n 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000\n )\n instance := create(0, ptr, 0x37)\n }\n require(instance != address(0), \"ERC1167: create failed\");\n }\n\n /**\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n *\n * This function uses the create2 opcode and a `salt` to deterministically deploy\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\n * the clones cannot be deployed twice at the same address.\n */\n function cloneDeterministic(address implementation, bytes32 salt)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let ptr := mload(0x40)\n mstore(\n ptr,\n 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000\n )\n mstore(add(ptr, 0x14), shl(0x60, implementation))\n mstore(\n add(ptr, 0x28),\n 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000\n )\n instance := create2(0, ptr, 0x37, salt)\n }\n require(instance != address(0), \"ERC1167: create2 failed\");\n }\n\n /**\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\n */\n function predictDeterministicAddress(\n address implementation,\n bytes32 salt,\n address deployer\n ) internal pure returns (address predicted) {\n /// @solidity memory-safe-assembly\n assembly {\n let ptr := mload(0x40)\n mstore(\n ptr,\n 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000\n )\n mstore(add(ptr, 0x14), shl(0x60, implementation))\n mstore(\n add(ptr, 0x28),\n 0x5af43d82803e903d91602b57fd5bf3ff00000000000000000000000000000000\n )\n mstore(add(ptr, 0x38), shl(0x60, deployer))\n mstore(add(ptr, 0x4c), salt)\n mstore(add(ptr, 0x6c), keccak256(ptr, 0x37))\n predicted := keccak256(add(ptr, 0x37), 0x55)\n }\n }\n\n /**\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\n */\n function predictDeterministicAddress(address implementation, bytes32 salt)\n internal\n view\n returns (address predicted)\n {\n return predictDeterministicAddress(implementation, salt, address(this));\n }\n}\n"},"src/factory/MinimalProxy.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/Proxy.sol\";\nimport \"@openzeppelin/contracts/utils/StorageSlot.sol\";\n\ncontract MinimalProxy is Proxy {\n /**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n * validated in the constructor.\n */\n bytes32 internal constant _IMPLEMENTATION_SLOT =\n 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n constructor(address _impl) payable {\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = _impl;\n }\n\n function _implementation() internal view override returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n}\n"},"@openzeppelin/contracts/access/Ownable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n constructor() {\n _transferOwnership(_msgSender());\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions anymore. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby removing any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n"},"@openzeppelin/contracts/utils/Counters.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title Counters\n * @author Matt Condon (@shrugs)\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\n *\n * Include with `using Counters for Counters.Counter;`\n */\nlibrary Counters {\n struct Counter {\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\n // this feature: see https://github.com/ethereum/solidity/issues/4637\n uint256 _value; // default: 0\n }\n\n function current(Counter storage counter) internal view returns (uint256) {\n return counter._value;\n }\n\n function increment(Counter storage counter) internal {\n unchecked {\n counter._value += 1;\n }\n }\n\n function decrement(Counter storage counter) internal {\n uint256 value = counter._value;\n require(value > 0, \"Counter: decrement overflow\");\n unchecked {\n counter._value = value - 1;\n }\n }\n\n function reset(Counter storage counter) internal {\n counter._value = 0;\n }\n}\n"},"@openzeppelin/contracts/security/ReentrancyGuard.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Contract module that helps prevent reentrant calls to a function.\n *\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n * available, which can be applied to functions to make sure there are no nested\n * (reentrant) calls to them.\n *\n * Note that because there is a single `nonReentrant` guard, functions marked as\n * `nonReentrant` may not call one another. This can be worked around by making\n * those functions `private`, and then adding `external` `nonReentrant` entry\n * points to them.\n *\n * TIP: If you would like to learn more about reentrancy and alternative ways\n * to protect against it, check out our blog post\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n */\nabstract contract ReentrancyGuard {\n // Booleans are more expensive than uint256 or any type that takes up a full\n // word because each write operation emits an extra SLOAD to first read the\n // slot's contents, replace the bits taken up by the boolean, and then write\n // back. This is the compiler's defense against contract upgrades and\n // pointer aliasing, and it cannot be disabled.\n\n // The values being non-zero value makes deployment a bit more expensive,\n // but in exchange the refund on every call to nonReentrant will be lower in\n // amount. Since refunds are capped to a percentage of the total\n // transaction's gas, it is best to keep them low in cases like this one, to\n // increase the likelihood of the full refund coming into effect.\n uint256 private constant _NOT_ENTERED = 1;\n uint256 private constant _ENTERED = 2;\n\n uint256 private _status;\n\n constructor() {\n _status = _NOT_ENTERED;\n }\n\n /**\n * @dev Prevents a contract from calling itself, directly or indirectly.\n * Calling a `nonReentrant` function from another `nonReentrant`\n * function is not supported. It is possible to prevent this from happening\n * by making the `nonReentrant` function external, and making it call a\n * `private` function that does the actual work.\n */\n modifier nonReentrant() {\n // On the first call to nonReentrant, _notEntered will be true\n require(_status != _ENTERED, \"ReentrancyGuard: reentrant call\");\n\n // Any calls to nonReentrant after this point will fail\n _status = _ENTERED;\n\n _;\n\n // By storing the original value once again, a refund is triggered (see\n // https://eips.ethereum.org/EIPS/eip-2200)\n _status = _NOT_ENTERED;\n }\n}\n"},"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165Storage.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./ERC165.sol\";\n\n/**\n * @dev Storage based implementation of the {IERC165} interface.\n *\n * Contracts may inherit from this and call {_registerInterface} to declare\n * their support of an interface.\n */\nabstract contract ERC165Storage is ERC165 {\n /**\n * @dev Mapping of interface ids to whether or not it's supported.\n */\n mapping(bytes4 => bool) private _supportedInterfaces;\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return super.supportsInterface(interfaceId) || _supportedInterfaces[interfaceId];\n }\n\n /**\n * @dev Registers the contract as an implementer of the interface defined by\n * `interfaceId`. Support of the actual ERC165 interface is automatic and\n * registering its interface id is not required.\n *\n * See {IERC165-supportsInterface}.\n *\n * Requirements:\n *\n * - `interfaceId` cannot be the ERC165 invalid interface (`0xffffffff`).\n */\n function _registerInterface(bytes4 interfaceId) internal virtual {\n require(interfaceId != 0xffffffff, \"ERC165: invalid interface id\");\n _supportedInterfaces[interfaceId] = true;\n }\n}\n"},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC721 compliant contract.\n */\ninterface IERC721 is IERC165 {\n /**\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\n */\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\n\n /**\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\n */\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\n\n /**\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\n */\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n /**\n * @dev Returns the number of tokens in ``owner``'s account.\n */\n function balanceOf(address owner) external view returns (uint256 balance);\n\n /**\n * @dev Returns the owner of the `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function ownerOf(uint256 tokenId) external view returns (address owner);\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId,\n bytes calldata data\n ) external;\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId\n ) external;\n\n /**\n * @dev Transfers `tokenId` token from `from` to `to`.\n *\n * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address from,\n address to,\n uint256 tokenId\n ) external;\n\n /**\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\n * The approval is cleared when the token is transferred.\n *\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n *\n * Requirements:\n *\n * - The caller must own the token or be an approved operator.\n * - `tokenId` must exist.\n *\n * Emits an {Approval} event.\n */\n function approve(address to, uint256 tokenId) external;\n\n /**\n * @dev Approve or remove `operator` as an operator for the caller.\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n *\n * Requirements:\n *\n * - The `operator` cannot be the caller.\n *\n * Emits an {ApprovalForAll} event.\n */\n function setApprovalForAll(address operator, bool _approved) external;\n\n /**\n * @dev Returns the account approved for `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function getApproved(uint256 tokenId) external view returns (address operator);\n\n /**\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n *\n * See {setApprovalForAll}\n */\n function isApprovedForAll(address owner, address operator) external view returns (bool);\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address from,\n address to,\n uint256 amount\n ) external returns (bool);\n}\n"},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n *\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\n */\nabstract contract ERC165 is IERC165 {\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IERC165).interfaceId;\n }\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"@openzeppelin/contracts/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */\nabstract contract Proxy {\n /**\n * @dev Delegates the current call to `implementation`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _delegate(address implementation) internal virtual {\n assembly {\n // Copy msg.data. We take full control of memory in this inline assembly\n // block because it will not return to Solidity code. We overwrite the\n // Solidity scratch pad at memory position 0.\n calldatacopy(0, 0, calldatasize())\n\n // Call the implementation.\n // out and outsize are 0 because we don't know the size yet.\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n // Copy the returned data.\n returndatacopy(0, 0, returndatasize())\n\n switch result\n // delegatecall returns 0 on error.\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n }\n }\n\n /**\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\n * and {_fallback} should delegate.\n */\n function _implementation() internal view virtual returns (address);\n\n /**\n * @dev Delegates the current call to the address returned by `_implementation()`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _fallback() internal virtual {\n _beforeFallback();\n _delegate(_implementation());\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n * function in the contract matches the call data.\n */\n fallback() external payable virtual {\n _fallback();\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n * is empty.\n */\n receive() external payable virtual {\n _fallback();\n }\n\n /**\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n * call, or as part of the Solidity `fallback` or `receive` functions.\n *\n * If overridden should call `super._beforeFallback()`.\n */\n function _beforeFallback() internal virtual {}\n}\n"},"@openzeppelin/contracts/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n *\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\n */\nlibrary StorageSlot {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n}\n"},"src/token/ERC1155/base/ERC1155BaseInternal.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Context.sol\";\n\nimport \"../IERC1155Events.sol\";\nimport \"../IERC1155Receiver.sol\";\nimport \"./ERC1155BaseStorage.sol\";\n\n/**\n * @title Base ERC1155 internal functions\n * @dev derived from https://github.com/OpenZeppelin/openzeppelin-contracts/ (MIT license)\n */\nabstract contract ERC1155BaseInternal is Context, IERC1155Events {\n using Address for address;\n\n /**\n * @notice query the balance of given token held by given address\n * @param account address to query\n * @param id token to query\n * @return token balance\n */\n function _balanceOf(address account, uint256 id) internal view virtual returns (uint256) {\n require(account != address(0), \"ERC1155: balance query for the zero address\");\n return ERC1155BaseStorage.layout().balances[id][account];\n }\n\n /**\n * @notice mint given quantity of tokens for given address\n * @dev ERC1155Receiver implementation is not checked\n * @param account beneficiary of minting\n * @param id token ID\n * @param amount quantity of tokens to mint\n * @param data data payload\n */\n function _mint(\n address account,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) internal virtual {\n address operator = _msgSender();\n require(account != address(0), \"ERC1155: mint to the zero address\");\n\n _beforeTokenTransfer(operator, address(0), account, _asSingletonArray(id), _asSingletonArray(amount), data);\n\n ERC1155BaseStorage.layout().balances[id][account] += amount;\n\n emit TransferSingle(operator, address(0), account, id, amount);\n }\n\n /**\n * @notice mint given quantity of tokens for given address\n * @param account beneficiary of minting\n * @param id token ID\n * @param amount quantity of tokens to mint\n * @param data data payload\n */\n function _safeMint(\n address account,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) internal virtual {\n _mint(account, id, amount, data);\n\n _doSafeTransferAcceptanceCheck(_msgSender(), address(0), account, id, amount, data);\n }\n\n /**\n * @notice mint batch of tokens for given address\n * @dev ERC1155Receiver implementation is not checked\n * @param account beneficiary of minting\n * @param ids list of token IDs\n * @param amounts list of quantities of tokens to mint\n * @param data data payload\n */\n function _mintBatch(\n address account,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual {\n require(account != address(0), \"ERC1155: mint to the zero address\");\n require(ids.length == amounts.length, \"ERC1155: ids and amounts length mismatch\");\n\n address sender = _msgSender();\n\n _beforeTokenTransfer(sender, address(0), account, ids, amounts, data);\n\n mapping(uint256 => mapping(address => uint256)) storage balances = ERC1155BaseStorage.layout().balances;\n\n for (uint256 i; i < ids.length; ) {\n balances[ids[i]][account] += amounts[i];\n unchecked {\n i++;\n }\n }\n\n emit TransferBatch(sender, address(0), account, ids, amounts);\n }\n\n /**\n * @notice mint batch of tokens for given address\n * @param account beneficiary of minting\n * @param ids list of token IDs\n * @param amounts list of quantities of tokens to mint\n * @param data data payload\n */\n function _safeMintBatch(\n address account,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual {\n _mintBatch(account, ids, amounts, data);\n\n _doSafeBatchTransferAcceptanceCheck(_msgSender(), address(0), account, ids, amounts, data);\n }\n\n /**\n * @notice burn given quantity of tokens held by given address\n * @param account holder of tokens to burn\n * @param id token ID\n * @param amount quantity of tokens to burn\n */\n function _burn(\n address account,\n uint256 id,\n uint256 amount\n ) internal virtual {\n require(account != address(0), \"ERC1155: burn from the zero address\");\n\n address sender = _msgSender();\n\n _beforeTokenTransfer(sender, account, address(0), _asSingletonArray(id), _asSingletonArray(amount), \"\");\n\n mapping(address => uint256) storage balances = ERC1155BaseStorage.layout().balances[id];\n\n unchecked {\n require(balances[account] >= amount, \"ERC1155: burn amount exceeds balance\");\n balances[account] -= amount;\n }\n\n emit TransferSingle(sender, account, address(0), id, amount);\n }\n\n /**\n * @notice burn given batch of tokens held by given address\n * @param account holder of tokens to burn\n * @param ids token IDs\n * @param amounts quantities of tokens to burn\n */\n function _burnBatch(\n address account,\n uint256[] memory ids,\n uint256[] memory amounts\n ) internal virtual {\n require(account != address(0), \"ERC1155: burn from the zero address\");\n require(ids.length == amounts.length, \"ERC1155: ids and amounts length mismatch\");\n\n address sender = _msgSender();\n\n _beforeTokenTransfer(sender, account, address(0), ids, amounts, \"\");\n\n mapping(uint256 => mapping(address => uint256)) storage balances = ERC1155BaseStorage.layout().balances;\n\n unchecked {\n for (uint256 i; i < ids.length; i++) {\n uint256 id = ids[i];\n require(balances[id][account] >= amounts[i], \"ERC1155: burn amount exceeds balance\");\n balances[id][account] -= amounts[i];\n }\n }\n\n emit TransferBatch(sender, account, address(0), ids, amounts);\n }\n\n /**\n * @notice transfer tokens between given addresses\n * @dev ERC1155Receiver implementation is not checked\n * @param operator executor of transfer\n * @param sender sender of tokens\n * @param recipient receiver of tokens\n * @param id token ID\n * @param amount quantity of tokens to transfer\n * @param data data payload\n */\n function _transfer(\n address operator,\n address sender,\n address recipient,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) internal virtual {\n require(recipient != address(0), \"ERC1155: transfer to the zero address\");\n\n _beforeTokenTransfer(operator, sender, recipient, _asSingletonArray(id), _asSingletonArray(amount), data);\n\n mapping(uint256 => mapping(address => uint256)) storage balances = ERC1155BaseStorage.layout().balances;\n\n unchecked {\n uint256 senderBalance = balances[id][sender];\n require(senderBalance >= amount, \"ERC1155: insufficient balances for transfer\");\n balances[id][sender] = senderBalance - amount;\n }\n\n balances[id][recipient] += amount;\n\n emit TransferSingle(operator, sender, recipient, id, amount);\n }\n\n /**\n * @notice transfer tokens between given addresses\n * @param operator executor of transfer\n * @param sender sender of tokens\n * @param recipient receiver of tokens\n * @param id token ID\n * @param amount quantity of tokens to transfer\n * @param data data payload\n */\n function _safeTransfer(\n address operator,\n address sender,\n address recipient,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) internal virtual {\n _transfer(operator, sender, recipient, id, amount, data);\n\n _doSafeTransferAcceptanceCheck(operator, sender, recipient, id, amount, data);\n }\n\n /**\n * @notice transfer batch of tokens between given addresses\n * @dev ERC1155Receiver implementation is not checked\n * @param operator executor of transfer\n * @param sender sender of tokens\n * @param recipient receiver of tokens\n * @param ids token IDs\n * @param amounts quantities of tokens to transfer\n * @param data data payload\n */\n function _transferBatch(\n address operator,\n address sender,\n address recipient,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual {\n require(recipient != address(0), \"ERC1155: transfer to the zero address\");\n require(ids.length == amounts.length, \"ERC1155: ids and amounts length mismatch\");\n\n _beforeTokenTransfer(operator, sender, recipient, ids, amounts, data);\n\n mapping(uint256 => mapping(address => uint256)) storage balances = ERC1155BaseStorage.layout().balances;\n\n for (uint256 i; i < ids.length; ) {\n uint256 token = ids[i];\n uint256 amount = amounts[i];\n\n unchecked {\n uint256 senderBalance = balances[token][sender];\n\n require(senderBalance >= amount, \"ERC1155: insufficient balances for transfer\");\n\n balances[token][sender] = senderBalance - amount;\n\n i++;\n }\n\n // balance increase cannot be unchecked because ERC1155Base neither tracks nor validates a totalSupply\n balances[token][recipient] += amount;\n }\n\n emit TransferBatch(operator, sender, recipient, ids, amounts);\n }\n\n /**\n * @notice transfer batch of tokens between given addresses\n * @param operator executor of transfer\n * @param sender sender of tokens\n * @param recipient receiver of tokens\n * @param ids token IDs\n * @param amounts quantities of tokens to transfer\n * @param data data payload\n */\n function _safeTransferBatch(\n address operator,\n address sender,\n address recipient,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual {\n _transferBatch(operator, sender, recipient, ids, amounts, data);\n\n _doSafeBatchTransferAcceptanceCheck(operator, sender, recipient, ids, amounts, data);\n }\n\n /**\n * @notice wrap given element in array of length 1\n * @param element element to wrap\n * @return singleton array\n */\n function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {\n uint256[] memory array = new uint256[](1);\n array[0] = element;\n return array;\n }\n\n /**\n * @notice revert if applicable transfer recipient is not valid ERC1155Receiver\n * @param operator executor of transfer\n * @param from sender of tokens\n * @param to receiver of tokens\n * @param id token ID\n * @param amount quantity of tokens to transfer\n * @param data data payload\n */\n function _doSafeTransferAcceptanceCheck(\n address operator,\n address from,\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) private {\n if (to.isContract()) {\n try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {\n require(\n response == IERC1155Receiver.onERC1155Received.selector,\n \"ERC1155: ERC1155Receiver rejected tokens\"\n );\n } catch Error(string memory reason) {\n revert(reason);\n } catch {\n revert(\"ERC1155: transfer to non ERC1155Receiver implementer\");\n }\n }\n }\n\n /**\n * @notice revert if applicable transfer recipient is not valid ERC1155Receiver\n * @param operator executor of transfer\n * @param from sender of tokens\n * @param to receiver of tokens\n * @param ids token IDs\n * @param amounts quantities of tokens to transfer\n * @param data data payload\n */\n function _doSafeBatchTransferAcceptanceCheck(\n address operator,\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) private {\n if (to.isContract()) {\n try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (\n bytes4 response\n ) {\n require(\n response == IERC1155Receiver.onERC1155BatchReceived.selector,\n \"ERC1155: ERC1155Receiver rejected tokens\"\n );\n } catch Error(string memory reason) {\n revert(reason);\n } catch {\n revert(\"ERC1155: transfer to non ERC1155Receiver implementer\");\n }\n }\n }\n\n /**\n * @notice ERC1155 hook, called before all transfers including mint and burn\n * @dev function should be overridden and new implementation must call super\n * @dev called for both single and batch transfers\n * @param operator executor of transfer\n * @param from sender of tokens\n * @param to receiver of tokens\n * @param ids token IDs\n * @param amounts quantities of tokens to transfer\n * @param data data payload\n */\n function _beforeTokenTransfer(\n address operator,\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual {}\n}\n"},"src/token/ERC1155/IERC1155Events.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../introspection/IERC165.sol\";\n\n/**\n * @title Partial ERC1155 interface needed by internal functions\n */\ninterface IERC1155Events {\n event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\n\n event TransferBatch(\n address indexed operator,\n address indexed from,\n address indexed to,\n uint256[] ids,\n uint256[] values\n );\n\n event ApprovalForAll(address indexed account, address indexed operator, bool approved);\n}\n"},"src/token/ERC1155/IERC1155Receiver.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../introspection/IERC165.sol\";\n\n/**\n * @title ERC1155 transfer receiver interface\n */\ninterface IERC1155Receiver is IERC165 {\n /**\n * @dev Handles the receipt of a single ERC1155 token type. This function is\n * called at the end of a `safeTransferFrom` after the balance has been updated.\n *\n * NOTE: To accept the transfer, this must return\n * `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n * (i.e. 0xf23a6e61, or its own function selector).\n *\n * @param operator The address which initiated the transfer (i.e. msg.sender)\n * @param from The address which previously owned the token\n * @param id The ID of the token being transferred\n * @param value The amount of tokens being transferred\n * @param data Additional data with no specified format\n * @return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed\n */\n function onERC1155Received(\n address operator,\n address from,\n uint256 id,\n uint256 value,\n bytes calldata data\n ) external returns (bytes4);\n\n /**\n * @dev Handles the receipt of a multiple ERC1155 token types. This function\n * is called at the end of a `safeBatchTransferFrom` after the balances have\n * been updated.\n *\n * NOTE: To accept the transfer(s), this must return\n * `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n * (i.e. 0xbc197c81, or its own function selector).\n *\n * @param operator The address which initiated the batch transfer (i.e. msg.sender)\n * @param from The address which previously owned the token\n * @param ids An array containing ids of each token being transferred (order and length must match values array)\n * @param values An array containing amounts of each token being transferred (order and length must match ids array)\n * @param data Additional data with no specified format\n * @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed\n */\n function onERC1155BatchReceived(\n address operator,\n address from,\n uint256[] calldata ids,\n uint256[] calldata values,\n bytes calldata data\n ) external returns (bytes4);\n}\n"},"src/token/ERC1155/base/ERC1155BaseStorage.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nlibrary ERC1155BaseStorage {\n struct Layout {\n mapping(uint256 => mapping(address => uint256)) balances;\n mapping(address => mapping(address => bool)) operatorApprovals;\n }\n\n bytes32 internal constant STORAGE_SLOT = keccak256(\"openzeppelin.contracts.storage.ERC1155Base\");\n\n function layout() internal pure returns (Layout storage l) {\n bytes32 slot = STORAGE_SLOT;\n assembly {\n l.slot := slot\n }\n }\n}\n"},"src/token/ERC1155/facets/minting/ERC1155MintByRole.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../../../common/Errors.sol\";\nimport \"../../../../access/roles/AccessControlInternal.sol\";\nimport \"../../extensions/mintable/IERC1155Mintable.sol\";\nimport \"../../base/ERC1155BaseInternal.sol\";\nimport \"./IERC1155MintByRole.sol\";\n\n/**\n * @dev Extension of {ERC1155} that allows senders with MINTER_ROLE to mint new tokens.\n */\ncontract ERC1155MintByRole is IERC1155MintByRole, AccessControlInternal {\n bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n\n /**\n * @inheritdoc IERC1155MintByRole\n */\n function mintByRole(\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) public virtual onlyRole(MINTER_ROLE) {\n IERC1155Mintable(address(this)).mintByFacet(to, id, amount, data);\n }\n}\n"},"src/common/Errors.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\n/**\n * The caller must be the current contract itself.\n */\nerror SenderIsNotSelf();\n"},"src/access/roles/AccessControlInternal.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/utils/Context.sol\";\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\n\nimport \"./AccessControlStorage.sol\";\nimport \"./IAccessControlEvents.sol\";\n\nabstract contract AccessControlInternal is Context, IAccessControlEvents {\n using AccessControlStorage for AccessControlStorage.Layout;\n\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\n\n /**\n * @dev Modifier that checks that an account has a specific role. Reverts\n * with a standardized message including the required role.\n *\n * The format of the revert reason is given by the following regular expression:\n *\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\n *\n * _Available since v4.1._\n */\n modifier onlyRole(bytes32 role) {\n _checkRole(role);\n _;\n }\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function _hasRole(bytes32 role, address account)\n internal\n view\n virtual\n returns (bool)\n {\n return AccessControlStorage.layout().roles[role].members[account];\n }\n\n /**\n * @dev Revert with a standard message if `_msgSender()` is missing `role`.\n * Overriding this function changes the behavior of the {onlyRole} modifier.\n *\n * Format of the revert message is described in {_checkRole}.\n *\n * _Available since v4.6._\n */\n function _checkRole(bytes32 role) internal view virtual {\n _checkRole(role, _msgSender());\n }\n\n /**\n * @dev Revert with a standard message if `account` is missing `role`.\n *\n * The format of the revert reason is given by the following regular expression:\n *\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\n */\n function _checkRole(bytes32 role, address account) internal view virtual {\n if (!_hasRole(role, account)) {\n revert(\n string(\n abi.encodePacked(\n \"AccessControl: account \",\n Strings.toHexString(account),\n \" is missing role \",\n Strings.toHexString(uint256(role), 32)\n )\n )\n );\n }\n }\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {_setRoleAdmin}.\n */\n function _getRoleAdmin(bytes32 role)\n internal\n view\n virtual\n returns (bytes32)\n {\n return AccessControlStorage.layout().roles[role].adminRole;\n }\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been revoked `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `account`.\n *\n * May emit a {RoleRevoked} event.\n */\n function _renounceRole(bytes32 role, address account) internal virtual {\n require(\n account == _msgSender(),\n \"AccessControl: can only renounce roles for self\"\n );\n\n _revokeRole(role, account);\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event. Note that unlike {grantRole}, this function doesn't perform any\n * checks on the calling account.\n *\n * May emit a {RoleGranted} event.\n *\n * [WARNING]\n * ====\n * This function should only be called from the constructor when setting\n * up the initial roles for the system.\n *\n * Using this function in any other way is effectively circumventing the admin\n * system imposed by {AccessControl}.\n * ====\n *\n * NOTE: This function is deprecated in favor of {_grantRole}.\n */\n function _setupRole(bytes32 role, address account) internal virtual {\n _grantRole(role, account);\n }\n\n /**\n * @dev Sets `adminRole` as ``role``'s admin role.\n *\n * Emits a {RoleAdminChanged} event.\n */\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\n bytes32 previousAdminRole = _getRoleAdmin(role);\n AccessControlStorage.layout().roles[role].adminRole = adminRole;\n emit RoleAdminChanged(role, previousAdminRole, adminRole);\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * Internal function without access restriction.\n *\n * May emit a {RoleGranted} event.\n */\n function _grantRole(bytes32 role, address account) internal virtual {\n if (!_hasRole(role, account)) {\n AccessControlStorage.layout().roles[role].members[account] = true;\n emit RoleGranted(role, account, _msgSender());\n }\n }\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * Internal function without access restriction.\n *\n * May emit a {RoleRevoked} event.\n */\n function _revokeRole(bytes32 role, address account) internal virtual {\n if (_hasRole(role, account)) {\n AccessControlStorage.layout().roles[role].members[account] = false;\n emit RoleRevoked(role, account, _msgSender());\n }\n }\n}\n"},"src/token/ERC1155/extensions/mintable/IERC1155Mintable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\n/**\n * @dev Extension of {ERC1155} that allows other facets from the diamond to mint tokens.\n */\ninterface IERC1155Mintable {\n /**\n * @dev Creates `amount` new tokens for `to`, of token type `id`.\n *\n * See {ERC1155-_mint}.\n *\n * Requirements:\n *\n * - the caller must be diamond itself (other facets).\n */\n function mintByFacet(\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) external;\n}\n"},"src/token/ERC1155/facets/minting/IERC1155MintByRole.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\n/**\n * @dev Extension of {ERC1155} that allows a specific role to mint tokens.\n */\ninterface IERC1155MintByRole {\n /**\n * @dev Creates `amount` new tokens for `to`, of token type `id`.\n *\n * See {ERC1155-_mint}.\n *\n * Requirements:\n *\n * - the caller must have MINTER_ROLE.\n */\n function mintByRole(\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) external;\n}\n"},"src/access/roles/AccessControlStorage.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nlibrary AccessControlStorage {\n struct RoleData {\n mapping(address => bool) members;\n bytes32 adminRole;\n }\n\n struct Layout {\n mapping(bytes32 => RoleData) roles;\n }\n\n bytes32 internal constant STORAGE_SLOT = keccak256(\"openzeppelin.contracts.storage.AccessControl\");\n\n function layout() internal pure returns (Layout storage l) {\n bytes32 slot = STORAGE_SLOT;\n assembly {\n l.slot := slot\n }\n }\n}\n"},"src/access/roles/IAccessControlEvents.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\n/**\n * @dev External interface of AccessControl declared to support ERC165 detection.\n */\ninterface IAccessControlEvents {\n /**\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n *\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n * {RoleAdminChanged} not being emitted signaling this.\n *\n * _Available since v3.1._\n */\n event RoleAdminChanged(\n bytes32 indexed role,\n bytes32 indexed previousAdminRole,\n bytes32 indexed newAdminRole\n );\n\n /**\n * @dev Emitted when `account` is granted `role`.\n *\n * `sender` is the account that originated the contract call, an admin role\n * bearer except when using {AccessControl-_setupRole}.\n */\n event RoleGranted(\n bytes32 indexed role,\n address indexed account,\n address indexed sender\n );\n\n /**\n * @dev Emitted when `account` is revoked `role`.\n *\n * `sender` is the account that originated the contract call:\n * - if using `revokeRole`, it is the admin role bearer\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\n */\n event RoleRevoked(\n bytes32 indexed role,\n address indexed account,\n address indexed sender\n );\n}\n"},"@openzeppelin/contracts/utils/Strings.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n bytes16 private constant _HEX_SYMBOLS = \"0123456789abcdef\";\n uint8 private constant _ADDRESS_LENGTH = 20;\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n */\n function toString(uint256 value) internal pure returns (string memory) {\n // Inspired by OraclizeAPI's implementation - MIT licence\n // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\n\n if (value == 0) {\n return \"0\";\n }\n uint256 temp = value;\n uint256 digits;\n while (temp != 0) {\n digits++;\n temp /= 10;\n }\n bytes memory buffer = new bytes(digits);\n while (value != 0) {\n digits -= 1;\n buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\n value /= 10;\n }\n return string(buffer);\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n */\n function toHexString(uint256 value) internal pure returns (string memory) {\n if (value == 0) {\n return \"0x00\";\n }\n uint256 temp = value;\n uint256 length = 0;\n while (temp != 0) {\n length++;\n temp >>= 8;\n }\n return toHexString(value, length);\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n */\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n bytes memory buffer = new bytes(2 * length + 2);\n buffer[0] = \"0\";\n buffer[1] = \"x\";\n for (uint256 i = 2 * length + 1; i > 1; --i) {\n buffer[i] = _HEX_SYMBOLS[value & 0xf];\n value >>= 4;\n }\n require(value == 0, \"Strings: hex length insufficient\");\n return string(buffer);\n }\n\n /**\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\n */\n function toHexString(address addr) internal pure returns (string memory) {\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\n }\n}\n"},"src/token/ERC1155/facets/minting/ERC1155MintByRoleERC2771.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../../../metatx/ERC2771ContextInternal.sol\";\nimport \"./ERC1155MintByRole.sol\";\n\n/**\n * @dev Extension of {ERC1155} to mint by MINTER_ROLE with meta-transactions supported via ERC2771.\n */\ncontract ERC1155MintByRoleERC2771 is ERC1155MintByRole, ERC2771ContextInternal {\n function _msgSender() internal view virtual override(Context, ERC2771ContextInternal) returns (address) {\n return ERC2771ContextInternal._msgSender();\n }\n\n function _msgData() internal view virtual override(Context, ERC2771ContextInternal) returns (bytes calldata) {\n return ERC2771ContextInternal._msgData();\n }\n}\n"},"src/token/ERC1155/facets/sales/ERC1155TieredSalesERC2771.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../../../metatx/ERC2771ContextInternal.sol\";\nimport \"./ERC1155TieredSales.sol\";\n\n/**\n * @dev Tiered Sales facet for ERC1155 with meta-transactions support via ERC2771\n */\ncontract ERC1155TieredSalesERC2771 is ERC1155TieredSales, ERC2771ContextInternal {\n function _msgSender() internal view virtual override(Context, ERC2771ContextInternal) returns (address) {\n return ERC2771ContextInternal._msgSender();\n }\n\n function _msgData() internal view virtual override(Context, ERC2771ContextInternal) returns (bytes calldata) {\n return ERC2771ContextInternal._msgData();\n }\n}\n"},"src/token/ERC1155/facets/sales/ERC1155TieredSales.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\n\nimport \"../../../../introspection/ERC165Storage.sol\";\nimport \"../../../../finance/sales/TieredSales.sol\";\nimport \"../../extensions/mintable/IERC1155Mintable.sol\";\nimport \"../../extensions/supply/ERC1155SupplyStorage.sol\";\nimport \"../../extensions/supply/IERC1155Supply.sol\";\nimport \"./ERC1155TieredSalesStorage.sol\";\nimport \"./IERC1155TieredSales.sol\";\n\n/**\n * @title ERC1155 - Tiered Sales\n * @notice Sales mechanism for ERC1155 NFTs with multiple tiered pricing, allowlist and allocation plans.\n *\n * @custom:type eip-2535-facet\n * @custom:category NFTs\n * @custom:required-dependencies eip165:0xb164884b\n * @custom:provides-interfaces 0x79f33254 0x5ae18a74\n */\ncontract ERC1155TieredSales is IERC1155TieredSales, ReentrancyGuard, TieredSales {\n using ERC165Storage for ERC165Storage.Layout;\n using ERC1155TieredSalesStorage for ERC1155TieredSalesStorage.Layout;\n using ERC1155SupplyStorage for ERC1155SupplyStorage.Layout;\n\n function mintByTier(\n uint256 tierId,\n uint256 count,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) external payable nonReentrant {\n super._executeSale(tierId, count, maxAllowance, proof);\n\n IERC1155Mintable(address(this)).mintByFacet(\n _msgSender(),\n ERC1155TieredSalesStorage.layout().tierToTokenId[tierId],\n count,\n \"\"\n );\n }\n\n function tierToTokenId(uint256 tierId) external view returns (uint256) {\n return ERC1155TieredSalesStorage.layout().tierToTokenId[tierId];\n }\n\n function tierToTokenId(uint256[] calldata tierIds) external view returns (uint256[] memory) {\n uint256[] memory tokenIds = new uint256[](tierIds.length);\n\n for (uint256 i = 0; i < tierIds.length; i++) {\n tokenIds[i] = ERC1155TieredSalesStorage.layout().tierToTokenId[tierIds[i]];\n }\n\n return tokenIds;\n }\n\n function _remainingSupplyForTier(uint256 tierId) internal view override returns (uint256) {\n if (!ERC165Storage.layout().supportedInterfaces[type(IERC1155Supply).interfaceId]) {\n return type(uint256).max;\n }\n\n uint256 tokenId = ERC1155TieredSalesStorage.layout().tierToTokenId[tierId];\n\n uint256 remainingSupply = ERC1155SupplyStorage.layout().maxSupply[tokenId] -\n ERC1155SupplyStorage.layout().totalSupply[tokenId];\n\n return remainingSupply;\n }\n}\n"},"src/finance/sales/TieredSales.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./ITieredSales.sol\";\nimport \"./TieredSalesInternal.sol\";\n\n/**\n * @title Abstract sales mechanism for any asset (e.g NFTs) with multiple tiered pricing, allowlist and allocation plans.\n */\nabstract contract TieredSales is ITieredSales, TieredSalesInternal {\n function onTierAllowlist(\n uint256 tierId,\n address minter,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) public view returns (bool) {\n return super._onTierAllowlist(tierId, minter, maxAllowance, proof);\n }\n\n function eligibleForTier(\n uint256 tierId,\n address minter,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) public view returns (uint256 maxMintable) {\n return super._eligibleForTier(tierId, minter, maxAllowance, proof);\n }\n\n function remainingForTier(uint256 tierId) public view returns (uint256) {\n TieredSalesStorage.Layout storage l = TieredSalesStorage.layout();\n\n uint256 availableSupply = _availableSupplyForTier(tierId);\n uint256 availableAllocation = l.tiers[tierId].maxAllocation - l.tierMints[tierId];\n\n if (availableSupply < availableAllocation) {\n return availableSupply;\n } else {\n return availableAllocation;\n }\n }\n\n function walletMintedByTier(uint256 tierId, address wallet) public view returns (uint256) {\n return TieredSalesStorage.layout().walletMinted[tierId][wallet];\n }\n\n function tierMints(uint256 tierId) public view returns (uint256) {\n return TieredSalesStorage.layout().tierMints[tierId];\n }\n\n function totalReserved() external view returns (uint256) {\n return TieredSalesStorage.layout().totalReserved;\n }\n\n function reservedMints() external view returns (uint256) {\n return TieredSalesStorage.layout().reservedMints;\n }\n\n function tiers(uint256 tierId) external view returns (Tier memory) {\n return TieredSalesStorage.layout().tiers[tierId];\n }\n}\n"},"src/token/ERC1155/extensions/supply/ERC1155SupplyStorage.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nlibrary ERC1155SupplyStorage {\n struct Layout {\n mapping(uint256 => uint256) totalSupply;\n mapping(uint256 => uint256) maxSupply;\n }\n\n bytes32 internal constant STORAGE_SLOT = keccak256(\"v2.flair.contracts.storage.ERC1155Supply\");\n\n function layout() internal pure returns (Layout storage l) {\n bytes32 slot = STORAGE_SLOT;\n assembly {\n l.slot := slot\n }\n }\n}\n"},"src/token/ERC1155/extensions/supply/IERC1155Supply.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\n/**\n * @dev Extension of {ERC1155} that tracks supply and defines a max supply cap per token ID.\n */\ninterface IERC1155Supply {\n /**\n * @dev Total amount of tokens in with a given id.\n */\n function totalSupply(uint256 id) external view returns (uint256);\n\n /**\n * @dev Maximum amount of tokens possible to exist for a given id.\n */\n function maxSupply(uint256 id) external view returns (uint256);\n\n /**\n * @dev Indicates whether any token exist with a given id, or not.\n */\n function exists(uint256 id) external view returns (bool);\n}\n"},"src/token/ERC1155/facets/sales/ERC1155TieredSalesStorage.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nlibrary ERC1155TieredSalesStorage {\n struct Layout {\n mapping(uint256 => uint256) tierToTokenId;\n }\n\n bytes32 internal constant STORAGE_SLOT = keccak256(\"v2.flair.contracts.storage.ERC1155TieredSales\");\n\n function layout() internal pure returns (Layout storage l) {\n bytes32 slot = STORAGE_SLOT;\n assembly {\n l.slot := slot\n }\n }\n}\n"},"src/token/ERC1155/facets/sales/IERC1155TieredSales.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\ninterface IERC1155TieredSales {\n function tierToTokenId(uint256 tierId) external view returns (uint256);\n\n function tierToTokenId(uint256[] calldata tierIds) external view returns (uint256[] memory);\n}\n"},"src/finance/sales/ITieredSales.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./ITieredSalesInternal.sol\";\n\ninterface ITieredSales is ITieredSalesInternal {\n function onTierAllowlist(\n uint256 tierId,\n address minter,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) external view returns (bool);\n\n function eligibleForTier(\n uint256 tierId,\n address minter,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) external view returns (uint256);\n\n function mintByTier(\n uint256 tierId,\n uint256 count,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) external payable;\n\n function remainingForTier(uint256 tierId) external view returns (uint256);\n\n function walletMintedByTier(uint256 tierId, address wallet) external view returns (uint256);\n\n function tierMints(uint256 tierId) external view returns (uint256);\n\n function totalReserved() external view returns (uint256);\n\n function reservedMints() external view returns (uint256);\n\n function tiers(uint256 tierId) external view returns (Tier memory);\n}\n"},"src/finance/sales/TieredSalesInternal.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport \"./ITieredSalesInternal.sol\";\nimport \"./TieredSalesStorage.sol\";\n\nimport \"../../access/ownable/OwnableInternal.sol\";\n\n/**\n * @title Sales mechanism for NFTs with multiple tiered pricing, allowlist and allocation plans\n */\nabstract contract TieredSalesInternal is ITieredSalesInternal, Context, OwnableInternal {\n using TieredSalesStorage for TieredSalesStorage.Layout;\n\n function _configureTiering(uint256 tierId, Tier calldata tier) internal {\n TieredSalesStorage.Layout storage l = TieredSalesStorage.layout();\n\n require(tier.maxAllocation >= l.tierMints[tierId], \"LOWER_THAN_MINTED\");\n\n if (l.tiers[tierId].reserved > 0) {\n require(tier.reserved >= l.tierMints[tierId], \"LOW_RESERVE_AMOUNT\");\n }\n\n if (l.tierMints[tierId] > 0) {\n require(tier.maxPerWallet >= l.tiers[tierId].maxPerWallet, \"LOW_MAX_PER_WALLET\");\n }\n\n l.totalReserved -= l.tiers[tierId].reserved;\n l.tiers[tierId] = tier;\n l.totalReserved += tier.reserved;\n }\n\n function _configureTiering(uint256[] calldata _tierIds, Tier[] calldata _tiers) internal {\n for (uint256 i = 0; i < _tierIds.length; i++) {\n _configureTiering(_tierIds[i], _tiers[i]);\n }\n }\n\n function _onTierAllowlist(\n uint256 tierId,\n address minter,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) internal view returns (bool) {\n return\n MerkleProof.verify(\n proof,\n TieredSalesStorage.layout().tiers[tierId].merkleRoot,\n _generateMerkleLeaf(minter, maxAllowance)\n );\n }\n\n function _eligibleForTier(\n uint256 tierId,\n address minter,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) internal view returns (uint256 maxMintable) {\n TieredSalesStorage.Layout storage l = TieredSalesStorage.layout();\n\n require(l.tiers[tierId].maxPerWallet > 0, \"NOT_EXISTS\");\n require(block.timestamp >= l.tiers[tierId].start, \"NOT_STARTED\");\n require(block.timestamp <= l.tiers[tierId].end, \"ALREADY_ENDED\");\n\n maxMintable = l.tiers[tierId].maxPerWallet - l.walletMinted[tierId][minter];\n\n if (l.tiers[tierId].merkleRoot != bytes32(0)) {\n require(l.walletMinted[tierId][minter] < maxAllowance, \"MAXED_ALLOWANCE\");\n require(_onTierAllowlist(tierId, minter, maxAllowance, proof), \"NOT_ALLOWLISTED\");\n\n uint256 remainingAllowance = maxAllowance - l.walletMinted[tierId][minter];\n\n if (maxMintable > remainingAllowance) {\n maxMintable = remainingAllowance;\n }\n }\n }\n\n function _availableSupplyForTier(uint256 tierId) internal view returns (uint256 remaining) {\n TieredSalesStorage.Layout storage l = TieredSalesStorage.layout();\n\n // Substract all the remaining reserved spots from the total remaining supply...\n remaining = _remainingSupplyForTier(tierId) - (l.totalReserved - l.reservedMints);\n\n // If this tier has reserved spots, add remaining spots back to result...\n if (l.tiers[tierId].reserved > 0) {\n remaining += (l.tiers[tierId].reserved - l.tierMints[tierId]);\n }\n }\n\n function _executeSale(\n uint256 tierId,\n uint256 count,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) internal {\n address minter = _msgSender();\n\n uint256 maxMintable = _eligibleForTier(tierId, minter, maxAllowance, proof);\n\n TieredSalesStorage.Layout storage l = TieredSalesStorage.layout();\n\n require(count <= maxMintable, \"EXCEEDS_MAX\");\n require(count <= _availableSupplyForTier(tierId), \"EXCEEDS_ALLOCATION\");\n require(count + l.tierMints[tierId] <= l.tiers[tierId].maxAllocation, \"EXCEEDS_ALLOCATION\");\n\n if (l.tiers[tierId].currency == address(0)) {\n require(l.tiers[tierId].price * count <= msg.value, \"INSUFFICIENT_AMOUNT\");\n } else {\n IERC20(l.tiers[tierId].currency).transferFrom(minter, address(this), l.tiers[tierId].price * count);\n }\n\n l.walletMinted[tierId][minter] += count;\n l.tierMints[tierId] += count;\n\n if (l.tiers[tierId].reserved > 0) {\n l.reservedMints += count;\n }\n }\n\n function _remainingSupplyForTier(\n uint256 /*tierId*/\n ) internal view virtual returns (uint256) {\n return type(uint256).max;\n }\n\n /* PRIVATE */\n\n function _generateMerkleLeaf(address account, uint256 maxAllowance) private pure returns (bytes32) {\n return keccak256(abi.encodePacked(account, maxAllowance));\n }\n}\n"},"src/finance/sales/ITieredSalesInternal.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\ninterface ITieredSalesInternal {\n struct Tier {\n uint256 start;\n uint256 end;\n address currency;\n uint256 price;\n uint256 maxPerWallet;\n bytes32 merkleRoot;\n uint256 reserved;\n uint256 maxAllocation;\n }\n}\n"},"src/finance/sales/TieredSalesStorage.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./ITieredSales.sol\";\n\nlibrary TieredSalesStorage {\n struct Layout {\n uint256 totalReserved;\n uint256 reservedMints;\n mapping(uint256 => ITieredSales.Tier) tiers;\n mapping(uint256 => uint256) tierMints;\n mapping(uint256 => mapping(address => uint256)) walletMinted;\n }\n\n bytes32 internal constant STORAGE_SLOT = keccak256(\"v2.flair.contracts.storage.TieredSales\");\n\n function layout() internal pure returns (Layout storage l) {\n bytes32 slot = STORAGE_SLOT;\n assembly {\n l.slot := slot\n }\n }\n}\n"},"src/access/ownable/OwnableInternal.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/utils/Context.sol\";\n\nimport \"./OwnableStorage.sol\";\nimport \"./IERC173Events.sol\";\n\nabstract contract OwnableInternal is IERC173Events, Context {\n using OwnableStorage for OwnableStorage.Layout;\n\n modifier onlyOwner() {\n require(_msgSender() == _owner(), \"Ownable: sender must be owner\");\n _;\n }\n\n function _owner() internal view virtual returns (address) {\n return OwnableStorage.layout().owner;\n }\n\n function _transferOwnership(address account) internal virtual {\n OwnableStorage.layout().setOwner(account);\n emit OwnershipTransferred(_msgSender(), account);\n }\n}\n"},"@openzeppelin/contracts/utils/cryptography/MerkleProof.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/cryptography/MerkleProof.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev These functions deal with verification of Merkle Tree proofs.\n *\n * The proofs can be generated using the JavaScript library\n * https://github.com/miguelmota/merkletreejs[merkletreejs].\n * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled.\n *\n * See `test/utils/cryptography/MerkleProof.test.js` for some examples.\n *\n * WARNING: You should avoid using leaf values that are 64 bytes long prior to\n * hashing, or use a hash function other than keccak256 for hashing leaves.\n * This is because the concatenation of a sorted pair of internal nodes in\n * the merkle tree could be reinterpreted as a leaf value.\n */\nlibrary MerkleProof {\n /**\n * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree\n * defined by `root`. For this, a `proof` must be provided, containing\n * sibling hashes on the branch from the leaf to the root of the tree. Each\n * pair of leaves and each pair of pre-images are assumed to be sorted.\n */\n function verify(\n bytes32[] memory proof,\n bytes32 root,\n bytes32 leaf\n ) internal pure returns (bool) {\n return processProof(proof, leaf) == root;\n }\n\n /**\n * @dev Calldata version of {verify}\n *\n * _Available since v4.7._\n */\n function verifyCalldata(\n bytes32[] calldata proof,\n bytes32 root,\n bytes32 leaf\n ) internal pure returns (bool) {\n return processProofCalldata(proof, leaf) == root;\n }\n\n /**\n * @dev Returns the rebuilt hash obtained by traversing a Merkle tree up\n * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt\n * hash matches the root of the tree. When processing the proof, the pairs\n * of leafs & pre-images are assumed to be sorted.\n *\n * _Available since v4.4._\n */\n function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) {\n bytes32 computedHash = leaf;\n for (uint256 i = 0; i < proof.length; i++) {\n computedHash = _hashPair(computedHash, proof[i]);\n }\n return computedHash;\n }\n\n /**\n * @dev Calldata version of {processProof}\n *\n * _Available since v4.7._\n */\n function processProofCalldata(bytes32[] calldata proof, bytes32 leaf) internal pure returns (bytes32) {\n bytes32 computedHash = leaf;\n for (uint256 i = 0; i < proof.length; i++) {\n computedHash = _hashPair(computedHash, proof[i]);\n }\n return computedHash;\n }\n\n /**\n * @dev Returns true if the `leaves` can be proved to be a part of a Merkle tree defined by\n * `root`, according to `proof` and `proofFlags` as described in {processMultiProof}.\n *\n * _Available since v4.7._\n */\n function multiProofVerify(\n bytes32[] memory proof,\n bool[] memory proofFlags,\n bytes32 root,\n bytes32[] memory leaves\n ) internal pure returns (bool) {\n return processMultiProof(proof, proofFlags, leaves) == root;\n }\n\n /**\n * @dev Calldata version of {multiProofVerify}\n *\n * _Available since v4.7._\n */\n function multiProofVerifyCalldata(\n bytes32[] calldata proof,\n bool[] calldata proofFlags,\n bytes32 root,\n bytes32[] memory leaves\n ) internal pure returns (bool) {\n return processMultiProofCalldata(proof, proofFlags, leaves) == root;\n }\n\n /**\n * @dev Returns the root of a tree reconstructed from `leaves` and the sibling nodes in `proof`,\n * consuming from one or the other at each step according to the instructions given by\n * `proofFlags`.\n *\n * _Available since v4.7._\n */\n function processMultiProof(\n bytes32[] memory proof,\n bool[] memory proofFlags,\n bytes32[] memory leaves\n ) internal pure returns (bytes32 merkleRoot) {\n // This function rebuild the root hash by traversing the tree up from the leaves. The root is rebuilt by\n // consuming and producing values on a queue. The queue starts with the `leaves` array, then goes onto the\n // `hashes` array. At the end of the process, the last hash in the `hashes` array should contain the root of\n // the merkle tree.\n uint256 leavesLen = leaves.length;\n uint256 totalHashes = proofFlags.length;\n\n // Check proof validity.\n require(leavesLen + proof.length - 1 == totalHashes, \"MerkleProof: invalid multiproof\");\n\n // The xxxPos values are \"pointers\" to the next value to consume in each array. All accesses are done using\n // `xxx[xxxPos++]`, which return the current value and increment the pointer, thus mimicking a queue's \"pop\".\n bytes32[] memory hashes = new bytes32[](totalHashes);\n uint256 leafPos = 0;\n uint256 hashPos = 0;\n uint256 proofPos = 0;\n // At each step, we compute the next hash using two values:\n // - a value from the \"main queue\". If not all leaves have been consumed, we get the next leaf, otherwise we\n // get the next hash.\n // - depending on the flag, either another value for the \"main queue\" (merging branches) or an element from the\n // `proof` array.\n for (uint256 i = 0; i < totalHashes; i++) {\n bytes32 a = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++];\n bytes32 b = proofFlags[i] ? leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++] : proof[proofPos++];\n hashes[i] = _hashPair(a, b);\n }\n\n if (totalHashes > 0) {\n return hashes[totalHashes - 1];\n } else if (leavesLen > 0) {\n return leaves[0];\n } else {\n return proof[0];\n }\n }\n\n /**\n * @dev Calldata version of {processMultiProof}\n *\n * _Available since v4.7._\n */\n function processMultiProofCalldata(\n bytes32[] calldata proof,\n bool[] calldata proofFlags,\n bytes32[] memory leaves\n ) internal pure returns (bytes32 merkleRoot) {\n // This function rebuild the root hash by traversing the tree up from the leaves. The root is rebuilt by\n // consuming and producing values on a queue. The queue starts with the `leaves` array, then goes onto the\n // `hashes` array. At the end of the process, the last hash in the `hashes` array should contain the root of\n // the merkle tree.\n uint256 leavesLen = leaves.length;\n uint256 totalHashes = proofFlags.length;\n\n // Check proof validity.\n require(leavesLen + proof.length - 1 == totalHashes, \"MerkleProof: invalid multiproof\");\n\n // The xxxPos values are \"pointers\" to the next value to consume in each array. All accesses are done using\n // `xxx[xxxPos++]`, which return the current value and increment the pointer, thus mimicking a queue's \"pop\".\n bytes32[] memory hashes = new bytes32[](totalHashes);\n uint256 leafPos = 0;\n uint256 hashPos = 0;\n uint256 proofPos = 0;\n // At each step, we compute the next hash using two values:\n // - a value from the \"main queue\". If not all leaves have been consumed, we get the next leaf, otherwise we\n // get the next hash.\n // - depending on the flag, either another value for the \"main queue\" (merging branches) or an element from the\n // `proof` array.\n for (uint256 i = 0; i < totalHashes; i++) {\n bytes32 a = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++];\n bytes32 b = proofFlags[i] ? leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++] : proof[proofPos++];\n hashes[i] = _hashPair(a, b);\n }\n\n if (totalHashes > 0) {\n return hashes[totalHashes - 1];\n } else if (leavesLen > 0) {\n return leaves[0];\n } else {\n return proof[0];\n }\n }\n\n function _hashPair(bytes32 a, bytes32 b) private pure returns (bytes32) {\n return a < b ? _efficientHash(a, b) : _efficientHash(b, a);\n }\n\n function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) {\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x00, a)\n mstore(0x20, b)\n value := keccak256(0x00, 0x40)\n }\n }\n}\n"},"src/factory/FlairFactory.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"../common/WithdrawExtension.sol\";\nimport \"./Clones.sol\";\n\ncontract FlairFactory is Initializable, Ownable, WithdrawExtension {\n event ProxyCreated(address indexed deployer, address indexed proxyAddress);\n\n constructor() {\n initialize();\n }\n\n function initialize() public initializer {\n __WithdrawExtension_init(_msgSender(), WithdrawMode.OWNER);\n }\n\n function cloneDeterministicSimple(\n address implementation,\n bytes32 salt,\n bytes calldata data\n ) external payable returns (address deployedProxy) {\n bytes32 _salt = keccak256(abi.encodePacked(msg.sender, salt));\n deployedProxy = Clones.cloneDeterministic(implementation, _salt);\n\n if (data.length > 0) {\n (bool success, bytes memory returndata) = deployedProxy.call(data);\n\n if (!success) {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(\"FAILED_TO_CLONE\");\n }\n }\n }\n\n emit ProxyCreated(msg.sender, deployedProxy);\n }\n\n function predictDeterministicSimple(address implementation, bytes32 salt)\n external\n view\n returns (address deployedProxy)\n {\n bytes32 _salt = keccak256(abi.encodePacked(msg.sender, salt));\n deployedProxy = Clones.predictDeterministicAddress(\n implementation,\n _salt\n );\n }\n}\n"},"src/finance/sales/TieredSalesOwnable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./ITieredSalesAdmin.sol\";\nimport \"./TieredSalesInternal.sol\";\n\nimport \"../../access/ownable/OwnableInternal.sol\";\n\n/**\n * @title Tiered Sales - Admin - Ownable\n * @notice Allow contract owner to manage sale tiers.\n *\n * @custom:type eip-2535-facet\n * @custom:category NFTs\n * @custom:peer-dependencies eip165:0x79f33254\n * @custom:provides-interfaces 0xf8458dcd\n */\ncontract TieredSalesOwnable is ITieredSalesAdmin, OwnableInternal, TieredSalesInternal {\n function configureTiering(uint256 tierId, ITieredSalesInternal.Tier calldata tier) external override onlyOwner {\n super._configureTiering(tierId, tier);\n }\n\n function configureTiering(uint256[] calldata tierIds, ITieredSalesInternal.Tier[] calldata tiers)\n external\n override\n onlyOwner\n {\n super._configureTiering(tierIds, tiers);\n }\n}\n"},"src/finance/sales/ITieredSalesAdmin.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./ITieredSalesInternal.sol\";\n\ninterface ITieredSalesAdmin {\n function configureTiering(uint256, ITieredSalesInternal.Tier calldata)\n external;\n\n function configureTiering(\n uint256[] calldata,\n ITieredSalesInternal.Tier[] calldata\n ) external;\n}\n"},"src/token/ERC1155/facets/supply/ERC1155SupplyOwnable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../extensions/supply/ERC1155SupplyInternal.sol\";\nimport \"../../extensions/supply/ERC1155SupplyStorage.sol\";\nimport \"../../../../access/ownable/OwnableInternal.sol\";\nimport \"./IERC1155SupplyAdmin.sol\";\n\n/**\n * @title ERC1155 - Supply - Admin - Ownable\n * @notice Allows owner of a EIP-1155 contract to change max supply of token IDs.\n *\n * @custom:type eip-2535-facet\n * @custom:category NFTs\n * @custom:peer-dependencies eip165:0xd9b67a26 eip165:0x744f4bd4\n * @custom:provides-interfaces 0x5b2cf486\n */\ncontract ERC1155SupplyOwnable is IERC1155SupplyAdmin, ERC1155SupplyInternal, OwnableInternal {\n using ERC1155SupplyStorage for ERC1155SupplyStorage.Layout;\n\n function setMaxSupply(uint256 tokenId, uint256 newValue) public onlyOwner {\n _setMaxSupply(tokenId, newValue);\n }\n\n function setMaxSupplyBatch(uint256[] calldata tokenIds, uint256[] calldata newValues) public onlyOwner {\n _setMaxSupplyBatch(tokenIds, newValues);\n }\n}\n"},"src/token/ERC1155/extensions/supply/ERC1155SupplyInternal.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../base/ERC1155BaseInternal.sol\";\nimport \"./ERC1155SupplyStorage.sol\";\n\n/**\n * @dev Extension of ERC1155 that adds tracking of total supply per id.\n *\n * Useful for scenarios where Fungible and Non-fungible tokens have to be\n * clearly identified. Note: While a totalSupply of 1 might mean the\n * corresponding is an NFT, there is no guarantees that no other token with the\n * same id are not going to be minted.\n */\nabstract contract ERC1155SupplyInternal is ERC1155BaseInternal {\n using ERC1155SupplyStorage for ERC1155SupplyStorage.Layout;\n\n /**\n * @dev Total amount of tokens in with a given id.\n */\n function _totalSupply(uint256 id) internal view virtual returns (uint256) {\n return ERC1155SupplyStorage.layout().totalSupply[id];\n }\n\n /**\n * @dev Total amount of tokens in with a given id.\n */\n function _maxSupply(uint256 id) internal view virtual returns (uint256) {\n return ERC1155SupplyStorage.layout().maxSupply[id];\n }\n\n /**\n * @dev Seta maximum amount of tokens possible to exist for a given token ID.\n */\n function _setMaxSupply(uint256 tokenId, uint256 newValue) internal {\n ERC1155SupplyStorage.layout().maxSupply[tokenId] = newValue;\n }\n\n /**\n * @dev Sets maximum amount of tokens possible to exist for multiple token IDs.\n */\n function _setMaxSupplyBatch(uint256[] calldata tokenIds, uint256[] calldata newValues) internal {\n mapping(uint256 => uint256) storage l = ERC1155SupplyStorage.layout().maxSupply;\n\n for (uint256 i = 0; i < tokenIds.length; i++) {\n l[tokenIds[i]] = newValues[i];\n }\n }\n\n /**\n * @dev Indicates whether any token exist with a given id, or not.\n */\n function _exists(uint256 id) internal view virtual returns (bool) {\n return ERC1155SupplyStorage.layout().totalSupply[id] > 0;\n }\n\n /**\n * @dev See {ERC1155-_beforeTokenTransfer}.\n */\n function _beforeTokenTransfer(\n address operator,\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual override {\n super._beforeTokenTransfer(operator, from, to, ids, amounts, data);\n\n if (from == address(0)) {\n mapping(uint256 => uint256) storage totalSupply = ERC1155SupplyStorage.layout().totalSupply;\n mapping(uint256 => uint256) storage maxSupply = ERC1155SupplyStorage.layout().maxSupply;\n\n for (uint256 i = 0; i < ids.length; ++i) {\n totalSupply[ids[i]] += amounts[i];\n\n require(totalSupply[ids[i]] <= maxSupply[ids[i]], \"SUPPLY_EXCEED_MAX\");\n }\n }\n\n if (to == address(0)) {\n mapping(uint256 => uint256) storage totalSupply = ERC1155SupplyStorage.layout().totalSupply;\n\n for (uint256 i = 0; i < ids.length; ++i) {\n uint256 id = ids[i];\n uint256 amount = amounts[i];\n uint256 supply = totalSupply[id];\n require(supply >= amount, \"ERC1155: burn amount exceeds totalSupply\");\n unchecked {\n totalSupply[id] = supply - amount;\n }\n }\n }\n }\n}\n"},"src/token/ERC1155/facets/supply/IERC1155SupplyAdmin.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\ninterface IERC1155SupplyAdmin {\n function setMaxSupply(uint256 tokenId, uint256 newValue) external;\n\n function setMaxSupplyBatch(uint256[] calldata tokenIds, uint256[] calldata newValues) external;\n}\n"},"src/token/ERC1155/extensions/supply/ERC1155Supply.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./IERC1155Supply.sol\";\nimport \"./ERC1155SupplyInternal.sol\";\n\n/**\n * @dev Extension of ERC1155 that adds tracking of total supply per id.\n *\n * Useful for scenarios where Fungible and Non-fungible tokens have to be\n * clearly identified. Note: While a totalSupply of 1 might mean the\n * corresponding is an NFT, there is no guarantees that no other token with the\n * same id are not going to be minted.\n */\nabstract contract ERC1155Supply is IERC1155Supply, ERC1155SupplyInternal {\n /**\n * @inheritdoc IERC1155Supply\n */\n function totalSupply(uint256 id) public view virtual returns (uint256) {\n return _totalSupply(id);\n }\n\n /**\n * @inheritdoc IERC1155Supply\n */\n function maxSupply(uint256 id) public view virtual returns (uint256) {\n return _maxSupply(id);\n }\n\n /**\n * @inheritdoc IERC1155Supply\n */\n function exists(uint256 id) public view virtual returns (bool) {\n return _exists(id);\n }\n}\n"},"src/token/ERC1155/ERC1155WithERC2771.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./base/ERC1155BaseERC2771.sol\";\nimport \"./extensions/supply/ERC1155Supply.sol\";\nimport \"./extensions/lockable/ERC1155Lockable.sol\";\nimport \"./extensions/mintable/ERC1155Mintable.sol\";\nimport \"./extensions/burnable/ERC1155Burnable.sol\";\n\ncontract ERC1155WithERC2771 is ERC1155BaseERC2771, ERC1155Supply, ERC1155Mintable, ERC1155Burnable, ERC1155Lockable {\n function _beforeTokenTransfer(\n address operator,\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual override(ERC1155BaseInternal, ERC1155SupplyInternal, ERC1155LockableInternal) {\n ERC1155BaseInternal._beforeTokenTransfer(operator, from, to, ids, amounts, data);\n }\n\n function _msgSender() internal view virtual override(Context, ERC1155BaseERC2771) returns (address) {\n return ERC1155BaseERC2771._msgSender();\n }\n\n function _msgData() internal view virtual override(Context, ERC1155BaseERC2771) returns (bytes calldata) {\n return ERC1155BaseERC2771._msgData();\n }\n}\n"},"src/token/ERC1155/base/ERC1155BaseERC2771.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../../metatx/ERC2771ContextInternal.sol\";\n\nimport \"./ERC1155Base.sol\";\n\n/**\n * @title Base ERC1155 contract with meta-transactions support (via ERC2771).\n */\nabstract contract ERC1155BaseERC2771 is ERC1155Base, ERC2771ContextInternal {\n function _msgSender() internal view virtual override(Context, ERC2771ContextInternal) returns (address) {\n return ERC2771ContextInternal._msgSender();\n }\n\n function _msgData() internal view virtual override(Context, ERC2771ContextInternal) returns (bytes calldata) {\n return ERC2771ContextInternal._msgData();\n }\n}\n"},"src/token/ERC1155/extensions/lockable/ERC1155Lockable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../../../common/Errors.sol\";\nimport \"./ERC1155LockableInternal.sol\";\nimport \"./IERC1155Lockable.sol\";\n\nabstract contract ERC1155Lockable is IERC1155Lockable, ERC1155LockableInternal {\n function locked(address account, uint256 tokenId) public view virtual returns (uint256) {\n return super._locked(account, tokenId);\n }\n\n function locked(address account, uint256[] calldata ticketTokenIds) public view returns (uint256[] memory) {\n uint256[] memory amounts = new uint256[](ticketTokenIds.length);\n\n for (uint256 i = 0; i < ticketTokenIds.length; i++) {\n amounts[i] = _locked(account, ticketTokenIds[i]);\n }\n\n return amounts;\n }\n\n /**\n * @inheritdoc IERC1155Lockable\n */\n function lockByFacet(\n address account,\n uint256 id,\n uint256 amount\n ) public virtual override {\n if (address(this) != msg.sender) {\n revert SenderIsNotSelf();\n }\n\n _lock(account, id, amount);\n }\n\n /**\n * @inheritdoc IERC1155Lockable\n */\n function unlockByFacet(\n address account,\n uint256 id,\n uint256 amount\n ) public virtual override {\n if (address(this) != msg.sender) {\n revert SenderIsNotSelf();\n }\n\n _unlock(account, id, amount);\n }\n}\n"},"src/token/ERC1155/extensions/mintable/ERC1155Mintable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../../../common/Errors.sol\";\nimport \"../../base/ERC1155BaseInternal.sol\";\nimport \"./IERC1155Mintable.sol\";\n\n/**\n * @title Extension of {ERC1155} that allows other facets of the diamond to mint based on arbitrary logic.\n */\nabstract contract ERC1155Mintable is IERC1155Mintable, ERC1155BaseInternal {\n /**\n * @inheritdoc IERC1155Mintable\n */\n function mintByFacet(\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) public virtual {\n if (address(this) != msg.sender) {\n revert SenderIsNotSelf();\n }\n\n _mint(to, id, amount, data);\n }\n}\n"},"src/token/ERC1155/extensions/burnable/ERC1155Burnable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../../../common/Errors.sol\";\nimport \"../../IERC1155.sol\";\nimport \"../../base/ERC1155BaseInternal.sol\";\nimport \"./IERC1155Burnable.sol\";\nimport \"./ERC1155BurnableStorage.sol\";\n\n/**\n * @title Extension of {ERC1155} that allows users or approved operators to burn tokens.\n */\nabstract contract ERC1155Burnable is IERC1155Burnable, ERC1155BaseInternal {\n function burnablePausedUntil() public view override returns (uint256) {\n return ERC1155BurnableStorage.layout().pausedUntil;\n }\n\n function burn(\n address account,\n uint256 id,\n uint256 value\n ) public virtual {\n require(\n account == _msgSender() || IERC1155(address(this)).isApprovedForAll(account, _msgSender()),\n \"ERC1155: caller is not owner nor approved\"\n );\n\n _burn(account, id, value);\n }\n\n function burnBatch(\n address account,\n uint256[] memory ids,\n uint256[] memory values\n ) public virtual {\n require(\n account == _msgSender() || IERC1155(address(this)).isApprovedForAll(account, _msgSender()),\n \"ERC1155: caller is not owner nor approved\"\n );\n\n _burnBatch(account, ids, values);\n }\n\n function burnByFacet(\n address account,\n uint256 id,\n uint256 amount\n ) public virtual {\n if (address(this) != msg.sender) {\n revert SenderIsNotSelf();\n }\n\n _burn(account, id, amount);\n }\n\n function burnBatchByFacet(\n address account,\n uint256[] memory ids,\n uint256[] memory values\n ) public virtual {\n if (address(this) != msg.sender) {\n revert SenderIsNotSelf();\n }\n\n _burnBatch(account, ids, values);\n }\n}\n"},"src/token/ERC1155/base/ERC1155Base.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../IERC1155.sol\";\nimport \"../IERC1155Receiver.sol\";\nimport \"./ERC1155BaseInternal.sol\";\n\n/**\n * @title Base ERC1155 contract\n * @dev derived from https://github.com/OpenZeppelin/openzeppelin-contracts/ (MIT license)\n */\ncontract ERC1155Base is IERC1155, ERC1155BaseInternal {\n /**\n * @inheritdoc IERC1155\n */\n function balanceOf(address account, uint256 id) public view virtual returns (uint256) {\n return _balanceOf(account, id);\n }\n\n /**\n * @inheritdoc IERC1155\n */\n function balanceOfBatch(address[] memory accounts, uint256[] memory ids)\n public\n view\n virtual\n returns (uint256[] memory)\n {\n require(accounts.length == ids.length, \"ERC1155: accounts and ids length mismatch\");\n\n mapping(uint256 => mapping(address => uint256)) storage balances = ERC1155BaseStorage.layout().balances;\n\n uint256[] memory batchBalances = new uint256[](accounts.length);\n\n unchecked {\n for (uint256 i; i < accounts.length; i++) {\n require(accounts[i] != address(0), \"ERC1155: batch balance query for the zero address\");\n batchBalances[i] = balances[ids[i]][accounts[i]];\n }\n }\n\n return batchBalances;\n }\n\n /**\n * @inheritdoc IERC1155\n */\n function isApprovedForAll(address account, address operator) public view virtual returns (bool) {\n return ERC1155BaseStorage.layout().operatorApprovals[account][operator];\n }\n\n /**\n * @inheritdoc IERC1155\n */\n function setApprovalForAll(address operator, bool status) public virtual {\n address sender = _msgSender();\n require(sender != operator, \"ERC1155: setting approval status for self\");\n ERC1155BaseStorage.layout().operatorApprovals[sender][operator] = status;\n emit ApprovalForAll(sender, operator, status);\n }\n\n /**\n * @inheritdoc IERC1155\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) public virtual {\n address sender = _msgSender();\n require(from == sender || isApprovedForAll(from, sender), \"ERC1155: caller is not owner nor approved\");\n _safeTransfer(sender, from, to, id, amount, data);\n }\n\n /**\n * @inheritdoc IERC1155\n */\n function safeBatchTransferFrom(\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) public virtual {\n address sender = _msgSender();\n require(from == sender || isApprovedForAll(from, sender), \"ERC1155: caller is not owner nor approved\");\n _safeTransferBatch(sender, from, to, ids, amounts, data);\n }\n}\n"},"src/token/ERC1155/IERC1155.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./IERC1155Events.sol\";\nimport \"../../introspection/IERC165.sol\";\n\n/**\n * @title ERC1155 interface\n * @dev see https://github.com/ethereum/EIPs/issues/1155\n */\ninterface IERC1155 is IERC1155Events {\n /**\n * @notice query the balance of given token held by given address\n * @param account address to query\n * @param id token to query\n * @return token balance\n */\n function balanceOf(address account, uint256 id) external view returns (uint256);\n\n /**\n * @notice query the balances of given tokens held by given addresses\n * @param accounts addresss to query\n * @param ids tokens to query\n * @return token balances\n */\n function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)\n external\n view\n returns (uint256[] memory);\n\n /**\n * @notice query approval status of given operator with respect to given address\n * @param account address to query for approval granted\n * @param operator address to query for approval received\n * @return whether operator is approved to spend tokens held by account\n */\n function isApprovedForAll(address account, address operator) external view returns (bool);\n\n /**\n * @notice grant approval to or revoke approval from given operator to spend held tokens\n * @param operator address whose approval status to update\n * @param status whether operator should be considered approved\n */\n function setApprovalForAll(address operator, bool status) external;\n\n /**\n * @notice transfer tokens between given addresses, checking for ERC1155Receiver implementation if applicable\n * @param from sender of tokens\n * @param to receiver of tokens\n * @param id token ID\n * @param amount quantity of tokens to transfer\n * @param data data payload\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 id,\n uint256 amount,\n bytes calldata data\n ) external;\n\n /**\n * @notice transfer batch of tokens between given addresses, checking for ERC1155Receiver implementation if applicable\n * @param from sender of tokens\n * @param to receiver of tokens\n * @param ids list of token IDs\n * @param amounts list of quantities of tokens to transfer\n * @param data data payload\n */\n function safeBatchTransferFrom(\n address from,\n address to,\n uint256[] calldata ids,\n uint256[] calldata amounts,\n bytes calldata data\n ) external;\n}\n"},"src/token/ERC1155/extensions/lockable/ERC1155LockableInternal.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../base/ERC1155BaseInternal.sol\";\nimport \"./ERC1155LockableStorage.sol\";\n\nabstract contract ERC1155LockableInternal is ERC1155BaseInternal {\n using ERC1155LockableStorage for ERC1155LockableStorage.Layout;\n\n function _locked(address account, uint256 tokenId) internal view virtual returns (uint256) {\n mapping(uint256 => uint256) storage locks = ERC1155LockableStorage.layout().lockedAmount[account];\n\n return locks[tokenId];\n }\n\n /* INTERNAL */\n\n function _lock(\n address account,\n uint256 tokenId,\n uint256 amount\n ) internal virtual {\n mapping(uint256 => uint256) storage locks = ERC1155LockableStorage.layout().lockedAmount[account];\n\n require(_balanceOf(account, tokenId) - locks[tokenId] >= amount, \"NOT_ENOUGH_BALANCE\");\n\n locks[tokenId] += amount;\n }\n\n function _unlock(\n address account,\n uint256 tokenId,\n uint256 amount\n ) internal virtual {\n mapping(uint256 => uint256) storage locks = ERC1155LockableStorage.layout().lockedAmount[account];\n\n require(locks[tokenId] >= amount, \"NOT_ENOUGH_LOCKED\");\n\n locks[tokenId] -= amount;\n }\n\n /**\n * @dev See {ERC1155-_beforeTokenTransfer}.\n */\n function _beforeTokenTransfer(\n address operator,\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual override {\n if (from != address(0)) {\n for (uint256 i = 0; i < ids.length; i++) {\n require(\n _balanceOf(from, ids[i]) - ERC1155LockableStorage.layout().lockedAmount[from][ids[i]] >= amounts[i],\n \"LOCKED\"\n );\n }\n }\n\n super._beforeTokenTransfer(operator, from, to, ids, amounts, data);\n }\n}\n"},"src/token/ERC1155/extensions/lockable/IERC1155Lockable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\n/**\n * @dev Extension of {ERC1155} that allows other facets from the diamond to lock the tokens.\n */\ninterface IERC1155Lockable {\n /**\n * @dev Locks `amount` of tokens of `account`, of token type `id`.\n *\n * Requirements:\n *\n * - the caller must be diamond itself (other facets).\n */\n function lockByFacet(\n address account,\n uint256 id,\n uint256 amount\n ) external;\n\n /**\n * @dev Un-locks `amount` of tokens of `account`, of token type `id`.\n *\n * Requirements:\n *\n * - the caller must be diamond itself (other facets).\n */\n function unlockByFacet(\n address account,\n uint256 id,\n uint256 amount\n ) external;\n}\n"},"src/token/ERC1155/extensions/lockable/ERC1155LockableStorage.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nlibrary ERC1155LockableStorage {\n struct Layout {\n mapping(address => mapping(uint256 => uint256)) lockedAmount;\n }\n\n bytes32 internal constant STORAGE_SLOT = keccak256(\"v2.flair.contracts.storage.ERC1155Lockable\");\n\n function layout() internal pure returns (Layout storage l) {\n bytes32 slot = STORAGE_SLOT;\n assembly {\n l.slot := slot\n }\n }\n}\n"},"src/token/ERC1155/extensions/burnable/IERC1155Burnable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\n/**\n * @dev Extension of {ERC1155} that allows holders or approved operators to burn tokens.\n */\ninterface IERC1155Burnable {\n function burnablePausedUntil() external view returns (uint256);\n\n function burn(\n address account,\n uint256 id,\n uint256 value\n ) external;\n\n function burnBatch(\n address account,\n uint256[] memory ids,\n uint256[] memory values\n ) external;\n\n function burnByFacet(\n address account,\n uint256 id,\n uint256 amount\n ) external;\n\n function burnBatchByFacet(\n address account,\n uint256[] memory ids,\n uint256[] memory values\n ) external;\n}\n"},"src/token/ERC1155/extensions/burnable/ERC1155BurnableStorage.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nlibrary ERC1155BurnableStorage {\n struct Layout {\n uint256 pausedUntil;\n }\n\n bytes32 internal constant STORAGE_SLOT = keccak256(\"v2.flair.contracts.storage.ERC1155Burnable\");\n\n function layout() internal pure returns (Layout storage l) {\n bytes32 slot = STORAGE_SLOT;\n assembly {\n l.slot := slot\n }\n }\n}\n"},"src/token/ERC1155/facets/burnable/ERC1155BurnableOwnable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../../../access/ownable/OwnableInternal.sol\";\nimport \"../../extensions/burnable/ERC1155BurnableStorage.sol\";\nimport \"./IERC1155BurnableAdmin.sol\";\n\n/**\n * @title ERC1155 - Burnable - Admin - Ownable\n * @notice Extension of ERC1155 to allow owner to manage burning mechanism.\n *\n * @custom:type eip-2535-facet\n * @custom:category NFTs\n * @custom:peer-dependencies eip165:0xdc290004\n * @custom:provides-interfaces 0x710fb577\n */\ncontract ERC1155BurnableOwnable is IERC1155BurnableAdmin, OwnableInternal {\n using ERC1155BurnableStorage for ERC1155BurnableStorage.Layout;\n\n function setBurnablePausedUntil(uint256 newTimestamp) public onlyOwner {\n ERC1155BurnableStorage.layout().pausedUntil = newTimestamp;\n }\n}\n"},"src/token/ERC1155/facets/burnable/IERC1155BurnableAdmin.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\ninterface IERC1155BurnableAdmin {\n function setBurnablePausedUntil(uint256 newTimestamp) external;\n}\n"},"src/introspection/ERC165Ownable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../access/ownable/OwnableInternal.sol\";\nimport \"./IERC165.sol\";\nimport \"./ERC165Storage.sol\";\nimport \"./IERC165Admin.sol\";\n\n/**\n * @title ERC165 - Admin - Ownable\n * @notice Standard EIP-165 management facet using Ownable extension for access control.\n *\n * @custom:type eip-2535-facet\n * @custom:category Diamonds\n * @custom:provides-interfaces 0x2a848091\n */\ncontract ERC165Ownable is IERC165Admin, OwnableInternal {\n using ERC165Storage for ERC165Storage.Layout;\n\n /**\n * @param interfaceIds list of interface id to set as supported\n * @param interfaceIdsToRemove list of interface id to unset as supported\n */\n function setERC165(bytes4[] calldata interfaceIds, bytes4[] calldata interfaceIdsToRemove) public onlyOwner {\n ERC165Storage.Layout storage l = ERC165Storage.layout();\n\n l.supportedInterfaces[type(IERC165).interfaceId] = true;\n\n for (uint256 i = 0; i < interfaceIds.length; i++) {\n l.supportedInterfaces[interfaceIds[i]] = true;\n }\n\n for (uint256 i = 0; i < interfaceIdsToRemove.length; i++) {\n l.supportedInterfaces[interfaceIdsToRemove[i]] = false;\n }\n }\n}\n"},"src/introspection/IERC165Admin.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\ninterface IERC165Admin {\n function setERC165(bytes4[] calldata interfaceIds, bytes4[] calldata interfaceIdsToRemove) external;\n}\n"},"src/token/ERC1155/ERC1155.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./base/ERC1155Base.sol\";\nimport \"./extensions/supply/ERC1155Supply.sol\";\nimport \"./extensions/lockable/ERC1155Lockable.sol\";\nimport \"./extensions/mintable/ERC1155Mintable.sol\";\nimport \"./extensions/burnable/ERC1155Burnable.sol\";\n\n/**\n * @title ERC1155 - Standard\n * @notice Standard EIP-1155 NFTs with core capabilities of Mintable, Burnable and Lockable.\n *\n * @custom:type eip-2535-facet\n * @custom:category NFTs\n * @custom:provides-interfaces 0xd9b67a26 0x744f4bd4 0xdc290004 0xff3508c6 0xb164884b\n */\ncontract ERC1155 is ERC1155Base, ERC1155Supply, ERC1155Mintable, ERC1155Burnable, ERC1155Lockable {\n /**\n * @notice inheritdoc IERC1155Metadata\n */\n function _beforeTokenTransfer(\n address operator,\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual override(ERC1155BaseInternal, ERC1155SupplyInternal, ERC1155LockableInternal) {\n super._beforeTokenTransfer(operator, from, to, ids, amounts, data);\n }\n}\n"},"src/token/ERC1155/facets/minting/ERC1155MintByOwner.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../../../common/Errors.sol\";\nimport \"../../../../access/ownable/OwnableInternal.sol\";\nimport \"../../extensions/mintable/IERC1155Mintable.sol\";\nimport \"../../base/ERC1155BaseInternal.sol\";\nimport \"./IERC1155MintByOwner.sol\";\n\n/**\n * @dev Extension of {ERC1155} that allows owner to mint new tokens.\n */\ncontract ERC1155MintByOwner is IERC1155MintByOwner, OwnableInternal {\n /**\n * @inheritdoc IERC1155MintByOwner\n */\n function mintByOwner(\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) public virtual onlyOwner {\n IERC1155Mintable(address(this)).mintByFacet(to, id, amount, data);\n }\n}\n"},"src/token/ERC1155/facets/minting/IERC1155MintByOwner.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\n/**\n * @dev Extension of {ERC1155} that allows diamond owner to mint tokens.\n */\ninterface IERC1155MintByOwner {\n /**\n * @dev Creates `amount` new tokens for `to`, of token type `id`.\n *\n * See {ERC1155-_mint}.\n *\n * Requirements:\n *\n * - the caller must be diamond owner.\n */\n function mintByOwner(\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) external;\n}\n"},"src/token/ERC1155/facets/minting/ERC1155MintByOwnerERC2771.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../../../metatx/ERC2771ContextInternal.sol\";\nimport \"./ERC1155MintByOwner.sol\";\n\n/**\n * @dev Extension of {ERC1155} to mint as diamond owner with meta-transactions supported via ERC2771.\n */\ncontract ERC1155MintByOwnerERC2771 is ERC1155MintByOwner, ERC2771ContextInternal {\n function _msgSender() internal view virtual override(Context, ERC2771ContextInternal) returns (address) {\n return ERC2771ContextInternal._msgSender();\n }\n\n function _msgData() internal view virtual override(Context, ERC2771ContextInternal) returns (bytes calldata) {\n return ERC2771ContextInternal._msgData();\n }\n}\n"},"src/token/ERC1155/facets/sales/ERC1155TieredSalesOwnable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../../../access/ownable/OwnableInternal.sol\";\nimport \"./ERC1155TieredSalesStorage.sol\";\nimport \"./IERC1155TieredSalesAdmin.sol\";\n\n/**\n * @title ERC1155 - Tiered Sales - Admin - Ownable\n * @notice Used to manage which ERC1155 token is related to which the sales tier.\n *\n * @custom:type eip-2535-facet\n * @custom:category NFTs\n * @custom:peer-dependencies eip165:0x79f33254\n * @custom:provides-interfaces 0x76c5dd21\n */\ncontract ERC1155TieredSalesOwnable is IERC1155TieredSalesAdmin, OwnableInternal {\n using ERC1155TieredSalesStorage for ERC1155TieredSalesStorage.Layout;\n\n function configureTierTokenId(uint256 tierId, uint256 tokenId) external onlyOwner {\n ERC1155TieredSalesStorage.layout().tierToTokenId[tierId] = tokenId;\n }\n\n function configureTierTokenId(uint256[] calldata tierIds, uint256[] calldata tokenIds) external onlyOwner {\n require(\n tierIds.length == tokenIds.length,\n \"ERC1155TieredSalesOwnable: tierIds and tokenIds must be same length\"\n );\n\n for (uint256 i = 0; i < tierIds.length; i++) {\n ERC1155TieredSalesStorage.layout().tierToTokenId[tierIds[i]] = tokenIds[i];\n }\n }\n}\n"},"src/token/ERC1155/facets/sales/IERC1155TieredSalesAdmin.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\ninterface IERC1155TieredSalesAdmin {\n function configureTierTokenId(uint256 tierId, uint256 tokenId) external;\n\n function configureTierTokenId(uint256[] calldata tierIds, uint256[] calldata tokenIds) external;\n}\n"},"src/token/ERC1155/facets/metadata/ERC1155MetadataOwnable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\n\nimport \"../../../../access/ownable/OwnableInternal.sol\";\n\nimport \"./ERC1155MetadataInternal.sol\";\nimport \"./ERC1155MetadataStorage.sol\";\nimport \"./IERC1155MetadataAdmin.sol\";\n\n/**\n * @title ERC1155 - Metadata - Admin - Ownable\n * @notice Allows diamond owner to change base, per-token, and fallback URIs, as wel as freezing URIs.\n * @dev See https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions\n *\n * @custom:type eip-2535-facet\n * @custom:category NFTs\n * @custom:peer-dependencies eip165:0x0e89341c\n * @custom:provides-interfaces 0x0dfe03d4\n */\ncontract ERC1155MetadataOwnable is IERC1155MetadataAdmin, ERC1155MetadataInternal, OwnableInternal {\n function setBaseURI(string calldata newBaseURI) public onlyOwner {\n _setBaseURI(newBaseURI);\n }\n\n function setFallbackURI(string calldata newFallbackURI) public onlyOwner {\n _setFallbackURI(newFallbackURI);\n }\n\n function setURI(uint256 tokenId, string calldata newTokenURI) public onlyOwner {\n _setURI(tokenId, newTokenURI);\n }\n\n function setURIBatch(uint256[] calldata tokenIds, string[] calldata newTokenURIs) public onlyOwner {\n for (uint256 i = 0; i < tokenIds.length; i++) {\n _setURI(tokenIds[i], newTokenURIs[i]);\n }\n }\n\n function lockBaseURI() public onlyOwner {\n _lockBaseURI();\n }\n\n function lockFallbackURI() public onlyOwner {\n _lockFallbackURI();\n }\n\n function lockURIUntil(uint256 tokenId) public onlyOwner {\n _lockURIUntil(tokenId);\n }\n}\n"},"src/token/ERC1155/facets/metadata/ERC1155MetadataInternal.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./IERC1155MetadataEvents.sol\";\nimport \"./ERC1155MetadataStorage.sol\";\n\nabstract contract ERC1155MetadataInternal is IERC1155MetadataEvents {\n function _setBaseURI(string memory baseURI) internal {\n require(\n !ERC1155MetadataStorage.layout().baseURILocked,\n \"ERC1155Metadata: baseURI locked\"\n );\n ERC1155MetadataStorage.layout().baseURI = baseURI;\n }\n\n function _setFallbackURI(string memory baseURI) internal {\n require(\n !ERC1155MetadataStorage.layout().fallbackURILocked,\n \"ERC1155Metadata: fallbackURI locked\"\n );\n ERC1155MetadataStorage.layout().baseURI = baseURI;\n }\n\n function _setURI(uint256 tokenId, string memory tokenURI) internal {\n require(\n tokenId > ERC1155MetadataStorage.layout().lastLockedTokenId,\n \"ERC1155Metadata: tokenURI locked\"\n );\n ERC1155MetadataStorage.layout().tokenURIs[tokenId] = tokenURI;\n emit URI(tokenURI, tokenId);\n }\n\n function _lockBaseURI() internal {\n ERC1155MetadataStorage.layout().baseURILocked = true;\n }\n\n function _lockFallbackURI() internal {\n ERC1155MetadataStorage.layout().fallbackURILocked = true;\n }\n\n function _lockURIUntil(uint256 tokenId) internal {\n ERC1155MetadataStorage.layout().lastLockedTokenId = tokenId;\n }\n}\n"},"src/token/ERC1155/facets/metadata/ERC1155MetadataStorage.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nlibrary ERC1155MetadataStorage {\n bytes32 internal constant STORAGE_SLOT = keccak256(\"v2.flair.contracts.storage.ERC1155Metadata\");\n\n struct Layout {\n string baseURI;\n string fallbackURI;\n bool baseURILocked;\n bool fallbackURILocked;\n uint256 lastLockedTokenId;\n mapping(uint256 => string) tokenURIs;\n }\n\n function layout() internal pure returns (Layout storage l) {\n bytes32 slot = STORAGE_SLOT;\n assembly {\n l.slot := slot\n }\n }\n}\n"},"src/token/ERC1155/facets/metadata/IERC1155MetadataAdmin.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\ninterface IERC1155MetadataAdmin {\n function setBaseURI(string calldata newBaseURI) external;\n\n function setFallbackURI(string calldata newFallbackURI) external;\n\n function setURI(uint256 tokenId, string calldata newTokenURI) external;\n\n function setURIBatch(uint256[] calldata tokenIds, string[] calldata newTokenURIs) external;\n\n function lockBaseURI() external;\n\n function lockFallbackURI() external;\n\n function lockURIUntil(uint256 tokenId) external;\n}\n"},"src/token/ERC1155/facets/metadata/IERC1155MetadataEvents.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\ninterface IERC1155MetadataEvents {\n event URI(string value, uint256 indexed tokenId);\n}\n"},"@openzeppelin/contracts/utils/cryptography/ECDSA.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.3) (utils/cryptography/ECDSA.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../Strings.sol\";\n\n/**\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n *\n * These functions can be used to verify that a message was signed by the holder\n * of the private keys of a given address.\n */\nlibrary ECDSA {\n enum RecoverError {\n NoError,\n InvalidSignature,\n InvalidSignatureLength,\n InvalidSignatureS,\n InvalidSignatureV\n }\n\n function _throwError(RecoverError error) private pure {\n if (error == RecoverError.NoError) {\n return; // no error: do nothing\n } else if (error == RecoverError.InvalidSignature) {\n revert(\"ECDSA: invalid signature\");\n } else if (error == RecoverError.InvalidSignatureLength) {\n revert(\"ECDSA: invalid signature length\");\n } else if (error == RecoverError.InvalidSignatureS) {\n revert(\"ECDSA: invalid signature 's' value\");\n } else if (error == RecoverError.InvalidSignatureV) {\n revert(\"ECDSA: invalid signature 'v' value\");\n }\n }\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with\n * `signature` or error string. This address can then be used for verification purposes.\n *\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {toEthSignedMessageHash} on it.\n *\n * Documentation for signature generation:\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n *\n * _Available since v4.3._\n */\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\n if (signature.length == 65) {\n bytes32 r;\n bytes32 s;\n uint8 v;\n // ecrecover takes the signature parameters, and the only way to get them\n // currently is to use assembly.\n /// @solidity memory-safe-assembly\n assembly {\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n }\n return tryRecover(hash, v, r, s);\n } else {\n return (address(0), RecoverError.InvalidSignatureLength);\n }\n }\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with\n * `signature`. This address can then be used for verification purposes.\n *\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {toEthSignedMessageHash} on it.\n */\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\n (address recovered, RecoverError error) = tryRecover(hash, signature);\n _throwError(error);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n *\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\n *\n * _Available since v4.3._\n */\n function tryRecover(\n bytes32 hash,\n bytes32 r,\n bytes32 vs\n ) internal pure returns (address, RecoverError) {\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\n uint8 v = uint8((uint256(vs) >> 255) + 27);\n return tryRecover(hash, v, r, s);\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n *\n * _Available since v4.2._\n */\n function recover(\n bytes32 hash,\n bytes32 r,\n bytes32 vs\n ) internal pure returns (address) {\n (address recovered, RecoverError error) = tryRecover(hash, r, vs);\n _throwError(error);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n * `r` and `s` signature fields separately.\n *\n * _Available since v4.3._\n */\n function tryRecover(\n bytes32 hash,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal pure returns (address, RecoverError) {\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\n // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\n //\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\n // these malleable signatures as well.\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\n return (address(0), RecoverError.InvalidSignatureS);\n }\n if (v != 27 && v != 28) {\n return (address(0), RecoverError.InvalidSignatureV);\n }\n\n // If the signature is valid (and not malleable), return the signer address\n address signer = ecrecover(hash, v, r, s);\n if (signer == address(0)) {\n return (address(0), RecoverError.InvalidSignature);\n }\n\n return (signer, RecoverError.NoError);\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `v`,\n * `r` and `s` signature fields separately.\n */\n function recover(\n bytes32 hash,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal pure returns (address) {\n (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\n _throwError(error);\n return recovered;\n }\n\n /**\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\n * produces hash corresponding to the one signed with the\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n * JSON-RPC method as part of EIP-191.\n *\n * See {recover}.\n */\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\n // 32 is the length in bytes of hash,\n // enforced by the type signature above\n return keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", hash));\n }\n\n /**\n * @dev Returns an Ethereum Signed Message, created from `s`. This\n * produces hash corresponding to the one signed with the\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n * JSON-RPC method as part of EIP-191.\n *\n * See {recover}.\n */\n function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n\", Strings.toString(s.length), s));\n }\n\n /**\n * @dev Returns an Ethereum Signed Typed Data, created from a\n * `domainSeparator` and a `structHash`. This produces hash corresponding\n * to the one signed with the\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\n * JSON-RPC method as part of EIP-712.\n *\n * See {recover}.\n */\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"\\x19\\x01\", domainSeparator, structHash));\n }\n}\n"},"@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/cryptography/draft-EIP712.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./ECDSA.sol\";\n\n/**\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\n *\n * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\n * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\n * they need in their contracts using a combination of `abi.encode` and `keccak256`.\n *\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n * ({_hashTypedDataV4}).\n *\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n * the chain id to protect against replay attacks on an eventual fork of the chain.\n *\n * NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n *\n * _Available since v3.4._\n */\nabstract contract EIP712 {\n /* solhint-disable var-name-mixedcase */\n // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to\n // invalidate the cached domain separator if the chain id changes.\n bytes32 private immutable _CACHED_DOMAIN_SEPARATOR;\n uint256 private immutable _CACHED_CHAIN_ID;\n address private immutable _CACHED_THIS;\n\n bytes32 private immutable _HASHED_NAME;\n bytes32 private immutable _HASHED_VERSION;\n bytes32 private immutable _TYPE_HASH;\n\n /* solhint-enable var-name-mixedcase */\n\n /**\n * @dev Initializes the domain separator and parameter caches.\n *\n * The meaning of `name` and `version` is specified in\n * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\n *\n * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n * - `version`: the current major version of the signing domain.\n *\n * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n * contract upgrade].\n */\n constructor(string memory name, string memory version) {\n bytes32 hashedName = keccak256(bytes(name));\n bytes32 hashedVersion = keccak256(bytes(version));\n bytes32 typeHash = keccak256(\n \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"\n );\n _HASHED_NAME = hashedName;\n _HASHED_VERSION = hashedVersion;\n _CACHED_CHAIN_ID = block.chainid;\n _CACHED_DOMAIN_SEPARATOR = _buildDomainSeparator(typeHash, hashedName, hashedVersion);\n _CACHED_THIS = address(this);\n _TYPE_HASH = typeHash;\n }\n\n /**\n * @dev Returns the domain separator for the current chain.\n */\n function _domainSeparatorV4() internal view returns (bytes32) {\n if (address(this) == _CACHED_THIS && block.chainid == _CACHED_CHAIN_ID) {\n return _CACHED_DOMAIN_SEPARATOR;\n } else {\n return _buildDomainSeparator(_TYPE_HASH, _HASHED_NAME, _HASHED_VERSION);\n }\n }\n\n function _buildDomainSeparator(\n bytes32 typeHash,\n bytes32 nameHash,\n bytes32 versionHash\n ) private view returns (bytes32) {\n return keccak256(abi.encode(typeHash, nameHash, versionHash, block.chainid, address(this)));\n }\n\n /**\n * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n * function returns the hash of the fully encoded EIP712 message for this domain.\n *\n * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n *\n * ```solidity\n * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n * keccak256(\"Mail(address to,string contents)\"),\n * mailTo,\n * keccak256(bytes(mailContents))\n * )));\n * address signer = ECDSA.recover(digest, signature);\n * ```\n */\n function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\n return ECDSA.toTypedDataHash(_domainSeparatorV4(), structHash);\n }\n}\n"},"src/common/UnorderedForwarder.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/utils/Context.sol\";\nimport \"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\";\nimport \"@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\n\ncontract UnorderedForwarder is EIP712, ReentrancyGuard {\n using ECDSA for bytes32;\n\n struct MetaTransaction {\n address from;\n address to;\n uint256 value;\n uint256 minGasPrice;\n uint256 maxGasPrice;\n uint256 expiresAt;\n uint256 nonce;\n bytes data;\n }\n\n bytes32 private constant _TYPEHASH =\n keccak256(\n \"MetaTransaction(address from,address to,uint256 value,uint256 minGasPrice,uint256 maxGasPrice,uint256 expiresAt,uint256 nonce,bytes data)\"\n );\n\n mapping(bytes32 => uint256) mtxHashToExecutedBlockNumber;\n\n constructor() EIP712(\"UnorderedForwarder\", \"0.0.1\") {}\n\n /// @dev Refunds up to `msg.value` leftover ETH at the end of the call.\n modifier refundsAttachedEth() {\n _;\n uint256 remainingBalance = msg.value > address(this).balance\n ? address(this).balance\n : msg.value;\n if (remainingBalance > 0) {\n payable(msg.sender).transfer(remainingBalance);\n }\n }\n\n /// @dev Ensures that the ETH balance of `this` does not go below the\n /// initial ETH balance before the call (excluding ETH attached to the call).\n modifier doesNotReduceEthBalance() {\n uint256 initialBalance = address(this).balance - msg.value;\n _;\n require(initialBalance <= address(this).balance, \"FWD_ETH_LEAK\");\n }\n\n function verify(MetaTransaction calldata mtx, bytes calldata signature)\n public\n view\n returns (bytes32 mtxHash)\n {\n mtxHash = _hashTypedDataV4(\n keccak256(\n abi.encode(\n _TYPEHASH,\n mtx.from,\n mtx.to,\n mtx.value,\n mtx.minGasPrice,\n mtx.maxGasPrice,\n mtx.expiresAt,\n mtx.nonce,\n keccak256(mtx.data)\n )\n )\n );\n\n // Must not be expired.\n require(mtx.expiresAt > block.timestamp, \"FWD_EXPIRED\");\n\n // Must be signed by the signer.\n require(\n mtxHash.recover(signature) == mtx.from,\n \"FWD_INVALID_SIGNATURE\"\n );\n\n // Transaction must not have been already executed.\n require(mtxHashToExecutedBlockNumber[mtxHash] == 0, \"FWD_REPLAYED\");\n\n return mtxHash;\n }\n\n function execute(MetaTransaction calldata mtx, bytes calldata signature)\n public\n payable\n nonReentrant\n doesNotReduceEthBalance\n refundsAttachedEth\n returns (bytes memory)\n {\n return _execute(mtx, signature);\n }\n\n function batchExecute(\n MetaTransaction[] calldata mtxs,\n bytes[] calldata signatures\n )\n public\n payable\n nonReentrant\n doesNotReduceEthBalance\n refundsAttachedEth\n returns (bytes[] memory returnResults)\n {\n require(mtxs.length == signatures.length, \"FWD_MISMATCH_SIGNATURES\");\n\n returnResults = new bytes[](mtxs.length);\n\n for (uint256 i = 0; i < mtxs.length; ++i) {\n returnResults[i] = _execute(mtxs[i], signatures[i]);\n }\n }\n\n function _execute(MetaTransaction calldata mtx, bytes calldata signature)\n internal\n returns (bytes memory)\n {\n // Must have a valid gas price.\n require(\n mtx.minGasPrice <= tx.gasprice && tx.gasprice <= mtx.maxGasPrice,\n \"FWD_INVALID_GAS\"\n );\n\n // Must have enough ETH.\n require(mtx.value <= address(this).balance, \"FWD_INVALID_VALUE\");\n\n bytes32 mtxHash = verify(mtx, signature);\n\n mtxHashToExecutedBlockNumber[mtxHash] = block.number;\n\n (bool success, bytes memory returndata) = mtx.to.call{value: mtx.value}(\n abi.encodePacked(mtx.data, mtx.from)\n );\n\n if (!success) {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(\"FWD_CALL_FAILED\");\n }\n }\n\n return returndata;\n }\n}\n"},"src/token/ERC1155/facets/metadata/ERC1155Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\n\nimport \"./IERC1155Metadata.sol\";\nimport \"./IERC1155MetadataExtra.sol\";\nimport \"./ERC1155MetadataInternal.sol\";\nimport \"./ERC1155MetadataStorage.sol\";\n\n/**\n * @title ERC1155 - Metadata\n * @notice Provides metadata for ERC1155 tokens according to standard. This extension supports base URI, per-token URI, and a fallback URI. You can also freeze URIs until a certain token ID.\n * @dev See https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions\n *\n * @custom:type eip-2535-facet\n * @custom:category NFTs\n * @custom:peer-dependencies eip165:0xd9b67a26\n * @custom:provides-interfaces 0x0e89341c 0xc6575680\n */\ncontract ERC1155Metadata is IERC1155Metadata, IERC1155MetadataExtra, ERC1155MetadataInternal {\n /**\n * @notice inheritdoc IERC1155Metadata\n */\n function uri(uint256 tokenId) public view virtual returns (string memory) {\n ERC1155MetadataStorage.Layout storage l = ERC1155MetadataStorage.layout();\n\n string memory _tokenIdURI = l.tokenURIs[tokenId];\n string memory _baseURI = l.baseURI;\n\n if (bytes(_baseURI).length == 0) {\n return _tokenIdURI;\n } else if (bytes(_tokenIdURI).length > 0) {\n return string(abi.encodePacked(_baseURI, _tokenIdURI));\n } else {\n return string(abi.encodePacked(_baseURI, l.fallbackURI, Strings.toString(tokenId)));\n }\n }\n\n function uriBatch(uint256[] calldata tokenIds) external view returns (string[] memory) {\n string[] memory uris = new string[](tokenIds.length);\n\n for (uint256 i = 0; i < tokenIds.length; i++) {\n uris[i] = uri(tokenIds[i]);\n }\n\n return uris;\n }\n\n function baseURI() external view returns (string memory) {\n return ERC1155MetadataStorage.layout().baseURI;\n }\n\n function fallbackURI() external view returns (string memory) {\n return ERC1155MetadataStorage.layout().fallbackURI;\n }\n\n function baseURILocked() external view returns (bool) {\n return ERC1155MetadataStorage.layout().baseURILocked;\n }\n\n function fallbackURILocked() external view returns (bool) {\n return ERC1155MetadataStorage.layout().fallbackURILocked;\n }\n\n function lastLockedTokenId() external view returns (uint256) {\n return ERC1155MetadataStorage.layout().lastLockedTokenId;\n }\n}\n"},"src/token/ERC1155/facets/metadata/IERC1155Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\ninterface IERC1155Metadata {\n /**\n * @dev Returns the URI for token type `id`.\n *\n * If the `\\{id\\}` substring is present in the URI, it must be replaced by\n * clients with the actual token type ID.\n */\n function uri(uint256 id) external view returns (string memory);\n}\n"},"src/token/ERC1155/facets/metadata/IERC1155MetadataExtra.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\ninterface IERC1155MetadataExtra {\n function baseURI() external view returns (string memory);\n\n function fallbackURI() external view returns (string memory);\n\n function baseURILocked() external view returns (bool);\n\n function fallbackURILocked() external view returns (bool);\n\n function lastLockedTokenId() external view returns (uint256);\n\n function uriBatch(uint256[] calldata tokenIds) external view returns (string[] memory);\n}\n"},"src/access/roles/IAccessControl.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./IAccessControlEvents.sol\";\n\n/**\n * @dev External interface of AccessControl declared to support ERC165 detection.\n */\ninterface IAccessControl is IAccessControlEvents {\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) external view returns (bool);\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function grantRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function revokeRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been granted `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `account`.\n */\n function renounceRole(bytes32 role, address account) external;\n}\n"},"src/access/roles/IAccessControlEnumerable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./IAccessControl.sol\";\n\n/**\n * @dev External interface of AccessControlEnumerable declared to support ERC165 detection.\n */\ninterface IAccessControlEnumerable is IAccessControl {\n /**\n * @dev Returns one of the accounts that have `role`. `index` must be a\n * value between 0 and {getRoleMemberCount}, non-inclusive.\n *\n * Role bearers are not sorted in any particular way, and their ordering may\n * change at any point.\n *\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\n * you perform all queries on the same block. See the following\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\n * for more information.\n */\n function getRoleMember(bytes32 role, uint256 index)\n external\n view\n returns (address);\n\n /**\n * @dev Returns the number of accounts that have `role`. Can be used\n * together with {getRoleMember} to enumerate all bearers of a role.\n */\n function getRoleMemberCount(bytes32 role) external view returns (uint256);\n}\n"},"src/access/roles/AccessControlEnumerable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\";\n\nimport \"./IAccessControlEnumerable.sol\";\nimport \"./AccessControlEnumerableStorage.sol\";\nimport \"./AccessControl.sol\";\n\n/**\n * @dev Extension of {AccessControl} that allows enumerating the members of each role.\n */\nabstract contract AccessControlEnumerable is\n IAccessControlEnumerable,\n AccessControl\n{\n using EnumerableSet for EnumerableSet.AddressSet;\n using AccessControlEnumerableStorage for AccessControlEnumerableStorage.Layout;\n\n /**\n * @dev Returns one of the accounts that have `role`. `index` must be a\n * value between 0 and {getRoleMemberCount}, non-inclusive.\n *\n * Role bearers are not sorted in any particular way, and their ordering may\n * change at any point.\n *\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\n * you perform all queries on the same block. See the following\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\n * for more information.\n */\n function getRoleMember(bytes32 role, uint256 index)\n public\n view\n virtual\n override\n returns (address)\n {\n return\n AccessControlEnumerableStorage.layout().roleMembers[role].at(index);\n }\n\n /**\n * @dev Returns the number of accounts that have `role`. Can be used\n * together with {getRoleMember} to enumerate all bearers of a role.\n */\n function getRoleMemberCount(bytes32 role)\n public\n view\n virtual\n override\n returns (uint256)\n {\n return\n AccessControlEnumerableStorage.layout().roleMembers[role].length();\n }\n\n /**\n * @dev Overload {_grantRole} to track enumerable memberships\n */\n function _grantRole(bytes32 role, address account)\n internal\n virtual\n override\n {\n super._grantRole(role, account);\n AccessControlEnumerableStorage.layout().roleMembers[role].add(account);\n }\n\n /**\n * @dev Overload {_revokeRole} to track enumerable memberships\n */\n function _revokeRole(bytes32 role, address account)\n internal\n virtual\n override\n {\n super._revokeRole(role, account);\n AccessControlEnumerableStorage.layout().roleMembers[role].remove(\n account\n );\n }\n}\n"},"src/access/roles/AccessControlEnumerableStorage.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\";\n\nlibrary AccessControlEnumerableStorage {\n using EnumerableSet for EnumerableSet.AddressSet;\n\n struct Layout {\n mapping(bytes32 => EnumerableSet.AddressSet) roleMembers;\n }\n\n bytes32 internal constant STORAGE_SLOT = keccak256(\"openzeppelin.contracts.storage.AccessControlEnumerable\");\n\n function layout() internal pure returns (Layout storage l) {\n bytes32 slot = STORAGE_SLOT;\n assembly {\n l.slot := slot\n }\n }\n}\n"},"src/access/roles/AccessControl.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/utils/Context.sol\";\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\n\nimport \"./AccessControlInternal.sol\";\nimport \"./IAccessControl.sol\";\n\nabstract contract AccessControl is AccessControlInternal, IAccessControl {\n function grantRole(bytes32 role, address account)\n public\n virtual\n override\n onlyRole(_getRoleAdmin(role))\n {\n _grantRole(role, account);\n }\n\n function revokeRole(bytes32 role, address account)\n public\n virtual\n onlyRole(_getRoleAdmin(role))\n {\n _revokeRole(role, account);\n }\n\n function renounceRole(bytes32 role, address account)\n public\n virtual\n override\n {\n _renounceRole(role, account);\n }\n\n function getRoleAdmin(bytes32 role)\n public\n view\n virtual\n override\n returns (bytes32)\n {\n return _getRoleAdmin(role);\n }\n}\n"},"@openzeppelin/contracts/utils/structs/EnumerableSet.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/structs/EnumerableSet.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for managing\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n * types.\n *\n * Sets have the following properties:\n *\n * - Elements are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```\n * contract Example {\n * // Add the library methods\n * using EnumerableSet for EnumerableSet.AddressSet;\n *\n * // Declare a set state variable\n * EnumerableSet.AddressSet private mySet;\n * }\n * ```\n *\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n * and `uint256` (`UintSet`) are supported.\n *\n * [WARNING]\n * ====\n * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure unusable.\n * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\n *\n * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an array of EnumerableSet.\n * ====\n */\nlibrary EnumerableSet {\n // To implement this library for multiple types with as little code\n // repetition as possible, we write it in terms of a generic Set type with\n // bytes32 values.\n // The Set implementation uses private functions, and user-facing\n // implementations (such as AddressSet) are just wrappers around the\n // underlying Set.\n // This means that we can only create new EnumerableSets for types that fit\n // in bytes32.\n\n struct Set {\n // Storage of set values\n bytes32[] _values;\n // Position of the value in the `values` array, plus 1 because index 0\n // means a value is not in the set.\n mapping(bytes32 => uint256) _indexes;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function _add(Set storage set, bytes32 value) private returns (bool) {\n if (!_contains(set, value)) {\n set._values.push(value);\n // The value is stored at length-1, but we add 1 to all indexes\n // and use 0 as a sentinel value\n set._indexes[value] = set._values.length;\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function _remove(Set storage set, bytes32 value) private returns (bool) {\n // We read and store the value's index to prevent multiple reads from the same storage slot\n uint256 valueIndex = set._indexes[value];\n\n if (valueIndex != 0) {\n // Equivalent to contains(set, value)\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\n // the array, and then remove the last element (sometimes called as 'swap and pop').\n // This modifies the order of the array, as noted in {at}.\n\n uint256 toDeleteIndex = valueIndex - 1;\n uint256 lastIndex = set._values.length - 1;\n\n if (lastIndex != toDeleteIndex) {\n bytes32 lastValue = set._values[lastIndex];\n\n // Move the last value to the index where the value to delete is\n set._values[toDeleteIndex] = lastValue;\n // Update the index for the moved value\n set._indexes[lastValue] = valueIndex; // Replace lastValue's index to valueIndex\n }\n\n // Delete the slot where the moved value was stored\n set._values.pop();\n\n // Delete the index for the deleted slot\n delete set._indexes[value];\n\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function _contains(Set storage set, bytes32 value) private view returns (bool) {\n return set._indexes[value] != 0;\n }\n\n /**\n * @dev Returns the number of values on the set. O(1).\n */\n function _length(Set storage set) private view returns (uint256) {\n return set._values.length;\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function _at(Set storage set, uint256 index) private view returns (bytes32) {\n return set._values[index];\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function _values(Set storage set) private view returns (bytes32[] memory) {\n return set._values;\n }\n\n // Bytes32Set\n\n struct Bytes32Set {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n return _add(set._inner, value);\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n return _remove(set._inner, value);\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\n return _contains(set._inner, value);\n }\n\n /**\n * @dev Returns the number of values in the set. O(1).\n */\n function length(Bytes32Set storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\n return _at(set._inner, index);\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {\n return _values(set._inner);\n }\n\n // AddressSet\n\n struct AddressSet {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(AddressSet storage set, address value) internal returns (bool) {\n return _add(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(AddressSet storage set, address value) internal returns (bool) {\n return _remove(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(AddressSet storage set, address value) internal view returns (bool) {\n return _contains(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Returns the number of values in the set. O(1).\n */\n function length(AddressSet storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\n return address(uint160(uint256(_at(set._inner, index))));\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function values(AddressSet storage set) internal view returns (address[] memory) {\n bytes32[] memory store = _values(set._inner);\n address[] memory result;\n\n /// @solidity memory-safe-assembly\n assembly {\n result := store\n }\n\n return result;\n }\n\n // UintSet\n\n struct UintSet {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(UintSet storage set, uint256 value) internal returns (bool) {\n return _add(set._inner, bytes32(value));\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(UintSet storage set, uint256 value) internal returns (bool) {\n return _remove(set._inner, bytes32(value));\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(UintSet storage set, uint256 value) internal view returns (bool) {\n return _contains(set._inner, bytes32(value));\n }\n\n /**\n * @dev Returns the number of values on the set. O(1).\n */\n function length(UintSet storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(UintSet storage set, uint256 index) internal view returns (uint256) {\n return uint256(_at(set._inner, index));\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function values(UintSet storage set) internal view returns (uint256[] memory) {\n bytes32[] memory store = _values(set._inner);\n uint256[] memory result;\n\n /// @solidity memory-safe-assembly\n assembly {\n result := store\n }\n\n return result;\n }\n}\n"},"src/access/roles/AccessControlEnumerableERC2771.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/utils/Context.sol\";\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\n\nimport \"../../metatx/ERC2771ContextInternal.sol\";\nimport \"./AccessControlEnumerable.sol\";\n\nabstract contract AccessControlEnumerableERC2771 is\n ERC2771ContextInternal,\n AccessControlEnumerable\n{\n function _msgSender()\n internal\n view\n virtual\n override(Context, ERC2771ContextInternal)\n returns (address)\n {\n return ERC2771ContextInternal._msgSender();\n }\n\n function _msgData()\n internal\n view\n virtual\n override(Context, ERC2771ContextInternal)\n returns (bytes calldata)\n {\n return ERC2771ContextInternal._msgData();\n }\n}\n"},"src/access/roles/AccessControlERC2771.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/utils/Context.sol\";\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\n\nimport \"../../metatx/ERC2771ContextInternal.sol\";\nimport \"./AccessControl.sol\";\n\nabstract contract AccessControlERC2771 is\n ERC2771ContextInternal,\n AccessControl\n{\n function _msgSender()\n internal\n view\n virtual\n override(Context, ERC2771ContextInternal)\n returns (address)\n {\n return ERC2771ContextInternal._msgSender();\n }\n\n function _msgData()\n internal\n view\n virtual\n override(Context, ERC2771ContextInternal)\n returns (bytes calldata)\n {\n return ERC2771ContextInternal._msgData();\n }\n}\n"},"src/metatx/ERC2771ContextOwnable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../access/ownable/OwnableInternal.sol\";\nimport \"./ERC2771ContextStorage.sol\";\nimport \"./IERC2771ContextAdmin.sol\";\n\ncontract ERC2771ContextOwnable is IERC2771ContextAdmin, OwnableInternal {\n function setTrustedForwarder(address trustedForwarder) public onlyOwner {\n ERC2771ContextStorage.layout().trustedForwarder = trustedForwarder;\n }\n}\n"},"src/metatx/IERC2771ContextAdmin.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\ninterface IERC2771ContextAdmin {\n function setTrustedForwarder(address trustedForwarder) external;\n}\n"},"src/diamond/DiamondCut.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\n/******************************************************************************\\\n* Author: Nick Mudge (https://twitter.com/mudgen)\n* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535\n/******************************************************************************/\n\nimport \"./IDiamondCut.sol\";\nimport \"./DiamondStorage.sol\";\nimport \"../access/ownable/OwnableInternal.sol\";\n\n// Remember to add the loupe functions from DiamondLoupeFacet to the diamond.\n// The loupe functions are required by the EIP2535 Diamonds standard\n\n/**\n * @title Diamond - Cut\n * @notice Standard EIP-2535 cut functionality to add, replace and remove facets from a diamond.\n *\n * @custom:type eip-2535-facet\n * @custom:category Diamonds\n * @custom:provides-interfaces 0x1f931c1c\n */\ncontract DiamondCut is IDiamondCut, OwnableInternal {\n /// @notice Add/replace/remove any number of functions and optionally execute\n /// a function with delegatecall\n /// @param _diamondCut Contains the facet addresses and function selectors\n /// @param _init The address of the contract or facet to execute _calldata\n /// @param _calldata A function call, including function selector and arguments\n /// _calldata is executed with delegatecall on _init\n function diamondCut(\n FacetCut[] calldata _diamondCut,\n address _init,\n bytes calldata _calldata\n ) external override onlyOwner {\n DiamondStorage.diamondCut(_diamondCut, _init, _calldata);\n }\n}\n"},"src/diamond/DiamondLoupe.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\n/******************************************************************************\\\n* Author: Nick Mudge (https://twitter.com/mudgen)\n* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535\n/******************************************************************************/\n\nimport \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\n\nimport \"./DiamondStorage.sol\";\nimport \"./IDiamondLoupe.sol\";\n\n// The functions in DiamondLoupe MUST be added to a diamond.\n// The EIP-2535 Diamond standard requires these functions.\n\n/**\n * @title Diamond - Loupe\n * @notice Standard EIP-2535 loupe functions to allow inspecting a diamond for explorers.\n *\n * @custom:type eip-2535-facet\n * @custom:category Diamonds\n * @custom:provides-interfaces 0x48e2b093\n */\ncontract DiamondLoupe is IDiamondLoupe {\n /// @notice Gets all facets and their selectors.\n /// @return facets_ Facet\n function facets() external view override returns (Facet[] memory facets_) {\n DiamondStorage.Layout storage l = DiamondStorage.layout();\n uint256 numFacets = l.facetAddresses.length;\n facets_ = new Facet[](numFacets);\n for (uint256 i; i < numFacets; i++) {\n address facetAddress_ = l.facetAddresses[i];\n facets_[i].facetAddress = facetAddress_;\n facets_[i].functionSelectors = l.facetFunctionSelectors[facetAddress_].functionSelectors;\n }\n }\n\n /// @notice Gets all the function selectors provided by a facet.\n /// @param _facet The facet address.\n /// @return facetFunctionSelectors_\n function facetFunctionSelectors(address _facet)\n external\n view\n override\n returns (bytes4[] memory facetFunctionSelectors_)\n {\n DiamondStorage.Layout storage l = DiamondStorage.layout();\n facetFunctionSelectors_ = l.facetFunctionSelectors[_facet].functionSelectors;\n }\n\n /// @notice Get all the facet addresses used by a diamond.\n /// @return facetAddresses_\n function facetAddresses() external view override returns (address[] memory facetAddresses_) {\n DiamondStorage.Layout storage l = DiamondStorage.layout();\n facetAddresses_ = l.facetAddresses;\n }\n\n /// @notice Gets the facet that supports the given selector.\n /// @dev If facet is not found return address(0).\n /// @param _functionSelector The function selector.\n /// @return facetAddress_ The facet address.\n function facetAddress(bytes4 _functionSelector) external view override returns (address facetAddress_) {\n DiamondStorage.Layout storage l = DiamondStorage.layout();\n facetAddress_ = l.selectorToFacetAndPosition[_functionSelector].facetAddress;\n }\n}\n"},"src/access/ownable/Ownable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./IERC173.sol\";\nimport \"./OwnableInternal.sol\";\n\n/**\n * @title Ownership access control based on ERC173\n */\ncontract Ownable is IERC173, OwnableInternal {\n /**\n * @inheritdoc IERC173\n */\n function owner() public view virtual returns (address) {\n return _owner();\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions anymore. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby removing any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @inheritdoc IERC173\n */\n function transferOwnership(address account) public virtual onlyOwner {\n _transferOwnership(account);\n }\n}\n"},"src/access/ownable/OwnableERC2771.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./Ownable.sol\";\nimport \"../../metatx/ERC2771ContextInternal.sol\";\n\n/**\n * @title Ownable extension with meta-transactions support via ERC2771\n */\nabstract contract OwnableERC2771 is Ownable, ERC2771ContextInternal {\n function _msgSender() internal view virtual override(Context, ERC2771ContextInternal) returns (address) {\n return ERC2771ContextInternal._msgSender();\n }\n\n function _msgData() internal view virtual override(Context, ERC2771ContextInternal) returns (bytes calldata) {\n return ERC2771ContextInternal._msgData();\n }\n}\n"},"src/finance/sales/TieredSalesERC2771.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../metatx/ERC2771ContextInternal.sol\";\nimport \"./TieredSales.sol\";\n\n/**\n * @title Tiered Sales facet with meta-transactions support via ERC2771\n */\nabstract contract TieredSalesERC2771 is TieredSales, ERC2771ContextInternal {\n function _msgSender() internal view override(Context, ERC2771ContextInternal) returns (address) {\n return ERC2771ContextInternal._msgSender();\n }\n\n function _msgData() internal view override(Context, ERC2771ContextInternal) returns (bytes calldata) {\n return ERC2771ContextInternal._msgData();\n }\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":1337},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","devdoc","userdoc","storageLayout","evm.gasEstimates"],"":["ast"]}},"metadata":{"useLiteralContent":true}}}}} +{"v1":{"compilerVersion":"v0.8.15+commit.e14f2714","solcInput":{"language":"Solidity","sources":{"contracts/collections/ERC721/extensions/ERC721AutoIdMinterExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/math/SafeMath.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"./ERC721CollectionMetadataExtension.sol\";\n\ninterface IERC721AutoIdMinterExtension {\n function setMaxSupply(uint256 newValue) external;\n\n function freezeMaxSupply() external;\n\n function totalSupply() external view returns (uint256);\n}\n\n/**\n * @dev Extension to add minting capability with an auto incremented ID for each token and a maximum supply setting.\n */\nabstract contract ERC721AutoIdMinterExtension is\n IERC721AutoIdMinterExtension,\n ERC721CollectionMetadataExtension\n{\n using SafeMath for uint256;\n\n uint256 public maxSupply;\n bool public maxSupplyFrozen;\n\n uint256 internal _currentTokenId = 0;\n\n function __ERC721AutoIdMinterExtension_init(uint256 _maxSupply)\n internal\n onlyInitializing\n {\n __ERC721AutoIdMinterExtension_init_unchained(_maxSupply);\n }\n\n function __ERC721AutoIdMinterExtension_init_unchained(uint256 _maxSupply)\n internal\n onlyInitializing\n {\n maxSupply = _maxSupply;\n\n _registerInterface(type(IERC721AutoIdMinterExtension).interfaceId);\n _registerInterface(type(IERC721).interfaceId);\n }\n\n /* ADMIN */\n\n function setMaxSupply(uint256 newValue) public virtual override onlyOwner {\n require(!maxSupplyFrozen, \"FROZEN\");\n require(newValue >= totalSupply(), \"LOWER_THAN_SUPPLY\");\n maxSupply = newValue;\n }\n\n function freezeMaxSupply() external onlyOwner {\n maxSupplyFrozen = true;\n }\n\n /* PUBLIC */\n\n function totalSupply() public view returns (uint256) {\n return _currentTokenId;\n }\n\n /* INTERNAL */\n\n function _mintTo(address to, uint256 count) internal {\n require(totalSupply() + count <= maxSupply, \"EXCEEDS_SUPPLY\");\n\n for (uint256 i = 0; i < count; i++) {\n uint256 newTokenId = _currentTokenId;\n _safeMint(to, newTokenId);\n _incrementTokenId();\n }\n }\n\n /**\n * Increments the value of _currentTokenId\n */\n function _incrementTokenId() internal {\n _currentTokenId++;\n }\n}\n"},"contracts/collections/ERC721/extensions/ERC721CollectionMetadataExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\";\n\ninterface IERC721CollectionMetadataExtension {\n function setContractURI(string memory newValue) external;\n\n function contractURI() external view returns (string memory);\n}\n\n/**\n * @dev Extension to allow configuring contract-level collection metadata URI.\n */\nabstract contract ERC721CollectionMetadataExtension is\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721\n{\n string private _name;\n\n string private _symbol;\n\n string private _contractURI;\n\n function __ERC721CollectionMetadataExtension_init(\n string memory name_,\n string memory symbol_,\n string memory contractURI_\n ) internal onlyInitializing {\n __ERC721CollectionMetadataExtension_init_unchained(\n name_,\n symbol_,\n contractURI_\n );\n }\n\n function __ERC721CollectionMetadataExtension_init_unchained(\n string memory name_,\n string memory symbol_,\n string memory contractURI_\n ) internal onlyInitializing {\n _name = name_;\n _symbol = symbol_;\n _contractURI = contractURI_;\n\n _registerInterface(\n type(IERC721CollectionMetadataExtension).interfaceId\n );\n _registerInterface(type(IERC721).interfaceId);\n _registerInterface(type(IERC721Metadata).interfaceId);\n }\n\n /* ADMIN */\n\n function setContractURI(string memory newValue) external onlyOwner {\n _contractURI = newValue;\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n function contractURI() public view returns (string memory) {\n return _contractURI;\n }\n}\n"},"@openzeppelin/contracts/access/Ownable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n constructor() {\n _transferOwnership(_msgSender());\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions anymore. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby removing any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n"},"@openzeppelin/contracts/proxy/utils/Initializable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../../utils/Address.sol\";\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * contract MyToken is ERC20Upgradeable {\n * function initialize() initializer public {\n * __ERC20_init(\"MyToken\", \"MTK\");\n * }\n * }\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n * function initializeV2() reinitializer(2) public {\n * __ERC20Permit_init(\"MyToken\");\n * }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n * _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n /**\n * @dev Indicates that the contract has been initialized.\n * @custom:oz-retyped-from bool\n */\n uint8 private _initialized;\n\n /**\n * @dev Indicates that the contract is in the process of being initialized.\n */\n bool private _initializing;\n\n /**\n * @dev Triggered when the contract has been initialized or reinitialized.\n */\n event Initialized(uint8 version);\n\n /**\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n * `onlyInitializing` functions can be used to initialize parent contracts. Equivalent to `reinitializer(1)`.\n */\n modifier initializer() {\n bool isTopLevelCall = !_initializing;\n require(\n (isTopLevelCall && _initialized < 1) || (!Address.isContract(address(this)) && _initialized == 1),\n \"Initializable: contract is already initialized\"\n );\n _initialized = 1;\n if (isTopLevelCall) {\n _initializing = true;\n }\n _;\n if (isTopLevelCall) {\n _initializing = false;\n emit Initialized(1);\n }\n }\n\n /**\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n * used to initialize parent contracts.\n *\n * `initializer` is equivalent to `reinitializer(1)`, so a reinitializer may be used after the original\n * initialization step. This is essential to configure modules that are added through upgrades and that require\n * initialization.\n *\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n * a contract, executing them in the right order is up to the developer or operator.\n */\n modifier reinitializer(uint8 version) {\n require(!_initializing && _initialized < version, \"Initializable: contract is already initialized\");\n _initialized = version;\n _initializing = true;\n _;\n _initializing = false;\n emit Initialized(version);\n }\n\n /**\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\n */\n modifier onlyInitializing() {\n require(_initializing, \"Initializable: contract is not initializing\");\n _;\n }\n\n /**\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n * through proxies.\n */\n function _disableInitializers() internal virtual {\n require(!_initializing, \"Initializable: contract is initializing\");\n if (_initialized < type(uint8).max) {\n _initialized = type(uint8).max;\n emit Initialized(type(uint8).max);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/math/SafeMath.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol)\n\npragma solidity ^0.8.0;\n\n// CAUTION\n// This version of SafeMath should only be used with Solidity 0.8 or later,\n// because it relies on the compiler's built in overflow checks.\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations.\n *\n * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler\n * now has built in overflow checking.\n */\nlibrary SafeMath {\n /**\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n uint256 c = a + b;\n if (c < a) return (false, 0);\n return (true, c);\n }\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */\n function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n if (b > a) return (false, 0);\n return (true, a - b);\n }\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */\n function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n // benefit is lost if 'b' is also tested.\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n if (a == 0) return (true, 0);\n uint256 c = a * b;\n if (c / a != b) return (false, 0);\n return (true, c);\n }\n }\n\n /**\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\n *\n * _Available since v3.4._\n */\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n if (b == 0) return (false, 0);\n return (true, a / b);\n }\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n *\n * _Available since v3.4._\n */\n function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n if (b == 0) return (false, 0);\n return (true, a % b);\n }\n }\n\n /**\n * @dev Returns the addition of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `+` operator.\n *\n * Requirements:\n *\n * - Addition cannot overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n return a + b;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n return a - b;\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `*` operator.\n *\n * Requirements:\n *\n * - Multiplication cannot overflow.\n */\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n return a * b;\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers, reverting on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator.\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\n return a / b;\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * reverting when dividing by zero.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n return a % b;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n * overflow (when the result is negative).\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {trySub}.\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(\n uint256 a,\n uint256 b,\n string memory errorMessage\n ) internal pure returns (uint256) {\n unchecked {\n require(b <= a, errorMessage);\n return a - b;\n }\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers, reverting with custom message on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function div(\n uint256 a,\n uint256 b,\n string memory errorMessage\n ) internal pure returns (uint256) {\n unchecked {\n require(b > 0, errorMessage);\n return a / b;\n }\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * reverting with custom message when dividing by zero.\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {tryMod}.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function mod(\n uint256 a,\n uint256 b,\n string memory errorMessage\n ) internal pure returns (uint256) {\n unchecked {\n require(b > 0, errorMessage);\n return a % b;\n }\n }\n}\n"},"@openzeppelin/contracts/token/ERC721/ERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC721.sol\";\nimport \"./IERC721Receiver.sol\";\nimport \"./extensions/IERC721Metadata.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/Context.sol\";\nimport \"../../utils/Strings.sol\";\nimport \"../../utils/introspection/ERC165.sol\";\n\n/**\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\n * {ERC721Enumerable}.\n */\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\n using Address for address;\n using Strings for uint256;\n\n // Token name\n string private _name;\n\n // Token symbol\n string private _symbol;\n\n // Mapping from token ID to owner address\n mapping(uint256 => address) private _owners;\n\n // Mapping owner address to token count\n mapping(address => uint256) private _balances;\n\n // Mapping from token ID to approved address\n mapping(uint256 => address) private _tokenApprovals;\n\n // Mapping from owner to operator approvals\n mapping(address => mapping(address => bool)) private _operatorApprovals;\n\n /**\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\n return\n interfaceId == type(IERC721).interfaceId ||\n interfaceId == type(IERC721Metadata).interfaceId ||\n super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev See {IERC721-balanceOf}.\n */\n function balanceOf(address owner) public view virtual override returns (uint256) {\n require(owner != address(0), \"ERC721: address zero is not a valid owner\");\n return _balances[owner];\n }\n\n /**\n * @dev See {IERC721-ownerOf}.\n */\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\n address owner = _owners[tokenId];\n require(owner != address(0), \"ERC721: invalid token ID\");\n return owner;\n }\n\n /**\n * @dev See {IERC721Metadata-name}.\n */\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n /**\n * @dev See {IERC721Metadata-symbol}.\n */\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev See {IERC721Metadata-tokenURI}.\n */\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n _requireMinted(tokenId);\n\n string memory baseURI = _baseURI();\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \"\";\n }\n\n /**\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n * by default, can be overridden in child contracts.\n */\n function _baseURI() internal view virtual returns (string memory) {\n return \"\";\n }\n\n /**\n * @dev See {IERC721-approve}.\n */\n function approve(address to, uint256 tokenId) public virtual override {\n address owner = ERC721.ownerOf(tokenId);\n require(to != owner, \"ERC721: approval to current owner\");\n\n require(\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\n \"ERC721: approve caller is not token owner nor approved for all\"\n );\n\n _approve(to, tokenId);\n }\n\n /**\n * @dev See {IERC721-getApproved}.\n */\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\n _requireMinted(tokenId);\n\n return _tokenApprovals[tokenId];\n }\n\n /**\n * @dev See {IERC721-setApprovalForAll}.\n */\n function setApprovalForAll(address operator, bool approved) public virtual override {\n _setApprovalForAll(_msgSender(), operator, approved);\n }\n\n /**\n * @dev See {IERC721-isApprovedForAll}.\n */\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\n return _operatorApprovals[owner][operator];\n }\n\n /**\n * @dev See {IERC721-transferFrom}.\n */\n function transferFrom(\n address from,\n address to,\n uint256 tokenId\n ) public virtual override {\n //solhint-disable-next-line max-line-length\n require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: caller is not token owner nor approved\");\n\n _transfer(from, to, tokenId);\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId\n ) public virtual override {\n safeTransferFrom(from, to, tokenId, \"\");\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId,\n bytes memory data\n ) public virtual override {\n require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: caller is not token owner nor approved\");\n _safeTransfer(from, to, tokenId, data);\n }\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n *\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\n *\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n * implement alternative mechanisms to perform token transfer, such as signature-based.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeTransfer(\n address from,\n address to,\n uint256 tokenId,\n bytes memory data\n ) internal virtual {\n _transfer(from, to, tokenId);\n require(_checkOnERC721Received(from, to, tokenId, data), \"ERC721: transfer to non ERC721Receiver implementer\");\n }\n\n /**\n * @dev Returns whether `tokenId` exists.\n *\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n *\n * Tokens start existing when they are minted (`_mint`),\n * and stop existing when they are burned (`_burn`).\n */\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\n return _owners[tokenId] != address(0);\n }\n\n /**\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\n address owner = ERC721.ownerOf(tokenId);\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\n }\n\n /**\n * @dev Safely mints `tokenId` and transfers it to `to`.\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeMint(address to, uint256 tokenId) internal virtual {\n _safeMint(to, tokenId, \"\");\n }\n\n /**\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n */\n function _safeMint(\n address to,\n uint256 tokenId,\n bytes memory data\n ) internal virtual {\n _mint(to, tokenId);\n require(\n _checkOnERC721Received(address(0), to, tokenId, data),\n \"ERC721: transfer to non ERC721Receiver implementer\"\n );\n }\n\n /**\n * @dev Mints `tokenId` and transfers it to `to`.\n *\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - `to` cannot be the zero address.\n *\n * Emits a {Transfer} event.\n */\n function _mint(address to, uint256 tokenId) internal virtual {\n require(to != address(0), \"ERC721: mint to the zero address\");\n require(!_exists(tokenId), \"ERC721: token already minted\");\n\n _beforeTokenTransfer(address(0), to, tokenId);\n\n _balances[to] += 1;\n _owners[tokenId] = to;\n\n emit Transfer(address(0), to, tokenId);\n\n _afterTokenTransfer(address(0), to, tokenId);\n }\n\n /**\n * @dev Destroys `tokenId`.\n * The approval is cleared when the token is burned.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n *\n * Emits a {Transfer} event.\n */\n function _burn(uint256 tokenId) internal virtual {\n address owner = ERC721.ownerOf(tokenId);\n\n _beforeTokenTransfer(owner, address(0), tokenId);\n\n // Clear approvals\n _approve(address(0), tokenId);\n\n _balances[owner] -= 1;\n delete _owners[tokenId];\n\n emit Transfer(owner, address(0), tokenId);\n\n _afterTokenTransfer(owner, address(0), tokenId);\n }\n\n /**\n * @dev Transfers `tokenId` from `from` to `to`.\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n *\n * Emits a {Transfer} event.\n */\n function _transfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual {\n require(ERC721.ownerOf(tokenId) == from, \"ERC721: transfer from incorrect owner\");\n require(to != address(0), \"ERC721: transfer to the zero address\");\n\n _beforeTokenTransfer(from, to, tokenId);\n\n // Clear approvals from the previous owner\n _approve(address(0), tokenId);\n\n _balances[from] -= 1;\n _balances[to] += 1;\n _owners[tokenId] = to;\n\n emit Transfer(from, to, tokenId);\n\n _afterTokenTransfer(from, to, tokenId);\n }\n\n /**\n * @dev Approve `to` to operate on `tokenId`\n *\n * Emits an {Approval} event.\n */\n function _approve(address to, uint256 tokenId) internal virtual {\n _tokenApprovals[tokenId] = to;\n emit Approval(ERC721.ownerOf(tokenId), to, tokenId);\n }\n\n /**\n * @dev Approve `operator` to operate on all of `owner` tokens\n *\n * Emits an {ApprovalForAll} event.\n */\n function _setApprovalForAll(\n address owner,\n address operator,\n bool approved\n ) internal virtual {\n require(owner != operator, \"ERC721: approve to caller\");\n _operatorApprovals[owner][operator] = approved;\n emit ApprovalForAll(owner, operator, approved);\n }\n\n /**\n * @dev Reverts if the `tokenId` has not been minted yet.\n */\n function _requireMinted(uint256 tokenId) internal view virtual {\n require(_exists(tokenId), \"ERC721: invalid token ID\");\n }\n\n /**\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n * The call is not executed if the target address is not a contract.\n *\n * @param from address representing the previous owner of the given token ID\n * @param to target address that will receive the tokens\n * @param tokenId uint256 ID of the token to be transferred\n * @param data bytes optional data to send along with the call\n * @return bool whether the call correctly returned the expected magic value\n */\n function _checkOnERC721Received(\n address from,\n address to,\n uint256 tokenId,\n bytes memory data\n ) private returns (bool) {\n if (to.isContract()) {\n try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\n return retval == IERC721Receiver.onERC721Received.selector;\n } catch (bytes memory reason) {\n if (reason.length == 0) {\n revert(\"ERC721: transfer to non ERC721Receiver implementer\");\n } else {\n /// @solidity memory-safe-assembly\n assembly {\n revert(add(32, reason), mload(reason))\n }\n }\n }\n } else {\n return true;\n }\n }\n\n /**\n * @dev Hook that is called before any token transfer. This includes minting\n * and burning.\n *\n * Calling conditions:\n *\n * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n * transferred to `to`.\n * - When `from` is zero, `tokenId` will be minted for `to`.\n * - When `to` is zero, ``from``'s `tokenId` will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual {}\n\n /**\n * @dev Hook that is called after any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _afterTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual {}\n}\n"},"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165Storage.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./ERC165.sol\";\n\n/**\n * @dev Storage based implementation of the {IERC165} interface.\n *\n * Contracts may inherit from this and call {_registerInterface} to declare\n * their support of an interface.\n */\nabstract contract ERC165Storage is ERC165 {\n /**\n * @dev Mapping of interface ids to whether or not it's supported.\n */\n mapping(bytes4 => bool) private _supportedInterfaces;\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return super.supportsInterface(interfaceId) || _supportedInterfaces[interfaceId];\n }\n\n /**\n * @dev Registers the contract as an implementer of the interface defined by\n * `interfaceId`. Support of the actual ERC165 interface is automatic and\n * registering its interface id is not required.\n *\n * See {IERC165-supportsInterface}.\n *\n * Requirements:\n *\n * - `interfaceId` cannot be the ERC165 invalid interface (`0xffffffff`).\n */\n function _registerInterface(bytes4 interfaceId) internal virtual {\n require(interfaceId != 0xffffffff, \"ERC165: invalid interface id\");\n _supportedInterfaces[interfaceId] = true;\n }\n}\n"},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Metadata is IERC721 {\n /**\n * @dev Returns the token collection name.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the token collection symbol.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\n */\n function tokenURI(uint256 tokenId) external view returns (string memory);\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n}\n"},"@openzeppelin/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCall(target, data, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n require(isContract(target), \"Address: call to non-contract\");\n\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n require(isContract(target), \"Address: static call to non-contract\");\n\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(isContract(target), \"Address: delegate call to non-contract\");\n\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n }\n}\n"},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n *\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\n */\nabstract contract ERC165 is IERC165 {\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IERC165).interfaceId;\n }\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"@openzeppelin/contracts/utils/Strings.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n bytes16 private constant _HEX_SYMBOLS = \"0123456789abcdef\";\n uint8 private constant _ADDRESS_LENGTH = 20;\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n */\n function toString(uint256 value) internal pure returns (string memory) {\n // Inspired by OraclizeAPI's implementation - MIT licence\n // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\n\n if (value == 0) {\n return \"0\";\n }\n uint256 temp = value;\n uint256 digits;\n while (temp != 0) {\n digits++;\n temp /= 10;\n }\n bytes memory buffer = new bytes(digits);\n while (value != 0) {\n digits -= 1;\n buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\n value /= 10;\n }\n return string(buffer);\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n */\n function toHexString(uint256 value) internal pure returns (string memory) {\n if (value == 0) {\n return \"0x00\";\n }\n uint256 temp = value;\n uint256 length = 0;\n while (temp != 0) {\n length++;\n temp >>= 8;\n }\n return toHexString(value, length);\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n */\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n bytes memory buffer = new bytes(2 * length + 2);\n buffer[0] = \"0\";\n buffer[1] = \"x\";\n for (uint256 i = 2 * length + 1; i > 1; --i) {\n buffer[i] = _HEX_SYMBOLS[value & 0xf];\n value >>= 4;\n }\n require(value == 0, \"Strings: hex length insufficient\");\n return string(buffer);\n }\n\n /**\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\n */\n function toHexString(address addr) internal pure returns (string memory) {\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\n }\n}\n"},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC721 compliant contract.\n */\ninterface IERC721 is IERC165 {\n /**\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\n */\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\n\n /**\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\n */\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\n\n /**\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\n */\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n /**\n * @dev Returns the number of tokens in ``owner``'s account.\n */\n function balanceOf(address owner) external view returns (uint256 balance);\n\n /**\n * @dev Returns the owner of the `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function ownerOf(uint256 tokenId) external view returns (address owner);\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId,\n bytes calldata data\n ) external;\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId\n ) external;\n\n /**\n * @dev Transfers `tokenId` token from `from` to `to`.\n *\n * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address from,\n address to,\n uint256 tokenId\n ) external;\n\n /**\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\n * The approval is cleared when the token is transferred.\n *\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n *\n * Requirements:\n *\n * - The caller must own the token or be an approved operator.\n * - `tokenId` must exist.\n *\n * Emits an {Approval} event.\n */\n function approve(address to, uint256 tokenId) external;\n\n /**\n * @dev Approve or remove `operator` as an operator for the caller.\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n *\n * Requirements:\n *\n * - The `operator` cannot be the caller.\n *\n * Emits an {ApprovalForAll} event.\n */\n function setApprovalForAll(address operator, bool _approved) external;\n\n /**\n * @dev Returns the account approved for `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function getApproved(uint256 tokenId) external view returns (address operator);\n\n /**\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n *\n * See {setApprovalForAll}\n */\n function isApprovedForAll(address owner, address operator) external view returns (bool);\n}\n"},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title ERC721 token receiver interface\n * @dev Interface for any contract that wants to support safeTransfers\n * from ERC721 asset contracts.\n */\ninterface IERC721Receiver {\n /**\n * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n * by `operator` from `from`, this function is called.\n *\n * It must return its Solidity selector to confirm the token transfer.\n * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n *\n * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\n */\n function onERC721Received(\n address operator,\n address from,\n uint256 tokenId,\n bytes calldata data\n ) external returns (bytes4);\n}\n"},"contracts/collections/ERC721A/extensions/ERC721AMinterExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\nimport \"@openzeppelin/contracts/utils/math/SafeMath.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"erc721a/contracts/ERC721A.sol\";\n\nimport {IERC721AutoIdMinterExtension} from \"../../ERC721/extensions/ERC721AutoIdMinterExtension.sol\";\n\nimport \"./ERC721ACollectionMetadataExtension.sol\";\n\n/**\n * @dev Extension to add minting capability with an auto incremented ID for each token and a maximum supply setting.\n */\nabstract contract ERC721AMinterExtension is ERC721ACollectionMetadataExtension {\n using SafeMath for uint256;\n\n uint256 public maxSupply;\n bool public maxSupplyFrozen;\n\n function __ERC721AMinterExtension_init(uint256 _maxSupply)\n internal\n onlyInitializing\n {\n __ERC721AMinterExtension_init_unchained(_maxSupply);\n }\n\n function __ERC721AMinterExtension_init_unchained(uint256 _maxSupply)\n internal\n onlyInitializing\n {\n maxSupply = _maxSupply;\n\n _registerInterface(type(IERC721AutoIdMinterExtension).interfaceId);\n _registerInterface(type(IERC721).interfaceId);\n _registerInterface(type(IERC721A).interfaceId);\n }\n\n /* ADMIN */\n\n function setMaxSupply(uint256 newValue) public virtual onlyOwner {\n require(!maxSupplyFrozen, \"BASE_URI_FROZEN\");\n require(newValue >= totalSupply(), \"LOWER_THAN_SUPPLY\");\n maxSupply = newValue;\n }\n\n function freezeMaxSupply() external onlyOwner {\n maxSupplyFrozen = true;\n }\n\n /* INTERNAL */\n\n function _mintTo(address to, uint256 count) internal {\n require(totalSupply() + count <= maxSupply, \"EXCEEDS_SUPPLY\");\n _safeMint(to, count);\n }\n}\n"},"contracts/collections/ERC721A/extensions/ERC721ACollectionMetadataExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\";\n\nimport \"erc721a/contracts/ERC721A.sol\";\n\nimport {IERC721CollectionMetadataExtension} from \"../../ERC721/extensions/ERC721CollectionMetadataExtension.sol\";\n\n/**\n * @dev Extension to allow configuring contract-level collection metadata URI.\n */\nabstract contract ERC721ACollectionMetadataExtension is\n IERC721CollectionMetadataExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721A\n{\n string private _name;\n\n string private _symbol;\n\n string private _contractURI;\n\n function __ERC721ACollectionMetadataExtension_init(\n string memory name_,\n string memory symbol_,\n string memory contractURI_\n ) internal onlyInitializing {\n __ERC721ACollectionMetadataExtension_init_unchained(\n name_,\n symbol_,\n contractURI_\n );\n }\n\n function __ERC721ACollectionMetadataExtension_init_unchained(\n string memory name_,\n string memory symbol_,\n string memory contractURI_\n ) internal onlyInitializing {\n _name = name_;\n _symbol = symbol_;\n _contractURI = contractURI_;\n\n _registerInterface(\n type(IERC721CollectionMetadataExtension).interfaceId\n );\n _registerInterface(type(IERC721).interfaceId);\n _registerInterface(type(IERC721A).interfaceId);\n _registerInterface(type(IERC721Metadata).interfaceId);\n }\n\n /* ADMIN */\n\n function setContractURI(string memory newValue) external onlyOwner {\n _contractURI = newValue;\n }\n\n /* PUBLIC */\n\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721A)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function contractURI() public view returns (string memory) {\n return _contractURI;\n }\n}\n"},"erc721a/contracts/ERC721A.sol":{"content":"// SPDX-License-Identifier: MIT\n// ERC721A Contracts v4.2.2\n// Creator: Chiru Labs\n\npragma solidity ^0.8.4;\n\nimport './IERC721A.sol';\n\n/**\n * @dev Interface of ERC721 token receiver.\n */\ninterface ERC721A__IERC721Receiver {\n function onERC721Received(\n address operator,\n address from,\n uint256 tokenId,\n bytes calldata data\n ) external returns (bytes4);\n}\n\n/**\n * @title ERC721A\n *\n * @dev Implementation of the [ERC721](https://eips.ethereum.org/EIPS/eip-721)\n * Non-Fungible Token Standard, including the Metadata extension.\n * Optimized for lower gas during batch mints.\n *\n * Token IDs are minted in sequential order (e.g. 0, 1, 2, 3, ...)\n * starting from `_startTokenId()`.\n *\n * Assumptions:\n *\n * - An owner cannot have more than 2**64 - 1 (max value of uint64) of supply.\n * - The maximum token ID cannot exceed 2**256 - 1 (max value of uint256).\n */\ncontract ERC721A is IERC721A {\n // Reference type for token approval.\n struct TokenApprovalRef {\n address value;\n }\n\n // =============================================================\n // CONSTANTS\n // =============================================================\n\n // Mask of an entry in packed address data.\n uint256 private constant _BITMASK_ADDRESS_DATA_ENTRY = (1 << 64) - 1;\n\n // The bit position of `numberMinted` in packed address data.\n uint256 private constant _BITPOS_NUMBER_MINTED = 64;\n\n // The bit position of `numberBurned` in packed address data.\n uint256 private constant _BITPOS_NUMBER_BURNED = 128;\n\n // The bit position of `aux` in packed address data.\n uint256 private constant _BITPOS_AUX = 192;\n\n // Mask of all 256 bits in packed address data except the 64 bits for `aux`.\n uint256 private constant _BITMASK_AUX_COMPLEMENT = (1 << 192) - 1;\n\n // The bit position of `startTimestamp` in packed ownership.\n uint256 private constant _BITPOS_START_TIMESTAMP = 160;\n\n // The bit mask of the `burned` bit in packed ownership.\n uint256 private constant _BITMASK_BURNED = 1 << 224;\n\n // The bit position of the `nextInitialized` bit in packed ownership.\n uint256 private constant _BITPOS_NEXT_INITIALIZED = 225;\n\n // The bit mask of the `nextInitialized` bit in packed ownership.\n uint256 private constant _BITMASK_NEXT_INITIALIZED = 1 << 225;\n\n // The bit position of `extraData` in packed ownership.\n uint256 private constant _BITPOS_EXTRA_DATA = 232;\n\n // Mask of all 256 bits in a packed ownership except the 24 bits for `extraData`.\n uint256 private constant _BITMASK_EXTRA_DATA_COMPLEMENT = (1 << 232) - 1;\n\n // The mask of the lower 160 bits for addresses.\n uint256 private constant _BITMASK_ADDRESS = (1 << 160) - 1;\n\n // The maximum `quantity` that can be minted with {_mintERC2309}.\n // This limit is to prevent overflows on the address data entries.\n // For a limit of 5000, a total of 3.689e15 calls to {_mintERC2309}\n // is required to cause an overflow, which is unrealistic.\n uint256 private constant _MAX_MINT_ERC2309_QUANTITY_LIMIT = 5000;\n\n // The `Transfer` event signature is given by:\n // `keccak256(bytes(\"Transfer(address,address,uint256)\"))`.\n bytes32 private constant _TRANSFER_EVENT_SIGNATURE =\n 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef;\n\n // =============================================================\n // STORAGE\n // =============================================================\n\n // The next token ID to be minted.\n uint256 private _currentIndex;\n\n // The number of tokens burned.\n uint256 private _burnCounter;\n\n // Token name\n string private _name;\n\n // Token symbol\n string private _symbol;\n\n // Mapping from token ID to ownership details\n // An empty struct value does not necessarily mean the token is unowned.\n // See {_packedOwnershipOf} implementation for details.\n //\n // Bits Layout:\n // - [0..159] `addr`\n // - [160..223] `startTimestamp`\n // - [224] `burned`\n // - [225] `nextInitialized`\n // - [232..255] `extraData`\n mapping(uint256 => uint256) private _packedOwnerships;\n\n // Mapping owner address to address data.\n //\n // Bits Layout:\n // - [0..63] `balance`\n // - [64..127] `numberMinted`\n // - [128..191] `numberBurned`\n // - [192..255] `aux`\n mapping(address => uint256) private _packedAddressData;\n\n // Mapping from token ID to approved address.\n mapping(uint256 => TokenApprovalRef) private _tokenApprovals;\n\n // Mapping from owner to operator approvals\n mapping(address => mapping(address => bool)) private _operatorApprovals;\n\n // =============================================================\n // CONSTRUCTOR\n // =============================================================\n\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n _currentIndex = _startTokenId();\n }\n\n // =============================================================\n // TOKEN COUNTING OPERATIONS\n // =============================================================\n\n /**\n * @dev Returns the starting token ID.\n * To change the starting token ID, please override this function.\n */\n function _startTokenId() internal view virtual returns (uint256) {\n return 0;\n }\n\n /**\n * @dev Returns the next token ID to be minted.\n */\n function _nextTokenId() internal view virtual returns (uint256) {\n return _currentIndex;\n }\n\n /**\n * @dev Returns the total number of tokens in existence.\n * Burned tokens will reduce the count.\n * To get the total number of tokens minted, please see {_totalMinted}.\n */\n function totalSupply() public view virtual override returns (uint256) {\n // Counter underflow is impossible as _burnCounter cannot be incremented\n // more than `_currentIndex - _startTokenId()` times.\n unchecked {\n return _currentIndex - _burnCounter - _startTokenId();\n }\n }\n\n /**\n * @dev Returns the total amount of tokens minted in the contract.\n */\n function _totalMinted() internal view virtual returns (uint256) {\n // Counter underflow is impossible as `_currentIndex` does not decrement,\n // and it is initialized to `_startTokenId()`.\n unchecked {\n return _currentIndex - _startTokenId();\n }\n }\n\n /**\n * @dev Returns the total number of tokens burned.\n */\n function _totalBurned() internal view virtual returns (uint256) {\n return _burnCounter;\n }\n\n // =============================================================\n // ADDRESS DATA OPERATIONS\n // =============================================================\n\n /**\n * @dev Returns the number of tokens in `owner`'s account.\n */\n function balanceOf(address owner) public view virtual override returns (uint256) {\n if (owner == address(0)) revert BalanceQueryForZeroAddress();\n return _packedAddressData[owner] & _BITMASK_ADDRESS_DATA_ENTRY;\n }\n\n /**\n * Returns the number of tokens minted by `owner`.\n */\n function _numberMinted(address owner) internal view returns (uint256) {\n return (_packedAddressData[owner] >> _BITPOS_NUMBER_MINTED) & _BITMASK_ADDRESS_DATA_ENTRY;\n }\n\n /**\n * Returns the number of tokens burned by or on behalf of `owner`.\n */\n function _numberBurned(address owner) internal view returns (uint256) {\n return (_packedAddressData[owner] >> _BITPOS_NUMBER_BURNED) & _BITMASK_ADDRESS_DATA_ENTRY;\n }\n\n /**\n * Returns the auxiliary data for `owner`. (e.g. number of whitelist mint slots used).\n */\n function _getAux(address owner) internal view returns (uint64) {\n return uint64(_packedAddressData[owner] >> _BITPOS_AUX);\n }\n\n /**\n * Sets the auxiliary data for `owner`. (e.g. number of whitelist mint slots used).\n * If there are multiple variables, please pack them into a uint64.\n */\n function _setAux(address owner, uint64 aux) internal virtual {\n uint256 packed = _packedAddressData[owner];\n uint256 auxCasted;\n // Cast `aux` with assembly to avoid redundant masking.\n assembly {\n auxCasted := aux\n }\n packed = (packed & _BITMASK_AUX_COMPLEMENT) | (auxCasted << _BITPOS_AUX);\n _packedAddressData[owner] = packed;\n }\n\n // =============================================================\n // IERC165\n // =============================================================\n\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30000 gas.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n // The interface IDs are constants representing the first 4 bytes\n // of the XOR of all function selectors in the interface.\n // See: [ERC165](https://eips.ethereum.org/EIPS/eip-165)\n // (e.g. `bytes4(i.functionA.selector ^ i.functionB.selector ^ ...)`)\n return\n interfaceId == 0x01ffc9a7 || // ERC165 interface ID for ERC165.\n interfaceId == 0x80ac58cd || // ERC165 interface ID for ERC721.\n interfaceId == 0x5b5e139f; // ERC165 interface ID for ERC721Metadata.\n }\n\n // =============================================================\n // IERC721Metadata\n // =============================================================\n\n /**\n * @dev Returns the token collection name.\n */\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the token collection symbol.\n */\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\n */\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n if (!_exists(tokenId)) revert URIQueryForNonexistentToken();\n\n string memory baseURI = _baseURI();\n return bytes(baseURI).length != 0 ? string(abi.encodePacked(baseURI, _toString(tokenId))) : '';\n }\n\n /**\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n * by default, it can be overridden in child contracts.\n */\n function _baseURI() internal view virtual returns (string memory) {\n return '';\n }\n\n // =============================================================\n // OWNERSHIPS OPERATIONS\n // =============================================================\n\n /**\n * @dev Returns the owner of the `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\n return address(uint160(_packedOwnershipOf(tokenId)));\n }\n\n /**\n * @dev Gas spent here starts off proportional to the maximum mint batch size.\n * It gradually moves to O(1) as tokens get transferred around over time.\n */\n function _ownershipOf(uint256 tokenId) internal view virtual returns (TokenOwnership memory) {\n return _unpackedOwnership(_packedOwnershipOf(tokenId));\n }\n\n /**\n * @dev Returns the unpacked `TokenOwnership` struct at `index`.\n */\n function _ownershipAt(uint256 index) internal view virtual returns (TokenOwnership memory) {\n return _unpackedOwnership(_packedOwnerships[index]);\n }\n\n /**\n * @dev Initializes the ownership slot minted at `index` for efficiency purposes.\n */\n function _initializeOwnershipAt(uint256 index) internal virtual {\n if (_packedOwnerships[index] == 0) {\n _packedOwnerships[index] = _packedOwnershipOf(index);\n }\n }\n\n /**\n * Returns the packed ownership data of `tokenId`.\n */\n function _packedOwnershipOf(uint256 tokenId) private view returns (uint256) {\n uint256 curr = tokenId;\n\n unchecked {\n if (_startTokenId() <= curr)\n if (curr < _currentIndex) {\n uint256 packed = _packedOwnerships[curr];\n // If not burned.\n if (packed & _BITMASK_BURNED == 0) {\n // Invariant:\n // There will always be an initialized ownership slot\n // (i.e. `ownership.addr != address(0) && ownership.burned == false`)\n // before an unintialized ownership slot\n // (i.e. `ownership.addr == address(0) && ownership.burned == false`)\n // Hence, `curr` will not underflow.\n //\n // We can directly compare the packed value.\n // If the address is zero, packed will be zero.\n while (packed == 0) {\n packed = _packedOwnerships[--curr];\n }\n return packed;\n }\n }\n }\n revert OwnerQueryForNonexistentToken();\n }\n\n /**\n * @dev Returns the unpacked `TokenOwnership` struct from `packed`.\n */\n function _unpackedOwnership(uint256 packed) private pure returns (TokenOwnership memory ownership) {\n ownership.addr = address(uint160(packed));\n ownership.startTimestamp = uint64(packed >> _BITPOS_START_TIMESTAMP);\n ownership.burned = packed & _BITMASK_BURNED != 0;\n ownership.extraData = uint24(packed >> _BITPOS_EXTRA_DATA);\n }\n\n /**\n * @dev Packs ownership data into a single uint256.\n */\n function _packOwnershipData(address owner, uint256 flags) private view returns (uint256 result) {\n assembly {\n // Mask `owner` to the lower 160 bits, in case the upper bits somehow aren't clean.\n owner := and(owner, _BITMASK_ADDRESS)\n // `owner | (block.timestamp << _BITPOS_START_TIMESTAMP) | flags`.\n result := or(owner, or(shl(_BITPOS_START_TIMESTAMP, timestamp()), flags))\n }\n }\n\n /**\n * @dev Returns the `nextInitialized` flag set if `quantity` equals 1.\n */\n function _nextInitializedFlag(uint256 quantity) private pure returns (uint256 result) {\n // For branchless setting of the `nextInitialized` flag.\n assembly {\n // `(quantity == 1) << _BITPOS_NEXT_INITIALIZED`.\n result := shl(_BITPOS_NEXT_INITIALIZED, eq(quantity, 1))\n }\n }\n\n // =============================================================\n // APPROVAL OPERATIONS\n // =============================================================\n\n /**\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\n * The approval is cleared when the token is transferred.\n *\n * Only a single account can be approved at a time, so approving the\n * zero address clears previous approvals.\n *\n * Requirements:\n *\n * - The caller must own the token or be an approved operator.\n * - `tokenId` must exist.\n *\n * Emits an {Approval} event.\n */\n function approve(address to, uint256 tokenId) public virtual override {\n address owner = ownerOf(tokenId);\n\n if (_msgSenderERC721A() != owner)\n if (!isApprovedForAll(owner, _msgSenderERC721A())) {\n revert ApprovalCallerNotOwnerNorApproved();\n }\n\n _tokenApprovals[tokenId].value = to;\n emit Approval(owner, to, tokenId);\n }\n\n /**\n * @dev Returns the account approved for `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\n if (!_exists(tokenId)) revert ApprovalQueryForNonexistentToken();\n\n return _tokenApprovals[tokenId].value;\n }\n\n /**\n * @dev Approve or remove `operator` as an operator for the caller.\n * Operators can call {transferFrom} or {safeTransferFrom}\n * for any token owned by the caller.\n *\n * Requirements:\n *\n * - The `operator` cannot be the caller.\n *\n * Emits an {ApprovalForAll} event.\n */\n function setApprovalForAll(address operator, bool approved) public virtual override {\n if (operator == _msgSenderERC721A()) revert ApproveToCaller();\n\n _operatorApprovals[_msgSenderERC721A()][operator] = approved;\n emit ApprovalForAll(_msgSenderERC721A(), operator, approved);\n }\n\n /**\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n *\n * See {setApprovalForAll}.\n */\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\n return _operatorApprovals[owner][operator];\n }\n\n /**\n * @dev Returns whether `tokenId` exists.\n *\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n *\n * Tokens start existing when they are minted. See {_mint}.\n */\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\n return\n _startTokenId() <= tokenId &&\n tokenId < _currentIndex && // If within bounds,\n _packedOwnerships[tokenId] & _BITMASK_BURNED == 0; // and not burned.\n }\n\n /**\n * @dev Returns whether `msgSender` is equal to `approvedAddress` or `owner`.\n */\n function _isSenderApprovedOrOwner(\n address approvedAddress,\n address owner,\n address msgSender\n ) private pure returns (bool result) {\n assembly {\n // Mask `owner` to the lower 160 bits, in case the upper bits somehow aren't clean.\n owner := and(owner, _BITMASK_ADDRESS)\n // Mask `msgSender` to the lower 160 bits, in case the upper bits somehow aren't clean.\n msgSender := and(msgSender, _BITMASK_ADDRESS)\n // `msgSender == owner || msgSender == approvedAddress`.\n result := or(eq(msgSender, owner), eq(msgSender, approvedAddress))\n }\n }\n\n /**\n * @dev Returns the storage slot and value for the approved address of `tokenId`.\n */\n function _getApprovedSlotAndAddress(uint256 tokenId)\n private\n view\n returns (uint256 approvedAddressSlot, address approvedAddress)\n {\n TokenApprovalRef storage tokenApproval = _tokenApprovals[tokenId];\n // The following is equivalent to `approvedAddress = _tokenApprovals[tokenId]`.\n assembly {\n approvedAddressSlot := tokenApproval.slot\n approvedAddress := sload(approvedAddressSlot)\n }\n }\n\n // =============================================================\n // TRANSFER OPERATIONS\n // =============================================================\n\n /**\n * @dev Transfers `tokenId` from `from` to `to`.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token\n * by either {approve} or {setApprovalForAll}.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address from,\n address to,\n uint256 tokenId\n ) public virtual override {\n uint256 prevOwnershipPacked = _packedOwnershipOf(tokenId);\n\n if (address(uint160(prevOwnershipPacked)) != from) revert TransferFromIncorrectOwner();\n\n (uint256 approvedAddressSlot, address approvedAddress) = _getApprovedSlotAndAddress(tokenId);\n\n // The nested ifs save around 20+ gas over a compound boolean condition.\n if (!_isSenderApprovedOrOwner(approvedAddress, from, _msgSenderERC721A()))\n if (!isApprovedForAll(from, _msgSenderERC721A())) revert TransferCallerNotOwnerNorApproved();\n\n if (to == address(0)) revert TransferToZeroAddress();\n\n _beforeTokenTransfers(from, to, tokenId, 1);\n\n // Clear approvals from the previous owner.\n assembly {\n if approvedAddress {\n // This is equivalent to `delete _tokenApprovals[tokenId]`.\n sstore(approvedAddressSlot, 0)\n }\n }\n\n // Underflow of the sender's balance is impossible because we check for\n // ownership above and the recipient's balance can't realistically overflow.\n // Counter overflow is incredibly unrealistic as `tokenId` would have to be 2**256.\n unchecked {\n // We can directly increment and decrement the balances.\n --_packedAddressData[from]; // Updates: `balance -= 1`.\n ++_packedAddressData[to]; // Updates: `balance += 1`.\n\n // Updates:\n // - `address` to the next owner.\n // - `startTimestamp` to the timestamp of transfering.\n // - `burned` to `false`.\n // - `nextInitialized` to `true`.\n _packedOwnerships[tokenId] = _packOwnershipData(\n to,\n _BITMASK_NEXT_INITIALIZED | _nextExtraData(from, to, prevOwnershipPacked)\n );\n\n // If the next slot may not have been initialized (i.e. `nextInitialized == false`) .\n if (prevOwnershipPacked & _BITMASK_NEXT_INITIALIZED == 0) {\n uint256 nextTokenId = tokenId + 1;\n // If the next slot's address is zero and not burned (i.e. packed value is zero).\n if (_packedOwnerships[nextTokenId] == 0) {\n // If the next slot is within bounds.\n if (nextTokenId != _currentIndex) {\n // Initialize the next slot to maintain correctness for `ownerOf(tokenId + 1)`.\n _packedOwnerships[nextTokenId] = prevOwnershipPacked;\n }\n }\n }\n }\n\n emit Transfer(from, to, tokenId);\n _afterTokenTransfers(from, to, tokenId, 1);\n }\n\n /**\n * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId\n ) public virtual override {\n safeTransferFrom(from, to, tokenId, '');\n }\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token\n * by either {approve} or {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement\n * {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId,\n bytes memory _data\n ) public virtual override {\n transferFrom(from, to, tokenId);\n if (to.code.length != 0)\n if (!_checkContractOnERC721Received(from, to, tokenId, _data)) {\n revert TransferToNonERC721ReceiverImplementer();\n }\n }\n\n /**\n * @dev Hook that is called before a set of serially-ordered token IDs\n * are about to be transferred. This includes minting.\n * And also called before burning one token.\n *\n * `startTokenId` - the first token ID to be transferred.\n * `quantity` - the amount to be transferred.\n *\n * Calling conditions:\n *\n * - When `from` and `to` are both non-zero, `from`'s `tokenId` will be\n * transferred to `to`.\n * - When `from` is zero, `tokenId` will be minted for `to`.\n * - When `to` is zero, `tokenId` will be burned by `from`.\n * - `from` and `to` are never both zero.\n */\n function _beforeTokenTransfers(\n address from,\n address to,\n uint256 startTokenId,\n uint256 quantity\n ) internal virtual {}\n\n /**\n * @dev Hook that is called after a set of serially-ordered token IDs\n * have been transferred. This includes minting.\n * And also called after one token has been burned.\n *\n * `startTokenId` - the first token ID to be transferred.\n * `quantity` - the amount to be transferred.\n *\n * Calling conditions:\n *\n * - When `from` and `to` are both non-zero, `from`'s `tokenId` has been\n * transferred to `to`.\n * - When `from` is zero, `tokenId` has been minted for `to`.\n * - When `to` is zero, `tokenId` has been burned by `from`.\n * - `from` and `to` are never both zero.\n */\n function _afterTokenTransfers(\n address from,\n address to,\n uint256 startTokenId,\n uint256 quantity\n ) internal virtual {}\n\n /**\n * @dev Private function to invoke {IERC721Receiver-onERC721Received} on a target contract.\n *\n * `from` - Previous owner of the given token ID.\n * `to` - Target address that will receive the token.\n * `tokenId` - Token ID to be transferred.\n * `_data` - Optional data to send along with the call.\n *\n * Returns whether the call correctly returned the expected magic value.\n */\n function _checkContractOnERC721Received(\n address from,\n address to,\n uint256 tokenId,\n bytes memory _data\n ) private returns (bool) {\n try ERC721A__IERC721Receiver(to).onERC721Received(_msgSenderERC721A(), from, tokenId, _data) returns (\n bytes4 retval\n ) {\n return retval == ERC721A__IERC721Receiver(to).onERC721Received.selector;\n } catch (bytes memory reason) {\n if (reason.length == 0) {\n revert TransferToNonERC721ReceiverImplementer();\n } else {\n assembly {\n revert(add(32, reason), mload(reason))\n }\n }\n }\n }\n\n // =============================================================\n // MINT OPERATIONS\n // =============================================================\n\n /**\n * @dev Mints `quantity` tokens and transfers them to `to`.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - `quantity` must be greater than 0.\n *\n * Emits a {Transfer} event for each mint.\n */\n function _mint(address to, uint256 quantity) internal virtual {\n uint256 startTokenId = _currentIndex;\n if (quantity == 0) revert MintZeroQuantity();\n\n _beforeTokenTransfers(address(0), to, startTokenId, quantity);\n\n // Overflows are incredibly unrealistic.\n // `balance` and `numberMinted` have a maximum limit of 2**64.\n // `tokenId` has a maximum limit of 2**256.\n unchecked {\n // Updates:\n // - `balance += quantity`.\n // - `numberMinted += quantity`.\n //\n // We can directly add to the `balance` and `numberMinted`.\n _packedAddressData[to] += quantity * ((1 << _BITPOS_NUMBER_MINTED) | 1);\n\n // Updates:\n // - `address` to the owner.\n // - `startTimestamp` to the timestamp of minting.\n // - `burned` to `false`.\n // - `nextInitialized` to `quantity == 1`.\n _packedOwnerships[startTokenId] = _packOwnershipData(\n to,\n _nextInitializedFlag(quantity) | _nextExtraData(address(0), to, 0)\n );\n\n uint256 toMasked;\n uint256 end = startTokenId + quantity;\n\n // Use assembly to loop and emit the `Transfer` event for gas savings.\n assembly {\n // Mask `to` to the lower 160 bits, in case the upper bits somehow aren't clean.\n toMasked := and(to, _BITMASK_ADDRESS)\n // Emit the `Transfer` event.\n log4(\n 0, // Start of data (0, since no data).\n 0, // End of data (0, since no data).\n _TRANSFER_EVENT_SIGNATURE, // Signature.\n 0, // `address(0)`.\n toMasked, // `to`.\n startTokenId // `tokenId`.\n )\n\n for {\n let tokenId := add(startTokenId, 1)\n } iszero(eq(tokenId, end)) {\n tokenId := add(tokenId, 1)\n } {\n // Emit the `Transfer` event. Similar to above.\n log4(0, 0, _TRANSFER_EVENT_SIGNATURE, 0, toMasked, tokenId)\n }\n }\n if (toMasked == 0) revert MintToZeroAddress();\n\n _currentIndex = end;\n }\n _afterTokenTransfers(address(0), to, startTokenId, quantity);\n }\n\n /**\n * @dev Mints `quantity` tokens and transfers them to `to`.\n *\n * This function is intended for efficient minting only during contract creation.\n *\n * It emits only one {ConsecutiveTransfer} as defined in\n * [ERC2309](https://eips.ethereum.org/EIPS/eip-2309),\n * instead of a sequence of {Transfer} event(s).\n *\n * Calling this function outside of contract creation WILL make your contract\n * non-compliant with the ERC721 standard.\n * For full ERC721 compliance, substituting ERC721 {Transfer} event(s) with the ERC2309\n * {ConsecutiveTransfer} event is only permissible during contract creation.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - `quantity` must be greater than 0.\n *\n * Emits a {ConsecutiveTransfer} event.\n */\n function _mintERC2309(address to, uint256 quantity) internal virtual {\n uint256 startTokenId = _currentIndex;\n if (to == address(0)) revert MintToZeroAddress();\n if (quantity == 0) revert MintZeroQuantity();\n if (quantity > _MAX_MINT_ERC2309_QUANTITY_LIMIT) revert MintERC2309QuantityExceedsLimit();\n\n _beforeTokenTransfers(address(0), to, startTokenId, quantity);\n\n // Overflows are unrealistic due to the above check for `quantity` to be below the limit.\n unchecked {\n // Updates:\n // - `balance += quantity`.\n // - `numberMinted += quantity`.\n //\n // We can directly add to the `balance` and `numberMinted`.\n _packedAddressData[to] += quantity * ((1 << _BITPOS_NUMBER_MINTED) | 1);\n\n // Updates:\n // - `address` to the owner.\n // - `startTimestamp` to the timestamp of minting.\n // - `burned` to `false`.\n // - `nextInitialized` to `quantity == 1`.\n _packedOwnerships[startTokenId] = _packOwnershipData(\n to,\n _nextInitializedFlag(quantity) | _nextExtraData(address(0), to, 0)\n );\n\n emit ConsecutiveTransfer(startTokenId, startTokenId + quantity - 1, address(0), to);\n\n _currentIndex = startTokenId + quantity;\n }\n _afterTokenTransfers(address(0), to, startTokenId, quantity);\n }\n\n /**\n * @dev Safely mints `quantity` tokens and transfers them to `to`.\n *\n * Requirements:\n *\n * - If `to` refers to a smart contract, it must implement\n * {IERC721Receiver-onERC721Received}, which is called for each safe transfer.\n * - `quantity` must be greater than 0.\n *\n * See {_mint}.\n *\n * Emits a {Transfer} event for each mint.\n */\n function _safeMint(\n address to,\n uint256 quantity,\n bytes memory _data\n ) internal virtual {\n _mint(to, quantity);\n\n unchecked {\n if (to.code.length != 0) {\n uint256 end = _currentIndex;\n uint256 index = end - quantity;\n do {\n if (!_checkContractOnERC721Received(address(0), to, index++, _data)) {\n revert TransferToNonERC721ReceiverImplementer();\n }\n } while (index < end);\n // Reentrancy protection.\n if (_currentIndex != end) revert();\n }\n }\n }\n\n /**\n * @dev Equivalent to `_safeMint(to, quantity, '')`.\n */\n function _safeMint(address to, uint256 quantity) internal virtual {\n _safeMint(to, quantity, '');\n }\n\n // =============================================================\n // BURN OPERATIONS\n // =============================================================\n\n /**\n * @dev Equivalent to `_burn(tokenId, false)`.\n */\n function _burn(uint256 tokenId) internal virtual {\n _burn(tokenId, false);\n }\n\n /**\n * @dev Destroys `tokenId`.\n * The approval is cleared when the token is burned.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n *\n * Emits a {Transfer} event.\n */\n function _burn(uint256 tokenId, bool approvalCheck) internal virtual {\n uint256 prevOwnershipPacked = _packedOwnershipOf(tokenId);\n\n address from = address(uint160(prevOwnershipPacked));\n\n (uint256 approvedAddressSlot, address approvedAddress) = _getApprovedSlotAndAddress(tokenId);\n\n if (approvalCheck) {\n // The nested ifs save around 20+ gas over a compound boolean condition.\n if (!_isSenderApprovedOrOwner(approvedAddress, from, _msgSenderERC721A()))\n if (!isApprovedForAll(from, _msgSenderERC721A())) revert TransferCallerNotOwnerNorApproved();\n }\n\n _beforeTokenTransfers(from, address(0), tokenId, 1);\n\n // Clear approvals from the previous owner.\n assembly {\n if approvedAddress {\n // This is equivalent to `delete _tokenApprovals[tokenId]`.\n sstore(approvedAddressSlot, 0)\n }\n }\n\n // Underflow of the sender's balance is impossible because we check for\n // ownership above and the recipient's balance can't realistically overflow.\n // Counter overflow is incredibly unrealistic as `tokenId` would have to be 2**256.\n unchecked {\n // Updates:\n // - `balance -= 1`.\n // - `numberBurned += 1`.\n //\n // We can directly decrement the balance, and increment the number burned.\n // This is equivalent to `packed -= 1; packed += 1 << _BITPOS_NUMBER_BURNED;`.\n _packedAddressData[from] += (1 << _BITPOS_NUMBER_BURNED) - 1;\n\n // Updates:\n // - `address` to the last owner.\n // - `startTimestamp` to the timestamp of burning.\n // - `burned` to `true`.\n // - `nextInitialized` to `true`.\n _packedOwnerships[tokenId] = _packOwnershipData(\n from,\n (_BITMASK_BURNED | _BITMASK_NEXT_INITIALIZED) | _nextExtraData(from, address(0), prevOwnershipPacked)\n );\n\n // If the next slot may not have been initialized (i.e. `nextInitialized == false`) .\n if (prevOwnershipPacked & _BITMASK_NEXT_INITIALIZED == 0) {\n uint256 nextTokenId = tokenId + 1;\n // If the next slot's address is zero and not burned (i.e. packed value is zero).\n if (_packedOwnerships[nextTokenId] == 0) {\n // If the next slot is within bounds.\n if (nextTokenId != _currentIndex) {\n // Initialize the next slot to maintain correctness for `ownerOf(tokenId + 1)`.\n _packedOwnerships[nextTokenId] = prevOwnershipPacked;\n }\n }\n }\n }\n\n emit Transfer(from, address(0), tokenId);\n _afterTokenTransfers(from, address(0), tokenId, 1);\n\n // Overflow not possible, as _burnCounter cannot be exceed _currentIndex times.\n unchecked {\n _burnCounter++;\n }\n }\n\n // =============================================================\n // EXTRA DATA OPERATIONS\n // =============================================================\n\n /**\n * @dev Directly sets the extra data for the ownership data `index`.\n */\n function _setExtraDataAt(uint256 index, uint24 extraData) internal virtual {\n uint256 packed = _packedOwnerships[index];\n if (packed == 0) revert OwnershipNotInitializedForExtraData();\n uint256 extraDataCasted;\n // Cast `extraData` with assembly to avoid redundant masking.\n assembly {\n extraDataCasted := extraData\n }\n packed = (packed & _BITMASK_EXTRA_DATA_COMPLEMENT) | (extraDataCasted << _BITPOS_EXTRA_DATA);\n _packedOwnerships[index] = packed;\n }\n\n /**\n * @dev Called during each token transfer to set the 24bit `extraData` field.\n * Intended to be overridden by the cosumer contract.\n *\n * `previousExtraData` - the value of `extraData` before transfer.\n *\n * Calling conditions:\n *\n * - When `from` and `to` are both non-zero, `from`'s `tokenId` will be\n * transferred to `to`.\n * - When `from` is zero, `tokenId` will be minted for `to`.\n * - When `to` is zero, `tokenId` will be burned by `from`.\n * - `from` and `to` are never both zero.\n */\n function _extraData(\n address from,\n address to,\n uint24 previousExtraData\n ) internal view virtual returns (uint24) {}\n\n /**\n * @dev Returns the next extra data for the packed ownership data.\n * The returned result is shifted into position.\n */\n function _nextExtraData(\n address from,\n address to,\n uint256 prevOwnershipPacked\n ) private view returns (uint256) {\n uint24 extraData = uint24(prevOwnershipPacked >> _BITPOS_EXTRA_DATA);\n return uint256(_extraData(from, to, extraData)) << _BITPOS_EXTRA_DATA;\n }\n\n // =============================================================\n // OTHER OPERATIONS\n // =============================================================\n\n /**\n * @dev Returns the message sender (defaults to `msg.sender`).\n *\n * If you are writing GSN compatible contracts, you need to override this function.\n */\n function _msgSenderERC721A() internal view virtual returns (address) {\n return msg.sender;\n }\n\n /**\n * @dev Converts a uint256 to its ASCII string decimal representation.\n */\n function _toString(uint256 value) internal pure virtual returns (string memory str) {\n assembly {\n // The maximum value of a uint256 contains 78 digits (1 byte per digit),\n // but we allocate 0x80 bytes to keep the free memory pointer 32-byte word aliged.\n // We will need 1 32-byte word to store the length,\n // and 3 32-byte words to store a maximum of 78 digits. Total: 0x20 + 3 * 0x20 = 0x80.\n str := add(mload(0x40), 0x80)\n // Update the free memory pointer to allocate.\n mstore(0x40, str)\n\n // Cache the end of the memory to calculate the length later.\n let end := str\n\n // We write the string from rightmost digit to leftmost digit.\n // The following is essentially a do-while loop that also handles the zero case.\n // prettier-ignore\n for { let temp := value } 1 {} {\n str := sub(str, 1)\n // Write the character to the pointer.\n // The ASCII index of the '0' character is 48.\n mstore8(str, add(48, mod(temp, 10)))\n // Keep dividing `temp` until zero.\n temp := div(temp, 10)\n // prettier-ignore\n if iszero(temp) { break }\n }\n\n let length := sub(end, str)\n // Move the pointer 32 bytes leftwards to make room for the length.\n str := sub(str, 0x20)\n // Store the length.\n mstore(str, length)\n }\n }\n}\n"},"erc721a/contracts/IERC721A.sol":{"content":"// SPDX-License-Identifier: MIT\n// ERC721A Contracts v4.2.2\n// Creator: Chiru Labs\n\npragma solidity ^0.8.4;\n\n/**\n * @dev Interface of ERC721A.\n */\ninterface IERC721A {\n /**\n * The caller must own the token or be an approved operator.\n */\n error ApprovalCallerNotOwnerNorApproved();\n\n /**\n * The token does not exist.\n */\n error ApprovalQueryForNonexistentToken();\n\n /**\n * The caller cannot approve to their own address.\n */\n error ApproveToCaller();\n\n /**\n * Cannot query the balance for the zero address.\n */\n error BalanceQueryForZeroAddress();\n\n /**\n * Cannot mint to the zero address.\n */\n error MintToZeroAddress();\n\n /**\n * The quantity of tokens minted must be more than zero.\n */\n error MintZeroQuantity();\n\n /**\n * The token does not exist.\n */\n error OwnerQueryForNonexistentToken();\n\n /**\n * The caller must own the token or be an approved operator.\n */\n error TransferCallerNotOwnerNorApproved();\n\n /**\n * The token must be owned by `from`.\n */\n error TransferFromIncorrectOwner();\n\n /**\n * Cannot safely transfer to a contract that does not implement the\n * ERC721Receiver interface.\n */\n error TransferToNonERC721ReceiverImplementer();\n\n /**\n * Cannot transfer to the zero address.\n */\n error TransferToZeroAddress();\n\n /**\n * The token does not exist.\n */\n error URIQueryForNonexistentToken();\n\n /**\n * The `quantity` minted with ERC2309 exceeds the safety limit.\n */\n error MintERC2309QuantityExceedsLimit();\n\n /**\n * The `extraData` cannot be set on an unintialized ownership slot.\n */\n error OwnershipNotInitializedForExtraData();\n\n // =============================================================\n // STRUCTS\n // =============================================================\n\n struct TokenOwnership {\n // The address of the owner.\n address addr;\n // Stores the start time of ownership with minimal overhead for tokenomics.\n uint64 startTimestamp;\n // Whether the token has been burned.\n bool burned;\n // Arbitrary data similar to `startTimestamp` that can be set via {_extraData}.\n uint24 extraData;\n }\n\n // =============================================================\n // TOKEN COUNTERS\n // =============================================================\n\n /**\n * @dev Returns the total number of tokens in existence.\n * Burned tokens will reduce the count.\n * To get the total number of tokens minted, please see {_totalMinted}.\n */\n function totalSupply() external view returns (uint256);\n\n // =============================================================\n // IERC165\n // =============================================================\n\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n\n // =============================================================\n // IERC721\n // =============================================================\n\n /**\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\n */\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\n\n /**\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\n */\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\n\n /**\n * @dev Emitted when `owner` enables or disables\n * (`approved`) `operator` to manage all of its assets.\n */\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n /**\n * @dev Returns the number of tokens in `owner`'s account.\n */\n function balanceOf(address owner) external view returns (uint256 balance);\n\n /**\n * @dev Returns the owner of the `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function ownerOf(uint256 tokenId) external view returns (address owner);\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`,\n * checking first that contract recipients are aware of the ERC721 protocol\n * to prevent tokens from being forever locked.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If the caller is not `from`, it must be have been allowed to move\n * this token by either {approve} or {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement\n * {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId,\n bytes calldata data\n ) external;\n\n /**\n * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId\n ) external;\n\n /**\n * @dev Transfers `tokenId` from `from` to `to`.\n *\n * WARNING: Usage of this method is discouraged, use {safeTransferFrom}\n * whenever possible.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token\n * by either {approve} or {setApprovalForAll}.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address from,\n address to,\n uint256 tokenId\n ) external;\n\n /**\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\n * The approval is cleared when the token is transferred.\n *\n * Only a single account can be approved at a time, so approving the\n * zero address clears previous approvals.\n *\n * Requirements:\n *\n * - The caller must own the token or be an approved operator.\n * - `tokenId` must exist.\n *\n * Emits an {Approval} event.\n */\n function approve(address to, uint256 tokenId) external;\n\n /**\n * @dev Approve or remove `operator` as an operator for the caller.\n * Operators can call {transferFrom} or {safeTransferFrom}\n * for any token owned by the caller.\n *\n * Requirements:\n *\n * - The `operator` cannot be the caller.\n *\n * Emits an {ApprovalForAll} event.\n */\n function setApprovalForAll(address operator, bool _approved) external;\n\n /**\n * @dev Returns the account approved for `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function getApproved(uint256 tokenId) external view returns (address operator);\n\n /**\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n *\n * See {setApprovalForAll}.\n */\n function isApprovedForAll(address owner, address operator) external view returns (bool);\n\n // =============================================================\n // IERC721Metadata\n // =============================================================\n\n /**\n * @dev Returns the token collection name.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the token collection symbol.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\n */\n function tokenURI(uint256 tokenId) external view returns (string memory);\n\n // =============================================================\n // IERC2309\n // =============================================================\n\n /**\n * @dev Emitted when tokens in `fromTokenId` to `toTokenId`\n * (inclusive) is transferred from `from` to `to`, as defined in the\n * [ERC2309](https://eips.ethereum.org/EIPS/eip-2309) standard.\n *\n * See {_mintERC2309} for more details.\n */\n event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to);\n}\n"},"contracts/collections/ERC721A/presets/ERC721ATieredSalesCollection.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\n\nimport \"../../../common/WithdrawExtension.sol\";\nimport \"../../../common/LicenseExtension.sol\";\nimport \"../../../common/meta-transactions/ERC2771ContextOwnable.sol\";\nimport \"../../ERC721/extensions/ERC721RoyaltyExtension.sol\";\nimport \"../extensions/ERC721ACollectionMetadataExtension.sol\";\nimport \"../extensions/ERC721APrefixedMetadataExtension.sol\";\nimport \"../extensions/ERC721AMinterExtension.sol\";\nimport \"../extensions/ERC721AOwnerMintExtension.sol\";\nimport \"../extensions/ERC721ATieringExtension.sol\";\nimport \"../extensions/ERC721ARoleBasedMintExtension.sol\";\nimport \"../extensions/ERC721ARoleBasedLockableExtension.sol\";\n\ncontract ERC721ATieredSalesCollection is\n Ownable,\n ERC165Storage,\n WithdrawExtension,\n LicenseExtension,\n ERC721ACollectionMetadataExtension,\n ERC721APrefixedMetadataExtension,\n ERC721AOwnerMintExtension,\n ERC721ATieringExtension,\n ERC721ARoleBasedMintExtension,\n ERC721ARoleBasedLockableExtension,\n ERC721RoyaltyExtension,\n ERC2771ContextOwnable\n{\n struct Config {\n string name;\n string symbol;\n string contractURI;\n string placeholderURI;\n string tokenURIPrefix;\n uint256 maxSupply;\n Tier[] tiers;\n address defaultRoyaltyAddress;\n uint16 defaultRoyaltyBps;\n address proceedsRecipient;\n address trustedForwarder;\n LicenseVersion licenseVersion;\n }\n\n constructor(Config memory config) ERC721A(config.name, config.symbol) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _setupRole(DEFAULT_ADMIN_ROLE, deployer);\n\n _transferOwnership(deployer);\n\n __WithdrawExtension_init(config.proceedsRecipient, WithdrawMode.ANYONE);\n __LicenseExtension_init(config.licenseVersion);\n __ERC721ACollectionMetadataExtension_init(\n config.name,\n config.symbol,\n config.contractURI\n );\n __ERC721APrefixedMetadataExtension_init(\n config.placeholderURI,\n config.tokenURIPrefix\n );\n __ERC721AMinterExtension_init(config.maxSupply);\n __ERC721AOwnerMintExtension_init();\n __ERC721ARoleBasedMintExtension_init(deployer);\n __ERC721ARoleBasedLockableExtension_init();\n __ERC721ATieringExtension_init(config.tiers);\n __ERC721RoyaltyExtension_init(\n config.defaultRoyaltyAddress,\n config.defaultRoyaltyBps\n );\n __ERC2771ContextOwnable_init(config.trustedForwarder);\n }\n\n function _msgSender()\n internal\n view\n virtual\n override(ERC2771ContextOwnable, Context)\n returns (address sender)\n {\n return ERC2771ContextOwnable._msgSender();\n }\n\n function _msgData()\n internal\n view\n virtual\n override(ERC2771ContextOwnable, Context)\n returns (bytes calldata)\n {\n return ERC2771ContextOwnable._msgData();\n }\n\n function _beforeTokenTransfers(\n address from,\n address to,\n uint256 startTokenId,\n uint256 quantity\n ) internal virtual override(ERC721A, ERC721ALockableExtension) {\n ERC721ALockableExtension._beforeTokenTransfers(\n from,\n to,\n startTokenId,\n quantity\n );\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(\n ERC165Storage,\n ERC721ACollectionMetadataExtension,\n ERC721APrefixedMetadataExtension,\n ERC721AOwnerMintExtension,\n ERC721ARoleBasedMintExtension,\n ERC721RoyaltyExtension,\n ERC721ARoleBasedLockableExtension,\n LicenseExtension\n )\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function name()\n public\n view\n override(ERC721A, ERC721ACollectionMetadataExtension)\n returns (string memory)\n {\n return ERC721ACollectionMetadataExtension.name();\n }\n\n function symbol()\n public\n view\n override(ERC721A, ERC721ACollectionMetadataExtension)\n returns (string memory)\n {\n return ERC721ACollectionMetadataExtension.symbol();\n }\n\n function tokenURI(uint256 _tokenId)\n public\n view\n virtual\n override(ERC721A, ERC721APrefixedMetadataExtension)\n returns (string memory)\n {\n return ERC721APrefixedMetadataExtension.tokenURI(_tokenId);\n }\n\n function setMaxSupply(uint256 newValue)\n public\n virtual\n override(ERC721AMinterExtension, ERC721ATieringExtension)\n onlyOwner\n {\n ERC721ATieringExtension.setMaxSupply(newValue);\n }\n}\n"},"contracts/common/WithdrawExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nenum WithdrawMode {\n OWNER,\n RECIPIENT,\n ANYONE,\n NOBODY\n}\n\ninterface IWithdrawExtension {\n function setWithdrawRecipient(address _withdrawRecipient) external;\n\n function lockWithdrawRecipient() external;\n\n function revokeWithdrawPower() external;\n\n function setWithdrawMode(WithdrawMode _withdrawMode) external;\n\n function lockWithdrawMode() external;\n\n function withdraw(\n address[] calldata claimTokens,\n uint256[] calldata amounts\n ) external;\n}\n\nabstract contract WithdrawExtension is\n IWithdrawExtension,\n Initializable,\n Ownable,\n ERC165Storage\n{\n using Address for address;\n using Address for address payable;\n\n event WithdrawPowerRevoked();\n event Withdrawn(address[] claimTokens, uint256[] amounts);\n\n address public withdrawRecipient;\n bool public withdrawRecipientLocked;\n\n bool public withdrawPowerRevoked;\n\n WithdrawMode public withdrawMode;\n bool public withdrawModeLocked;\n\n /* INTERNAL */\n\n function __WithdrawExtension_init(\n address _withdrawRecipient,\n WithdrawMode _withdrawMode\n ) internal onlyInitializing {\n __WithdrawExtension_init_unchained(_withdrawRecipient, _withdrawMode);\n }\n\n function __WithdrawExtension_init_unchained(\n address _withdrawRecipient,\n WithdrawMode _withdrawMode\n ) internal onlyInitializing {\n _registerInterface(type(IWithdrawExtension).interfaceId);\n\n withdrawRecipient = _withdrawRecipient;\n withdrawMode = _withdrawMode;\n }\n\n /* ADMIN */\n\n function setWithdrawRecipient(address _withdrawRecipient)\n external\n onlyOwner\n {\n require(!withdrawRecipientLocked, \"LOCKED\");\n withdrawRecipient = _withdrawRecipient;\n }\n\n function lockWithdrawRecipient() external onlyOwner {\n require(!withdrawRecipientLocked, \"LOCKED\");\n withdrawRecipientLocked = true;\n }\n\n function setWithdrawMode(WithdrawMode _withdrawMode) external onlyOwner {\n require(!withdrawModeLocked, \"LOCKED\");\n withdrawMode = _withdrawMode;\n }\n\n function lockWithdrawMode() external onlyOwner {\n require(!withdrawModeLocked, \"OCKED\");\n withdrawModeLocked = true;\n }\n\n /* PUBLIC */\n\n function withdraw(\n address[] calldata claimTokens,\n uint256[] calldata amounts\n ) external {\n /**\n * We are using msg.sender for smaller attack surface when evaluating\n * the sender of the function call. If in future we want to handle \"withdraw\"\n * functionality via meta transactions, we should consider using `_msgSender`\n */\n _assertWithdrawAccess(msg.sender);\n\n require(withdrawRecipient != address(0), \"WITHDRAW/NO_RECIPIENT\");\n require(!withdrawPowerRevoked, \"WITHDRAW/EMERGENCY_POWER_REVOKED\");\n\n for (uint256 i = 0; i < claimTokens.length; i++) {\n if (claimTokens[i] == address(0)) {\n payable(withdrawRecipient).sendValue(amounts[i]);\n } else {\n IERC20(claimTokens[i]).transfer(withdrawRecipient, amounts[i]);\n }\n }\n\n emit Withdrawn(claimTokens, amounts);\n }\n\n function revokeWithdrawPower() external onlyOwner {\n withdrawPowerRevoked = true;\n emit WithdrawPowerRevoked();\n }\n\n /* INTERNAL */\n\n function _assertWithdrawAccess(address account) internal view {\n if (withdrawMode == WithdrawMode.NOBODY) {\n revert(\"WITHDRAW/LOCKED\");\n } else if (withdrawMode == WithdrawMode.ANYONE) {\n return;\n } else if (withdrawMode == WithdrawMode.RECIPIENT) {\n require(withdrawRecipient == account, \"WITHDRAW/ONLY_RECIPIENT\");\n } else if (withdrawMode == WithdrawMode.OWNER) {\n require(owner() == account, \"WITHDRAW/ONLY_OWNER\");\n }\n }\n}\n"},"contracts/common/LicenseExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\nimport {LicenseVersion, CantBeEvil, ICantBeEvil} from \"@a16z/contracts/licenses/CantBeEvil.sol\";\n\ninterface ILicenseExtension {\n function setLicenseVersion(LicenseVersion licenseVersion) external;\n\n function lockLicenseVersion() external;\n}\n\n/**\n * @dev Extension to signal license for this NFT collection.\n */\nabstract contract LicenseExtension is\n ILicenseExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n CantBeEvil\n{\n bool public licenseVersionLocked;\n\n constructor() CantBeEvil(LicenseVersion.CBE_PR) {}\n\n function __LicenseExtension_init(LicenseVersion _licenseVersion)\n internal\n onlyInitializing\n {\n __LicenseExtension_init_unchained(_licenseVersion);\n }\n\n function __LicenseExtension_init_unchained(LicenseVersion _licenseVersion)\n internal\n onlyInitializing\n {\n _registerInterface(type(ILicenseExtension).interfaceId);\n _registerInterface(type(ICantBeEvil).interfaceId);\n\n licenseVersion = _licenseVersion;\n }\n\n /* ADMIN */\n\n function setLicenseVersion(LicenseVersion _licenseVersion)\n external\n override\n onlyOwner\n {\n require(!licenseVersionLocked, \"LICENSE_LOCKED\");\n licenseVersion = _licenseVersion;\n }\n\n function lockLicenseVersion() external override onlyOwner {\n licenseVersionLocked = true;\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, CantBeEvil)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n}\n"},"contracts/common/meta-transactions/ERC2771ContextOwnable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/utils/Context.sol\";\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\n/**\n * @dev Context variant with ERC2771 support.\n */\nabstract contract ERC2771ContextOwnable is Initializable, Context, Ownable {\n address public _trustedForwarder;\n\n function __ERC2771ContextOwnable_init(address trustedForwarder)\n internal\n onlyInitializing\n {\n __ERC2771ContextOwnable_init_unchained(trustedForwarder);\n }\n\n function __ERC2771ContextOwnable_init_unchained(address trustedForwarder)\n internal\n onlyInitializing\n {\n _trustedForwarder = trustedForwarder;\n }\n\n function setTrustedForwarder(address trustedForwarder) public onlyOwner {\n _trustedForwarder = trustedForwarder;\n }\n\n function isTrustedForwarder(address forwarder)\n public\n view\n virtual\n returns (bool)\n {\n return forwarder == _trustedForwarder;\n }\n\n function _msgSender()\n internal\n view\n virtual\n override\n returns (address sender)\n {\n if (isTrustedForwarder(msg.sender)) {\n // The assembly code is more direct than the Solidity version using `abi.decode`.\n assembly {\n sender := shr(96, calldataload(sub(calldatasize(), 20)))\n }\n } else {\n return super._msgSender();\n }\n }\n\n function _msgData()\n internal\n view\n virtual\n override\n returns (bytes calldata)\n {\n if (isTrustedForwarder(msg.sender)) {\n return msg.data[:msg.data.length - 20];\n } else {\n return super._msgData();\n }\n }\n}\n"},"contracts/collections/ERC721/extensions/ERC721RoyaltyExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@manifoldxyz/royalty-registry-solidity/contracts/overrides/IRoyaltyOverride.sol\";\nimport \"@manifoldxyz/royalty-registry-solidity/contracts/overrides/RoyaltyOverrideCore.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"../../../misc/rarible/IRoyalties.sol\";\nimport \"../../../misc/rarible/LibPart.sol\";\nimport \"../../../misc/rarible/LibRoyaltiesV2.sol\";\n\ninterface IERC721RoyaltyExtension {\n function setTokenRoyalties(\n IEIP2981RoyaltyOverride.TokenRoyaltyConfig[] calldata royaltyConfigs\n ) external;\n\n function setDefaultRoyalty(\n IEIP2981RoyaltyOverride.TokenRoyalty calldata royalty\n ) external;\n\n function getRaribleV2Royalties(uint256 id)\n external\n view\n returns (LibPart.Part[] memory result);\n}\n\n/**\n * @dev Extension to signal configured royalty to famous marketplaces as well as ERC2981.\n *\n * This extension currently supports Standard ERC2981, Rarible.\n * Note that OpenSea is supported via Flair metadata feature.\n */\nabstract contract ERC721RoyaltyExtension is\n IERC721RoyaltyExtension,\n IRoyalties,\n Initializable,\n Ownable,\n ERC165Storage,\n EIP2981RoyaltyOverrideCore\n{\n function __ERC721RoyaltyExtension_init(\n address defaultRoyaltyReceiver,\n uint16 defaultRoyaltyBps\n ) internal onlyInitializing {\n __ERC721RoyaltyExtension_init_unchained(\n defaultRoyaltyReceiver,\n defaultRoyaltyBps\n );\n }\n\n function __ERC721RoyaltyExtension_init_unchained(\n address defaultRoyaltyReceiver,\n uint16 defaultRoyaltyBps\n ) internal onlyInitializing {\n _registerInterface(type(IERC721RoyaltyExtension).interfaceId);\n _registerInterface(type(IEIP2981).interfaceId);\n _registerInterface(type(IEIP2981RoyaltyOverride).interfaceId);\n _registerInterface(LibRoyaltiesV2._INTERFACE_ID_ROYALTIES);\n\n TokenRoyalty memory royalty = TokenRoyalty(\n defaultRoyaltyReceiver,\n defaultRoyaltyBps\n );\n\n _setDefaultRoyalty(royalty);\n }\n\n function setTokenRoyalties(TokenRoyaltyConfig[] calldata royaltyConfigs)\n external\n override(IEIP2981RoyaltyOverride, IERC721RoyaltyExtension)\n onlyOwner\n {\n _setTokenRoyalties(royaltyConfigs);\n }\n\n function setDefaultRoyalty(TokenRoyalty calldata royalty)\n external\n override(IEIP2981RoyaltyOverride, IERC721RoyaltyExtension)\n onlyOwner\n {\n _setDefaultRoyalty(royalty);\n }\n\n function getRaribleV2Royalties(uint256 id)\n external\n view\n override(IRoyalties, IERC721RoyaltyExtension)\n returns (LibPart.Part[] memory result)\n {\n result = new LibPart.Part[](1);\n\n result[0].account = payable(defaultRoyalty.recipient);\n result[0].value = defaultRoyalty.bps;\n\n id;\n // avoid unused param warning\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, EIP2981RoyaltyOverrideCore)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n}\n"},"contracts/collections/ERC721A/extensions/ERC721APrefixedMetadataExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"erc721a/contracts/ERC721A.sol\";\n\nimport {IERC721PrefixedMetadataExtension} from \"../../ERC721/extensions/ERC721PrefixedMetadataExtension.sol\";\n\n/**\n * @dev Extension to allow configuring tokens metadata URI.\n * In this extension tokens will have a shared token URI prefix,\n * therefore on tokenURI() token's ID will be appended to the base URI.\n * It also allows configuring a fallback \"placeholder\" URI when prefix is not set yet.\n */\nabstract contract ERC721APrefixedMetadataExtension is\n IERC721PrefixedMetadataExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721A\n{\n string internal _placeholderURI;\n string internal _tokenURIPrefix;\n string internal _tokenURISuffix;\n\n bool public tokenURIFrozen;\n\n function __ERC721APrefixedMetadataExtension_init(\n string memory placeholderURI_,\n string memory tokenURIPrefix_\n ) internal onlyInitializing {\n __ERC721APrefixedMetadataExtension_init_unchained(\n placeholderURI_,\n tokenURIPrefix_\n );\n }\n\n function __ERC721APrefixedMetadataExtension_init_unchained(\n string memory placeholderURI_,\n string memory tokenURIPrefix_\n ) internal onlyInitializing {\n _placeholderURI = placeholderURI_;\n _tokenURIPrefix = tokenURIPrefix_;\n _tokenURISuffix = \".json\";\n\n _registerInterface(type(IERC721PrefixedMetadataExtension).interfaceId);\n _registerInterface(type(IERC721Metadata).interfaceId);\n }\n\n /* ADMIN */\n\n function setPlaceholderURI(string memory newValue) external onlyOwner {\n _placeholderURI = newValue;\n }\n\n function setTokenURIPrefix(string memory newValue) external onlyOwner {\n require(!tokenURIFrozen, \"FROZEN\");\n _tokenURIPrefix = newValue;\n }\n\n function setTokenURISuffix(string memory newValue) external onlyOwner {\n require(!tokenURIFrozen, \"FROZEN\");\n _tokenURISuffix = newValue;\n }\n\n function freezeTokenURI() external onlyOwner {\n tokenURIFrozen = true;\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721A)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function placeholderURI() public view returns (string memory) {\n return _placeholderURI;\n }\n\n function tokenURIPrefix() public view returns (string memory) {\n return _tokenURIPrefix;\n }\n\n function tokenURISuffix() public view returns (string memory) {\n return _tokenURISuffix;\n }\n\n function tokenURI(uint256 _tokenId)\n public\n view\n virtual\n override(ERC721A, IERC721PrefixedMetadataExtension)\n returns (string memory)\n {\n return\n bytes(_tokenURIPrefix).length > 0\n ? string(\n abi.encodePacked(\n _tokenURIPrefix,\n Strings.toString(_tokenId),\n _tokenURISuffix\n )\n )\n : _placeholderURI;\n }\n}\n"},"contracts/collections/ERC721A/extensions/ERC721AOwnerMintExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"./ERC721AMinterExtension.sol\";\n\nimport {IERC721OwnerMintExtension} from \"../../ERC721/extensions/ERC721OwnerMintExtension.sol\";\n\n/**\n * @dev Extension to allow owner to mint directly without paying.\n */\nabstract contract ERC721AOwnerMintExtension is\n IERC721OwnerMintExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721AMinterExtension\n{\n function __ERC721AOwnerMintExtension_init() internal onlyInitializing {\n __ERC721AOwnerMintExtension_init_unchained();\n }\n\n function __ERC721AOwnerMintExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721OwnerMintExtension).interfaceId);\n }\n\n /* ADMIN */\n\n function mintByOwner(address to, uint256 count) external onlyOwner {\n _mintTo(to, count);\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721ACollectionMetadataExtension)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n}\n"},"contracts/collections/ERC721A/extensions/ERC721ATieringExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport \"./ERC721AMinterExtension.sol\";\n\nimport {IERC721TieringExtension} from \"../../ERC721/extensions/ERC721TieringExtension.sol\";\n\n/**\n * @dev Extension to allow multiple tiers for minting,\n * you can configure, different minting window, price, currency, max per wallet, and allowlist per tier.\n */\nabstract contract ERC721ATieringExtension is\n IERC721TieringExtension,\n Initializable,\n Ownable,\n ERC721AMinterExtension,\n ReentrancyGuard\n{\n mapping(uint256 => Tier) public tiers;\n\n uint256 public totalReserved;\n\n mapping(uint256 => uint256) public tierMints;\n\n mapping(uint256 => mapping(address => uint256)) internal walletMinted;\n\n uint256 public reservedMints;\n\n function __ERC721ATieringExtension_init(Tier[] memory _tiers)\n internal\n onlyInitializing\n {\n __ERC721ATieringExtension_init_unchained(_tiers);\n }\n\n function __ERC721ATieringExtension_init_unchained(Tier[] memory _tiers)\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721TieringExtension).interfaceId);\n\n for (uint256 i = 0; i < _tiers.length; i++) {\n tiers[i] = _tiers[i];\n totalReserved += _tiers[i].reserved;\n }\n }\n\n /* ADMIN */\n\n function configureTiering(uint256 tierId, Tier calldata tier)\n public\n onlyOwner\n {\n require(tier.maxAllocation >= tierMints[tierId], \"LOWER_THAN_MINTED\");\n\n if (tiers[tierId].reserved > 0) {\n require(tier.reserved >= tierMints[tierId], \"LOW_RESERVE_AMOUNT\");\n }\n\n if (tierMints[tierId] > 0) {\n require(\n tier.maxPerWallet >= tiers[tierId].maxPerWallet,\n \"LOW_MAX_PER_WALLET\"\n );\n }\n\n totalReserved -= tiers[tierId].reserved;\n tiers[tierId] = tier;\n totalReserved += tier.reserved;\n\n require(totalReserved <= maxSupply, \"MAX_SUPPLY_EXCEEDED\");\n }\n\n function configureTiering(\n uint256[] calldata _tierIds,\n Tier[] calldata _tiers\n ) public onlyOwner {\n for (uint256 i = 0; i < _tierIds.length; i++) {\n configureTiering(_tierIds[i], _tiers[i]);\n }\n }\n\n /* PUBLIC */\n\n function setMaxSupply(uint256 newValue)\n public\n virtual\n override(ERC721AMinterExtension)\n onlyOwner\n {\n ERC721AMinterExtension.setMaxSupply(newValue);\n require(\n newValue - totalSupply() >= totalReserved - reservedMints,\n \"LOWER_THAN_RESERVED\"\n );\n }\n\n function onTierAllowlist(\n uint256 tierId,\n address minter,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) public view returns (bool) {\n return\n MerkleProof.verify(\n proof,\n tiers[tierId].merkleRoot,\n _generateMerkleLeaf(minter, maxAllowance)\n );\n }\n\n function eligibleForTier(\n uint256 tierId,\n address minter,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) public view returns (uint256 maxMintable) {\n require(tiers[tierId].maxPerWallet > 0, \"NOT_EXISTS\");\n require(block.timestamp >= tiers[tierId].start, \"NOT_STARTED\");\n require(block.timestamp <= tiers[tierId].end, \"ALREADY_ENDED\");\n\n maxMintable = tiers[tierId].maxPerWallet - walletMinted[tierId][minter];\n\n if (tiers[tierId].merkleRoot != bytes32(0)) {\n require(\n walletMinted[tierId][minter] < maxAllowance,\n \"MAXED_ALLOWANCE\"\n );\n require(\n onTierAllowlist(tierId, minter, maxAllowance, proof),\n \"NOT_ALLOWLISTED\"\n );\n\n uint256 remainingAllowance = maxAllowance -\n walletMinted[tierId][minter];\n\n if (maxMintable > remainingAllowance) {\n maxMintable = remainingAllowance;\n }\n }\n }\n\n function mintByTier(\n uint256 tierId,\n uint256 count,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) external payable nonReentrant {\n address minter = _msgSender();\n\n uint256 maxMintable = eligibleForTier(\n tierId,\n minter,\n maxAllowance,\n proof\n );\n\n require(count <= maxMintable, \"EXCEEDS_MAX\");\n require(count <= remainingForTier(tierId), \"EXCEEDS_ALLOCATION\");\n require(\n count + tierMints[tierId] <= tiers[tierId].maxAllocation,\n \"EXCEEDS_ALLOCATION\"\n );\n\n if (tiers[tierId].currency == address(0)) {\n require(\n tiers[tierId].price * count <= msg.value,\n \"INSUFFICIENT_AMOUNT\"\n );\n } else {\n IERC20(tiers[tierId].currency).transferFrom(\n minter,\n address(this),\n tiers[tierId].price * count\n );\n }\n\n walletMinted[tierId][minter] += count;\n tierMints[tierId] += count;\n\n if (tiers[tierId].reserved > 0) {\n reservedMints += count;\n }\n\n _mintTo(minter, count);\n }\n\n function remainingForTier(uint256 tierId)\n public\n view\n returns (uint256 tierRemaining)\n {\n // Substract all the remaining reserved spots from the total remaining supply...\n tierRemaining =\n (maxSupply - totalSupply()) -\n (totalReserved - reservedMints);\n\n // If this tier has reserved spots, add remaining spots back to result...\n if (tiers[tierId].reserved > 0) {\n tierRemaining += (tiers[tierId].reserved - tierMints[tierId]);\n }\n }\n\n function walletMintedByTier(uint256 tierId, address wallet)\n public\n view\n returns (uint256)\n {\n return walletMinted[tierId][wallet];\n }\n\n /* PRIVATE */\n\n function _generateMerkleLeaf(address account, uint256 maxAllowance)\n private\n pure\n returns (bytes32)\n {\n return keccak256(abi.encodePacked(account, maxAllowance));\n }\n}\n"},"contracts/collections/ERC721A/extensions/ERC721ARoleBasedMintExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"./ERC721AMinterExtension.sol\";\n\nimport {IERC721RoleBasedMintExtension} from \"../../ERC721/extensions/ERC721RoleBasedMintExtension.sol\";\n\n/**\n * @dev Extension to allow holders of a OpenZepplin-based role to mint directly.\n */\nabstract contract ERC721ARoleBasedMintExtension is\n IERC721RoleBasedMintExtension,\n ERC165Storage,\n ERC721AMinterExtension,\n AccessControl\n{\n bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n\n function __ERC721ARoleBasedMintExtension_init(address minter)\n internal\n onlyInitializing\n {\n __ERC721ARoleBasedMintExtension_init_unchained(minter);\n }\n\n function __ERC721ARoleBasedMintExtension_init_unchained(address minter)\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721RoleBasedMintExtension).interfaceId);\n\n _setupRole(MINTER_ROLE, minter);\n }\n\n /* ADMIN */\n\n function mintByRole(address to, uint256 count) external {\n require(hasRole(MINTER_ROLE, _msgSender()), \"NOT_MINTER_ROLE\");\n\n _mintTo(to, count);\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(\n ERC165Storage,\n AccessControl,\n ERC721ACollectionMetadataExtension\n )\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n}\n"},"contracts/collections/ERC721A/extensions/ERC721ARoleBasedLockableExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity ^0.8.15;\n\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\nimport \"@openzeppelin/contracts/utils/structs/BitMaps.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\n\nimport \"./ERC721ALockableExtension.sol\";\n\ninterface IERC721ARoleBasedLockableExtension {\n function hasRoleBasedLockableExtension() external view returns (bool);\n}\n\n/**\n * @dev Extension to allow locking NFTs, for use-cases like staking, without leaving holders wallet, using roles.\n */\nabstract contract ERC721ARoleBasedLockableExtension is\n IERC721ARoleBasedLockableExtension,\n ERC721ALockableExtension,\n AccessControl\n{\n using BitMaps for BitMaps.BitMap;\n\n bytes32 public constant LOCKER_ROLE = keccak256(\"LOCKER_ROLE\");\n\n function __ERC721ARoleBasedLockableExtension_init()\n internal\n onlyInitializing\n {\n __ERC721ARoleBasedLockableExtension_init_unchained();\n }\n\n function __ERC721ARoleBasedLockableExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(\n type(IERC721ARoleBasedLockableExtension).interfaceId\n );\n }\n\n // ADMIN\n\n /**\n * Locks token(s) to effectively lock them, while keeping in the same wallet.\n * This mechanism prevents them from being transferred, yet still will show correct owner.\n */\n function lock(uint256 tokenId) public virtual nonReentrant {\n require(hasRole(LOCKER_ROLE, msg.sender), \"NOT_LOCKER_ROLE\");\n _lock(tokenId);\n }\n\n function lock(uint256[] calldata tokenIds) public virtual nonReentrant {\n require(hasRole(LOCKER_ROLE, msg.sender), \"STAKABLE_NOT_LOCKER_ROLE\");\n\n for (uint256 i = 0; i < tokenIds.length; i++) {\n _lock(tokenIds[i]);\n }\n }\n\n /**\n * Unlocks locked token(s) to be able to transfer.\n */\n function unlock(uint256 tokenId) public virtual nonReentrant {\n require(hasRole(LOCKER_ROLE, msg.sender), \"NOT_LOCKER_ROLE\");\n _unlock(tokenId);\n }\n\n function unlock(uint256[] calldata tokenIds) public virtual nonReentrant {\n require(hasRole(LOCKER_ROLE, msg.sender), \"STAKABLE_NOT_LOCKER_ROLE\");\n\n for (uint256 i = 0; i < tokenIds.length; i++) {\n _unlock(tokenIds[i]);\n }\n }\n\n // PUBLIC\n\n function hasRoleBasedLockableExtension()\n public\n view\n virtual\n returns (bool)\n {\n return true;\n }\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(AccessControl, ERC721ALockableExtension)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n}\n"},"@openzeppelin/contracts/utils/Counters.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title Counters\n * @author Matt Condon (@shrugs)\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\n *\n * Include with `using Counters for Counters.Counter;`\n */\nlibrary Counters {\n struct Counter {\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\n // this feature: see https://github.com/ethereum/solidity/issues/4637\n uint256 _value; // default: 0\n }\n\n function current(Counter storage counter) internal view returns (uint256) {\n return counter._value;\n }\n\n function increment(Counter storage counter) internal {\n unchecked {\n counter._value += 1;\n }\n }\n\n function decrement(Counter storage counter) internal {\n uint256 value = counter._value;\n require(value > 0, \"Counter: decrement overflow\");\n unchecked {\n counter._value = value - 1;\n }\n }\n\n function reset(Counter storage counter) internal {\n counter._value = 0;\n }\n}\n"},"@openzeppelin/contracts/security/ReentrancyGuard.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Contract module that helps prevent reentrant calls to a function.\n *\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n * available, which can be applied to functions to make sure there are no nested\n * (reentrant) calls to them.\n *\n * Note that because there is a single `nonReentrant` guard, functions marked as\n * `nonReentrant` may not call one another. This can be worked around by making\n * those functions `private`, and then adding `external` `nonReentrant` entry\n * points to them.\n *\n * TIP: If you would like to learn more about reentrancy and alternative ways\n * to protect against it, check out our blog post\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n */\nabstract contract ReentrancyGuard {\n // Booleans are more expensive than uint256 or any type that takes up a full\n // word because each write operation emits an extra SLOAD to first read the\n // slot's contents, replace the bits taken up by the boolean, and then write\n // back. This is the compiler's defense against contract upgrades and\n // pointer aliasing, and it cannot be disabled.\n\n // The values being non-zero value makes deployment a bit more expensive,\n // but in exchange the refund on every call to nonReentrant will be lower in\n // amount. Since refunds are capped to a percentage of the total\n // transaction's gas, it is best to keep them low in cases like this one, to\n // increase the likelihood of the full refund coming into effect.\n uint256 private constant _NOT_ENTERED = 1;\n uint256 private constant _ENTERED = 2;\n\n uint256 private _status;\n\n constructor() {\n _status = _NOT_ENTERED;\n }\n\n /**\n * @dev Prevents a contract from calling itself, directly or indirectly.\n * Calling a `nonReentrant` function from another `nonReentrant`\n * function is not supported. It is possible to prevent this from happening\n * by making the `nonReentrant` function external, and making it call a\n * `private` function that does the actual work.\n */\n modifier nonReentrant() {\n // On the first call to nonReentrant, _notEntered will be true\n require(_status != _ENTERED, \"ReentrancyGuard: reentrant call\");\n\n // Any calls to nonReentrant after this point will fail\n _status = _ENTERED;\n\n _;\n\n // By storing the original value once again, a refund is triggered (see\n // https://eips.ethereum.org/EIPS/eip-2200)\n _status = _NOT_ENTERED;\n }\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address from,\n address to,\n uint256 amount\n ) external returns (bool);\n}\n"},"@a16z/contracts/licenses/CantBeEvil.sol":{"content":"// SPDX-License-Identifier: MIT\n// a16z Contracts v0.0.1 (CantBeEvil.sol)\npragma solidity ^0.8.13;\n\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\nimport \"./ICantBeEvil.sol\";\n\nenum LicenseVersion {\n CBE_CC0,\n CBE_ECR,\n CBE_NECR,\n CBE_NECR_HS,\n CBE_PR,\n CBE_PR_HS\n}\n\ncontract CantBeEvil is ERC165, ICantBeEvil {\n using Strings for uint;\n string internal constant _BASE_LICENSE_URI = \"ar://_D9kN1WrNWbCq55BSAGRbTB4bS3v8QAPTYmBThSbX3A/\";\n LicenseVersion public licenseVersion; // return string\n constructor(LicenseVersion _licenseVersion) {\n licenseVersion = _licenseVersion;\n }\n\n function getLicenseURI() public view returns (string memory) {\n return string.concat(_BASE_LICENSE_URI, uint(licenseVersion).toString());\n }\n\n function getLicenseName() public view returns (string memory) {\n return _getLicenseVersionKeyByValue(licenseVersion);\n }\n\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165) returns (bool) {\n return\n interfaceId == type(ICantBeEvil).interfaceId ||\n super.supportsInterface(interfaceId);\n }\n\n function _getLicenseVersionKeyByValue(LicenseVersion _licenseVersion) internal pure returns (string memory) {\n require(uint8(_licenseVersion) <= 6);\n if (LicenseVersion.CBE_CC0 == _licenseVersion) return \"CBE_CC0\";\n if (LicenseVersion.CBE_ECR == _licenseVersion) return \"CBE_ECR\";\n if (LicenseVersion.CBE_NECR == _licenseVersion) return \"CBE_NECR\";\n if (LicenseVersion.CBE_NECR_HS == _licenseVersion) return \"CBE_NECR_HS\";\n if (LicenseVersion.CBE_PR == _licenseVersion) return \"CBE_PR\";\n else return \"CBE_PR_HS\";\n }\n}\n"},"@a16z/contracts/licenses/ICantBeEvil.sol":{"content":"// SPDX-License-Identifier: MIT\n// a16z Contracts v0.0.1 (ICantBeEvil.sol)\npragma solidity ^0.8.13;\n\ninterface ICantBeEvil {\n function getLicenseURI() external view returns (string memory);\n function getLicenseName() external view returns (string memory);\n}"},"contracts/misc/rarible/IRoyalties.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\npragma abicoder v2;\n\nimport \"./LibPart.sol\";\n\ninterface IRoyalties {\n function getRaribleV2Royalties(uint256 id)\n external\n view\n returns (LibPart.Part[] memory);\n}\n"},"contracts/misc/rarible/LibPart.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nlibrary LibPart {\n bytes32 public constant TYPE_HASH =\n keccak256(\"Part(address account,uint96 value)\");\n\n struct Part {\n address payable account;\n uint96 value;\n }\n\n function hash(Part memory part) internal pure returns (bytes32) {\n return keccak256(abi.encode(TYPE_HASH, part.account, part.value));\n }\n}\n"},"contracts/misc/rarible/LibRoyaltiesV2.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nlibrary LibRoyaltiesV2 {\n /*\n * bytes4(keccak256('getRaribleV2Royalties(uint256)')) == 0xcad96cca\n */\n bytes4 constant _INTERFACE_ID_ROYALTIES = 0xcad96cca;\n}\n"},"@manifoldxyz/royalty-registry-solidity/contracts/overrides/IRoyaltyOverride.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/// @author: manifold.xyz\n\nimport \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\n\n/**\n * Simple EIP2981 reference override implementation\n */\ninterface IEIP2981RoyaltyOverride is IERC165 {\n\n event TokenRoyaltyRemoved(uint256 tokenId);\n event TokenRoyaltySet(uint256 tokenId, address recipient, uint16 bps);\n event DefaultRoyaltySet(address recipient, uint16 bps);\n\n struct TokenRoyalty {\n address recipient;\n uint16 bps;\n }\n\n struct TokenRoyaltyConfig {\n uint256 tokenId;\n address recipient;\n uint16 bps;\n }\n\n /**\n * @dev Set per token royalties. Passing a recipient of address(0) will delete any existing configuration\n */\n function setTokenRoyalties(TokenRoyaltyConfig[] calldata royalties) external;\n\n /**\n * @dev Get the number of token specific overrides. Used to enumerate over all configurations\n */\n function getTokenRoyaltiesCount() external view returns(uint256);\n\n /**\n * @dev Get a token royalty configuration by index. Use in conjunction with getTokenRoyaltiesCount to get all per token configurations\n */\n function getTokenRoyaltyByIndex(uint256 index) external view returns(TokenRoyaltyConfig memory);\n\n /**\n * @dev Set a default royalty configuration. Will be used if no token specific configuration is set\n */\n function setDefaultRoyalty(TokenRoyalty calldata royalty) external;\n\n}\n"},"@manifoldxyz/royalty-registry-solidity/contracts/overrides/RoyaltyOverrideCore.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/// @author: manifold.xyz\n\nimport \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\nimport \"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\";\n\nimport \"./IRoyaltyOverride.sol\";\nimport \"../specs/IEIP2981.sol\";\n\n/**\n * Simple EIP2981 reference override implementation\n */\nabstract contract EIP2981RoyaltyOverrideCore is IEIP2981, IEIP2981RoyaltyOverride, ERC165 {\n using EnumerableSet for EnumerableSet.UintSet;\n\n TokenRoyalty public defaultRoyalty;\n mapping(uint256 => TokenRoyalty) private _tokenRoyalties;\n EnumerableSet.UintSet private _tokensWithRoyalties;\n\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\n return interfaceId == type(IEIP2981).interfaceId || interfaceId == type(IEIP2981RoyaltyOverride).interfaceId || super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev Sets token royalties. When you override this in the implementation contract\n * ensure that you access restrict it to the contract owner or admin\n */\n function _setTokenRoyalties(TokenRoyaltyConfig[] memory royaltyConfigs) internal {\n for (uint i = 0; i < royaltyConfigs.length; i++) {\n TokenRoyaltyConfig memory royaltyConfig = royaltyConfigs[i];\n require(royaltyConfig.bps < 10000, \"Invalid bps\");\n if (royaltyConfig.recipient == address(0)) {\n delete _tokenRoyalties[royaltyConfig.tokenId];\n _tokensWithRoyalties.remove(royaltyConfig.tokenId);\n emit TokenRoyaltyRemoved(royaltyConfig.tokenId);\n } else {\n _tokenRoyalties[royaltyConfig.tokenId] = TokenRoyalty(royaltyConfig.recipient, royaltyConfig.bps);\n _tokensWithRoyalties.add(royaltyConfig.tokenId);\n emit TokenRoyaltySet(royaltyConfig.tokenId, royaltyConfig.recipient, royaltyConfig.bps);\n }\n }\n }\n\n /**\n * @dev Sets default royalty. When you override this in the implementation contract\n * ensure that you access restrict it to the contract owner or admin\n */\n function _setDefaultRoyalty(TokenRoyalty memory royalty) internal {\n require(royalty.bps < 10000, \"Invalid bps\");\n defaultRoyalty = TokenRoyalty(royalty.recipient, royalty.bps);\n emit DefaultRoyaltySet(royalty.recipient, royalty.bps);\n }\n\n /**\n * @dev See {IEIP2981RoyaltyOverride-getTokenRoyaltiesCount}.\n */\n function getTokenRoyaltiesCount() external override view returns(uint256) {\n return _tokensWithRoyalties.length();\n }\n\n /**\n * @dev See {IEIP2981RoyaltyOverride-getTokenRoyaltyByIndex}.\n */\n function getTokenRoyaltyByIndex(uint256 index) external override view returns(TokenRoyaltyConfig memory) {\n uint256 tokenId = _tokensWithRoyalties.at(index);\n TokenRoyalty memory royalty = _tokenRoyalties[tokenId];\n return TokenRoyaltyConfig(tokenId, royalty.recipient, royalty.bps);\n }\n\n /**\n * @dev See {IEIP2981RoyaltyOverride-royaltyInfo}.\n */\n function royaltyInfo(uint256 tokenId, uint256 value) public override view returns (address, uint256) {\n if (_tokenRoyalties[tokenId].recipient != address(0)) {\n return (_tokenRoyalties[tokenId].recipient, value*_tokenRoyalties[tokenId].bps/10000);\n }\n if (defaultRoyalty.recipient != address(0) && defaultRoyalty.bps != 0) {\n return (defaultRoyalty.recipient, value*defaultRoyalty.bps/10000);\n }\n return (address(0), 0);\n }\n}\n"},"@openzeppelin/contracts/utils/structs/EnumerableSet.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/structs/EnumerableSet.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for managing\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n * types.\n *\n * Sets have the following properties:\n *\n * - Elements are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```\n * contract Example {\n * // Add the library methods\n * using EnumerableSet for EnumerableSet.AddressSet;\n *\n * // Declare a set state variable\n * EnumerableSet.AddressSet private mySet;\n * }\n * ```\n *\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n * and `uint256` (`UintSet`) are supported.\n *\n * [WARNING]\n * ====\n * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure unusable.\n * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\n *\n * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an array of EnumerableSet.\n * ====\n */\nlibrary EnumerableSet {\n // To implement this library for multiple types with as little code\n // repetition as possible, we write it in terms of a generic Set type with\n // bytes32 values.\n // The Set implementation uses private functions, and user-facing\n // implementations (such as AddressSet) are just wrappers around the\n // underlying Set.\n // This means that we can only create new EnumerableSets for types that fit\n // in bytes32.\n\n struct Set {\n // Storage of set values\n bytes32[] _values;\n // Position of the value in the `values` array, plus 1 because index 0\n // means a value is not in the set.\n mapping(bytes32 => uint256) _indexes;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function _add(Set storage set, bytes32 value) private returns (bool) {\n if (!_contains(set, value)) {\n set._values.push(value);\n // The value is stored at length-1, but we add 1 to all indexes\n // and use 0 as a sentinel value\n set._indexes[value] = set._values.length;\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function _remove(Set storage set, bytes32 value) private returns (bool) {\n // We read and store the value's index to prevent multiple reads from the same storage slot\n uint256 valueIndex = set._indexes[value];\n\n if (valueIndex != 0) {\n // Equivalent to contains(set, value)\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\n // the array, and then remove the last element (sometimes called as 'swap and pop').\n // This modifies the order of the array, as noted in {at}.\n\n uint256 toDeleteIndex = valueIndex - 1;\n uint256 lastIndex = set._values.length - 1;\n\n if (lastIndex != toDeleteIndex) {\n bytes32 lastValue = set._values[lastIndex];\n\n // Move the last value to the index where the value to delete is\n set._values[toDeleteIndex] = lastValue;\n // Update the index for the moved value\n set._indexes[lastValue] = valueIndex; // Replace lastValue's index to valueIndex\n }\n\n // Delete the slot where the moved value was stored\n set._values.pop();\n\n // Delete the index for the deleted slot\n delete set._indexes[value];\n\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function _contains(Set storage set, bytes32 value) private view returns (bool) {\n return set._indexes[value] != 0;\n }\n\n /**\n * @dev Returns the number of values on the set. O(1).\n */\n function _length(Set storage set) private view returns (uint256) {\n return set._values.length;\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function _at(Set storage set, uint256 index) private view returns (bytes32) {\n return set._values[index];\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function _values(Set storage set) private view returns (bytes32[] memory) {\n return set._values;\n }\n\n // Bytes32Set\n\n struct Bytes32Set {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n return _add(set._inner, value);\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n return _remove(set._inner, value);\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\n return _contains(set._inner, value);\n }\n\n /**\n * @dev Returns the number of values in the set. O(1).\n */\n function length(Bytes32Set storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\n return _at(set._inner, index);\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {\n return _values(set._inner);\n }\n\n // AddressSet\n\n struct AddressSet {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(AddressSet storage set, address value) internal returns (bool) {\n return _add(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(AddressSet storage set, address value) internal returns (bool) {\n return _remove(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(AddressSet storage set, address value) internal view returns (bool) {\n return _contains(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Returns the number of values in the set. O(1).\n */\n function length(AddressSet storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\n return address(uint160(uint256(_at(set._inner, index))));\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function values(AddressSet storage set) internal view returns (address[] memory) {\n bytes32[] memory store = _values(set._inner);\n address[] memory result;\n\n /// @solidity memory-safe-assembly\n assembly {\n result := store\n }\n\n return result;\n }\n\n // UintSet\n\n struct UintSet {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(UintSet storage set, uint256 value) internal returns (bool) {\n return _add(set._inner, bytes32(value));\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(UintSet storage set, uint256 value) internal returns (bool) {\n return _remove(set._inner, bytes32(value));\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(UintSet storage set, uint256 value) internal view returns (bool) {\n return _contains(set._inner, bytes32(value));\n }\n\n /**\n * @dev Returns the number of values on the set. O(1).\n */\n function length(UintSet storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(UintSet storage set, uint256 index) internal view returns (uint256) {\n return uint256(_at(set._inner, index));\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function values(UintSet storage set) internal view returns (uint256[] memory) {\n bytes32[] memory store = _values(set._inner);\n uint256[] memory result;\n\n /// @solidity memory-safe-assembly\n assembly {\n result := store\n }\n\n return result;\n }\n}\n"},"@manifoldxyz/royalty-registry-solidity/contracts/specs/IEIP2981.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * EIP-2981\n */\ninterface IEIP2981 {\n /**\n * bytes4(keccak256(\"royaltyInfo(uint256,uint256)\")) == 0x2a55205a\n *\n * => 0x2a55205a = 0x2a55205a\n */\n function royaltyInfo(uint256 tokenId, uint256 value) external view returns (address, uint256);\n}"},"contracts/collections/ERC721/extensions/ERC721PrefixedMetadataExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"./ERC721CollectionMetadataExtension.sol\";\n\ninterface IERC721PrefixedMetadataExtension {\n function setPlaceholderURI(string memory newValue) external;\n\n function setTokenURIPrefix(string memory newValue) external;\n\n function setTokenURISuffix(string memory newValue) external;\n\n function placeholderURI() external view returns (string memory);\n\n function tokenURIPrefix() external view returns (string memory);\n\n function tokenURISuffix() external view returns (string memory);\n\n function tokenURI(uint256 _tokenId) external view returns (string memory);\n\n function freezeTokenURI() external;\n}\n\n/**\n * @dev Extension to allow configuring tokens metadata URI.\n * In this extension tokens will have a shared token URI prefix,\n * therefore on tokenURI() token's ID will be appended to the base URI.\n * It also allows configuring a fallback \"placeholder\" URI when prefix is not set yet.\n */\nabstract contract ERC721PrefixedMetadataExtension is\n IERC721PrefixedMetadataExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721\n{\n string internal _placeholderURI;\n string internal _tokenURIPrefix;\n string internal _tokenURISuffix;\n\n bool public tokenURIFrozen;\n\n function __ERC721PrefixedMetadataExtension_init(\n string memory placeholderURI_,\n string memory tokenURIPrefix_\n ) internal onlyInitializing {\n __ERC721PrefixedMetadataExtension_init_unchained(\n placeholderURI_,\n tokenURIPrefix_\n );\n }\n\n function __ERC721PrefixedMetadataExtension_init_unchained(\n string memory placeholderURI_,\n string memory tokenURIPrefix_\n ) internal onlyInitializing {\n _placeholderURI = placeholderURI_;\n _tokenURIPrefix = tokenURIPrefix_;\n _tokenURISuffix = \".json\";\n\n _registerInterface(type(IERC721PrefixedMetadataExtension).interfaceId);\n _registerInterface(type(IERC721Metadata).interfaceId);\n }\n\n /* ADMIN */\n\n function setPlaceholderURI(string memory newValue) external onlyOwner {\n _placeholderURI = newValue;\n }\n\n function setTokenURIPrefix(string memory newValue) external onlyOwner {\n require(!tokenURIFrozen, \"FROZEN\");\n _tokenURIPrefix = newValue;\n }\n\n function setTokenURISuffix(string memory newValue) external onlyOwner {\n require(!tokenURIFrozen, \"FROZEN\");\n _tokenURISuffix = newValue;\n }\n\n function freezeTokenURI() external onlyOwner {\n tokenURIFrozen = true;\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function placeholderURI() public view returns (string memory) {\n return _placeholderURI;\n }\n\n function tokenURIPrefix() public view returns (string memory) {\n return _tokenURIPrefix;\n }\n\n function tokenURISuffix() public view returns (string memory) {\n return _tokenURISuffix;\n }\n\n function tokenURI(uint256 _tokenId)\n public\n view\n virtual\n override(ERC721, IERC721PrefixedMetadataExtension)\n returns (string memory)\n {\n return\n bytes(_tokenURIPrefix).length > 0\n ? string(\n abi.encodePacked(\n _tokenURIPrefix,\n Strings.toString(_tokenId),\n _tokenURISuffix\n )\n )\n : _placeholderURI;\n }\n}\n"},"contracts/collections/ERC721/extensions/ERC721OwnerMintExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"./ERC721AutoIdMinterExtension.sol\";\n\ninterface IERC721OwnerMintExtension {\n function mintByOwner(address to, uint256 count) external;\n}\n\n/**\n * @dev Extension to allow owner to mint directly without paying.\n */\nabstract contract ERC721OwnerMintExtension is\n IERC721OwnerMintExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721AutoIdMinterExtension\n{\n function __ERC721OwnerMintExtension_init() internal onlyInitializing {\n __ERC721OwnerMintExtension_init_unchained();\n }\n\n function __ERC721OwnerMintExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721OwnerMintExtension).interfaceId);\n }\n\n /* ADMIN */\n\n function mintByOwner(address to, uint256 count) external onlyOwner {\n _mintTo(to, count);\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721CollectionMetadataExtension)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n}\n"},"contracts/collections/ERC721/extensions/ERC721TieringExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport \"./ERC721AutoIdMinterExtension.sol\";\n\ninterface IERC721TieringExtension {\n struct Tier {\n uint256 start;\n uint256 end;\n address currency;\n uint256 price;\n uint256 maxPerWallet;\n bytes32 merkleRoot;\n uint256 reserved;\n uint256 maxAllocation;\n }\n\n function onTierAllowlist(\n uint256 tierId,\n address minter,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) external view returns (bool);\n\n function eligibleForTier(\n uint256 tierId,\n address minter,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) external view returns (uint256);\n\n function mintByTier(\n uint256 tierId,\n uint256 count,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) external payable;\n}\n\n/**\n * @dev Extension to allow multiple tiers for minting,\n * you can configure, different minting window, price, currency, max per wallet, and allowlist per tier.\n */\nabstract contract ERC721TieringExtension is\n IERC721TieringExtension,\n Initializable,\n Ownable,\n ERC721AutoIdMinterExtension,\n ReentrancyGuard\n{\n mapping(uint256 => Tier) public tiers;\n\n uint256 public totalReserved;\n\n mapping(uint256 => uint256) public tierMints;\n\n mapping(uint256 => mapping(address => uint256)) public walletMinted;\n\n uint256 public reservedMints;\n\n function __ERC721TieringExtension_init(Tier[] memory _tiers)\n internal\n onlyInitializing\n {\n __ERC721TieringExtension_init_unchained(_tiers);\n }\n\n function __ERC721TieringExtension_init_unchained(Tier[] memory _tiers)\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721TieringExtension).interfaceId);\n\n for (uint256 i = 0; i < _tiers.length; i++) {\n tiers[i] = _tiers[i];\n totalReserved += _tiers[i].reserved;\n }\n }\n\n /* ADMIN */\n\n function configureTiering(uint256 tierId, Tier calldata tier)\n public\n onlyOwner\n {\n require(tier.maxAllocation >= tierMints[tierId], \"LOWER_THAN_MINTED\");\n\n if (tiers[tierId].reserved > 0) {\n require(tier.reserved >= tierMints[tierId], \"LOW_RESERVE_AMOUNT\");\n }\n\n if (tierMints[tierId] > 0) {\n require(\n tier.maxPerWallet >= tiers[tierId].maxPerWallet,\n \"LOW_MAX_PER_WALLET\"\n );\n }\n\n totalReserved -= tiers[tierId].reserved;\n tiers[tierId] = tier;\n totalReserved += tier.reserved;\n\n require(totalReserved <= maxSupply, \"MAX_SUPPLY_EXCEEDED\");\n }\n\n function configureTiering(\n uint256[] calldata _tierIds,\n Tier[] calldata _tiers\n ) public onlyOwner {\n for (uint256 i = 0; i < _tierIds.length; i++) {\n configureTiering(_tierIds[i], _tiers[i]);\n }\n }\n\n /* PUBLIC */\n\n function setMaxSupply(uint256 newValue)\n public\n virtual\n override(ERC721AutoIdMinterExtension)\n onlyOwner\n {\n ERC721AutoIdMinterExtension.setMaxSupply(newValue);\n require(\n newValue - totalSupply() >= totalReserved - reservedMints,\n \"LOWER_THAN_RESERVED\"\n );\n }\n\n function onTierAllowlist(\n uint256 tierId,\n address minter,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) public view returns (bool) {\n return\n MerkleProof.verify(\n proof,\n tiers[tierId].merkleRoot,\n _generateMerkleLeaf(minter, maxAllowance)\n );\n }\n\n function eligibleForTier(\n uint256 tierId,\n address minter,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) public view returns (uint256 maxMintable) {\n require(tiers[tierId].maxPerWallet > 0, \"NOT_EXISTS\");\n require(block.timestamp >= tiers[tierId].start, \"NOT_STARTED\");\n require(block.timestamp <= tiers[tierId].end, \"ALREADY_ENDED\");\n\n maxMintable = tiers[tierId].maxPerWallet - walletMinted[tierId][minter];\n\n if (tiers[tierId].merkleRoot != bytes32(0)) {\n require(\n walletMinted[tierId][minter] < maxAllowance,\n \"MAXED_ALLOWANCE\"\n );\n require(\n onTierAllowlist(tierId, minter, maxAllowance, proof),\n \"NOT_ALLOWLISTED\"\n );\n\n uint256 remainingAllowance = maxAllowance -\n walletMinted[tierId][minter];\n\n if (maxMintable > remainingAllowance) {\n maxMintable = remainingAllowance;\n }\n }\n }\n\n function mintByTier(\n uint256 tierId,\n uint256 count,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) external payable nonReentrant {\n address minter = _msgSender();\n\n uint256 maxMintable = eligibleForTier(\n tierId,\n minter,\n maxAllowance,\n proof\n );\n\n require(count <= maxMintable, \"EXCEEDS_MAX\");\n require(count <= remainingForTier(tierId), \"EXCEEDS_ALLOCATION\");\n require(\n count + tierMints[tierId] <= tiers[tierId].maxAllocation,\n \"EXCEEDS_ALLOCATION\"\n );\n\n if (tiers[tierId].currency == address(0)) {\n require(\n tiers[tierId].price * count <= msg.value,\n \"INSUFFICIENT_AMOUNT\"\n );\n } else {\n IERC20(tiers[tierId].currency).transferFrom(\n minter,\n address(this),\n tiers[tierId].price * count\n );\n }\n\n walletMinted[tierId][minter] += count;\n tierMints[tierId] += count;\n\n if (tiers[tierId].reserved > 0) {\n reservedMints += count;\n }\n\n _mintTo(minter, count);\n }\n\n function remainingForTier(uint256 tierId)\n public\n view\n returns (uint256 tierRemaining)\n {\n // Substract all the remaining reserved spots from the total remaining supply...\n tierRemaining =\n (maxSupply - totalSupply()) -\n (totalReserved - reservedMints);\n\n // If this tier has reserved spots, add remaining spots back to result...\n if (tiers[tierId].reserved > 0) {\n tierRemaining += (tiers[tierId].reserved - tierMints[tierId]);\n }\n }\n\n function walletMintedByTier(uint256 tierId, address wallet)\n public\n view\n returns (uint256)\n {\n return walletMinted[tierId][wallet];\n }\n\n /* PRIVATE */\n\n function _generateMerkleLeaf(address account, uint256 maxAllowance)\n private\n pure\n returns (bytes32)\n {\n return keccak256(abi.encodePacked(account, maxAllowance));\n }\n}\n"},"@openzeppelin/contracts/utils/cryptography/MerkleProof.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/cryptography/MerkleProof.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev These functions deal with verification of Merkle Tree proofs.\n *\n * The proofs can be generated using the JavaScript library\n * https://github.com/miguelmota/merkletreejs[merkletreejs].\n * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled.\n *\n * See `test/utils/cryptography/MerkleProof.test.js` for some examples.\n *\n * WARNING: You should avoid using leaf values that are 64 bytes long prior to\n * hashing, or use a hash function other than keccak256 for hashing leaves.\n * This is because the concatenation of a sorted pair of internal nodes in\n * the merkle tree could be reinterpreted as a leaf value.\n */\nlibrary MerkleProof {\n /**\n * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree\n * defined by `root`. For this, a `proof` must be provided, containing\n * sibling hashes on the branch from the leaf to the root of the tree. Each\n * pair of leaves and each pair of pre-images are assumed to be sorted.\n */\n function verify(\n bytes32[] memory proof,\n bytes32 root,\n bytes32 leaf\n ) internal pure returns (bool) {\n return processProof(proof, leaf) == root;\n }\n\n /**\n * @dev Calldata version of {verify}\n *\n * _Available since v4.7._\n */\n function verifyCalldata(\n bytes32[] calldata proof,\n bytes32 root,\n bytes32 leaf\n ) internal pure returns (bool) {\n return processProofCalldata(proof, leaf) == root;\n }\n\n /**\n * @dev Returns the rebuilt hash obtained by traversing a Merkle tree up\n * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt\n * hash matches the root of the tree. When processing the proof, the pairs\n * of leafs & pre-images are assumed to be sorted.\n *\n * _Available since v4.4._\n */\n function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) {\n bytes32 computedHash = leaf;\n for (uint256 i = 0; i < proof.length; i++) {\n computedHash = _hashPair(computedHash, proof[i]);\n }\n return computedHash;\n }\n\n /**\n * @dev Calldata version of {processProof}\n *\n * _Available since v4.7._\n */\n function processProofCalldata(bytes32[] calldata proof, bytes32 leaf) internal pure returns (bytes32) {\n bytes32 computedHash = leaf;\n for (uint256 i = 0; i < proof.length; i++) {\n computedHash = _hashPair(computedHash, proof[i]);\n }\n return computedHash;\n }\n\n /**\n * @dev Returns true if the `leaves` can be proved to be a part of a Merkle tree defined by\n * `root`, according to `proof` and `proofFlags` as described in {processMultiProof}.\n *\n * _Available since v4.7._\n */\n function multiProofVerify(\n bytes32[] memory proof,\n bool[] memory proofFlags,\n bytes32 root,\n bytes32[] memory leaves\n ) internal pure returns (bool) {\n return processMultiProof(proof, proofFlags, leaves) == root;\n }\n\n /**\n * @dev Calldata version of {multiProofVerify}\n *\n * _Available since v4.7._\n */\n function multiProofVerifyCalldata(\n bytes32[] calldata proof,\n bool[] calldata proofFlags,\n bytes32 root,\n bytes32[] memory leaves\n ) internal pure returns (bool) {\n return processMultiProofCalldata(proof, proofFlags, leaves) == root;\n }\n\n /**\n * @dev Returns the root of a tree reconstructed from `leaves` and the sibling nodes in `proof`,\n * consuming from one or the other at each step according to the instructions given by\n * `proofFlags`.\n *\n * _Available since v4.7._\n */\n function processMultiProof(\n bytes32[] memory proof,\n bool[] memory proofFlags,\n bytes32[] memory leaves\n ) internal pure returns (bytes32 merkleRoot) {\n // This function rebuild the root hash by traversing the tree up from the leaves. The root is rebuilt by\n // consuming and producing values on a queue. The queue starts with the `leaves` array, then goes onto the\n // `hashes` array. At the end of the process, the last hash in the `hashes` array should contain the root of\n // the merkle tree.\n uint256 leavesLen = leaves.length;\n uint256 totalHashes = proofFlags.length;\n\n // Check proof validity.\n require(leavesLen + proof.length - 1 == totalHashes, \"MerkleProof: invalid multiproof\");\n\n // The xxxPos values are \"pointers\" to the next value to consume in each array. All accesses are done using\n // `xxx[xxxPos++]`, which return the current value and increment the pointer, thus mimicking a queue's \"pop\".\n bytes32[] memory hashes = new bytes32[](totalHashes);\n uint256 leafPos = 0;\n uint256 hashPos = 0;\n uint256 proofPos = 0;\n // At each step, we compute the next hash using two values:\n // - a value from the \"main queue\". If not all leaves have been consumed, we get the next leaf, otherwise we\n // get the next hash.\n // - depending on the flag, either another value for the \"main queue\" (merging branches) or an element from the\n // `proof` array.\n for (uint256 i = 0; i < totalHashes; i++) {\n bytes32 a = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++];\n bytes32 b = proofFlags[i] ? leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++] : proof[proofPos++];\n hashes[i] = _hashPair(a, b);\n }\n\n if (totalHashes > 0) {\n return hashes[totalHashes - 1];\n } else if (leavesLen > 0) {\n return leaves[0];\n } else {\n return proof[0];\n }\n }\n\n /**\n * @dev Calldata version of {processMultiProof}\n *\n * _Available since v4.7._\n */\n function processMultiProofCalldata(\n bytes32[] calldata proof,\n bool[] calldata proofFlags,\n bytes32[] memory leaves\n ) internal pure returns (bytes32 merkleRoot) {\n // This function rebuild the root hash by traversing the tree up from the leaves. The root is rebuilt by\n // consuming and producing values on a queue. The queue starts with the `leaves` array, then goes onto the\n // `hashes` array. At the end of the process, the last hash in the `hashes` array should contain the root of\n // the merkle tree.\n uint256 leavesLen = leaves.length;\n uint256 totalHashes = proofFlags.length;\n\n // Check proof validity.\n require(leavesLen + proof.length - 1 == totalHashes, \"MerkleProof: invalid multiproof\");\n\n // The xxxPos values are \"pointers\" to the next value to consume in each array. All accesses are done using\n // `xxx[xxxPos++]`, which return the current value and increment the pointer, thus mimicking a queue's \"pop\".\n bytes32[] memory hashes = new bytes32[](totalHashes);\n uint256 leafPos = 0;\n uint256 hashPos = 0;\n uint256 proofPos = 0;\n // At each step, we compute the next hash using two values:\n // - a value from the \"main queue\". If not all leaves have been consumed, we get the next leaf, otherwise we\n // get the next hash.\n // - depending on the flag, either another value for the \"main queue\" (merging branches) or an element from the\n // `proof` array.\n for (uint256 i = 0; i < totalHashes; i++) {\n bytes32 a = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++];\n bytes32 b = proofFlags[i] ? leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++] : proof[proofPos++];\n hashes[i] = _hashPair(a, b);\n }\n\n if (totalHashes > 0) {\n return hashes[totalHashes - 1];\n } else if (leavesLen > 0) {\n return leaves[0];\n } else {\n return proof[0];\n }\n }\n\n function _hashPair(bytes32 a, bytes32 b) private pure returns (bytes32) {\n return a < b ? _efficientHash(a, b) : _efficientHash(b, a);\n }\n\n function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) {\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x00, a)\n mstore(0x20, b)\n value := keccak256(0x00, 0x40)\n }\n }\n}\n"},"contracts/collections/ERC721/extensions/ERC721RoleBasedMintExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"./ERC721AutoIdMinterExtension.sol\";\n\ninterface IERC721RoleBasedMintExtension {\n function mintByRole(address to, uint256 count) external;\n}\n\n/**\n * @dev Extension to allow holders of a OpenZepplin-based role to mint directly.\n */\nabstract contract ERC721RoleBasedMintExtension is\n IERC721RoleBasedMintExtension,\n Initializable,\n ERC165Storage,\n ERC721AutoIdMinterExtension,\n AccessControl\n{\n bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n\n function __ERC721RoleBasedMintExtension_init(address minter)\n internal\n onlyInitializing\n {\n __ERC721RoleBasedMintExtension_init_unchained(minter);\n }\n\n function __ERC721RoleBasedMintExtension_init_unchained(address minter)\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721RoleBasedMintExtension).interfaceId);\n\n _setupRole(MINTER_ROLE, minter);\n }\n\n /* ADMIN */\n\n function mintByRole(address to, uint256 count) external {\n require(hasRole(MINTER_ROLE, _msgSender()), \"NOT_MINTER_ROLE\");\n\n _mintTo(to, count);\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(\n ERC165Storage,\n AccessControl,\n ERC721CollectionMetadataExtension\n )\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n}\n"},"@openzeppelin/contracts/access/AccessControl.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (access/AccessControl.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IAccessControl.sol\";\nimport \"../utils/Context.sol\";\nimport \"../utils/Strings.sol\";\nimport \"../utils/introspection/ERC165.sol\";\n\n/**\n * @dev Contract module that allows children to implement role-based access\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\n * members except through off-chain means by accessing the contract event logs. Some\n * applications may benefit from on-chain enumerability, for those cases see\n * {AccessControlEnumerable}.\n *\n * Roles are referred to by their `bytes32` identifier. These should be exposed\n * in the external API and be unique. The best way to achieve this is by\n * using `public constant` hash digests:\n *\n * ```\n * bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n * ```\n *\n * Roles can be used to represent a set of permissions. To restrict access to a\n * function call, use {hasRole}:\n *\n * ```\n * function foo() public {\n * require(hasRole(MY_ROLE, msg.sender));\n * ...\n * }\n * ```\n *\n * Roles can be granted and revoked dynamically via the {grantRole} and\n * {revokeRole} functions. Each role has an associated admin role, and only\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n *\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n * that only accounts with this role will be able to grant or revoke other\n * roles. More complex role relationships can be created by using\n * {_setRoleAdmin}.\n *\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n * grant and revoke this role. Extra precautions should be taken to secure\n * accounts that have been granted it.\n */\nabstract contract AccessControl is Context, IAccessControl, ERC165 {\n struct RoleData {\n mapping(address => bool) members;\n bytes32 adminRole;\n }\n\n mapping(bytes32 => RoleData) private _roles;\n\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\n\n /**\n * @dev Modifier that checks that an account has a specific role. Reverts\n * with a standardized message including the required role.\n *\n * The format of the revert reason is given by the following regular expression:\n *\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\n *\n * _Available since v4.1._\n */\n modifier onlyRole(bytes32 role) {\n _checkRole(role);\n _;\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) public view virtual override returns (bool) {\n return _roles[role].members[account];\n }\n\n /**\n * @dev Revert with a standard message if `_msgSender()` is missing `role`.\n * Overriding this function changes the behavior of the {onlyRole} modifier.\n *\n * Format of the revert message is described in {_checkRole}.\n *\n * _Available since v4.6._\n */\n function _checkRole(bytes32 role) internal view virtual {\n _checkRole(role, _msgSender());\n }\n\n /**\n * @dev Revert with a standard message if `account` is missing `role`.\n *\n * The format of the revert reason is given by the following regular expression:\n *\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\n */\n function _checkRole(bytes32 role, address account) internal view virtual {\n if (!hasRole(role, account)) {\n revert(\n string(\n abi.encodePacked(\n \"AccessControl: account \",\n Strings.toHexString(uint160(account), 20),\n \" is missing role \",\n Strings.toHexString(uint256(role), 32)\n )\n )\n );\n }\n }\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) {\n return _roles[role].adminRole;\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n *\n * May emit a {RoleGranted} event.\n */\n function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\n _grantRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n *\n * May emit a {RoleRevoked} event.\n */\n function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\n _revokeRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been revoked `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `account`.\n *\n * May emit a {RoleRevoked} event.\n */\n function renounceRole(bytes32 role, address account) public virtual override {\n require(account == _msgSender(), \"AccessControl: can only renounce roles for self\");\n\n _revokeRole(role, account);\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event. Note that unlike {grantRole}, this function doesn't perform any\n * checks on the calling account.\n *\n * May emit a {RoleGranted} event.\n *\n * [WARNING]\n * ====\n * This function should only be called from the constructor when setting\n * up the initial roles for the system.\n *\n * Using this function in any other way is effectively circumventing the admin\n * system imposed by {AccessControl}.\n * ====\n *\n * NOTE: This function is deprecated in favor of {_grantRole}.\n */\n function _setupRole(bytes32 role, address account) internal virtual {\n _grantRole(role, account);\n }\n\n /**\n * @dev Sets `adminRole` as ``role``'s admin role.\n *\n * Emits a {RoleAdminChanged} event.\n */\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\n bytes32 previousAdminRole = getRoleAdmin(role);\n _roles[role].adminRole = adminRole;\n emit RoleAdminChanged(role, previousAdminRole, adminRole);\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * Internal function without access restriction.\n *\n * May emit a {RoleGranted} event.\n */\n function _grantRole(bytes32 role, address account) internal virtual {\n if (!hasRole(role, account)) {\n _roles[role].members[account] = true;\n emit RoleGranted(role, account, _msgSender());\n }\n }\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * Internal function without access restriction.\n *\n * May emit a {RoleRevoked} event.\n */\n function _revokeRole(bytes32 role, address account) internal virtual {\n if (hasRole(role, account)) {\n _roles[role].members[account] = false;\n emit RoleRevoked(role, account, _msgSender());\n }\n }\n}\n"},"@openzeppelin/contracts/access/IAccessControl.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev External interface of AccessControl declared to support ERC165 detection.\n */\ninterface IAccessControl {\n /**\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n *\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n * {RoleAdminChanged} not being emitted signaling this.\n *\n * _Available since v3.1._\n */\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n /**\n * @dev Emitted when `account` is granted `role`.\n *\n * `sender` is the account that originated the contract call, an admin role\n * bearer except when using {AccessControl-_setupRole}.\n */\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Emitted when `account` is revoked `role`.\n *\n * `sender` is the account that originated the contract call:\n * - if using `revokeRole`, it is the admin role bearer\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\n */\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) external view returns (bool);\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function grantRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function revokeRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been granted `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `account`.\n */\n function renounceRole(bytes32 role, address account) external;\n}\n"},"contracts/collections/ERC721A/extensions/ERC721ALockableExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity ^0.8.15;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\nimport \"@openzeppelin/contracts/utils/structs/BitMaps.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\n\nimport \"./ERC721AMinterExtension.sol\";\n\ninterface IERC721ALockableExtension {\n function locked(uint256 tokenId) external view returns (bool);\n\n function lock(uint256 tokenId) external;\n\n function lock(uint256[] calldata tokenIds) external;\n\n function unlock(uint256 tokenId) external;\n\n function unlock(uint256[] calldata tokenIds) external;\n}\n\n/**\n * @dev Extension to allow locking NFTs, for use-cases like staking, without leaving holders wallet.\n */\nabstract contract ERC721ALockableExtension is\n IERC721ALockableExtension,\n Initializable,\n ERC165Storage,\n ERC721AMinterExtension,\n ReentrancyGuard\n{\n using BitMaps for BitMaps.BitMap;\n\n BitMaps.BitMap internal lockedTokens;\n\n function __ERC721ALockableExtension_init() internal onlyInitializing {\n __ERC721ALockableExtension_init_unchained();\n }\n\n function __ERC721ALockableExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721ALockableExtension).interfaceId);\n }\n\n // PUBLIC\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721ACollectionMetadataExtension)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n /**\n * At this moment staking is only possible from a certain address (usually a smart contract).\n *\n * This is because in almost all cases you want another contract to perform custom logic on lock and unlock operations,\n * without allowing users to directly unlock their tokens and sell them, for example.\n */\n function _lock(uint256 tokenId) internal virtual {\n require(!lockedTokens.get(tokenId), \"LOCKED\");\n lockedTokens.set(tokenId);\n }\n\n function _unlock(uint256 tokenId) internal virtual {\n require(lockedTokens.get(tokenId), \"NOT_LOCKED\");\n lockedTokens.unset(tokenId);\n }\n\n /**\n * Returns if a token is locked or not.\n */\n function locked(uint256 tokenId) public view virtual returns (bool) {\n return lockedTokens.get(tokenId);\n }\n\n function filterUnlocked(uint256[] calldata ticketTokenIds)\n public\n view\n returns (uint256[] memory)\n {\n uint256[] memory unlocked = new uint256[](ticketTokenIds.length);\n\n for (uint256 i = 0; i < ticketTokenIds.length; i++) {\n if (!locked(ticketTokenIds[i])) {\n unlocked[i] = ticketTokenIds[i];\n }\n }\n\n return unlocked;\n }\n\n function _beforeTokenTransfers(\n address from,\n address to,\n uint256 startTokenId,\n uint256 quantity\n ) internal virtual override(ERC721A) {\n require(\n // We are not checking the quantity because it is only used during mint where users cannot stake/unstake.\n !lockedTokens.get(startTokenId),\n \"LOCKED\"\n );\n super._beforeTokenTransfers(from, to, startTokenId, quantity);\n }\n}\n"},"@openzeppelin/contracts/utils/structs/BitMaps.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/structs/BitMaps.sol)\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for managing uint256 to bool mapping in a compact and efficient way, providing the keys are sequential.\n * Largelly inspired by Uniswap's https://github.com/Uniswap/merkle-distributor/blob/master/contracts/MerkleDistributor.sol[merkle-distributor].\n */\nlibrary BitMaps {\n struct BitMap {\n mapping(uint256 => uint256) _data;\n }\n\n /**\n * @dev Returns whether the bit at `index` is set.\n */\n function get(BitMap storage bitmap, uint256 index) internal view returns (bool) {\n uint256 bucket = index >> 8;\n uint256 mask = 1 << (index & 0xff);\n return bitmap._data[bucket] & mask != 0;\n }\n\n /**\n * @dev Sets the bit at `index` to the boolean `value`.\n */\n function setTo(\n BitMap storage bitmap,\n uint256 index,\n bool value\n ) internal {\n if (value) {\n set(bitmap, index);\n } else {\n unset(bitmap, index);\n }\n }\n\n /**\n * @dev Sets the bit at `index`.\n */\n function set(BitMap storage bitmap, uint256 index) internal {\n uint256 bucket = index >> 8;\n uint256 mask = 1 << (index & 0xff);\n bitmap._data[bucket] |= mask;\n }\n\n /**\n * @dev Unsets the bit at `index`.\n */\n function unset(BitMap storage bitmap, uint256 index) internal {\n uint256 bucket = index >> 8;\n uint256 mask = 1 << (index & 0xff);\n bitmap._data[bucket] &= ~mask;\n }\n}\n"},"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/ERC721Enumerable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../ERC721.sol\";\nimport \"./IERC721Enumerable.sol\";\n\n/**\n * @dev This implements an optional extension of {ERC721} defined in the EIP that adds\n * enumerability of all the token ids in the contract as well as all token ids owned by each\n * account.\n */\nabstract contract ERC721Enumerable is ERC721, IERC721Enumerable {\n // Mapping from owner to list of owned token IDs\n mapping(address => mapping(uint256 => uint256)) private _ownedTokens;\n\n // Mapping from token ID to index of the owner tokens list\n mapping(uint256 => uint256) private _ownedTokensIndex;\n\n // Array with all token ids, used for enumeration\n uint256[] private _allTokens;\n\n // Mapping from token id to position in the allTokens array\n mapping(uint256 => uint256) private _allTokensIndex;\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) {\n return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.\n */\n function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {\n require(index < ERC721.balanceOf(owner), \"ERC721Enumerable: owner index out of bounds\");\n return _ownedTokens[owner][index];\n }\n\n /**\n * @dev See {IERC721Enumerable-totalSupply}.\n */\n function totalSupply() public view virtual override returns (uint256) {\n return _allTokens.length;\n }\n\n /**\n * @dev See {IERC721Enumerable-tokenByIndex}.\n */\n function tokenByIndex(uint256 index) public view virtual override returns (uint256) {\n require(index < ERC721Enumerable.totalSupply(), \"ERC721Enumerable: global index out of bounds\");\n return _allTokens[index];\n }\n\n /**\n * @dev Hook that is called before any token transfer. This includes minting\n * and burning.\n *\n * Calling conditions:\n *\n * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n * transferred to `to`.\n * - When `from` is zero, `tokenId` will be minted for `to`.\n * - When `to` is zero, ``from``'s `tokenId` will be burned.\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual override {\n super._beforeTokenTransfer(from, to, tokenId);\n\n if (from == address(0)) {\n _addTokenToAllTokensEnumeration(tokenId);\n } else if (from != to) {\n _removeTokenFromOwnerEnumeration(from, tokenId);\n }\n if (to == address(0)) {\n _removeTokenFromAllTokensEnumeration(tokenId);\n } else if (to != from) {\n _addTokenToOwnerEnumeration(to, tokenId);\n }\n }\n\n /**\n * @dev Private function to add a token to this extension's ownership-tracking data structures.\n * @param to address representing the new owner of the given token ID\n * @param tokenId uint256 ID of the token to be added to the tokens list of the given address\n */\n function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {\n uint256 length = ERC721.balanceOf(to);\n _ownedTokens[to][length] = tokenId;\n _ownedTokensIndex[tokenId] = length;\n }\n\n /**\n * @dev Private function to add a token to this extension's token tracking data structures.\n * @param tokenId uint256 ID of the token to be added to the tokens list\n */\n function _addTokenToAllTokensEnumeration(uint256 tokenId) private {\n _allTokensIndex[tokenId] = _allTokens.length;\n _allTokens.push(tokenId);\n }\n\n /**\n * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that\n * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for\n * gas optimizations e.g. when performing a transfer operation (avoiding double writes).\n * This has O(1) time complexity, but alters the order of the _ownedTokens array.\n * @param from address representing the previous owner of the given token ID\n * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address\n */\n function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {\n // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and\n // then delete the last slot (swap and pop).\n\n uint256 lastTokenIndex = ERC721.balanceOf(from) - 1;\n uint256 tokenIndex = _ownedTokensIndex[tokenId];\n\n // When the token to delete is the last token, the swap operation is unnecessary\n if (tokenIndex != lastTokenIndex) {\n uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];\n\n _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token\n _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index\n }\n\n // This also deletes the contents at the last position of the array\n delete _ownedTokensIndex[tokenId];\n delete _ownedTokens[from][lastTokenIndex];\n }\n\n /**\n * @dev Private function to remove a token from this extension's token tracking data structures.\n * This has O(1) time complexity, but alters the order of the _allTokens array.\n * @param tokenId uint256 ID of the token to be removed from the tokens list\n */\n function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {\n // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and\n // then delete the last slot (swap and pop).\n\n uint256 lastTokenIndex = _allTokens.length - 1;\n uint256 tokenIndex = _allTokensIndex[tokenId];\n\n // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so\n // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding\n // an 'if' statement (like in _removeTokenFromOwnerEnumeration)\n uint256 lastTokenId = _allTokens[lastTokenIndex];\n\n _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token\n _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index\n\n // This also deletes the contents at the last position of the array\n delete _allTokensIndex[tokenId];\n _allTokens.pop();\n }\n}\n"},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/IERC721Enumerable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Enumerable is IERC721 {\n /**\n * @dev Returns the total amount of tokens stored by the contract.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns a token ID owned by `owner` at a given `index` of its token list.\n * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\n */\n function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);\n\n /**\n * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\n * Use along with {totalSupply} to enumerate all tokens.\n */\n function tokenByIndex(uint256 index) external view returns (uint256);\n}\n"},"contracts/collections/ERC721A/presets/ERC721ASimpleSalesCollection.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"../../../common/WithdrawExtension.sol\";\nimport \"../../../common/LicenseExtension.sol\";\nimport \"../../../common/meta-transactions/ERC2771ContextOwnable.sol\";\nimport \"../../ERC721/extensions/ERC721RoyaltyExtension.sol\";\nimport \"../extensions/ERC721ACollectionMetadataExtension.sol\";\nimport \"../extensions/ERC721APrefixedMetadataExtension.sol\";\nimport \"../extensions/ERC721AMinterExtension.sol\";\nimport \"../extensions/ERC721AOwnerMintExtension.sol\";\nimport \"../extensions/ERC721APreSaleExtension.sol\";\nimport \"../extensions/ERC721APublicSaleExtension.sol\";\nimport \"../extensions/ERC721ARoleBasedMintExtension.sol\";\nimport \"../extensions/ERC721ARoleBasedLockableExtension.sol\";\n\ncontract ERC721ASimpleSalesCollection is\n Initializable,\n Ownable,\n ERC165Storage,\n WithdrawExtension,\n LicenseExtension,\n ERC721ACollectionMetadataExtension,\n ERC721APrefixedMetadataExtension,\n ERC721AMinterExtension,\n ERC721AOwnerMintExtension,\n ERC721APreSaleExtension,\n ERC721APublicSaleExtension,\n ERC721ARoleBasedMintExtension,\n ERC721ARoleBasedLockableExtension,\n ERC721RoyaltyExtension,\n ERC2771ContextOwnable\n{\n struct Config {\n string name;\n string symbol;\n string contractURI;\n string placeholderURI;\n string tokenURIPrefix;\n uint256 maxSupply;\n uint256 preSalePrice;\n uint256 preSaleMaxMintPerWallet;\n uint256 publicSalePrice;\n uint256 publicSaleMaxMintPerTx;\n address defaultRoyaltyAddress;\n uint16 defaultRoyaltyBps;\n address proceedsRecipient;\n address trustedForwarder;\n LicenseVersion licenseVersion;\n }\n\n constructor(Config memory config) ERC721A(config.name, config.symbol) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _setupRole(DEFAULT_ADMIN_ROLE, deployer);\n\n _transferOwnership(deployer);\n\n __WithdrawExtension_init(config.proceedsRecipient, WithdrawMode.ANYONE);\n __LicenseExtension_init(config.licenseVersion);\n __ERC721ACollectionMetadataExtension_init(\n config.name,\n config.symbol,\n config.contractURI\n );\n __ERC721APrefixedMetadataExtension_init(\n config.placeholderURI,\n config.tokenURIPrefix\n );\n __ERC721AMinterExtension_init(config.maxSupply);\n __ERC721AOwnerMintExtension_init();\n __ERC721ARoleBasedMintExtension_init(deployer);\n __ERC721ARoleBasedLockableExtension_init();\n __ERC721APreSaleExtension_init_unchained(\n config.preSalePrice,\n config.preSaleMaxMintPerWallet\n );\n __ERC721APublicSaleExtension_init(\n config.publicSalePrice,\n config.publicSaleMaxMintPerTx\n );\n __ERC721RoyaltyExtension_init(\n config.defaultRoyaltyAddress,\n config.defaultRoyaltyBps\n );\n __ERC2771ContextOwnable_init(config.trustedForwarder);\n }\n\n function _msgSender()\n internal\n view\n virtual\n override(ERC2771ContextOwnable, Context)\n returns (address sender)\n {\n return super._msgSender();\n }\n\n function _msgData()\n internal\n view\n virtual\n override(ERC2771ContextOwnable, Context)\n returns (bytes calldata)\n {\n return super._msgData();\n }\n\n function _beforeTokenTransfers(\n address from,\n address to,\n uint256 startTokenId,\n uint256 quantity\n ) internal virtual override(ERC721A, ERC721ALockableExtension) {\n ERC721ALockableExtension._beforeTokenTransfers(\n from,\n to,\n startTokenId,\n quantity\n );\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(\n ERC165Storage,\n ERC721ACollectionMetadataExtension,\n ERC721APrefixedMetadataExtension,\n ERC721APreSaleExtension,\n ERC721APublicSaleExtension,\n ERC721AOwnerMintExtension,\n ERC721ARoleBasedMintExtension,\n ERC721ARoleBasedLockableExtension,\n ERC721RoyaltyExtension,\n LicenseExtension\n )\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function name()\n public\n view\n override(ERC721A, ERC721ACollectionMetadataExtension)\n returns (string memory)\n {\n return ERC721ACollectionMetadataExtension.name();\n }\n\n function symbol()\n public\n view\n override(ERC721A, ERC721ACollectionMetadataExtension)\n returns (string memory)\n {\n return ERC721ACollectionMetadataExtension.symbol();\n }\n\n function tokenURI(uint256 _tokenId)\n public\n view\n virtual\n override(ERC721A, ERC721APrefixedMetadataExtension)\n returns (string memory)\n {\n return ERC721APrefixedMetadataExtension.tokenURI(_tokenId);\n }\n}\n"},"contracts/collections/ERC721A/extensions/ERC721APreSaleExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"erc721a/contracts/ERC721A.sol\";\n\nimport \"./ERC721AMinterExtension.sol\";\n\nimport {IERC721PreSaleExtension} from \"../../ERC721/extensions/ERC721PreSaleExtension.sol\";\n\n/**\n * @dev Extension to provide pre-sale capabilities for certain collectors to mint for a specific price.\n */\nabstract contract ERC721APreSaleExtension is\n IERC721PreSaleExtension,\n Initializable,\n ERC165Storage,\n ERC721AMinterExtension,\n ReentrancyGuard\n{\n uint256 public preSalePrice;\n uint256 public preSaleMaxMintPerWallet;\n bytes32 public preSaleAllowlistMerkleRoot;\n bool public preSaleStatus;\n\n mapping(address => uint256) internal preSaleAllowlistClaimed;\n\n function __ERC721APreSaleExtension_init(\n uint256 _preSalePrice,\n uint256 _preSaleMaxMintPerWallet\n ) internal onlyInitializing {\n __ERC721APreSaleExtension_init_unchained(\n _preSalePrice,\n _preSaleMaxMintPerWallet\n );\n }\n\n function __ERC721APreSaleExtension_init_unchained(\n uint256 _preSalePrice,\n uint256 _preSaleMaxMintPerWallet\n ) internal onlyInitializing {\n _registerInterface(type(IERC721PreSaleExtension).interfaceId);\n\n preSalePrice = _preSalePrice;\n preSaleMaxMintPerWallet = _preSaleMaxMintPerWallet;\n }\n\n /* ADMIN */\n\n function setPreSalePrice(uint256 newValue) external onlyOwner {\n preSalePrice = newValue;\n }\n\n function setPreSaleMaxMintPerWallet(uint256 newValue) external onlyOwner {\n preSaleMaxMintPerWallet = newValue;\n }\n\n function setAllowlistMerkleRoot(bytes32 newRoot) external onlyOwner {\n preSaleAllowlistMerkleRoot = newRoot;\n }\n\n function togglePreSaleStatus(bool isActive) external onlyOwner {\n preSaleStatus = isActive;\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721ACollectionMetadataExtension)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function onPreSaleAllowList(address minter, bytes32[] calldata proof)\n external\n view\n returns (bool)\n {\n return\n MerkleProof.verify(\n proof,\n preSaleAllowlistMerkleRoot,\n _generateMerkleLeaf(minter)\n );\n }\n\n function mintPreSale(uint256 count, bytes32[] calldata proof)\n external\n payable\n nonReentrant\n {\n require(preSaleStatus, \"NOT_ACTIVE\");\n\n address to = _msgSender();\n\n require(\n MerkleProof.verify(\n proof,\n preSaleAllowlistMerkleRoot,\n _generateMerkleLeaf(to)\n ),\n \"WRONG_PROOF\"\n );\n require(\n preSaleAllowlistClaimed[to] + count <= preSaleMaxMintPerWallet,\n \"PRE_SALE_LIMIT\"\n );\n require(preSalePrice * count <= msg.value, \"INSUFFICIENT_AMOUNT\");\n\n preSaleAllowlistClaimed[to] += count;\n\n _mintTo(to, count);\n }\n\n /* INTERNAL */\n\n function _generateMerkleLeaf(address account)\n internal\n pure\n returns (bytes32)\n {\n return keccak256(abi.encodePacked(account));\n }\n}\n"},"contracts/collections/ERC721A/extensions/ERC721APublicSaleExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"./ERC721AMinterExtension.sol\";\n\nimport {IERC721PublicSaleExtension} from \"../../ERC721/extensions/ERC721PublicSaleExtension.sol\";\n\n/**\n * @dev Extension to provide pre-sale and public-sale capabilities for collectors to mint for a specific price.\n */\nabstract contract ERC721APublicSaleExtension is\n IERC721PublicSaleExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721AMinterExtension,\n ReentrancyGuard\n{\n uint256 public publicSalePrice;\n uint256 public publicSaleMaxMintPerTx;\n bool public publicSaleStatus;\n\n function __ERC721APublicSaleExtension_init(\n uint256 _publicSalePrice,\n uint256 _publicSaleMaxMintPerTx\n ) internal onlyInitializing {\n __ERC721APublicSaleExtension_init_unchained(\n _publicSalePrice,\n _publicSaleMaxMintPerTx\n );\n }\n\n function __ERC721APublicSaleExtension_init_unchained(\n uint256 _publicSalePrice,\n uint256 _publicSaleMaxMintPerTx\n ) internal onlyInitializing {\n _registerInterface(type(IERC721PublicSaleExtension).interfaceId);\n\n publicSalePrice = _publicSalePrice;\n publicSaleMaxMintPerTx = _publicSaleMaxMintPerTx;\n }\n\n /* ADMIN */\n\n function setPublicSalePrice(uint256 newValue) external onlyOwner {\n publicSalePrice = newValue;\n }\n\n function setPublicSaleMaxMintPerTx(uint256 newValue) external onlyOwner {\n publicSaleMaxMintPerTx = newValue;\n }\n\n function togglePublicSaleStatus(bool isActive) external onlyOwner {\n publicSaleStatus = isActive;\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721ACollectionMetadataExtension)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function mintPublicSale(address to, uint256 count)\n external\n payable\n nonReentrant\n {\n require(publicSaleStatus, \"PUBLIC_SALE_NOT_ACTIVE\");\n require(count <= publicSaleMaxMintPerTx, \"PUBLIC_SALE_LIMIT\");\n require(publicSalePrice * count <= msg.value, \"INSUFFICIENT_AMOUNT\");\n\n _mintTo(to, count);\n }\n}\n"},"contracts/collections/ERC721/extensions/ERC721PreSaleExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"./ERC721AutoIdMinterExtension.sol\";\n\ninterface IERC721PreSaleExtension {\n function setPreSalePrice(uint256 newValue) external;\n\n function setPreSaleMaxMintPerWallet(uint256 newValue) external;\n\n function setAllowlistMerkleRoot(bytes32 newRoot) external;\n\n function togglePreSaleStatus(bool isActive) external;\n\n function onPreSaleAllowList(address minter, bytes32[] calldata proof)\n external\n view\n returns (bool);\n\n function mintPreSale(uint256 count, bytes32[] calldata proof)\n external\n payable;\n}\n\n/**\n * @dev Extension to provide pre-sale capabilities for certain collectors to mint for a specific price.\n */\nabstract contract ERC721PreSaleExtension is\n IERC721PreSaleExtension,\n Initializable,\n ERC165Storage,\n ERC721AutoIdMinterExtension,\n ReentrancyGuard\n{\n uint256 public preSalePrice;\n uint256 public preSaleMaxMintPerWallet;\n bytes32 public preSaleAllowlistMerkleRoot;\n bool public preSaleStatus;\n\n mapping(address => uint256) internal preSaleAllowlistClaimed;\n\n function __ERC721PreSaleExtension_init(\n uint256 _preSalePrice,\n uint256 _preSaleMaxMintPerWallet\n ) internal onlyInitializing {\n __ERC721PreSaleExtension_init_unchained(\n _preSalePrice,\n _preSaleMaxMintPerWallet\n );\n }\n\n function __ERC721PreSaleExtension_init_unchained(\n uint256 _preSalePrice,\n uint256 _preSaleMaxMintPerWallet\n ) internal onlyInitializing {\n _registerInterface(type(IERC721PreSaleExtension).interfaceId);\n\n preSalePrice = _preSalePrice;\n preSaleMaxMintPerWallet = _preSaleMaxMintPerWallet;\n }\n\n /* ADMIN */\n\n function setPreSalePrice(uint256 newValue) external onlyOwner {\n preSalePrice = newValue;\n }\n\n function setPreSaleMaxMintPerWallet(uint256 newValue) external onlyOwner {\n preSaleMaxMintPerWallet = newValue;\n }\n\n function setAllowlistMerkleRoot(bytes32 newRoot) external onlyOwner {\n preSaleAllowlistMerkleRoot = newRoot;\n }\n\n function togglePreSaleStatus(bool isActive) external onlyOwner {\n preSaleStatus = isActive;\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721CollectionMetadataExtension)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function onPreSaleAllowList(address minter, bytes32[] calldata proof)\n external\n view\n returns (bool)\n {\n return\n MerkleProof.verify(\n proof,\n preSaleAllowlistMerkleRoot,\n _generateMerkleLeaf(minter)\n );\n }\n\n function mintPreSale(uint256 count, bytes32[] calldata proof)\n external\n payable\n nonReentrant\n {\n require(preSaleStatus, \"NOT_ACTIVE\");\n\n address to = _msgSender();\n\n require(\n MerkleProof.verify(\n proof,\n preSaleAllowlistMerkleRoot,\n _generateMerkleLeaf(to)\n ),\n \"WRONG_PROOF\"\n );\n require(\n preSaleAllowlistClaimed[to] + count <= preSaleMaxMintPerWallet,\n \"PRE_SALE_LIMIT\"\n );\n require(preSalePrice * count <= msg.value, \"INSUFFICIENT_AMOUNT\");\n\n preSaleAllowlistClaimed[to] += count;\n\n _mintTo(to, count);\n }\n\n /* INTERNAL */\n\n function _generateMerkleLeaf(address account)\n internal\n pure\n returns (bytes32)\n {\n return keccak256(abi.encodePacked(account));\n }\n}\n"},"contracts/collections/ERC721/extensions/ERC721PublicSaleExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"./ERC721AutoIdMinterExtension.sol\";\n\ninterface IERC721PublicSaleExtension {\n function setPublicSalePrice(uint256 newValue) external;\n\n function setPublicSaleMaxMintPerTx(uint256 newValue) external;\n\n function togglePublicSaleStatus(bool isActive) external;\n\n function mintPublicSale(address to, uint256 count) external payable;\n}\n\n/**\n * @dev Extension to provide pre-sale and public-sale capabilities for collectors to mint for a specific price.\n */\nabstract contract ERC721PublicSaleExtension is\n IERC721PublicSaleExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721AutoIdMinterExtension,\n ReentrancyGuard\n{\n uint256 public publicSalePrice;\n uint256 public publicSaleMaxMintPerTx;\n bool public publicSaleStatus;\n\n function __ERC721PublicSaleExtension_init(\n uint256 _publicSalePrice,\n uint256 _publicSaleMaxMintPerTx\n ) internal onlyInitializing {\n __ERC721PublicSaleExtension_init_unchained(\n _publicSalePrice,\n _publicSaleMaxMintPerTx\n );\n }\n\n function __ERC721PublicSaleExtension_init_unchained(\n uint256 _publicSalePrice,\n uint256 _publicSaleMaxMintPerTx\n ) internal onlyInitializing {\n _registerInterface(type(IERC721PublicSaleExtension).interfaceId);\n\n publicSalePrice = _publicSalePrice;\n publicSaleMaxMintPerTx = _publicSaleMaxMintPerTx;\n }\n\n /* ADMIN */\n\n function setPublicSalePrice(uint256 newValue) external onlyOwner {\n publicSalePrice = newValue;\n }\n\n function setPublicSaleMaxMintPerTx(uint256 newValue) external onlyOwner {\n publicSaleMaxMintPerTx = newValue;\n }\n\n function togglePublicSaleStatus(bool isActive) external onlyOwner {\n publicSaleStatus = isActive;\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721CollectionMetadataExtension)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function mintPublicSale(address to, uint256 count)\n external\n payable\n nonReentrant\n {\n require(publicSaleStatus, \"PUBLIC_SALE_NOT_ACTIVE\");\n require(count <= publicSaleMaxMintPerTx, \"PUBLIC_SALE_LIMIT\");\n require(publicSalePrice * count <= msg.value, \"INSUFFICIENT_AMOUNT\");\n\n _mintTo(to, count);\n }\n}\n"},"@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../ERC20.sol\";\nimport \"../../../utils/Context.sol\";\n\n/**\n * @dev Extension of {ERC20} that allows token holders to destroy both their own\n * tokens and those that they have an allowance for, in a way that can be\n * recognized off-chain (via event analysis).\n */\nabstract contract ERC20Burnable is Context, ERC20 {\n /**\n * @dev Destroys `amount` tokens from the caller.\n *\n * See {ERC20-_burn}.\n */\n function burn(uint256 amount) public virtual {\n _burn(_msgSender(), amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, deducting from the caller's\n * allowance.\n *\n * See {ERC20-_burn} and {ERC20-allowance}.\n *\n * Requirements:\n *\n * - the caller must have allowance for ``accounts``'s tokens of at least\n * `amount`.\n */\n function burnFrom(address account, uint256 amount) public virtual {\n _spendAllowance(account, _msgSender(), amount);\n _burn(account, amount);\n }\n}\n"},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC20.sol\";\nimport \"./extensions/IERC20Metadata.sol\";\nimport \"../../utils/Context.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC20\n * applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is Context, IERC20, IERC20Metadata {\n mapping(address => uint256) private _balances;\n\n mapping(address => mapping(address => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n\n /**\n * @dev Sets the values for {name} and {symbol}.\n *\n * The default value of {decimals} is 18. To select a different value for\n * {decimals} you should overload it.\n *\n * All two of these values are immutable: they can only be set once during\n * construction.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the value {ERC20} uses, unless this function is\n * overridden;\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view virtual override returns (uint8) {\n return 18;\n }\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view virtual override returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view virtual override returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */\n function transfer(address to, uint256 amount) public virtual override returns (bool) {\n address owner = _msgSender();\n _transfer(owner, to, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20}.\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `amount`.\n */\n function transferFrom(\n address from,\n address to,\n uint256 amount\n ) public virtual override returns (bool) {\n address spender = _msgSender();\n _spendAllowance(from, spender, amount);\n _transfer(from, to, amount);\n return true;\n }\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, allowance(owner, spender) + addedValue);\n return true;\n }\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\n address owner = _msgSender();\n uint256 currentAllowance = allowance(owner, spender);\n require(currentAllowance >= subtractedValue, \"ERC20: decreased allowance below zero\");\n unchecked {\n _approve(owner, spender, currentAllowance - subtractedValue);\n }\n\n return true;\n }\n\n /**\n * @dev Moves `amount` of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n */\n function _transfer(\n address from,\n address to,\n uint256 amount\n ) internal virtual {\n require(from != address(0), \"ERC20: transfer from the zero address\");\n require(to != address(0), \"ERC20: transfer to the zero address\");\n\n _beforeTokenTransfer(from, to, amount);\n\n uint256 fromBalance = _balances[from];\n require(fromBalance >= amount, \"ERC20: transfer amount exceeds balance\");\n unchecked {\n _balances[from] = fromBalance - amount;\n }\n _balances[to] += amount;\n\n emit Transfer(from, to, amount);\n\n _afterTokenTransfer(from, to, amount);\n }\n\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n */\n function _mint(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: mint to the zero address\");\n\n _beforeTokenTransfer(address(0), account, amount);\n\n _totalSupply += amount;\n _balances[account] += amount;\n emit Transfer(address(0), account, amount);\n\n _afterTokenTransfer(address(0), account, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */\n function _burn(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: burn from the zero address\");\n\n _beforeTokenTransfer(account, address(0), amount);\n\n uint256 accountBalance = _balances[account];\n require(accountBalance >= amount, \"ERC20: burn amount exceeds balance\");\n unchecked {\n _balances[account] = accountBalance - amount;\n }\n _totalSupply -= amount;\n\n emit Transfer(account, address(0), amount);\n\n _afterTokenTransfer(account, address(0), amount);\n }\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */\n function _approve(\n address owner,\n address spender,\n uint256 amount\n ) internal virtual {\n require(owner != address(0), \"ERC20: approve from the zero address\");\n require(spender != address(0), \"ERC20: approve to the zero address\");\n\n _allowances[owner][spender] = amount;\n emit Approval(owner, spender, amount);\n }\n\n /**\n * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\n *\n * Does not update the allowance amount in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Might emit an {Approval} event.\n */\n function _spendAllowance(\n address owner,\n address spender,\n uint256 amount\n ) internal virtual {\n uint256 currentAllowance = allowance(owner, spender);\n if (currentAllowance != type(uint256).max) {\n require(currentAllowance >= amount, \"ERC20: insufficient allowance\");\n unchecked {\n _approve(owner, spender, currentAllowance - amount);\n }\n }\n }\n\n /**\n * @dev Hook that is called before any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * will be transferred to `to`.\n * - when `from` is zero, `amount` tokens will be minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 amount\n ) internal virtual {}\n\n /**\n * @dev Hook that is called after any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * has been transferred to `to`.\n * - when `from` is zero, `amount` tokens have been minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _afterTokenTransfer(\n address from,\n address to,\n uint256 amount\n ) internal virtual {}\n}\n"},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n *\n * _Available since v4.1._\n */\ninterface IERC20Metadata is IERC20 {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the decimals places of the token.\n */\n function decimals() external view returns (uint8);\n}\n"},"contracts/tokens/presets/ERC20LockableToken.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\nimport \"@openzeppelin/contracts/security/Pausable.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol\";\n\nimport \"../extensions/ERC20RoleBasedLockingExtension.sol\";\n\ncontract ERC20LockableToken is\n Initializable,\n ERC165Storage,\n AccessControl,\n ERC20,\n ERC20Burnable,\n Pausable,\n ERC20RoleBasedLockingExtension\n{\n bytes32 public constant PAUSER_ROLE = keccak256(\"PAUSER_ROLE\");\n bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n\n string private _name;\n string private _symbol;\n\n struct Config {\n string name;\n string symbol;\n }\n\n constructor(Config memory config) ERC20(config.name, config.symbol) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _name = config.name;\n _symbol = config.symbol;\n\n _grantRole(DEFAULT_ADMIN_ROLE, deployer);\n _grantRole(PAUSER_ROLE, deployer);\n _grantRole(MINTER_ROLE, deployer);\n\n __ERC20RoleBasedLockingExtension_init(deployer);\n }\n\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n /* ADMIN */\n\n function pause() public onlyRole(PAUSER_ROLE) {\n _pause();\n }\n\n function unpause() public onlyRole(PAUSER_ROLE) {\n _unpause();\n }\n\n function mint(address to, uint256 amount) public onlyRole(MINTER_ROLE) {\n _mint(to, amount);\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, AccessControl, ERC20RoleBasedLockingExtension)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 amount\n )\n internal\n virtual\n override(ERC20, ERC20RoleBasedLockingExtension)\n whenNotPaused\n {\n ERC20RoleBasedLockingExtension._beforeTokenTransfer(from, to, amount);\n }\n}\n"},"contracts/tokens/extensions/ERC20RoleBasedLockingExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\ninterface ERC20RoleBasedLockingExtensionInterface {\n function lockForAll() external;\n\n function unlockForAll() external;\n\n function canTransfer(address) external view returns (bool);\n}\n\n/**\n * @dev Extension to allow locking transfers and only allow certain addresses do to transfers.\n */\nabstract contract ERC20RoleBasedLockingExtension is\n Initializable,\n ERC165Storage,\n AccessControl,\n ERC20,\n ERC20RoleBasedLockingExtensionInterface\n{\n bytes32 public constant TRANSFER_ROLE = keccak256(\"TRANSFER_ROLE\");\n\n constructor() {}\n\n function __ERC20RoleBasedLockingExtension_init(address deployer)\n internal\n onlyInitializing\n {\n __ERC20RoleBasedLockingExtension_init_unchained(deployer);\n }\n\n function __ERC20RoleBasedLockingExtension_init_unchained(address deployer)\n internal\n onlyInitializing\n {\n _registerInterface(\n type(ERC20RoleBasedLockingExtensionInterface).interfaceId\n );\n\n _grantRole(TRANSFER_ROLE, deployer);\n }\n\n /* ADMIN */\n\n function lockForAll() external {\n require(hasRole(DEFAULT_ADMIN_ROLE, _msgSender()), \"NOT_ADMIN\");\n\n _revokeRole(TRANSFER_ROLE, address(0));\n }\n\n function unlockForAll() external {\n require(hasRole(DEFAULT_ADMIN_ROLE, _msgSender()), \"NOT_ADMIN\");\n\n _grantRole(TRANSFER_ROLE, address(0));\n }\n\n /* PUBLIC */\n\n function canTransfer(address operator)\n external\n view\n override\n returns (bool)\n {\n return hasRole(TRANSFER_ROLE, operator);\n }\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, AccessControl)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 amount\n ) internal virtual override {\n require(\n hasRole(TRANSFER_ROLE, address(0)) ||\n hasRole(TRANSFER_ROLE, _msgSender()),\n \"TRANSFER_LOCKED\"\n );\n\n super._beforeTokenTransfer(from, to, amount);\n }\n}\n"},"@openzeppelin/contracts/security/Pausable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which allows children to implement an emergency stop\n * mechanism that can be triggered by an authorized account.\n *\n * This module is used through inheritance. It will make available the\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n * the functions of your contract. Note that they will not be pausable by\n * simply including this module, only once the modifiers are put in place.\n */\nabstract contract Pausable is Context {\n /**\n * @dev Emitted when the pause is triggered by `account`.\n */\n event Paused(address account);\n\n /**\n * @dev Emitted when the pause is lifted by `account`.\n */\n event Unpaused(address account);\n\n bool private _paused;\n\n /**\n * @dev Initializes the contract in unpaused state.\n */\n constructor() {\n _paused = false;\n }\n\n /**\n * @dev Modifier to make a function callable only when the contract is not paused.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n modifier whenNotPaused() {\n _requireNotPaused();\n _;\n }\n\n /**\n * @dev Modifier to make a function callable only when the contract is paused.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n modifier whenPaused() {\n _requirePaused();\n _;\n }\n\n /**\n * @dev Returns true if the contract is paused, and false otherwise.\n */\n function paused() public view virtual returns (bool) {\n return _paused;\n }\n\n /**\n * @dev Throws if the contract is paused.\n */\n function _requireNotPaused() internal view virtual {\n require(!paused(), \"Pausable: paused\");\n }\n\n /**\n * @dev Throws if the contract is not paused.\n */\n function _requirePaused() internal view virtual {\n require(paused(), \"Pausable: not paused\");\n }\n\n /**\n * @dev Triggers stopped state.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n function _pause() internal virtual whenNotPaused {\n _paused = true;\n emit Paused(_msgSender());\n }\n\n /**\n * @dev Returns to normal state.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n function _unpause() internal virtual whenPaused {\n _paused = false;\n emit Unpaused(_msgSender());\n }\n}\n"},"contracts/collections/ERC721A/presets/ERC721AOneOfOneCollection.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"../../../common/LicenseExtension.sol\";\nimport \"../../../common/meta-transactions/ERC2771ContextOwnable.sol\";\nimport \"../../ERC721/extensions/ERC721RoyaltyExtension.sol\";\nimport \"../extensions/ERC721AMinterExtension.sol\";\nimport \"../extensions/ERC721ACollectionMetadataExtension.sol\";\nimport \"../extensions/ERC721APerTokenMetadataExtension.sol\";\nimport \"../extensions/ERC721AOneOfOneMintExtension.sol\";\nimport \"../extensions/ERC721AOwnerMintExtension.sol\";\n\ncontract ERC721AOneOfOneCollection is\n Initializable,\n Ownable,\n ERC165Storage,\n LicenseExtension,\n ERC721ACollectionMetadataExtension,\n ERC721AOwnerMintExtension,\n ERC721AOneOfOneMintExtension,\n ERC721RoyaltyExtension,\n ERC2771ContextOwnable\n{\n struct Config {\n string name;\n string symbol;\n string contractURI;\n uint256 maxSupply;\n address defaultRoyaltyAddress;\n uint16 defaultRoyaltyBps;\n address trustedForwarder;\n LicenseVersion licenseVersion;\n }\n\n constructor(Config memory config) ERC721A(config.name, config.symbol) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _setupRole(DEFAULT_ADMIN_ROLE, deployer);\n _setupRole(MINTER_ROLE, deployer);\n\n _transferOwnership(deployer);\n\n __ERC721ACollectionMetadataExtension_init(\n config.name,\n config.symbol,\n config.contractURI\n );\n __ERC721APerTokenMetadataExtension_init();\n __ERC721AOwnerMintExtension_init();\n __ERC721AOneOfOneMintExtension_init();\n __ERC721AMinterExtension_init(config.maxSupply);\n __ERC721RoyaltyExtension_init(\n config.defaultRoyaltyAddress,\n config.defaultRoyaltyBps\n );\n __ERC2771ContextOwnable_init(config.trustedForwarder);\n __LicenseExtension_init(config.licenseVersion);\n }\n\n function _burn(uint256 tokenId)\n internal\n virtual\n override(ERC721A, ERC721AOneOfOneMintExtension)\n {\n return ERC721AOneOfOneMintExtension._burn(tokenId);\n }\n\n function _msgSender()\n internal\n view\n virtual\n override(ERC2771ContextOwnable, Context)\n returns (address sender)\n {\n return super._msgSender();\n }\n\n function _msgData()\n internal\n view\n virtual\n override(ERC2771ContextOwnable, Context)\n returns (bytes calldata)\n {\n return super._msgData();\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(\n ERC165Storage,\n ERC721ACollectionMetadataExtension,\n ERC721AOwnerMintExtension,\n ERC721AOneOfOneMintExtension,\n ERC721RoyaltyExtension,\n LicenseExtension\n )\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function name()\n public\n view\n override(\n ERC721ACollectionMetadataExtension,\n ERC721AOneOfOneMintExtension\n )\n returns (string memory)\n {\n return ERC721AOneOfOneMintExtension.name();\n }\n\n function symbol()\n public\n view\n override(\n ERC721ACollectionMetadataExtension,\n ERC721AOneOfOneMintExtension\n )\n returns (string memory)\n {\n return ERC721AOneOfOneMintExtension.symbol();\n }\n\n function tokenURI(uint256 _tokenId)\n public\n view\n virtual\n override(ERC721A, ERC721AOneOfOneMintExtension)\n returns (string memory)\n {\n return ERC721AOneOfOneMintExtension.tokenURI(_tokenId);\n }\n\n function getInfo()\n external\n view\n returns (\n uint256 _maxSupply,\n uint256 _totalSupply,\n uint256 _senderBalance\n )\n {\n uint256 balance = 0;\n\n if (_msgSender() != address(0)) {\n balance = this.balanceOf(_msgSender());\n }\n\n return (maxSupply, this.totalSupply(), balance);\n }\n}\n"},"contracts/collections/ERC721A/extensions/ERC721APerTokenMetadataExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"erc721a/contracts/ERC721A.sol\";\n\nimport {IERC721PerTokenMetadataExtension} from \"../../ERC721/extensions/ERC721PerTokenMetadataExtension.sol\";\n\n/**\n * @dev Extension to allow configuring collection and tokens metadata URI.\n * In this extension each token will have a different independent token URI set by contract owner.\n * To enable true self-custody for token owners, an admin can freeze URIs using a token ID pointer that can only be increased.\n */\nabstract contract ERC721APerTokenMetadataExtension is\n IERC721PerTokenMetadataExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721A\n{\n uint256 public lastFrozenTokenId;\n\n using Strings for uint256;\n\n // Optional mapping for token URIs\n mapping(uint256 => string) private _tokenURIs;\n\n function __ERC721APerTokenMetadataExtension_init()\n internal\n onlyInitializing\n {\n __ERC721APerTokenMetadataExtension_init_unchained();\n }\n\n function __ERC721APerTokenMetadataExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721PerTokenMetadataExtension).interfaceId);\n }\n\n /* ADMIN */\n\n function freezeTokenURIs(uint256 _lastFrozenTokenId) external onlyOwner {\n require(_lastFrozenTokenId > lastFrozenTokenId, \"CANNOT_UNFREEZE\");\n lastFrozenTokenId = _lastFrozenTokenId;\n }\n\n function setTokenURI(uint256 tokenId, string memory tokenURI)\n external\n onlyOwner\n {\n require(tokenId > lastFrozenTokenId, \"FROZEN\");\n _setTokenURI(tokenId, tokenURI);\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721A)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n /**\n * @dev See {IERC721Metadata-tokenURI}.\n */\n function tokenURI(uint256 tokenId)\n public\n view\n virtual\n override\n returns (string memory)\n {\n require(\n _exists(tokenId),\n \"ERC721URIStorage: URI query for nonexistent token\"\n );\n\n string memory _tokenURI = _tokenURIs[tokenId];\n string memory base = _baseURI();\n\n // If there is no base URI, return the token URI.\n if (bytes(base).length == 0) {\n return _tokenURI;\n }\n // If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked).\n if (bytes(_tokenURI).length > 0) {\n return string(abi.encodePacked(base, _tokenURI));\n }\n\n return super.tokenURI(tokenId);\n }\n\n /**\n * @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function _setTokenURI(uint256 tokenId, string memory _tokenURI)\n internal\n virtual\n {\n require(\n _exists(tokenId),\n \"ERC721URIStorage: URI set of nonexistent token\"\n );\n _tokenURIs[tokenId] = _tokenURI;\n }\n\n /**\n * @dev Destroys `tokenId`.\n * The approval is cleared when the token is burned.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n *\n * Emits a {Transfer} event.\n */\n function _burn(uint256 tokenId) internal virtual override {\n super._burn(tokenId);\n\n if (bytes(_tokenURIs[tokenId]).length != 0) {\n delete _tokenURIs[tokenId];\n }\n }\n}\n"},"contracts/collections/ERC721A/extensions/ERC721AOneOfOneMintExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"./ERC721AMinterExtension.sol\";\nimport \"./ERC721APerTokenMetadataExtension.sol\";\n\nimport {IERC721OneOfOneMintExtension} from \"../../ERC721/extensions/ERC721OneOfOneMintExtension.sol\";\n\n/**\n * @dev Extension to allow owner to mint 1-of-1 NFTs by providing dedicated metadata URI for each token.\n */\nabstract contract ERC721AOneOfOneMintExtension is\n IERC721OneOfOneMintExtension,\n AccessControl,\n ERC721AMinterExtension,\n ERC721APerTokenMetadataExtension\n{\n bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n\n function __ERC721AOneOfOneMintExtension_init() internal onlyInitializing {\n __ERC721APerTokenMetadataExtension_init();\n __ERC721AOneOfOneMintExtension_init_unchained();\n }\n\n function __ERC721AOneOfOneMintExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721OneOfOneMintExtension).interfaceId);\n }\n\n /* ADMIN */\n\n function mintWithTokenURIsByOwner(\n address to,\n uint256 count,\n string[] memory tokenURIs\n ) external onlyOwner {\n uint256 startingTokenId = _nextTokenId();\n _mintTo(to, count);\n for (uint256 i = 0; i < count; i++) {\n _setTokenURI(startingTokenId + i, tokenURIs[i]);\n }\n }\n\n function mintWithTokenURIsByRole(\n address to,\n uint256 count,\n string[] memory tokenURIs\n ) external {\n require(hasRole(MINTER_ROLE, _msgSender()), \"NOT_MINTER_ROLE\");\n\n uint256 startingTokenId = _nextTokenId();\n _mintTo(to, count);\n for (uint256 i = 0; i < count; i++) {\n _setTokenURI(startingTokenId + i, tokenURIs[i]);\n }\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(\n AccessControl,\n ERC721ACollectionMetadataExtension,\n ERC721APerTokenMetadataExtension\n )\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function name()\n public\n view\n virtual\n override(ERC721A, ERC721ACollectionMetadataExtension)\n returns (string memory)\n {\n return ERC721ACollectionMetadataExtension.name();\n }\n\n function symbol()\n public\n view\n virtual\n override(ERC721A, ERC721ACollectionMetadataExtension)\n returns (string memory)\n {\n return ERC721ACollectionMetadataExtension.symbol();\n }\n\n function tokenURI(uint256 tokenId)\n public\n view\n virtual\n override(\n ERC721A,\n ERC721APerTokenMetadataExtension,\n IERC721OneOfOneMintExtension\n )\n returns (string memory)\n {\n return ERC721APerTokenMetadataExtension.tokenURI(tokenId);\n }\n\n function _burn(uint256 tokenId)\n internal\n virtual\n override(ERC721A, ERC721APerTokenMetadataExtension)\n {\n return ERC721APerTokenMetadataExtension._burn(tokenId);\n }\n}\n"},"contracts/collections/ERC721/extensions/ERC721PerTokenMetadataExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\ninterface IERC721PerTokenMetadataExtension {\n function freezeTokenURIs(uint256 _lastFrozenTokenId) external;\n\n function setTokenURI(uint256 tokenId, string memory tokenURI) external;\n}\n\n/**\n * @dev Extension to allow configuring collection and tokens metadata URI.\n * In this extension each token will have a different independent token URI set by contract owner.\n * To enable true self-custody for token owners, an admin can freeze URIs using a token ID pointer that can only be increased.\n */\nabstract contract ERC721PerTokenMetadataExtension is\n IERC721PerTokenMetadataExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721URIStorage\n{\n uint256 public lastFrozenTokenId;\n\n function __ERC721PerTokenMetadataExtension_init()\n internal\n onlyInitializing\n {\n __ERC721PerTokenMetadataExtension_init_unchained();\n }\n\n function __ERC721PerTokenMetadataExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721PerTokenMetadataExtension).interfaceId);\n }\n\n /* ADMIN */\n\n function freezeTokenURIs(uint256 _lastFrozenTokenId) external onlyOwner {\n require(_lastFrozenTokenId > lastFrozenTokenId, \"CANNOT_UNFREEZE\");\n lastFrozenTokenId = _lastFrozenTokenId;\n }\n\n function setTokenURI(uint256 tokenId, string memory tokenURI)\n external\n onlyOwner\n {\n require(tokenId > lastFrozenTokenId, \"FROZEN\");\n _setTokenURI(tokenId, tokenURI);\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n}\n"},"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/extensions/ERC721URIStorage.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../ERC721.sol\";\n\n/**\n * @dev ERC721 token with storage based token URI management.\n */\nabstract contract ERC721URIStorage is ERC721 {\n using Strings for uint256;\n\n // Optional mapping for token URIs\n mapping(uint256 => string) private _tokenURIs;\n\n /**\n * @dev See {IERC721Metadata-tokenURI}.\n */\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n _requireMinted(tokenId);\n\n string memory _tokenURI = _tokenURIs[tokenId];\n string memory base = _baseURI();\n\n // If there is no base URI, return the token URI.\n if (bytes(base).length == 0) {\n return _tokenURI;\n }\n // If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked).\n if (bytes(_tokenURI).length > 0) {\n return string(abi.encodePacked(base, _tokenURI));\n }\n\n return super.tokenURI(tokenId);\n }\n\n /**\n * @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual {\n require(_exists(tokenId), \"ERC721URIStorage: URI set of nonexistent token\");\n _tokenURIs[tokenId] = _tokenURI;\n }\n\n /**\n * @dev See {ERC721-_burn}. This override additionally checks to see if a\n * token-specific URI was set for the token, and if so, it deletes the token URI from\n * the storage mapping.\n */\n function _burn(uint256 tokenId) internal virtual override {\n super._burn(tokenId);\n\n if (bytes(_tokenURIs[tokenId]).length != 0) {\n delete _tokenURIs[tokenId];\n }\n }\n}\n"},"contracts/collections/ERC721/extensions/ERC721OneOfOneMintExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"./ERC721AutoIdMinterExtension.sol\";\nimport \"./ERC721PerTokenMetadataExtension.sol\";\n\ninterface IERC721OneOfOneMintExtension {\n function mintWithTokenURIsByOwner(\n address to,\n uint256 count,\n string[] memory tokenURIs\n ) external;\n\n function mintWithTokenURIsByRole(\n address to,\n uint256 count,\n string[] memory tokenURIs\n ) external;\n\n function tokenURI(uint256 tokenId) external view returns (string memory);\n}\n\n/**\n * @dev Extension to allow owner to mint 1-of-1 NFTs by providing dedicated metadata URI for each token.\n */\nabstract contract ERC721OneOfOneMintExtension is\n IERC721OneOfOneMintExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n AccessControl,\n ERC721AutoIdMinterExtension,\n ERC721PerTokenMetadataExtension\n{\n bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n\n function __ERC721OneOfOneMintExtension_init() internal onlyInitializing {\n __ERC721OneOfOneMintExtension_init_unchained();\n }\n\n function __ERC721OneOfOneMintExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721OneOfOneMintExtension).interfaceId);\n }\n\n /* ADMIN */\n\n function mintWithTokenURIsByOwner(\n address to,\n uint256 count,\n string[] memory tokenURIs\n ) external onlyOwner {\n uint256 startingTokenId = _currentTokenId;\n _mintTo(to, count);\n for (uint256 i = 0; i < count; i++) {\n _setTokenURI(startingTokenId + i, tokenURIs[i]);\n }\n }\n\n function mintWithTokenURIsByRole(\n address to,\n uint256 count,\n string[] memory tokenURIs\n ) external {\n require(hasRole(MINTER_ROLE, _msgSender()), \"NOT_MINTER_ROLE\");\n\n uint256 startingTokenId = _currentTokenId;\n _mintTo(to, count);\n for (uint256 i = 0; i < count; i++) {\n _setTokenURI(startingTokenId + i, tokenURIs[i]);\n }\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(\n ERC165Storage,\n AccessControl,\n ERC721CollectionMetadataExtension,\n ERC721PerTokenMetadataExtension\n )\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function name()\n public\n view\n virtual\n override(ERC721, ERC721CollectionMetadataExtension)\n returns (string memory)\n {\n return ERC721CollectionMetadataExtension.name();\n }\n\n function symbol()\n public\n view\n virtual\n override(ERC721, ERC721CollectionMetadataExtension)\n returns (string memory)\n {\n return ERC721CollectionMetadataExtension.symbol();\n }\n\n function tokenURI(uint256 tokenId)\n public\n view\n virtual\n override(ERC721, ERC721URIStorage, IERC721OneOfOneMintExtension)\n returns (string memory)\n {\n return ERC721URIStorage.tokenURI(tokenId);\n }\n\n function _burn(uint256 tokenId)\n internal\n virtual\n override(ERC721, ERC721URIStorage)\n {\n return ERC721URIStorage._burn(tokenId);\n }\n}\n"},"contracts/streams/ERC721/presets/ERC721ShareVestingStream.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport \"../../../common/WithdrawExtension.sol\";\nimport \"../extensions/ERC721ShareSplitExtension.sol\";\nimport \"../extensions/ERC721VestingReleaseExtension.sol\";\nimport \"../extensions/ERC721LockableClaimExtension.sol\";\n\ncontract ERC721ShareVestingStream is\n Initializable,\n Ownable,\n ERC721VestingReleaseExtension,\n ERC721ShareSplitExtension,\n ERC721LockableClaimExtension,\n WithdrawExtension\n{\n string public constant name = \"ERC721 Share Vesting Stream\";\n\n string public constant version = \"0.1\";\n\n struct Config {\n // Core\n address ticketToken;\n uint64 lockedUntilTimestamp;\n // Vesting release extension\n uint64 startTimestamp;\n uint64 durationSeconds;\n // Share split extension\n uint256[] tokenIds;\n uint256[] shares;\n // Lockable claim extension\n uint64 claimLockedUntil;\n }\n\n /* INTERNAL */\n\n constructor(Config memory config) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _transferOwnership(deployer);\n\n __WithdrawExtension_init(deployer, WithdrawMode.OWNER);\n __ERC721MultiTokenStream_init(\n config.ticketToken,\n config.lockedUntilTimestamp\n );\n __ERC721VestingReleaseExtension_init(\n config.startTimestamp,\n config.durationSeconds\n );\n __ERC721ShareSplitExtension_init(config.tokenIds, config.shares);\n __ERC721LockableClaimExtension_init(config.claimLockedUntil);\n }\n\n function _beforeClaim(\n uint256 ticketTokenId_,\n address claimToken_,\n address beneficiary_\n ) internal override(ERC721MultiTokenStream, ERC721LockableClaimExtension) {\n ERC721MultiTokenStream._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n ERC721LockableClaimExtension._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n }\n}\n"},"contracts/streams/ERC721/extensions/ERC721ShareSplitExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport \"../base/ERC721MultiTokenStream.sol\";\n\ninterface IERC721ShareSplitExtension {\n function hasERC721ShareSplitExtension() external view returns (bool);\n\n function setSharesForTokens(\n uint256[] memory _tokenIds,\n uint256[] memory _shares\n ) external;\n\n function getSharesByTokens(uint256[] calldata _tokenIds)\n external\n view\n returns (uint256[] memory);\n}\n\nabstract contract ERC721ShareSplitExtension is\n IERC721ShareSplitExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721MultiTokenStream\n{\n event SharesUpdated(uint256 tokenId, uint256 prevShares, uint256 newShares);\n\n // Sum of all the share units ever configured\n uint256 public totalShares;\n\n // Map of ticket token ID -> share of the stream\n mapping(uint256 => uint256) public shares;\n\n /* INTERNAL */\n\n function __ERC721ShareSplitExtension_init(\n uint256[] memory _tokenIds,\n uint256[] memory _shares\n ) internal onlyInitializing {\n __ERC721ShareSplitExtension_init_unchained(_tokenIds, _shares);\n }\n\n function __ERC721ShareSplitExtension_init_unchained(\n uint256[] memory _tokenIds,\n uint256[] memory _shares\n ) internal onlyInitializing {\n require(_shares.length == _tokenIds.length, \"ARGS_MISMATCH\");\n _updateShares(_tokenIds, _shares);\n\n _registerInterface(type(IERC721ShareSplitExtension).interfaceId);\n }\n\n function setSharesForTokens(\n uint256[] memory _tokenIds,\n uint256[] memory _shares\n ) public onlyOwner {\n require(_shares.length == _tokenIds.length, \"ARGS_MISMATCH\");\n require(lockedUntilTimestamp < block.timestamp, \"CONFIG_LOCKED\");\n\n _updateShares(_tokenIds, _shares);\n }\n\n /* PUBLIC */\n\n function hasERC721ShareSplitExtension() external pure returns (bool) {\n return true;\n }\n\n function getSharesByTokens(uint256[] calldata _tokenIds)\n public\n view\n returns (uint256[] memory)\n {\n uint256[] memory _shares = new uint256[](_tokenIds.length);\n\n for (uint256 i = 0; i < _shares.length; i++) {\n _shares[i] = shares[_tokenIds[i]];\n }\n\n return _shares;\n }\n\n function _totalTokenReleasedAmount(\n uint256 totalReleasedAmount_,\n uint256 ticketTokenId_,\n address claimToken_\n ) internal view override returns (uint256) {\n claimToken_;\n\n return (totalReleasedAmount_ * shares[ticketTokenId_]) / totalShares;\n }\n\n /* INTERNAL */\n\n function _updateShares(uint256[] memory _tokenIds, uint256[] memory _shares)\n private\n {\n for (uint256 i = 0; i < _shares.length; i++) {\n _updateShares(_tokenIds[i], _shares[i]);\n }\n }\n\n function _updateShares(uint256 tokenId, uint256 newShares) private {\n uint256 prevShares = shares[tokenId];\n\n shares[tokenId] = newShares;\n totalShares = totalShares + newShares - prevShares;\n\n require(totalShares >= 0, \"NEGATIVE_SHARES\");\n\n emit SharesUpdated(tokenId, prevShares, newShares);\n }\n}\n"},"contracts/streams/ERC721/extensions/ERC721VestingReleaseExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport \"../base/ERC721MultiTokenStream.sol\";\n\ninterface IERC721VestingReleaseExtension {\n function hasERC721VestingReleaseExtension() external view returns (bool);\n\n function setVestingStartTimestamp(uint64 newValue) external;\n\n function setVestingDurationSeconds(uint64 newValue) external;\n}\n\nabstract contract ERC721VestingReleaseExtension is\n IERC721VestingReleaseExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721MultiTokenStream\n{\n // Start of the vesting schedule\n uint64 public vestingStartTimestamp;\n\n // Duration of the vesting schedule\n uint64 public vestingDurationSeconds;\n\n /* INTERNAL */\n\n function __ERC721VestingReleaseExtension_init(\n uint64 _vestingStartTimestamp,\n uint64 _vestingDurationSeconds\n ) internal onlyInitializing {\n __ERC721VestingReleaseExtension_init_unchained(\n _vestingStartTimestamp,\n _vestingDurationSeconds\n );\n }\n\n function __ERC721VestingReleaseExtension_init_unchained(\n uint64 _vestingStartTimestamp,\n uint64 _vestingDurationSeconds\n ) internal onlyInitializing {\n vestingStartTimestamp = _vestingStartTimestamp;\n vestingDurationSeconds = _vestingDurationSeconds;\n\n _registerInterface(type(IERC721VestingReleaseExtension).interfaceId);\n }\n\n /* ADMIN */\n\n function setVestingStartTimestamp(uint64 newValue) public onlyOwner {\n require(lockedUntilTimestamp < block.timestamp, \"CONFIG_LOCKED\");\n vestingStartTimestamp = newValue;\n }\n\n function setVestingDurationSeconds(uint64 newValue) public onlyOwner {\n require(lockedUntilTimestamp < block.timestamp, \"CONFIG_LOCKED\");\n vestingDurationSeconds = newValue;\n }\n\n /* PUBLIC */\n\n function hasERC721VestingReleaseExtension() external pure returns (bool) {\n return true;\n }\n\n /* INTERNAL */\n\n function _totalStreamReleasedAmount(\n uint256 _streamTotalSupply,\n uint256 _ticketTokenId,\n address _claimToken\n ) internal view override returns (uint256) {\n _ticketTokenId;\n _claimToken;\n\n if (block.timestamp < vestingStartTimestamp) {\n return 0;\n } else if (\n block.timestamp > vestingStartTimestamp + vestingDurationSeconds\n ) {\n return _streamTotalSupply;\n } else {\n return\n (_streamTotalSupply *\n (block.timestamp - vestingStartTimestamp)) /\n vestingDurationSeconds;\n }\n }\n}\n"},"contracts/streams/ERC721/extensions/ERC721LockableClaimExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport \"../base/ERC721MultiTokenStream.sol\";\n\ninterface IERC721LockableClaimExtension {\n function hasERC721LockableClaimExtension() external view returns (bool);\n\n function setClaimLockedUntil(uint64 newValue) external;\n}\n\nabstract contract ERC721LockableClaimExtension is\n IERC721LockableClaimExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721MultiTokenStream\n{\n // Claiming is only possible after this time (unix timestamp)\n uint64 public claimLockedUntil;\n\n /* INTERNAL */\n\n function __ERC721LockableClaimExtension_init(uint64 _claimLockedUntil)\n internal\n onlyInitializing\n {\n __ERC721LockableClaimExtension_init_unchained(_claimLockedUntil);\n }\n\n function __ERC721LockableClaimExtension_init_unchained(\n uint64 _claimLockedUntil\n ) internal onlyInitializing {\n claimLockedUntil = _claimLockedUntil;\n\n _registerInterface(type(IERC721LockableClaimExtension).interfaceId);\n }\n\n /* ADMIN */\n\n function setClaimLockedUntil(uint64 newValue) public onlyOwner {\n require(lockedUntilTimestamp < block.timestamp, \"CONFIG_LOCKED\");\n claimLockedUntil = newValue;\n }\n\n /* PUBLIC */\n\n function hasERC721LockableClaimExtension() external pure returns (bool) {\n return true;\n }\n\n /* INTERNAL */\n\n function _beforeClaim(\n uint256 ticketTokenId_,\n address claimToken_,\n address beneficiary_\n ) internal virtual override {\n ticketTokenId_;\n claimToken_;\n beneficiary_;\n\n require(claimLockedUntil < block.timestamp, \"CLAIM_LOCKED\");\n }\n}\n"},"contracts/streams/ERC721/base/ERC721MultiTokenStream.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\";\n\ninterface IERC721MultiTokenStream {\n // Claim native currency for a single ticket token\n function claim(uint256 ticketTokenId) external;\n\n // Claim an erc20 claim token for a single ticket token\n function claim(uint256 ticketTokenId, address claimToken) external;\n\n // Claim native currency for multiple ticket tokens (only if all owned by sender)\n function claim(uint256[] calldata ticketTokenIds) external;\n\n // Claim native or erc20 tokens for multiple ticket tokens (only if all owned by `owner`)\n function claim(\n uint256[] calldata ticketTokenIds,\n address claimToken,\n address owner\n ) external;\n\n // Total native currency ever supplied to this stream\n function streamTotalSupply() external view returns (uint256);\n\n // Total erc20 token ever supplied to this stream by claim token address\n function streamTotalSupply(address claimToken)\n external\n view\n returns (uint256);\n\n // Total native currency ever claimed from this stream\n function streamTotalClaimed() external view returns (uint256);\n\n // Total erc20 token ever claimed from this stream by claim token address\n function streamTotalClaimed(address claimToken)\n external\n view\n returns (uint256);\n\n // Total native currency ever claimed for a single ticket token\n function streamTotalClaimed(uint256 ticketTokenId)\n external\n view\n returns (uint256);\n\n // Total native currency ever claimed for multiple token IDs\n function streamTotalClaimed(uint256[] calldata ticketTokenIds)\n external\n view\n returns (uint256);\n\n // Total erc20 token ever claimed for multiple token IDs\n function streamTotalClaimed(\n uint256[] calldata ticketTokenIds,\n address claimToken\n ) external view returns (uint256);\n\n // Calculate currently claimable amount for a specific ticket token ID and a specific claim token address\n // Pass 0x0000000000000000000000000000000000000000 as claim token to represent native currency\n function streamClaimableAmount(uint256 ticketTokenId, address claimToken)\n external\n view\n returns (uint256 claimableAmount);\n}\n\nabstract contract ERC721MultiTokenStream is\n IERC721MultiTokenStream,\n IERC721Receiver,\n Initializable,\n Ownable,\n ERC165Storage,\n ReentrancyGuard\n{\n using Address for address;\n using Address for address payable;\n\n struct Entitlement {\n uint256 totalClaimed;\n uint256 lastClaimedAt;\n }\n\n // Config\n address public ticketToken;\n\n // Locks changing the config until this timestamp is reached\n uint64 public lockedUntilTimestamp;\n\n // Map of ticket token ID -> claim token address -> entitlement\n mapping(uint256 => mapping(address => Entitlement)) public entitlements;\n\n // Map of claim token address -> Total amount claimed by all holders\n mapping(address => uint256) internal _streamTotalClaimed;\n\n /* EVENTS */\n\n event Claim(\n address operator,\n address beneficiary,\n uint256 ticketTokenId,\n address claimToken,\n uint256 releasedAmount\n );\n\n event ClaimMany(\n address operator,\n address beneficiary,\n uint256[] ticketTokenIds,\n address claimToken,\n uint256 releasedAmount\n );\n\n function __ERC721MultiTokenStream_init(\n address _ticketToken,\n uint64 _lockedUntilTimestamp\n ) internal onlyInitializing {\n __ERC721MultiTokenStream_init_unchained(\n _ticketToken,\n _lockedUntilTimestamp\n );\n }\n\n function __ERC721MultiTokenStream_init_unchained(\n address _ticketToken,\n uint64 _lockedUntilTimestamp\n ) internal onlyInitializing {\n ticketToken = _ticketToken;\n lockedUntilTimestamp = _lockedUntilTimestamp;\n\n _registerInterface(type(IERC721MultiTokenStream).interfaceId);\n }\n\n /* ADMIN */\n\n function lockUntil(uint64 newValue) public onlyOwner {\n require(newValue > lockedUntilTimestamp, \"CANNOT_REWIND\");\n lockedUntilTimestamp = newValue;\n }\n\n /* PUBLIC */\n\n receive() external payable {\n require(msg.value > 0);\n }\n\n function onERC721Received(\n address,\n address,\n uint256,\n bytes memory\n ) public virtual override returns (bytes4) {\n return this.onERC721Received.selector;\n }\n\n function claim(uint256 ticketTokenId) public {\n claim(ticketTokenId, address(0));\n }\n\n function claim(uint256 ticketTokenId, address claimToken)\n public\n nonReentrant\n {\n /* CHECKS */\n address beneficiary = _msgSender();\n _beforeClaim(ticketTokenId, claimToken, beneficiary);\n\n uint256 claimable = streamClaimableAmount(ticketTokenId, claimToken);\n require(claimable > 0, \"NOTHING_TO_CLAIM\");\n\n /* EFFECTS */\n\n entitlements[ticketTokenId][claimToken].totalClaimed += claimable;\n entitlements[ticketTokenId][claimToken].lastClaimedAt = block.timestamp;\n\n _streamTotalClaimed[claimToken] += claimable;\n\n /* INTERACTIONS */\n\n if (claimToken == address(0)) {\n payable(address(beneficiary)).sendValue(claimable);\n } else {\n IERC20(claimToken).transfer(beneficiary, claimable);\n }\n\n /* LOGS */\n\n emit Claim(\n _msgSender(),\n beneficiary,\n ticketTokenId,\n claimToken,\n claimable\n );\n }\n\n function claim(uint256[] calldata ticketTokenIds) public {\n claim(ticketTokenIds, address(0), _msgSender());\n }\n\n function claim(\n uint256[] calldata ticketTokenIds,\n address claimToken,\n address beneficiary\n ) public nonReentrant {\n uint256 totalClaimable;\n\n for (uint256 i = 0; i < ticketTokenIds.length; i++) {\n _beforeClaim(ticketTokenIds[i], claimToken, beneficiary);\n\n /* EFFECTS */\n uint256 claimable = streamClaimableAmount(\n ticketTokenIds[i],\n claimToken\n );\n\n if (claimable > 0) {\n entitlements[ticketTokenIds[i]][claimToken]\n .totalClaimed += claimable;\n entitlements[ticketTokenIds[i]][claimToken]\n .lastClaimedAt = block.timestamp;\n\n totalClaimable += claimable;\n }\n }\n\n _streamTotalClaimed[claimToken] += totalClaimable;\n\n /* INTERACTIONS */\n\n if (claimToken == address(0)) {\n payable(address(beneficiary)).sendValue(totalClaimable);\n } else {\n IERC20(claimToken).transfer(beneficiary, totalClaimable);\n }\n\n /* LOGS */\n\n emit ClaimMany(\n _msgSender(),\n beneficiary,\n ticketTokenIds,\n claimToken,\n totalClaimable\n );\n }\n\n /* READ ONLY */\n\n function streamTotalSupply() public view returns (uint256) {\n return streamTotalSupply(address(0));\n }\n\n function streamTotalSupply(address claimToken)\n public\n view\n returns (uint256)\n {\n if (claimToken == address(0)) {\n return _streamTotalClaimed[claimToken] + address(this).balance;\n }\n\n return\n _streamTotalClaimed[claimToken] +\n IERC20(claimToken).balanceOf(address(this));\n }\n\n function streamTotalClaimed() public view returns (uint256) {\n return _streamTotalClaimed[address(0)];\n }\n\n function streamTotalClaimed(address claimToken)\n public\n view\n returns (uint256)\n {\n return _streamTotalClaimed[claimToken];\n }\n\n function streamTotalClaimed(uint256 ticketTokenId)\n public\n view\n returns (uint256)\n {\n return entitlements[ticketTokenId][address(0)].totalClaimed;\n }\n\n function streamTotalClaimed(uint256 ticketTokenId, address claimToken)\n public\n view\n returns (uint256)\n {\n return entitlements[ticketTokenId][claimToken].totalClaimed;\n }\n\n function streamTotalClaimed(uint256[] calldata ticketTokenIds)\n public\n view\n returns (uint256)\n {\n return streamTotalClaimed(ticketTokenIds, address(0));\n }\n\n function streamTotalClaimed(\n uint256[] calldata ticketTokenIds,\n address claimToken\n ) public view returns (uint256) {\n uint256 claimed = 0;\n\n for (uint256 i = 0; i < ticketTokenIds.length; i++) {\n claimed += entitlements[ticketTokenIds[i]][claimToken].totalClaimed;\n }\n\n return claimed;\n }\n\n function streamClaimableAmount(\n uint256[] calldata ticketTokenIds,\n address claimToken\n ) public view returns (uint256) {\n uint256 claimable = 0;\n\n for (uint256 i = 0; i < ticketTokenIds.length; i++) {\n claimable += streamClaimableAmount(ticketTokenIds[i], claimToken);\n }\n\n return claimable;\n }\n\n function streamClaimableAmount(uint256 ticketTokenId)\n public\n view\n returns (uint256)\n {\n return streamClaimableAmount(ticketTokenId, address(0));\n }\n\n function streamClaimableAmount(uint256 ticketTokenId, address claimToken)\n public\n view\n virtual\n returns (uint256)\n {\n uint256 totalReleased = _totalTokenReleasedAmount(\n _totalStreamReleasedAmount(\n streamTotalSupply(claimToken),\n ticketTokenId,\n claimToken\n ),\n ticketTokenId,\n claimToken\n );\n\n return\n totalReleased -\n entitlements[ticketTokenId][claimToken].totalClaimed;\n }\n\n function _totalStreamReleasedAmount(\n uint256 streamTotalSupply_,\n uint256 ticketTokenId_,\n address claimToken_\n ) internal view virtual returns (uint256);\n\n function _totalTokenReleasedAmount(\n uint256 totalReleasedAmount_,\n uint256 ticketTokenId_,\n address claimToken_\n ) internal view virtual returns (uint256);\n\n /* INTERNAL */\n\n function _beforeClaim(\n uint256 ticketTokenId_,\n address claimToken_,\n address beneficiary_\n ) internal virtual {\n require(\n IERC721(ticketToken).ownerOf(ticketTokenId_) == beneficiary_,\n \"NOT_NFT_OWNER\"\n );\n }\n}\n"},"contracts/streams/ERC721/presets/ERC721ShareInstantStream.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport \"../../../common/WithdrawExtension.sol\";\nimport \"../extensions/ERC721InstantReleaseExtension.sol\";\nimport \"../extensions/ERC721ShareSplitExtension.sol\";\nimport \"../extensions/ERC721LockableClaimExtension.sol\";\n\ncontract ERC721ShareInstantStream is\n Initializable,\n Ownable,\n ERC721InstantReleaseExtension,\n ERC721ShareSplitExtension,\n ERC721LockableClaimExtension,\n WithdrawExtension\n{\n string public constant name = \"ERC721 Share Instant Stream\";\n\n string public constant version = \"0.1\";\n\n struct Config {\n // Base\n address ticketToken;\n uint64 lockedUntilTimestamp;\n // Share split extension\n uint256[] tokenIds;\n uint256[] shares;\n // Lockable claim extension\n uint64 claimLockedUntil;\n }\n\n /* INTERNAL */\n\n constructor(Config memory config) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _transferOwnership(deployer);\n\n __WithdrawExtension_init(deployer, WithdrawMode.OWNER);\n __ERC721MultiTokenStream_init(\n config.ticketToken,\n config.lockedUntilTimestamp\n );\n __ERC721InstantReleaseExtension_init();\n __ERC721ShareSplitExtension_init(config.tokenIds, config.shares);\n __ERC721LockableClaimExtension_init(config.claimLockedUntil);\n }\n\n function _beforeClaim(\n uint256 ticketTokenId_,\n address claimToken_,\n address beneficiary_\n ) internal override(ERC721MultiTokenStream, ERC721LockableClaimExtension) {\n ERC721MultiTokenStream._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n ERC721LockableClaimExtension._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n }\n}\n"},"contracts/streams/ERC721/extensions/ERC721InstantReleaseExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport \"../base/ERC721MultiTokenStream.sol\";\n\ninterface IERC721InstantReleaseExtension {\n function hasERC721InstantReleaseExtension() external view returns (bool);\n}\n\nabstract contract ERC721InstantReleaseExtension is\n IERC721InstantReleaseExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721MultiTokenStream\n{\n /* INIT */\n\n function __ERC721InstantReleaseExtension_init() internal onlyInitializing {\n __ERC721InstantReleaseExtension_init_unchained();\n }\n\n function __ERC721InstantReleaseExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721InstantReleaseExtension).interfaceId);\n }\n\n /* PUBLIC */\n\n function hasERC721InstantReleaseExtension() external pure returns (bool) {\n return true;\n }\n\n /* INTERNAL */\n\n function _totalStreamReleasedAmount(\n uint256 streamTotalSupply_,\n uint256 ticketTokenId_,\n address claimToken_\n ) internal pure override returns (uint256) {\n ticketTokenId_;\n claimToken_;\n\n return streamTotalSupply_;\n }\n}\n"},"contracts/streams/ERC721/presets/ERC721ShareEmissionStream.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport \"../../../common/WithdrawExtension.sol\";\nimport \"../extensions/ERC721EmissionReleaseExtension.sol\";\nimport \"../extensions/ERC721ShareSplitExtension.sol\";\nimport \"../extensions/ERC721LockableClaimExtension.sol\";\n\ncontract ERC721ShareEmissionStream is\n Initializable,\n Ownable,\n ERC721EmissionReleaseExtension,\n ERC721ShareSplitExtension,\n ERC721LockableClaimExtension,\n WithdrawExtension\n{\n using Address for address;\n using Address for address payable;\n\n string public constant name = \"ERC721 Share Emission Stream\";\n\n string public constant version = \"0.1\";\n\n struct Config {\n // Base\n address ticketToken;\n uint64 lockedUntilTimestamp;\n // Emission release extension\n uint256 emissionRate;\n uint64 emissionTimeUnit;\n uint64 emissionStart;\n uint64 emissionEnd;\n // Share split extension\n uint256[] tokenIds;\n uint256[] shares;\n // Lockable claim extension\n uint64 claimLockedUntil;\n }\n\n /* INTERNAL */\n\n constructor(Config memory config) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _transferOwnership(deployer);\n\n __WithdrawExtension_init(deployer, WithdrawMode.OWNER);\n __ERC721MultiTokenStream_init(\n config.ticketToken,\n config.lockedUntilTimestamp\n );\n __ERC721EmissionReleaseExtension_init(\n config.emissionRate,\n config.emissionTimeUnit,\n config.emissionStart,\n config.emissionEnd\n );\n __ERC721ShareSplitExtension_init(config.tokenIds, config.shares);\n __ERC721LockableClaimExtension_init(config.claimLockedUntil);\n }\n\n function rateByToken(uint256[] calldata tokenIds)\n public\n view\n virtual\n override\n returns (uint256 totalRate)\n {\n for (uint256 i = 0; i < tokenIds.length; i++) {\n totalRate += emissionRate / shares[tokenIds[i]];\n }\n\n return totalRate;\n }\n\n function _beforeClaim(\n uint256 ticketTokenId_,\n address claimToken_,\n address beneficiary_\n )\n internal\n override(\n ERC721MultiTokenStream,\n ERC721LockableClaimExtension,\n ERC721EmissionReleaseExtension\n )\n {\n ERC721MultiTokenStream._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n ERC721LockableClaimExtension._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n ERC721EmissionReleaseExtension._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n }\n}\n"},"contracts/streams/ERC721/extensions/ERC721EmissionReleaseExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport \"../base/ERC721MultiTokenStream.sol\";\n\ninterface IERC721EmissionReleaseExtension {\n function hasERC721EmissionReleaseExtension() external view returns (bool);\n\n function setEmissionRate(uint256 newValue) external;\n\n function setEmissionTimeUnit(uint64 newValue) external;\n\n function setEmissionStart(uint64 newValue) external;\n\n function setEmissionEnd(uint64 newValue) external;\n\n function releasedAmountUntil(uint64 calcUntil)\n external\n view\n returns (uint256);\n\n function emissionAmountUntil(uint64 calcUntil)\n external\n view\n returns (uint256);\n\n function rateByToken(uint256[] calldata tokenIds)\n external\n view\n returns (uint256);\n}\n\n/**\n * @author Flair (https://flair.finance)\n */\nabstract contract ERC721EmissionReleaseExtension is\n IERC721EmissionReleaseExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721MultiTokenStream\n{\n // Number of tokens released every `emissionTimeUnit`\n uint256 public emissionRate;\n\n // Time unit to release tokens, users can only claim once every `emissionTimeUnit`\n uint64 public emissionTimeUnit;\n\n // When emission and calculating tokens starts\n uint64 public emissionStart;\n\n // When to stop calculating the tokens released\n uint64 public emissionEnd;\n\n /* INIT */\n\n function __ERC721EmissionReleaseExtension_init(\n uint256 _emissionRate,\n uint64 _emissionTimeUnit,\n uint64 _emissionStart,\n uint64 _emissionEnd\n ) internal onlyInitializing {\n __ERC721EmissionReleaseExtension_init_unchained(\n _emissionRate,\n _emissionTimeUnit,\n _emissionStart,\n _emissionEnd\n );\n }\n\n function __ERC721EmissionReleaseExtension_init_unchained(\n uint256 _emissionRate,\n uint64 _emissionTimeUnit,\n uint64 _emissionStart,\n uint64 _emissionEnd\n ) internal onlyInitializing {\n emissionRate = _emissionRate;\n emissionTimeUnit = _emissionTimeUnit;\n emissionStart = _emissionStart;\n emissionEnd = _emissionEnd;\n\n _registerInterface(type(IERC721EmissionReleaseExtension).interfaceId);\n }\n\n /* ADMIN */\n\n function setEmissionRate(uint256 newValue) public onlyOwner {\n require(lockedUntilTimestamp < block.timestamp, \"CONFIG_LOCKED\");\n emissionRate = newValue;\n }\n\n function setEmissionTimeUnit(uint64 newValue) public onlyOwner {\n require(lockedUntilTimestamp < block.timestamp, \"CONFIG_LOCKED\");\n emissionTimeUnit = newValue;\n }\n\n function setEmissionStart(uint64 newValue) public onlyOwner {\n require(lockedUntilTimestamp < block.timestamp, \"CONFIG_LOCKED\");\n emissionStart = newValue;\n }\n\n function setEmissionEnd(uint64 newValue) public onlyOwner {\n require(lockedUntilTimestamp < block.timestamp, \"CONFIG_LOCKED\");\n emissionEnd = newValue;\n }\n\n /* PUBLIC */\n\n function hasERC721EmissionReleaseExtension() external pure returns (bool) {\n return true;\n }\n\n function releasedAmountUntil(uint64 calcUntil)\n public\n view\n virtual\n returns (uint256)\n {\n return\n emissionRate *\n // Intentionally rounded down:\n ((calcUntil - emissionStart) / emissionTimeUnit);\n }\n\n function emissionAmountUntil(uint64 calcUntil)\n public\n view\n virtual\n returns (uint256)\n {\n return ((calcUntil - emissionStart) * emissionRate) / emissionTimeUnit;\n }\n\n function rateByToken(uint256[] calldata tokenIds)\n public\n view\n virtual\n returns (uint256);\n\n /* INTERNAL */\n\n function _totalStreamReleasedAmount(\n uint256 streamTotalSupply_,\n uint256 ticketTokenId_,\n address claimToken_\n ) internal view virtual override returns (uint256) {\n streamTotalSupply_;\n ticketTokenId_;\n claimToken_;\n\n if (block.timestamp < emissionStart) {\n return 0;\n } else if (emissionEnd > 0 && block.timestamp > emissionEnd) {\n return releasedAmountUntil(emissionEnd);\n } else {\n return releasedAmountUntil(uint64(block.timestamp));\n }\n }\n\n function _beforeClaim(\n uint256 ticketTokenId_,\n address claimToken_,\n address beneficiary_\n ) internal virtual override {\n beneficiary_;\n\n require(emissionStart < block.timestamp, \"NOT_STARTED\");\n\n require(\n entitlements[ticketTokenId_][claimToken_].lastClaimedAt <\n block.timestamp - emissionTimeUnit,\n \"TOO_EARLY\"\n );\n }\n}\n"},"contracts/streams/ERC721/presets/ERC721LockedStakingEmissionStream.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport \"../../../common/WithdrawExtension.sol\";\nimport \"../extensions/ERC721EmissionReleaseExtension.sol\";\nimport \"../extensions/ERC721EqualSplitExtension.sol\";\nimport \"../extensions/ERC721LockedStakingExtension.sol\";\nimport \"../extensions/ERC721LockableClaimExtension.sol\";\n\n/**\n * @author Flair (https://flair.finance)\n */\ncontract ERC721LockedStakingEmissionStream is\n Initializable,\n Ownable,\n ERC721EmissionReleaseExtension,\n ERC721EqualSplitExtension,\n ERC721LockedStakingExtension,\n ERC721LockableClaimExtension,\n WithdrawExtension\n{\n using Address for address;\n using Address for address payable;\n\n string public constant name = \"ERC721 Locked Staking Emission Stream\";\n\n string public constant version = \"0.1\";\n\n struct Config {\n // Base\n address ticketToken;\n uint64 lockedUntilTimestamp;\n // Locked staking extension\n uint64 minStakingDuration; // in seconds. Minimum time the NFT must stay locked before unstaking.\n uint64 maxStakingTotalDurations; // in seconds. Maximum sum total of all durations staking that will be counted (across all stake/unstakes for each token).\n // Emission release extension\n uint256 emissionRate;\n uint64 emissionTimeUnit;\n uint64 emissionStart;\n uint64 emissionEnd;\n // Equal split extension\n uint256 totalTickets;\n // Lockable claim extension\n uint64 claimLockedUntil;\n }\n\n /* INTERNAL */\n\n constructor(Config memory config) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _transferOwnership(deployer);\n\n __WithdrawExtension_init(deployer, WithdrawMode.OWNER);\n __ERC721MultiTokenStream_init(\n config.ticketToken,\n config.lockedUntilTimestamp\n );\n __ERC721LockedStakingExtension_init(\n config.minStakingDuration,\n config.maxStakingTotalDurations\n );\n __ERC721EmissionReleaseExtension_init(\n config.emissionRate,\n config.emissionTimeUnit,\n config.emissionStart,\n config.emissionEnd\n );\n __ERC721EqualSplitExtension_init(config.totalTickets);\n __ERC721LockableClaimExtension_init(config.claimLockedUntil);\n }\n\n function _totalStreamReleasedAmount(\n uint256 streamTotalSupply_,\n uint256 ticketTokenId_,\n address claimToken_\n )\n internal\n view\n virtual\n override(ERC721MultiTokenStream, ERC721EmissionReleaseExtension)\n returns (uint256)\n {\n // Removing the logic from emission extension because it is irrevelant when staking.\n return 0;\n }\n\n function _totalTokenReleasedAmount(\n uint256 totalReleasedAmount_,\n uint256 ticketTokenId_,\n address claimToken_\n )\n internal\n view\n virtual\n override(ERC721MultiTokenStream, ERC721EqualSplitExtension)\n returns (uint256)\n {\n totalReleasedAmount_;\n ticketTokenId_;\n claimToken_;\n\n // Get the rate per token to calculate based on stake duration\n return\n (emissionRate / totalTickets) *\n // Intentionally rounded down\n (totalStakedDuration(ticketTokenId_) / emissionTimeUnit);\n }\n\n function _stakingTimeLimit()\n internal\n view\n virtual\n override\n returns (uint64)\n {\n if (emissionEnd > 0) {\n return emissionEnd;\n }\n\n return super._stakingTimeLimit();\n }\n\n function _beforeClaim(\n uint256 ticketTokenId_,\n address claimToken_,\n address beneficiary_\n )\n internal\n override(\n ERC721MultiTokenStream,\n ERC721EmissionReleaseExtension,\n ERC721LockableClaimExtension\n )\n {\n ERC721MultiTokenStream._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n ERC721LockableClaimExtension._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n ERC721EmissionReleaseExtension._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n }\n\n /* PUBLIC */\n\n function stake(uint256 tokenId) public override nonReentrant {\n require(uint64(block.timestamp) >= emissionStart, \"NOT_STARTED_YET\");\n\n super.stake(tokenId);\n }\n\n function stake(uint256[] calldata tokenIds) public override nonReentrant {\n require(uint64(block.timestamp) >= emissionStart, \"NOT_STARTED_YET\");\n\n super.stake(tokenIds);\n }\n\n function unstake(uint256 tokenId) public override nonReentrant {\n super.unstake(tokenId);\n }\n\n function unstake(uint256[] calldata tokenIds) public override nonReentrant {\n super.unstake(tokenIds);\n }\n\n function rateByToken(uint256[] calldata tokenIds)\n public\n view\n virtual\n override\n returns (uint256)\n {\n uint256 staked;\n\n for (uint256 i = 0; i < tokenIds.length; i++) {\n if (lastStakingTime[tokenIds[i]] > 0) {\n staked++;\n }\n }\n\n return (emissionRate * staked) / totalTickets;\n }\n\n function rewardAmountByToken(uint256 ticketTokenId)\n public\n view\n virtual\n returns (uint256)\n {\n return\n ((emissionRate * totalStakedDuration(ticketTokenId)) /\n totalTickets) / emissionTimeUnit;\n }\n\n function rewardAmountByToken(uint256[] calldata ticketTokenIds)\n public\n view\n virtual\n returns (uint256 total)\n {\n for (uint256 i = 0; i < ticketTokenIds.length; i++) {\n total += rewardAmountByToken(ticketTokenIds[i]);\n }\n }\n}\n"},"contracts/streams/ERC721/extensions/ERC721EqualSplitExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport \"../base/ERC721MultiTokenStream.sol\";\n\ninterface IERC721EqualSplitExtension {\n function hasERC721EqualSplitExtension() external view returns (bool);\n\n function setTotalTickets(uint256 newValue) external;\n}\n\nabstract contract ERC721EqualSplitExtension is\n IERC721EqualSplitExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721MultiTokenStream\n{\n // Total number of ERC721 tokens to calculate their equal split share\n uint256 public totalTickets;\n\n /* INTERNAL */\n\n function __ERC721EqualSplitExtension_init(uint256 _totalTickets)\n internal\n onlyInitializing\n {\n __ERC721EqualSplitExtension_init_unchained(_totalTickets);\n }\n\n function __ERC721EqualSplitExtension_init_unchained(uint256 _totalTickets)\n internal\n onlyInitializing\n {\n totalTickets = _totalTickets;\n\n _registerInterface(type(IERC721EqualSplitExtension).interfaceId);\n }\n\n /* ADMIN */\n\n function setTotalTickets(uint256 newValue) public onlyOwner {\n require(lockedUntilTimestamp < block.timestamp, \"CONFIG_LOCKED\");\n totalTickets = newValue;\n }\n\n /* PUBLIC */\n\n function hasERC721EqualSplitExtension() external pure returns (bool) {\n return true;\n }\n\n /* INTERNAL */\n\n function _totalTokenReleasedAmount(\n uint256 totalReleasedAmount_,\n uint256 ticketTokenId_,\n address claimToken_\n ) internal view virtual override returns (uint256) {\n ticketTokenId_;\n claimToken_;\n\n return totalReleasedAmount_ / totalTickets;\n }\n}\n"},"contracts/streams/ERC721/extensions/ERC721LockedStakingExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport {IERC721LockableExtension} from \"../../../collections/ERC721/extensions/ERC721LockableExtension.sol\";\n\nimport \"./ERC721StakingExtension.sol\";\n\n/**\n * @author Flair (https://flair.finance)\n */\ninterface IERC721LockedStakingExtension {\n function hasERC721LockedStakingExtension() external view returns (bool);\n}\n\n/**\n * @author Flair (https://flair.finance)\n */\nabstract contract ERC721LockedStakingExtension is\n IERC721LockedStakingExtension,\n ERC721StakingExtension\n{\n /* INIT */\n\n function __ERC721LockedStakingExtension_init(\n uint64 _minStakingDuration,\n uint64 _maxStakingTotalDurations\n ) internal onlyInitializing {\n __ERC721LockedStakingExtension_init_unchained();\n __ERC721StakingExtension_init_unchained(\n _minStakingDuration,\n _maxStakingTotalDurations\n );\n }\n\n function __ERC721LockedStakingExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721LockedStakingExtension).interfaceId);\n }\n\n /* PUBLIC */\n\n function hasERC721LockedStakingExtension() external pure returns (bool) {\n return true;\n }\n\n function stake(uint256 tokenId) public virtual override {\n ERC721StakingExtension.stake(tokenId);\n IERC721LockableExtension(ticketToken).lock(tokenId);\n }\n\n function stake(uint256[] calldata tokenIds) public virtual override {\n ERC721StakingExtension.stake(tokenIds);\n IERC721LockableExtension(ticketToken).lock(tokenIds);\n }\n\n function unstake(uint256 tokenId) public virtual override {\n ERC721StakingExtension.unstake(tokenId);\n IERC721LockableExtension(ticketToken).unlock(tokenId);\n }\n\n function unstake(uint256[] calldata tokenIds) public virtual override {\n ERC721StakingExtension.unstake(tokenIds);\n IERC721LockableExtension(ticketToken).unlock(tokenIds);\n }\n\n function _stake(\n address operator,\n uint64 currentTime,\n uint256 tokenId\n ) internal virtual override {\n require(\n operator == IERC721(ticketToken).ownerOf(tokenId),\n \"NOT_TOKEN_OWNER\"\n );\n ERC721StakingExtension._stake(operator, currentTime, tokenId);\n }\n\n function _unstake(\n address operator,\n uint64 currentTime,\n uint256 tokenId\n ) internal virtual override {\n require(\n operator == IERC721(ticketToken).ownerOf(tokenId),\n \"NOT_TOKEN_OWNER\"\n );\n ERC721StakingExtension._unstake(operator, currentTime, tokenId);\n }\n}\n"},"contracts/collections/ERC721/extensions/ERC721LockableExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity ^0.8.15;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\nimport \"@openzeppelin/contracts/utils/structs/BitMaps.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\n\nimport \"./ERC721AutoIdMinterExtension.sol\";\n\ninterface IERC721LockableExtension {\n function locked(uint256 tokenId) external view returns (bool);\n\n function lock(uint256 tokenId) external;\n\n function lock(uint256[] calldata tokenIds) external;\n\n function unlock(uint256 tokenId) external;\n\n function unlock(uint256[] calldata tokenIds) external;\n}\n\n/**\n * @dev Extension to allow locking NFTs, for use-cases like staking, without leaving holders wallet.\n */\nabstract contract ERC721LockableExtension is\n IERC721LockableExtension,\n Initializable,\n ERC165Storage,\n ERC721AutoIdMinterExtension,\n ReentrancyGuard\n{\n using BitMaps for BitMaps.BitMap;\n\n BitMaps.BitMap internal lockedTokens;\n\n function __ERC721LockableExtension_init() internal onlyInitializing {\n __ERC721LockableExtension_init_unchained();\n }\n\n function __ERC721LockableExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721LockableExtension).interfaceId);\n }\n\n // PUBLIC\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721CollectionMetadataExtension)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n /**\n * Returns if a token is locked or not.\n */\n function locked(uint256 tokenId) public view virtual returns (bool) {\n return lockedTokens.get(tokenId);\n }\n\n function filterUnlocked(uint256[] calldata ticketTokenIds)\n public\n view\n returns (uint256[] memory)\n {\n uint256[] memory unlocked = new uint256[](ticketTokenIds.length);\n\n for (uint256 i = 0; i < ticketTokenIds.length; i++) {\n if (!locked(ticketTokenIds[i])) {\n unlocked[i] = ticketTokenIds[i];\n }\n }\n\n return unlocked;\n }\n\n /* INTERNAL */\n\n /**\n * At this moment staking is only possible from a certain address (usually a smart contract).\n *\n * This is because in almost all cases you want another contract to perform custom logic on lock and unlock operations,\n * without allowing users to directly unlock their tokens and sell them, for example.\n */\n function _lock(uint256 tokenId) internal virtual {\n require(!lockedTokens.get(tokenId), \"LOCKED\");\n lockedTokens.set(tokenId);\n }\n\n function _unlock(uint256 tokenId) internal virtual {\n require(lockedTokens.get(tokenId), \"NOT_LOCKED\");\n lockedTokens.unset(tokenId);\n }\n\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual override(ERC721) {\n require(!lockedTokens.get(tokenId), \"LOCKED\");\n super._beforeTokenTransfer(from, to, tokenId);\n }\n}\n"},"contracts/streams/ERC721/extensions/ERC721StakingExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport \"../base/ERC721MultiTokenStream.sol\";\n\n/**\n * @author Flair (https://flair.finance)\n */\ninterface IERC721StakingExtension {\n function hasERC721StakingExtension() external view returns (bool);\n\n function stake(uint256 tokenId) external;\n\n function stake(uint256[] calldata tokenIds) external;\n}\n\n/**\n * @author Flair (https://flair.finance)\n */\nabstract contract ERC721StakingExtension is\n IERC721StakingExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721MultiTokenStream\n{\n // Minimum seconds that token must be staked before unstaking.\n uint64 public minStakingDuration;\n\n // Maximum sum total of all durations staking that will be counted (across all stake/unstakes for each token). Staked durations beyond this number is ignored.\n uint64 public maxStakingTotalDurations;\n\n // Map of token ID to the time of last staking\n mapping(uint256 => uint64) public lastStakingTime;\n\n // Map of token ID to the sum total of all previous staked durations\n mapping(uint256 => uint64) public savedStakedDurations;\n\n /* INIT */\n\n function __ERC721StakingExtension_init(\n uint64 _minStakingDuration,\n uint64 _maxStakingTotalDurations\n ) internal onlyInitializing {\n __ERC721StakingExtension_init_unchained(\n _minStakingDuration,\n _maxStakingTotalDurations\n );\n }\n\n function __ERC721StakingExtension_init_unchained(\n uint64 _minStakingDuration,\n uint64 _maxStakingTotalDurations\n ) internal onlyInitializing {\n minStakingDuration = _minStakingDuration;\n maxStakingTotalDurations = _maxStakingTotalDurations;\n\n _registerInterface(type(IERC721StakingExtension).interfaceId);\n }\n\n /* ADMIN */\n\n function setMinStakingDuration(uint64 newValue) public onlyOwner {\n require(lockedUntilTimestamp < block.timestamp, \"CONFIG_LOCKED\");\n minStakingDuration = newValue;\n }\n\n function setMaxStakingTotalDurations(uint64 newValue) public onlyOwner {\n require(lockedUntilTimestamp < block.timestamp, \"CONFIG_LOCKED\");\n maxStakingTotalDurations = newValue;\n }\n\n /* PUBLIC */\n\n function hasERC721StakingExtension() external pure returns (bool) {\n return true;\n }\n\n function stake(uint256 tokenId) public virtual {\n _stake(_msgSender(), uint64(block.timestamp), tokenId);\n }\n\n function stake(uint256[] calldata tokenIds) public virtual {\n address operator = _msgSender();\n uint64 currentTime = uint64(block.timestamp);\n\n for (uint256 i = 0; i < tokenIds.length; i++) {\n _stake(operator, currentTime, tokenIds[i]);\n }\n }\n\n function unstake(uint256 tokenId) public virtual {\n _unstake(_msgSender(), uint64(block.timestamp), tokenId);\n }\n\n function unstake(uint256[] calldata tokenIds) public virtual {\n address operator = _msgSender();\n uint64 currentTime = uint64(block.timestamp);\n\n for (uint256 i = 0; i < tokenIds.length; i++) {\n _unstake(operator, currentTime, tokenIds[i]);\n }\n }\n\n function totalStakedDuration(uint256[] calldata ticketTokenIds)\n public\n view\n virtual\n returns (uint64)\n {\n uint64 totalDurations = 0;\n\n for (uint256 i = 0; i < ticketTokenIds.length; i++) {\n totalDurations += totalStakedDuration(ticketTokenIds[i]);\n }\n\n return totalDurations;\n }\n\n function totalStakedDuration(uint256 ticketTokenId)\n public\n view\n virtual\n returns (uint64)\n {\n uint64 total = savedStakedDurations[ticketTokenId];\n\n if (lastStakingTime[ticketTokenId] > 0) {\n uint64 targetTime = _stakingTimeLimit();\n\n if (targetTime > block.timestamp) {\n targetTime = uint64(block.timestamp);\n }\n\n if (lastStakingTime[ticketTokenId] > 0) {\n if (targetTime > lastStakingTime[ticketTokenId]) {\n total += (targetTime - lastStakingTime[ticketTokenId]);\n }\n }\n }\n\n if (total > maxStakingTotalDurations) {\n total = maxStakingTotalDurations;\n }\n\n return total;\n }\n\n function unlockingTime(uint256 ticketTokenId)\n public\n view\n returns (uint256)\n {\n return\n lastStakingTime[ticketTokenId] > 0\n ? lastStakingTime[ticketTokenId] + minStakingDuration\n : 0;\n }\n\n function unlockingTime(uint256[] calldata ticketTokenIds)\n public\n view\n returns (uint256[] memory)\n {\n uint256[] memory unlockedAt = new uint256[](ticketTokenIds.length);\n\n for (uint256 i = 0; i < ticketTokenIds.length; i++) {\n unlockedAt[i] = unlockingTime(ticketTokenIds[i]);\n }\n\n return unlockedAt;\n }\n\n /* INTERNAL */\n\n function _stakingTimeLimit() internal view virtual returns (uint64) {\n return 18_446_744_073_709_551_615; // max(uint64)\n }\n\n function _stake(\n address operator,\n uint64 currentTime,\n uint256 tokenId\n ) internal virtual {\n require(\n totalStakedDuration(tokenId) < maxStakingTotalDurations,\n \"MAX_DURATION_EXCEEDED\"\n );\n\n lastStakingTime[tokenId] = currentTime;\n }\n\n function _unstake(\n address operator,\n uint64 currentTime,\n uint256 tokenId\n ) internal virtual {\n operator;\n\n require(lastStakingTime[tokenId] > 0, \"NOT_STAKED\");\n\n require(\n currentTime >= lastStakingTime[tokenId] + minStakingDuration,\n \"NOT_STAKED_LONG_ENOUGH\"\n );\n\n savedStakedDurations[tokenId] = totalStakedDuration(tokenId);\n\n lastStakingTime[tokenId] = 0;\n }\n}\n"},"contracts/streams/ERC721/presets/ERC721EqualVestingStream.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport \"../../../common/WithdrawExtension.sol\";\nimport \"../extensions/ERC721VestingReleaseExtension.sol\";\nimport \"../extensions/ERC721EqualSplitExtension.sol\";\nimport \"../extensions/ERC721LockableClaimExtension.sol\";\n\ncontract ERC721EqualVestingStream is\n Initializable,\n Ownable,\n ERC721VestingReleaseExtension,\n ERC721EqualSplitExtension,\n ERC721LockableClaimExtension,\n WithdrawExtension\n{\n using Address for address;\n using Address for address payable;\n\n string public constant name = \"ERC721 Equal Vesting Stream\";\n\n string public constant version = \"0.1\";\n\n struct Config {\n // Base\n address ticketToken;\n uint64 lockedUntilTimestamp;\n // Vesting release extension\n uint64 startTimestamp;\n uint64 durationSeconds;\n // Equal split extension\n uint256 totalTickets;\n // Lockable claim extension\n uint64 claimLockedUntil;\n }\n\n /* INTERNAL */\n\n constructor(Config memory config) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _transferOwnership(deployer);\n\n __WithdrawExtension_init(deployer, WithdrawMode.OWNER);\n __ERC721MultiTokenStream_init(\n config.ticketToken,\n config.lockedUntilTimestamp\n );\n __ERC721VestingReleaseExtension_init(\n config.startTimestamp,\n config.durationSeconds\n );\n __ERC721EqualSplitExtension_init(config.totalTickets);\n __ERC721LockableClaimExtension_init(config.claimLockedUntil);\n }\n\n function _beforeClaim(\n uint256 ticketTokenId_,\n address claimToken_,\n address beneficiary_\n ) internal override(ERC721MultiTokenStream, ERC721LockableClaimExtension) {\n ERC721MultiTokenStream._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n ERC721LockableClaimExtension._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n }\n}\n"},"contracts/streams/ERC721/presets/ERC721EqualInstantStream.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport \"../../../common/WithdrawExtension.sol\";\nimport \"../extensions/ERC721InstantReleaseExtension.sol\";\nimport \"../extensions/ERC721EqualSplitExtension.sol\";\nimport \"../extensions/ERC721LockableClaimExtension.sol\";\n\ncontract ERC721EqualInstantStream is\n Initializable,\n Ownable,\n ERC721InstantReleaseExtension,\n ERC721EqualSplitExtension,\n ERC721LockableClaimExtension,\n WithdrawExtension\n{\n string public constant name = \"ERC721 Equal Instant Stream\";\n\n string public constant version = \"0.1\";\n\n struct Config {\n // Base\n address ticketToken;\n uint64 lockedUntilTimestamp;\n // Equal split extension\n uint256 totalTickets;\n // Lockable claim extension\n uint64 claimLockedUntil;\n }\n\n /* INTERNAL */\n\n constructor(Config memory config) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _transferOwnership(deployer);\n\n __WithdrawExtension_init(deployer, WithdrawMode.OWNER);\n __ERC721MultiTokenStream_init(\n config.ticketToken,\n config.lockedUntilTimestamp\n );\n __ERC721EqualSplitExtension_init(config.totalTickets);\n __ERC721LockableClaimExtension_init(config.claimLockedUntil);\n }\n\n function _beforeClaim(\n uint256 ticketTokenId_,\n address claimToken_,\n address beneficiary_\n ) internal override(ERC721MultiTokenStream, ERC721LockableClaimExtension) {\n ERC721MultiTokenStream._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n ERC721LockableClaimExtension._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n }\n}\n"},"contracts/streams/ERC721/presets/ERC721EqualEmissionStream.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport \"../../../common/WithdrawExtension.sol\";\nimport \"../extensions/ERC721EmissionReleaseExtension.sol\";\nimport \"../extensions/ERC721EqualSplitExtension.sol\";\nimport \"../extensions/ERC721LockableClaimExtension.sol\";\n\ncontract ERC721EqualEmissionStream is\n Initializable,\n Ownable,\n ERC721EmissionReleaseExtension,\n ERC721EqualSplitExtension,\n ERC721LockableClaimExtension,\n WithdrawExtension\n{\n using Address for address;\n using Address for address payable;\n\n string public constant name = \"ERC721 Equal Emission Stream\";\n\n string public constant version = \"0.1\";\n\n struct Config {\n // Base\n address ticketToken;\n uint64 lockedUntilTimestamp;\n // Equal split extension\n uint256 totalTickets;\n // Emission release extension\n uint256 emissionRate;\n uint64 emissionTimeUnit;\n uint64 emissionStart;\n uint64 emissionEnd;\n }\n\n /* INTERNAL */\n\n constructor(Config memory config) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _transferOwnership(deployer);\n\n __WithdrawExtension_init(deployer, WithdrawMode.OWNER);\n __ERC721MultiTokenStream_init(\n config.ticketToken,\n config.lockedUntilTimestamp\n );\n __ERC721EmissionReleaseExtension_init(\n config.emissionRate,\n config.emissionTimeUnit,\n config.emissionStart,\n config.emissionEnd\n );\n __ERC721EqualSplitExtension_init(config.totalTickets);\n }\n\n function rateByToken(uint256[] calldata tokenIds)\n public\n view\n virtual\n override\n returns (uint256)\n {\n return ((emissionRate * tokenIds.length) / totalTickets);\n }\n\n function _beforeClaim(\n uint256 ticketTokenId_,\n address claimToken_,\n address beneficiary_\n )\n internal\n override(\n ERC721MultiTokenStream,\n ERC721EmissionReleaseExtension,\n ERC721LockableClaimExtension\n )\n {\n ERC721MultiTokenStream._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n ERC721LockableClaimExtension._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n ERC721EmissionReleaseExtension._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n }\n}\n"},"contracts/streams/ERC721/presets/ERC721CustodialStakingEmissionStream.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport \"../../../common/WithdrawExtension.sol\";\nimport \"../extensions/ERC721EmissionReleaseExtension.sol\";\nimport \"../extensions/ERC721EqualSplitExtension.sol\";\nimport \"../extensions/ERC721CustodialStakingExtension.sol\";\nimport \"../extensions/ERC721LockableClaimExtension.sol\";\n\n/**\n * @author Flair (https://flair.finance)\n */\ncontract ERC721CustodialStakingEmissionStream is\n Initializable,\n Ownable,\n ERC721EmissionReleaseExtension,\n ERC721EqualSplitExtension,\n ERC721CustodialStakingExtension,\n ERC721LockableClaimExtension,\n WithdrawExtension\n{\n using Address for address;\n using Address for address payable;\n\n string public constant name = \"ERC721 Custodial Staking Emission Stream\";\n\n string public constant version = \"0.1\";\n\n struct Config {\n // Base\n address ticketToken;\n uint64 lockedUntilTimestamp;\n // Locked staking extension\n uint64 minStakingDuration; // in seconds. Minimum time the NFT must stay locked before unstaking.\n uint64 maxStakingTotalDurations; // in seconds. Maximum sum total of all durations staking that will be counted (across all stake/unstakes for each token).\n // Emission release extension\n uint256 emissionRate;\n uint64 emissionTimeUnit;\n uint64 emissionStart;\n uint64 emissionEnd;\n // Equal split extension\n uint256 totalTickets;\n // Lockable claim extension\n uint64 claimLockedUntil;\n }\n\n /* INTERNAL */\n\n constructor(Config memory config) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _transferOwnership(deployer);\n\n __WithdrawExtension_init(deployer, WithdrawMode.OWNER);\n __ERC721MultiTokenStream_init(\n config.ticketToken,\n config.lockedUntilTimestamp\n );\n __ERC721CustodialStakingExtension_init(\n config.minStakingDuration,\n config.maxStakingTotalDurations\n );\n __ERC721EmissionReleaseExtension_init(\n config.emissionRate,\n config.emissionTimeUnit,\n config.emissionStart,\n config.emissionEnd\n );\n __ERC721EqualSplitExtension_init(config.totalTickets);\n __ERC721LockableClaimExtension_init(config.claimLockedUntil);\n }\n\n function _totalStreamReleasedAmount(\n uint256 streamTotalSupply_,\n uint256 ticketTokenId_,\n address claimToken_\n )\n internal\n view\n virtual\n override(ERC721MultiTokenStream, ERC721EmissionReleaseExtension)\n returns (uint256)\n {\n // Removing the logic from emission extension because it is irrevelant when staking.\n return 0;\n }\n\n function _totalTokenReleasedAmount(\n uint256 totalReleasedAmount_,\n uint256 ticketTokenId_,\n address claimToken_\n )\n internal\n view\n virtual\n override(ERC721MultiTokenStream, ERC721EqualSplitExtension)\n returns (uint256)\n {\n totalReleasedAmount_;\n ticketTokenId_;\n claimToken_;\n\n // Get the rate per token to calculate based on stake duration\n return\n (emissionRate / totalTickets) *\n // Intentionally rounded down\n (totalStakedDuration(ticketTokenId_) / emissionTimeUnit);\n }\n\n function _stakingTimeLimit()\n internal\n view\n virtual\n override\n returns (uint64)\n {\n if (emissionEnd > 0) {\n return emissionEnd;\n }\n\n return super._stakingTimeLimit();\n }\n\n function _beforeClaim(\n uint256 ticketTokenId_,\n address claimToken_,\n address beneficiary_\n )\n internal\n override(\n ERC721MultiTokenStream,\n ERC721CustodialStakingExtension,\n ERC721EmissionReleaseExtension,\n ERC721LockableClaimExtension\n )\n {\n // Intentionally skipping ERC721MultiTokenStream because we need to check ownership based on current status of custody.\n ERC721CustodialStakingExtension._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n ERC721LockableClaimExtension._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n ERC721EmissionReleaseExtension._beforeClaim(\n ticketTokenId_,\n claimToken_,\n beneficiary_\n );\n }\n\n /* PUBLIC */\n\n function stake(uint256 tokenId) public override nonReentrant {\n require(uint64(block.timestamp) >= emissionStart, \"NOT_STARTED_YET\");\n\n super.stake(tokenId);\n }\n\n function stake(uint256[] calldata tokenIds) public override nonReentrant {\n require(uint64(block.timestamp) >= emissionStart, \"NOT_STARTED_YET\");\n\n super.stake(tokenIds);\n }\n\n function unstake(uint256 tokenId) public override nonReentrant {\n super.unstake(tokenId);\n }\n\n function unstake(uint256[] calldata tokenIds) public override nonReentrant {\n super.unstake(tokenIds);\n }\n\n function rateByToken(uint256[] calldata tokenIds)\n public\n view\n virtual\n override\n returns (uint256)\n {\n uint256 staked;\n\n for (uint256 i = 0; i < tokenIds.length; i++) {\n if (lastStakingTime[tokenIds[i]] > 0) {\n staked++;\n }\n }\n\n return (emissionRate * staked) / totalTickets;\n }\n\n function rewardAmountByToken(uint256 ticketTokenId)\n public\n view\n virtual\n returns (uint256)\n {\n return\n ((emissionRate * totalStakedDuration(ticketTokenId)) /\n totalTickets) / emissionTimeUnit;\n }\n\n function rewardAmountByToken(uint256[] calldata ticketTokenIds)\n public\n view\n virtual\n returns (uint256 total)\n {\n for (uint256 i = 0; i < ticketTokenIds.length; i++) {\n total += rewardAmountByToken(ticketTokenIds[i]);\n }\n }\n}\n"},"contracts/streams/ERC721/extensions/ERC721CustodialStakingExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport {IERC721LockableExtension} from \"../../../collections/ERC721/extensions/ERC721LockableExtension.sol\";\n\nimport \"./ERC721StakingExtension.sol\";\n\n/**\n * @author Flair (https://flair.finance)\n */\ninterface IERC721CustodialStakingExtension {\n function hasERC721CustodialStakingExtension() external view returns (bool);\n\n function tokensInCustody(\n address staker,\n uint256 startTokenId,\n uint256 endTokenId\n ) external view returns (bool[] memory);\n}\n\n/**\n * @author Flair (https://flair.finance)\n */\nabstract contract ERC721CustodialStakingExtension is\n IERC721CustodialStakingExtension,\n ERC721StakingExtension\n{\n mapping(uint256 => address) public stakers;\n\n /* INIT */\n\n function __ERC721CustodialStakingExtension_init(\n uint64 _minStakingDuration,\n uint64 _maxStakingTotalDurations\n ) internal onlyInitializing {\n __ERC721CustodialStakingExtension_init_unchained();\n __ERC721StakingExtension_init_unchained(\n _minStakingDuration,\n _maxStakingTotalDurations\n );\n }\n\n function __ERC721CustodialStakingExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721CustodialStakingExtension).interfaceId);\n }\n\n /* PUBLIC */\n\n function hasERC721CustodialStakingExtension() external pure returns (bool) {\n return true;\n }\n\n function tokensInCustody(\n address staker,\n uint256 startTokenId,\n uint256 endTokenId\n ) external view returns (bool[] memory tokens) {\n tokens = new bool[](endTokenId - startTokenId + 1);\n\n for (uint256 i = startTokenId; i <= endTokenId; i++) {\n if (stakers[i] == staker) {\n tokens[i - startTokenId] = true;\n }\n }\n\n return tokens;\n }\n\n /* INTERNAL */\n\n function _stake(\n address operator,\n uint64 currentTime,\n uint256 tokenId\n ) internal virtual override {\n stakers[tokenId] = operator;\n super._stake(operator, currentTime, tokenId);\n IERC721(ticketToken).transferFrom(operator, address(this), tokenId);\n }\n\n function _unstake(\n address operator,\n uint64 currentTime,\n uint256 tokenId\n ) internal virtual override {\n require(stakers[tokenId] == operator, \"NOT_STAKER\");\n delete stakers[tokenId];\n\n super._unstake(operator, currentTime, tokenId);\n IERC721(ticketToken).transferFrom(address(this), operator, tokenId);\n }\n\n function _beforeClaim(\n uint256 ticketTokenId_,\n address claimToken_,\n address beneficiary_\n ) internal virtual override {\n claimToken_;\n\n if (stakers[ticketTokenId_] == address(0)) {\n require(\n IERC721(ticketToken).ownerOf(ticketTokenId_) == beneficiary_,\n \"NOT_NFT_OWNER\"\n );\n } else {\n require(beneficiary_ == stakers[ticketTokenId_], \"NOT_STAKER\");\n }\n }\n}\n"},"contracts/collections/ERC721/extensions/ERC721RoleBasedLockableExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity ^0.8.15;\n\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\nimport \"@openzeppelin/contracts/utils/structs/BitMaps.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\n\nimport \"./ERC721LockableExtension.sol\";\n\ninterface IERC721RoleBasedLockableExtension {\n function hasRoleBasedLockableExtension() external view returns (bool);\n}\n\n/**\n * @dev Extension to allow locking NFTs, for use-cases like staking, without leaving holders wallet, using roles.\n */\nabstract contract ERC721RoleBasedLockableExtension is\n IERC721RoleBasedLockableExtension,\n ERC721LockableExtension,\n AccessControl\n{\n using BitMaps for BitMaps.BitMap;\n\n bytes32 public constant LOCKER_ROLE = keccak256(\"LOCKER_ROLE\");\n\n function __ERC721RoleBasedLockableExtension_init()\n internal\n onlyInitializing\n {\n __ERC721RoleBasedLockableExtension_init_unchained();\n }\n\n function __ERC721RoleBasedLockableExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721RoleBasedLockableExtension).interfaceId);\n }\n\n // ADMIN\n\n /**\n * Locks token(s) to effectively lock them, while keeping in the same wallet.\n * This mechanism prevents them from being transferred, yet still will show correct owner.\n */\n function lock(uint256 tokenId) public virtual nonReentrant {\n require(hasRole(LOCKER_ROLE, msg.sender), \"NOT_LOCKER_ROLE\");\n _lock(tokenId);\n }\n\n function lock(uint256[] calldata tokenIds) public virtual nonReentrant {\n require(hasRole(LOCKER_ROLE, msg.sender), \"NOT_LOCKER_ROLE\");\n\n for (uint256 i = 0; i < tokenIds.length; i++) {\n _lock(tokenIds[i]);\n }\n }\n\n /**\n * Unlocks locked token(s) to be able to transfer.\n */\n function unlock(uint256 tokenId) public virtual nonReentrant {\n require(hasRole(LOCKER_ROLE, msg.sender), \"NOT_LOCKER_ROLE\");\n _unlock(tokenId);\n }\n\n function unlock(uint256[] calldata tokenIds) public virtual nonReentrant {\n require(hasRole(LOCKER_ROLE, msg.sender), \"NOT_LOCKER_ROLE\");\n\n for (uint256 i = 0; i < tokenIds.length; i++) {\n _unlock(tokenIds[i]);\n }\n }\n\n // PUBLIC\n\n function hasRoleBasedLockableExtension()\n public\n view\n virtual\n returns (bool)\n {\n return true;\n }\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(AccessControl, ERC721LockableExtension)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n}\n"},"contracts/collections/ERC721/presets/ERC721TieredSalesCollection.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\n\nimport \"../../../common/WithdrawExtension.sol\";\nimport \"../../../common/LicenseExtension.sol\";\nimport \"../../../common/meta-transactions/ERC2771ContextOwnable.sol\";\nimport \"../extensions/ERC721CollectionMetadataExtension.sol\";\nimport \"../extensions/ERC721PrefixedMetadataExtension.sol\";\nimport \"../extensions/ERC721AutoIdMinterExtension.sol\";\nimport \"../extensions/ERC721OwnerMintExtension.sol\";\nimport \"../extensions/ERC721TieringExtension.sol\";\nimport \"../extensions/ERC721RoleBasedMintExtension.sol\";\nimport \"../extensions/ERC721RoyaltyExtension.sol\";\nimport \"../extensions/ERC721RoleBasedLockableExtension.sol\";\n\ncontract ERC721TieredSalesCollection is\n Ownable,\n ERC165Storage,\n WithdrawExtension,\n LicenseExtension,\n ERC721PrefixedMetadataExtension,\n ERC721OwnerMintExtension,\n ERC721TieringExtension,\n ERC721RoleBasedMintExtension,\n ERC721RoleBasedLockableExtension,\n ERC721RoyaltyExtension,\n ERC2771ContextOwnable\n{\n struct Config {\n string name;\n string symbol;\n string contractURI;\n string placeholderURI;\n string tokenURIPrefix;\n uint256 maxSupply;\n Tier[] tiers;\n address defaultRoyaltyAddress;\n uint16 defaultRoyaltyBps;\n address proceedsRecipient;\n address trustedForwarder;\n LicenseVersion licenseVersion;\n }\n\n constructor(Config memory config) ERC721(config.name, config.symbol) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _setupRole(DEFAULT_ADMIN_ROLE, deployer);\n\n _transferOwnership(deployer);\n\n __WithdrawExtension_init(config.proceedsRecipient, WithdrawMode.ANYONE);\n __LicenseExtension_init(config.licenseVersion);\n __ERC721CollectionMetadataExtension_init(\n config.name,\n config.symbol,\n config.contractURI\n );\n __ERC721PrefixedMetadataExtension_init(\n config.placeholderURI,\n config.tokenURIPrefix\n );\n __ERC721AutoIdMinterExtension_init(config.maxSupply);\n __ERC721OwnerMintExtension_init();\n __ERC721RoleBasedMintExtension_init(deployer);\n __ERC721RoleBasedLockableExtension_init();\n __ERC721TieringExtension_init(config.tiers);\n __ERC721RoyaltyExtension_init(\n config.defaultRoyaltyAddress,\n config.defaultRoyaltyBps\n );\n __ERC2771ContextOwnable_init(config.trustedForwarder);\n }\n\n function _msgSender()\n internal\n view\n virtual\n override(ERC2771ContextOwnable, Context)\n returns (address sender)\n {\n return ERC2771ContextOwnable._msgSender();\n }\n\n function _msgData()\n internal\n view\n virtual\n override(ERC2771ContextOwnable, Context)\n returns (bytes calldata)\n {\n return ERC2771ContextOwnable._msgData();\n }\n\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal override(ERC721, ERC721LockableExtension) {\n return ERC721LockableExtension._beforeTokenTransfer(from, to, tokenId);\n }\n\n /* PUBLIC */\n\n function name()\n public\n view\n override(ERC721, ERC721CollectionMetadataExtension)\n returns (string memory)\n {\n return ERC721CollectionMetadataExtension.name();\n }\n\n function symbol()\n public\n view\n override(ERC721, ERC721CollectionMetadataExtension)\n returns (string memory)\n {\n return ERC721CollectionMetadataExtension.symbol();\n }\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(\n ERC165Storage,\n ERC721CollectionMetadataExtension,\n ERC721PrefixedMetadataExtension,\n ERC721OwnerMintExtension,\n ERC721RoleBasedMintExtension,\n ERC721RoyaltyExtension,\n ERC721RoleBasedLockableExtension,\n LicenseExtension\n )\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function tokenURI(uint256 _tokenId)\n public\n view\n virtual\n override(ERC721, ERC721PrefixedMetadataExtension)\n returns (string memory)\n {\n return ERC721PrefixedMetadataExtension.tokenURI(_tokenId);\n }\n\n function setMaxSupply(uint256 newValue)\n public\n virtual\n override(ERC721AutoIdMinterExtension, ERC721TieringExtension)\n onlyOwner\n {\n ERC721TieringExtension.setMaxSupply(newValue);\n }\n}\n"},"@openzeppelin/contracts/utils/cryptography/ECDSA.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.3) (utils/cryptography/ECDSA.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../Strings.sol\";\n\n/**\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n *\n * These functions can be used to verify that a message was signed by the holder\n * of the private keys of a given address.\n */\nlibrary ECDSA {\n enum RecoverError {\n NoError,\n InvalidSignature,\n InvalidSignatureLength,\n InvalidSignatureS,\n InvalidSignatureV\n }\n\n function _throwError(RecoverError error) private pure {\n if (error == RecoverError.NoError) {\n return; // no error: do nothing\n } else if (error == RecoverError.InvalidSignature) {\n revert(\"ECDSA: invalid signature\");\n } else if (error == RecoverError.InvalidSignatureLength) {\n revert(\"ECDSA: invalid signature length\");\n } else if (error == RecoverError.InvalidSignatureS) {\n revert(\"ECDSA: invalid signature 's' value\");\n } else if (error == RecoverError.InvalidSignatureV) {\n revert(\"ECDSA: invalid signature 'v' value\");\n }\n }\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with\n * `signature` or error string. This address can then be used for verification purposes.\n *\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {toEthSignedMessageHash} on it.\n *\n * Documentation for signature generation:\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n *\n * _Available since v4.3._\n */\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\n if (signature.length == 65) {\n bytes32 r;\n bytes32 s;\n uint8 v;\n // ecrecover takes the signature parameters, and the only way to get them\n // currently is to use assembly.\n /// @solidity memory-safe-assembly\n assembly {\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n }\n return tryRecover(hash, v, r, s);\n } else {\n return (address(0), RecoverError.InvalidSignatureLength);\n }\n }\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with\n * `signature`. This address can then be used for verification purposes.\n *\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {toEthSignedMessageHash} on it.\n */\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\n (address recovered, RecoverError error) = tryRecover(hash, signature);\n _throwError(error);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n *\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\n *\n * _Available since v4.3._\n */\n function tryRecover(\n bytes32 hash,\n bytes32 r,\n bytes32 vs\n ) internal pure returns (address, RecoverError) {\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\n uint8 v = uint8((uint256(vs) >> 255) + 27);\n return tryRecover(hash, v, r, s);\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n *\n * _Available since v4.2._\n */\n function recover(\n bytes32 hash,\n bytes32 r,\n bytes32 vs\n ) internal pure returns (address) {\n (address recovered, RecoverError error) = tryRecover(hash, r, vs);\n _throwError(error);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n * `r` and `s` signature fields separately.\n *\n * _Available since v4.3._\n */\n function tryRecover(\n bytes32 hash,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal pure returns (address, RecoverError) {\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\n // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\n //\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\n // these malleable signatures as well.\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\n return (address(0), RecoverError.InvalidSignatureS);\n }\n if (v != 27 && v != 28) {\n return (address(0), RecoverError.InvalidSignatureV);\n }\n\n // If the signature is valid (and not malleable), return the signer address\n address signer = ecrecover(hash, v, r, s);\n if (signer == address(0)) {\n return (address(0), RecoverError.InvalidSignature);\n }\n\n return (signer, RecoverError.NoError);\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `v`,\n * `r` and `s` signature fields separately.\n */\n function recover(\n bytes32 hash,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal pure returns (address) {\n (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\n _throwError(error);\n return recovered;\n }\n\n /**\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\n * produces hash corresponding to the one signed with the\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n * JSON-RPC method as part of EIP-191.\n *\n * See {recover}.\n */\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\n // 32 is the length in bytes of hash,\n // enforced by the type signature above\n return keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", hash));\n }\n\n /**\n * @dev Returns an Ethereum Signed Message, created from `s`. This\n * produces hash corresponding to the one signed with the\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n * JSON-RPC method as part of EIP-191.\n *\n * See {recover}.\n */\n function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n\", Strings.toString(s.length), s));\n }\n\n /**\n * @dev Returns an Ethereum Signed Typed Data, created from a\n * `domainSeparator` and a `structHash`. This produces hash corresponding\n * to the one signed with the\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\n * JSON-RPC method as part of EIP-712.\n *\n * See {recover}.\n */\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"\\x19\\x01\", domainSeparator, structHash));\n }\n}\n"},"@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/cryptography/draft-EIP712.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./ECDSA.sol\";\n\n/**\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\n *\n * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\n * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\n * they need in their contracts using a combination of `abi.encode` and `keccak256`.\n *\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n * ({_hashTypedDataV4}).\n *\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n * the chain id to protect against replay attacks on an eventual fork of the chain.\n *\n * NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n *\n * _Available since v3.4._\n */\nabstract contract EIP712 {\n /* solhint-disable var-name-mixedcase */\n // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to\n // invalidate the cached domain separator if the chain id changes.\n bytes32 private immutable _CACHED_DOMAIN_SEPARATOR;\n uint256 private immutable _CACHED_CHAIN_ID;\n address private immutable _CACHED_THIS;\n\n bytes32 private immutable _HASHED_NAME;\n bytes32 private immutable _HASHED_VERSION;\n bytes32 private immutable _TYPE_HASH;\n\n /* solhint-enable var-name-mixedcase */\n\n /**\n * @dev Initializes the domain separator and parameter caches.\n *\n * The meaning of `name` and `version` is specified in\n * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\n *\n * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n * - `version`: the current major version of the signing domain.\n *\n * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n * contract upgrade].\n */\n constructor(string memory name, string memory version) {\n bytes32 hashedName = keccak256(bytes(name));\n bytes32 hashedVersion = keccak256(bytes(version));\n bytes32 typeHash = keccak256(\n \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"\n );\n _HASHED_NAME = hashedName;\n _HASHED_VERSION = hashedVersion;\n _CACHED_CHAIN_ID = block.chainid;\n _CACHED_DOMAIN_SEPARATOR = _buildDomainSeparator(typeHash, hashedName, hashedVersion);\n _CACHED_THIS = address(this);\n _TYPE_HASH = typeHash;\n }\n\n /**\n * @dev Returns the domain separator for the current chain.\n */\n function _domainSeparatorV4() internal view returns (bytes32) {\n if (address(this) == _CACHED_THIS && block.chainid == _CACHED_CHAIN_ID) {\n return _CACHED_DOMAIN_SEPARATOR;\n } else {\n return _buildDomainSeparator(_TYPE_HASH, _HASHED_NAME, _HASHED_VERSION);\n }\n }\n\n function _buildDomainSeparator(\n bytes32 typeHash,\n bytes32 nameHash,\n bytes32 versionHash\n ) private view returns (bytes32) {\n return keccak256(abi.encode(typeHash, nameHash, versionHash, block.chainid, address(this)));\n }\n\n /**\n * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n * function returns the hash of the fully encoded EIP712 message for this domain.\n *\n * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n *\n * ```solidity\n * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n * keccak256(\"Mail(address to,string contents)\"),\n * mailTo,\n * keccak256(bytes(mailContents))\n * )));\n * address signer = ECDSA.recover(digest, signature);\n * ```\n */\n function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\n return ECDSA.toTypedDataHash(_domainSeparatorV4(), structHash);\n }\n}\n"},"contracts/misc/polygon/NativeMetaTransaction.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport {SafeMath} from \"@openzeppelin/contracts/utils/math/SafeMath.sol\";\nimport \"@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol\";\nimport \"@openzeppelin/contracts/utils/Context.sol\";\n\nabstract contract NativeMetaTransaction is Context, EIP712 {\n using SafeMath for uint256;\n\n bytes32 private constant META_TRANSACTION_TYPEHASH =\n keccak256(\n bytes(\n \"MetaTransaction(uint256 nonce,address from,bytes functionSignature)\"\n )\n );\n\n event MetaTransactionExecuted(\n address userAddress,\n address payable relayerAddress,\n bytes functionSignature\n );\n\n mapping(address => uint256) nonces;\n\n /*\n * Meta transaction structure.\n * No point of including value field here as if user is doing value transfer then he has the funds to pay for gas\n * He should call the desired function directly in that case.\n */\n struct MetaTransaction {\n uint256 nonce;\n address from;\n bytes functionSignature;\n }\n\n function _msgSender() internal view override returns (address sender) {\n if (msg.sender == address(this)) {\n bytes memory array = msg.data;\n uint256 index = msg.data.length;\n assembly {\n // Load the 32 bytes word from memory with the address on the lower 20 bytes, and mask those.\n sender := and(\n mload(add(array, index)),\n 0xffffffffffffffffffffffffffffffffffffffff\n )\n }\n } else {\n sender = msg.sender;\n }\n\n return sender;\n }\n\n function executeMetaTransaction(\n address userAddress,\n bytes memory functionSignature,\n bytes32 sigR,\n bytes32 sigS,\n uint8 sigV\n ) public payable returns (bytes memory) {\n MetaTransaction memory metaTx = MetaTransaction({\n nonce: nonces[userAddress],\n from: userAddress,\n functionSignature: functionSignature\n });\n\n require(\n verify(userAddress, metaTx, sigR, sigS, sigV),\n \"Signer and signature do not match\"\n );\n\n // increase nonce for user (to avoid re-use)\n nonces[userAddress] = nonces[userAddress].add(1);\n\n emit MetaTransactionExecuted(\n userAddress,\n payable(msg.sender),\n functionSignature\n );\n\n // Append userAddress and relayer address at the end to extract it from calling context\n (bool success, bytes memory returnData) = address(this).call(\n abi.encodePacked(functionSignature, userAddress)\n );\n\n require(success, \"Function call not successful\");\n\n return returnData;\n }\n\n function hashMetaTransaction(MetaTransaction memory metaTx)\n internal\n pure\n returns (bytes32)\n {\n return\n keccak256(\n abi.encode(\n META_TRANSACTION_TYPEHASH,\n metaTx.nonce,\n metaTx.from,\n keccak256(metaTx.functionSignature)\n )\n );\n }\n\n function getNonce(address user) public view returns (uint256 nonce) {\n nonce = nonces[user];\n }\n\n function verify(\n address signer,\n MetaTransaction memory metaTx,\n bytes32 sigR,\n bytes32 sigS,\n uint8 sigV\n ) internal view returns (bool) {\n require(signer != address(0), \"NativeMetaTransaction: INVALID_SIGNER\");\n return\n signer ==\n ecrecover(\n _hashTypedDataV4(hashMetaTransaction(metaTx)),\n sigV,\n sigR,\n sigS\n );\n }\n}\n"},"contracts/common/meta-transactions/UnorderedForwarder.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/utils/Context.sol\";\nimport \"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\";\nimport \"@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\n\ncontract UnorderedForwarder is EIP712, ReentrancyGuard {\n using ECDSA for bytes32;\n\n struct MetaTransaction {\n address from;\n address to;\n uint256 value;\n uint256 minGasPrice;\n uint256 maxGasPrice;\n uint256 expiresAt;\n uint256 nonce;\n bytes data;\n }\n\n bytes32 private constant _TYPEHASH =\n keccak256(\n \"MetaTransaction(address from,address to,uint256 value,uint256 minGasPrice,uint256 maxGasPrice,uint256 expiresAt,uint256 nonce,bytes data)\"\n );\n\n mapping(bytes32 => uint256) mtxHashToExecutedBlockNumber;\n\n constructor() EIP712(\"UnorderedForwarder\", \"0.0.1\") {}\n\n /// @dev Refunds up to `msg.value` leftover ETH at the end of the call.\n modifier refundsAttachedEth() {\n _;\n uint256 remainingBalance = msg.value > address(this).balance\n ? address(this).balance\n : msg.value;\n if (remainingBalance > 0) {\n payable(msg.sender).transfer(remainingBalance);\n }\n }\n\n /// @dev Ensures that the ETH balance of `this` does not go below the\n /// initial ETH balance before the call (excluding ETH attached to the call).\n modifier doesNotReduceEthBalance() {\n uint256 initialBalance = address(this).balance - msg.value;\n _;\n require(initialBalance <= address(this).balance, \"FWD_ETH_LEAK\");\n }\n\n function verify(MetaTransaction calldata mtx, bytes calldata signature)\n public\n view\n returns (bytes32 mtxHash)\n {\n mtxHash = _hashTypedDataV4(\n keccak256(\n abi.encode(\n _TYPEHASH,\n mtx.from,\n mtx.to,\n mtx.value,\n mtx.minGasPrice,\n mtx.maxGasPrice,\n mtx.expiresAt,\n mtx.nonce,\n keccak256(mtx.data)\n )\n )\n );\n\n // Must not be expired.\n require(mtx.expiresAt > block.timestamp, \"FWD_EXPIRED\");\n\n // Must be signed by the signer.\n require(\n mtxHash.recover(signature) == mtx.from,\n \"FWD_INVALID_SIGNATURE\"\n );\n\n // Transaction must not have been already executed.\n require(mtxHashToExecutedBlockNumber[mtxHash] == 0, \"FWD_REPLAYED\");\n\n return mtxHash;\n }\n\n function execute(MetaTransaction calldata mtx, bytes calldata signature)\n public\n payable\n nonReentrant\n doesNotReduceEthBalance\n refundsAttachedEth\n returns (bytes memory)\n {\n return _execute(mtx, signature);\n }\n\n function batchExecute(\n MetaTransaction[] calldata mtxs,\n bytes[] calldata signatures\n )\n public\n payable\n nonReentrant\n doesNotReduceEthBalance\n refundsAttachedEth\n returns (bytes[] memory returnResults)\n {\n require(mtxs.length == signatures.length, \"FWD_MISMATCH_SIGNATURES\");\n\n returnResults = new bytes[](mtxs.length);\n\n for (uint256 i = 0; i < mtxs.length; ++i) {\n returnResults[i] = _execute(mtxs[i], signatures[i]);\n }\n }\n\n function _execute(MetaTransaction calldata mtx, bytes calldata signature)\n internal\n returns (bytes memory)\n {\n // Must have a valid gas price.\n require(\n mtx.minGasPrice <= tx.gasprice && tx.gasprice <= mtx.maxGasPrice,\n \"FWD_INVALID_GAS\"\n );\n\n // Must have enough ETH.\n require(mtx.value <= address(this).balance, \"FWD_INVALID_VALUE\");\n\n bytes32 mtxHash = verify(mtx, signature);\n\n mtxHashToExecutedBlockNumber[mtxHash] = block.number;\n\n (bool success, bytes memory returndata) = mtx.to.call{value: mtx.value}(\n abi.encodePacked(mtx.data, mtx.from)\n );\n\n if (!success) {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(\"FWD_CALL_FAILED\");\n }\n }\n\n return returndata;\n }\n}\n"},"contracts/collections/ERC721/presets/ERC721SimpleSalesCollection.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\n\nimport \"../../../common/WithdrawExtension.sol\";\nimport \"../../../common/LicenseExtension.sol\";\nimport \"../../../common/meta-transactions/ERC2771ContextOwnable.sol\";\nimport \"../extensions/ERC721CollectionMetadataExtension.sol\";\nimport \"../extensions/ERC721PrefixedMetadataExtension.sol\";\nimport \"../extensions/ERC721AutoIdMinterExtension.sol\";\nimport \"../extensions/ERC721OwnerMintExtension.sol\";\nimport \"../extensions/ERC721PreSaleExtension.sol\";\nimport \"../extensions/ERC721PublicSaleExtension.sol\";\nimport \"../extensions/ERC721RoleBasedMintExtension.sol\";\nimport \"../extensions/ERC721RoyaltyExtension.sol\";\nimport \"../extensions/ERC721RoleBasedLockableExtension.sol\";\nimport \"../extensions/ERC721BulkifyExtension.sol\";\n\ncontract ERC721SimpleSalesCollection is\n Initializable,\n Ownable,\n ERC165Storage,\n WithdrawExtension,\n LicenseExtension,\n ERC721PrefixedMetadataExtension,\n ERC721OwnerMintExtension,\n ERC721PreSaleExtension,\n ERC721PublicSaleExtension,\n ERC721RoleBasedMintExtension,\n ERC721RoleBasedLockableExtension,\n ERC721RoyaltyExtension,\n ERC2771ContextOwnable,\n ERC721BulkifyExtension\n{\n struct Config {\n string name;\n string symbol;\n string contractURI;\n string placeholderURI;\n string tokenURIPrefix;\n uint256 maxSupply;\n uint256 preSalePrice;\n uint256 preSaleMaxMintPerWallet;\n uint256 publicSalePrice;\n uint256 publicSaleMaxMintPerTx;\n address defaultRoyaltyAddress;\n uint16 defaultRoyaltyBps;\n address proceedsRecipient;\n address trustedForwarder;\n LicenseVersion licenseVersion;\n }\n\n constructor(Config memory config) ERC721(config.name, config.symbol) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _setupRole(DEFAULT_ADMIN_ROLE, deployer);\n\n _transferOwnership(deployer);\n\n __WithdrawExtension_init(config.proceedsRecipient, WithdrawMode.ANYONE);\n __LicenseExtension_init(config.licenseVersion);\n __ERC721CollectionMetadataExtension_init(\n config.name,\n config.symbol,\n config.contractURI\n );\n __ERC721PrefixedMetadataExtension_init(\n config.placeholderURI,\n config.tokenURIPrefix\n );\n __ERC721AutoIdMinterExtension_init(config.maxSupply);\n __ERC721OwnerMintExtension_init();\n __ERC721RoleBasedMintExtension_init(deployer);\n __ERC721RoleBasedLockableExtension_init();\n __ERC721PreSaleExtension_init_unchained(\n config.preSalePrice,\n config.preSaleMaxMintPerWallet\n );\n __ERC721PublicSaleExtension_init(\n config.publicSalePrice,\n config.publicSaleMaxMintPerTx\n );\n __ERC721RoyaltyExtension_init(\n config.defaultRoyaltyAddress,\n config.defaultRoyaltyBps\n );\n __ERC2771ContextOwnable_init(config.trustedForwarder);\n __ERC721BulkifyExtension_init();\n }\n\n function _msgSender()\n internal\n view\n virtual\n override(ERC2771ContextOwnable, Context)\n returns (address sender)\n {\n return super._msgSender();\n }\n\n function _msgData()\n internal\n view\n virtual\n override(ERC2771ContextOwnable, Context)\n returns (bytes calldata)\n {\n return super._msgData();\n }\n\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal override(ERC721, ERC721LockableExtension) {\n return ERC721LockableExtension._beforeTokenTransfer(from, to, tokenId);\n }\n\n /* PUBLIC */\n\n function name()\n public\n view\n override(ERC721, ERC721CollectionMetadataExtension)\n returns (string memory)\n {\n return ERC721CollectionMetadataExtension.name();\n }\n\n function symbol()\n public\n view\n override(ERC721, ERC721CollectionMetadataExtension)\n returns (string memory)\n {\n return ERC721CollectionMetadataExtension.symbol();\n }\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(\n ERC165Storage,\n ERC721PrefixedMetadataExtension,\n ERC721PreSaleExtension,\n ERC721PublicSaleExtension,\n ERC721OwnerMintExtension,\n ERC721RoleBasedMintExtension,\n ERC721RoyaltyExtension,\n ERC721RoleBasedLockableExtension,\n ERC721BulkifyExtension,\n LicenseExtension\n )\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function tokenURI(uint256 _tokenId)\n public\n view\n virtual\n override(ERC721, ERC721PrefixedMetadataExtension)\n returns (string memory)\n {\n return ERC721PrefixedMetadataExtension.tokenURI(_tokenId);\n }\n\n function getInfo()\n external\n view\n returns (\n uint256 _maxSupply,\n uint256 _totalSupply,\n uint256 _senderBalance,\n uint256 _preSalePrice,\n uint256 _preSaleMaxMintPerWallet,\n uint256 _preSaleAlreadyClaimed,\n bool _preSaleActive,\n uint256 _publicSalePrice,\n uint256 _publicSaleMaxMintPerTx,\n bool _publicSaleActive\n )\n {\n uint256 balance = 0;\n\n if (_msgSender() != address(0)) {\n balance = this.balanceOf(_msgSender());\n }\n\n return (\n maxSupply,\n this.totalSupply(),\n balance,\n preSalePrice,\n preSaleMaxMintPerWallet,\n preSaleAllowlistClaimed[_msgSender()],\n preSaleStatus,\n publicSalePrice,\n publicSaleMaxMintPerTx,\n publicSaleStatus\n );\n }\n}\n"},"contracts/collections/ERC721/extensions/ERC721BulkifyExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\ninterface IERC721BulkifyExtension {\n function transferFromBulk(\n address from,\n address to,\n uint256[] memory tokenIds\n ) external;\n\n function transferFromBulk(\n address[] memory from,\n address[] memory to,\n uint256[] memory tokenIds\n ) external;\n}\n\n/**\n * @dev Extension to add bulk operations to a standard ERC721 contract.\n */\nabstract contract ERC721BulkifyExtension is\n IERC721BulkifyExtension,\n Initializable,\n ERC165Storage\n{\n function __ERC721BulkifyExtension_init() internal onlyInitializing {\n __ERC721BulkifyExtension_init_unchained();\n }\n\n function __ERC721BulkifyExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721BulkifyExtension).interfaceId);\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n /**\n * Useful for when user wants to return tokens to get a refund,\n * or when they want to transfer lots of tokens by paying gas fee only once.\n */\n function transferFromBulk(\n address from,\n address to,\n uint256[] memory tokenIds\n ) public virtual {\n for (uint256 i = 0; i < tokenIds.length; i++) {\n IERC721(address(this)).transferFrom(from, to, tokenIds[i]);\n }\n }\n\n /**\n * Useful for transferring multiple tokens from/to multiple addresses.\n */\n function transferFromBulk(\n address[] memory from,\n address[] memory to,\n uint256[] memory tokenIds\n ) public virtual {\n require(from.length == to.length, \"FROM_TO_LENGTH_MISMATCH\");\n require(from.length == tokenIds.length, \"FROM_TOKEN_LENGTH_MISMATCH\");\n\n for (uint256 i = 0; i < tokenIds.length; i++) {\n IERC721(address(this)).transferFrom(from[i], to[i], tokenIds[i]);\n }\n }\n}\n"},"contracts/collections/ERC721/presets/ERC721ManagedPrefixedCollection.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\n\nimport \"../../../common/LicenseExtension.sol\";\nimport \"../../../common/meta-transactions/ERC2771ContextOwnable.sol\";\nimport \"../extensions/ERC721CollectionMetadataExtension.sol\";\nimport \"../extensions/ERC721PrefixedMetadataExtension.sol\";\nimport \"../extensions/ERC721AutoIdMinterExtension.sol\";\nimport \"../extensions/ERC721OwnerMintExtension.sol\";\nimport \"../extensions/ERC721OwnerManagedExtension.sol\";\nimport \"../extensions/ERC721RoyaltyExtension.sol\";\nimport \"../extensions/ERC721BulkifyExtension.sol\";\n\ncontract ERC721ManagedPrefixedCollection is\n Initializable,\n Ownable,\n ERC165Storage,\n LicenseExtension,\n ERC2771ContextOwnable,\n ERC721CollectionMetadataExtension,\n ERC721PrefixedMetadataExtension,\n ERC721AutoIdMinterExtension,\n ERC721OwnerMintExtension,\n ERC721OwnerManagedExtension,\n ERC721RoyaltyExtension,\n ERC721BulkifyExtension\n{\n struct Config {\n string name;\n string symbol;\n string contractURI;\n string placeholderURI;\n string tokenURIPrefix;\n address[] initialHolders;\n uint256[] initialAmounts;\n uint256 maxSupply;\n address defaultRoyaltyAddress;\n uint16 defaultRoyaltyBps;\n address trustedForwarder;\n LicenseVersion licenseVersion;\n }\n\n constructor(Config memory config) ERC721(config.name, config.symbol) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n require(\n config.initialHolders.length == config.initialAmounts.length,\n \"ERC721/INVALID_INITIAL_ARGS\"\n );\n\n _transferOwnership(deployer);\n\n __LicenseExtension_init(config.licenseVersion);\n __ERC721CollectionMetadataExtension_init(\n config.name,\n config.symbol,\n config.contractURI\n );\n __ERC721PrefixedMetadataExtension_init(\n config.placeholderURI,\n config.tokenURIPrefix\n );\n __ERC721AutoIdMinterExtension_init(config.maxSupply);\n __ERC721OwnerMintExtension_init();\n __ERC721OwnerManagedExtension_init();\n __ERC721RoyaltyExtension_init(\n config.defaultRoyaltyAddress,\n config.defaultRoyaltyBps\n );\n __ERC2771ContextOwnable_init(config.trustedForwarder);\n __ERC721BulkifyExtension_init();\n\n maxSupply = config.maxSupply;\n\n for (uint256 i = 0; i < config.initialHolders.length; i++) {\n _mintTo(config.initialHolders[i], config.initialAmounts[i]);\n }\n }\n\n function _msgSender()\n internal\n view\n virtual\n override(ERC2771ContextOwnable, Context)\n returns (address sender)\n {\n return super._msgSender();\n }\n\n function _msgData()\n internal\n view\n virtual\n override(ERC2771ContextOwnable, Context)\n returns (bytes calldata)\n {\n return super._msgData();\n }\n\n /* PUBLIC */\n\n function name()\n public\n view\n override(ERC721, ERC721CollectionMetadataExtension)\n returns (string memory)\n {\n return ERC721CollectionMetadataExtension.name();\n }\n\n function symbol()\n public\n view\n override(ERC721, ERC721CollectionMetadataExtension)\n returns (string memory)\n {\n return ERC721CollectionMetadataExtension.symbol();\n }\n\n function isApprovedForAll(address owner, address operator)\n public\n view\n virtual\n override(ERC721, ERC721OwnerManagedExtension)\n returns (bool)\n {\n return ERC721OwnerManagedExtension.isApprovedForAll(owner, operator);\n }\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(\n ERC165Storage,\n ERC721CollectionMetadataExtension,\n ERC721OwnerMintExtension,\n ERC721OwnerManagedExtension,\n ERC721PrefixedMetadataExtension,\n ERC721RoyaltyExtension,\n ERC721BulkifyExtension,\n LicenseExtension\n )\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function tokenURI(uint256 _tokenId)\n public\n view\n virtual\n override(ERC721, ERC721PrefixedMetadataExtension)\n returns (string memory)\n {\n return ERC721PrefixedMetadataExtension.tokenURI(_tokenId);\n }\n\n function getInfo()\n external\n view\n returns (\n uint256 _maxSupply,\n uint256 _totalSupply,\n uint256 _senderBalance\n )\n {\n uint256 balance = 0;\n\n if (_msgSender() != address(0)) {\n balance = this.balanceOf(_msgSender());\n }\n\n return (maxSupply, this.totalSupply(), balance);\n }\n}\n"},"contracts/collections/ERC721/extensions/ERC721OwnerManagedExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"./ERC721AutoIdMinterExtension.sol\";\n\ninterface IERC721OwnerManagedExtension {\n function revokeManagementPower() external;\n}\n\n/**\n * @dev Extension to allow owner to transfer tokens on behalf of owners. Only useful for certain use-cases.\n */\nabstract contract ERC721OwnerManagedExtension is\n IERC721OwnerManagedExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721AutoIdMinterExtension\n{\n bool public managementPowerRevoked;\n\n function __ERC721OwnerManagedExtension_init() internal onlyInitializing {\n __ERC721OwnerManagedExtension_init_unchained();\n }\n\n function __ERC721OwnerManagedExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721OwnerManagedExtension).interfaceId);\n }\n\n /* ADMIN */\n\n function revokeManagementPower() external onlyOwner {\n managementPowerRevoked = true;\n }\n\n /* PUBLIC */\n\n /**\n * Override isApprovedForAll to allow owner to transfer tokens.\n */\n function isApprovedForAll(address owner, address operator)\n public\n view\n virtual\n override(ERC721)\n returns (bool)\n {\n if (!managementPowerRevoked) {\n if (operator == super.owner()) {\n return true;\n }\n }\n\n return super.isApprovedForAll(owner, operator);\n }\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721CollectionMetadataExtension)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n}\n"},"contracts/collections/ERC721A/extensions/ERC721AOwnerManagedExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"./ERC721AMinterExtension.sol\";\n\nimport {IERC721OwnerManagedExtension} from \"../../ERC721/extensions/ERC721OwnerManagedExtension.sol\";\n\n/**\n * @dev Extension to allow owner to transfer tokens on behalf of owners. Only useful for certain use-cases.\n */\nabstract contract ERC721AOwnerManagedExtension is\n IERC721OwnerManagedExtension,\n Initializable,\n Ownable,\n ERC165Storage,\n ERC721AMinterExtension\n{\n bool public managementPowerRevoked;\n\n function __ERC721AOwnerManagedExtension_init() internal onlyInitializing {\n __ERC721AOwnerManagedExtension_init_unchained();\n }\n\n function __ERC721AOwnerManagedExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721OwnerManagedExtension).interfaceId);\n }\n\n /* ADMIN */\n\n function revokeManagementPower() external onlyOwner {\n managementPowerRevoked = true;\n }\n\n /* PUBLIC */\n\n /**\n * Override isApprovedForAll to allow owner to transfer tokens.\n */\n function isApprovedForAll(address owner, address operator)\n public\n view\n virtual\n override(ERC721A)\n returns (bool)\n {\n if (!managementPowerRevoked) {\n if (operator == super.owner()) {\n return true;\n }\n }\n\n return super.isApprovedForAll(owner, operator);\n }\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721ACollectionMetadataExtension)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n}\n"},"contracts/collections/ERC721/presets/ERC721OneOfOneCollection.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\n\nimport \"../../../common/meta-transactions/ERC2771ContextOwnable.sol\";\nimport \"../../../common/LicenseExtension.sol\";\nimport \"../extensions/ERC721CollectionMetadataExtension.sol\";\nimport \"../extensions/ERC721PerTokenMetadataExtension.sol\";\nimport \"../extensions/ERC721OneOfOneMintExtension.sol\";\nimport \"../extensions/ERC721AutoIdMinterExtension.sol\";\nimport \"../extensions/ERC721OwnerMintExtension.sol\";\nimport \"../extensions/ERC721RoyaltyExtension.sol\";\n\ncontract ERC721OneOfOneCollection is\n Initializable,\n Ownable,\n ERC165Storage,\n LicenseExtension,\n ERC721PerTokenMetadataExtension,\n ERC721OwnerMintExtension,\n ERC721RoyaltyExtension,\n ERC721OneOfOneMintExtension,\n ERC2771ContextOwnable\n{\n struct Config {\n string name;\n string symbol;\n string contractURI;\n uint256 maxSupply;\n address defaultRoyaltyAddress;\n uint16 defaultRoyaltyBps;\n address trustedForwarder;\n LicenseVersion licenseVersion;\n }\n\n constructor(Config memory config) ERC721(config.name, config.symbol) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _setupRole(DEFAULT_ADMIN_ROLE, deployer);\n _setupRole(MINTER_ROLE, deployer);\n\n _transferOwnership(deployer);\n\n __LicenseExtension_init(config.licenseVersion);\n __ERC721CollectionMetadataExtension_init(\n config.name,\n config.symbol,\n config.contractURI\n );\n __ERC721PerTokenMetadataExtension_init();\n __ERC721OwnerMintExtension_init();\n __ERC721OneOfOneMintExtension_init();\n __ERC721AutoIdMinterExtension_init(config.maxSupply);\n __ERC721RoyaltyExtension_init(\n config.defaultRoyaltyAddress,\n config.defaultRoyaltyBps\n );\n __ERC2771ContextOwnable_init(config.trustedForwarder);\n }\n\n function _burn(uint256 tokenId)\n internal\n virtual\n override(ERC721, ERC721OneOfOneMintExtension, ERC721URIStorage)\n {\n return ERC721OneOfOneMintExtension._burn(tokenId);\n }\n\n function _msgSender()\n internal\n view\n virtual\n override(ERC2771ContextOwnable, Context)\n returns (address sender)\n {\n return super._msgSender();\n }\n\n function _msgData()\n internal\n view\n virtual\n override(ERC2771ContextOwnable, Context)\n returns (bytes calldata)\n {\n return super._msgData();\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(\n ERC165Storage,\n ERC721OwnerMintExtension,\n ERC721OneOfOneMintExtension,\n ERC721PerTokenMetadataExtension,\n ERC721RoyaltyExtension,\n LicenseExtension\n )\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function name()\n public\n view\n override(\n ERC721,\n ERC721OneOfOneMintExtension,\n ERC721CollectionMetadataExtension\n )\n returns (string memory)\n {\n return ERC721CollectionMetadataExtension.name();\n }\n\n function symbol()\n public\n view\n override(\n ERC721,\n ERC721OneOfOneMintExtension,\n ERC721CollectionMetadataExtension\n )\n returns (string memory)\n {\n return ERC721CollectionMetadataExtension.symbol();\n }\n\n function tokenURI(uint256 _tokenId)\n public\n view\n virtual\n override(ERC721, ERC721OneOfOneMintExtension, ERC721URIStorage)\n returns (string memory)\n {\n return ERC721OneOfOneMintExtension.tokenURI(_tokenId);\n }\n\n function getInfo()\n external\n view\n returns (\n uint256 _maxSupply,\n uint256 _totalSupply,\n uint256 _senderBalance\n )\n {\n uint256 balance = 0;\n\n if (_msgSender() != address(0)) {\n balance = this.balanceOf(_msgSender());\n }\n\n return (maxSupply, this.totalSupply(), balance);\n }\n}\n"},"contracts/tokens/presets/ERC20BasicToken.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol\";\nimport \"@openzeppelin/contracts/security/Pausable.sol\";\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\n\ncontract ERC20BasicToken is\n Initializable,\n ERC20,\n ERC20Burnable,\n Pausable,\n AccessControl\n{\n bytes32 public constant PAUSER_ROLE = keccak256(\"PAUSER_ROLE\");\n bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n\n string private _name;\n string private _symbol;\n\n struct Config {\n string name;\n string symbol;\n }\n\n constructor(Config memory config) ERC20(config.name, config.symbol) {\n initialize(config, msg.sender);\n }\n\n function initialize(Config memory config, address deployer)\n public\n initializer\n {\n _name = config.name;\n _symbol = config.symbol;\n\n _grantRole(DEFAULT_ADMIN_ROLE, deployer);\n _grantRole(PAUSER_ROLE, deployer);\n _grantRole(MINTER_ROLE, deployer);\n }\n\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n function pause() public onlyRole(PAUSER_ROLE) {\n _pause();\n }\n\n function unpause() public onlyRole(PAUSER_ROLE) {\n _unpause();\n }\n\n function mint(address to, uint256 amount) public onlyRole(MINTER_ROLE) {\n _mint(to, amount);\n }\n\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 amount\n ) internal override whenNotPaused {\n super._beforeTokenTransfer(from, to, amount);\n }\n}\n"},"contracts/factory/FlairFactoryNewable.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"../common/WithdrawExtension.sol\";\nimport \"./Clones.sol\";\nimport \"./MinimalProxy.sol\";\n\ncontract FlairFactoryNewable is Initializable, Ownable, WithdrawExtension {\n event ProxyCreated(address indexed deployer, address indexed proxyAddress);\n\n constructor() {\n initialize();\n }\n\n function initialize() public initializer {\n __WithdrawExtension_init(_msgSender(), WithdrawMode.OWNER);\n }\n\n function cloneDeterministicSimple(\n address implementation,\n bytes32 salt,\n bytes calldata data\n ) external payable returns (address deployedProxy) {\n MinimalProxy p = new MinimalProxy{salt: salt}(implementation);\n deployedProxy = address(p);\n\n if (data.length > 0) {\n (bool success, bytes memory returndata) = deployedProxy.call(data);\n\n if (!success) {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(\"FAILED_TO_CLONE\");\n }\n }\n }\n\n emit ProxyCreated(msg.sender, address(deployedProxy));\n }\n}\n"},"contracts/factory/Clones.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nlibrary Clones {\n /**\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n *\n * This function uses the create opcode, which should never revert.\n */\n function clone(address implementation) internal returns (address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n let ptr := mload(0x40)\n mstore(\n ptr,\n 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000\n )\n mstore(add(ptr, 0x14), shl(0x60, implementation))\n mstore(\n add(ptr, 0x28),\n 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000\n )\n instance := create(0, ptr, 0x37)\n }\n require(instance != address(0), \"ERC1167: create failed\");\n }\n\n /**\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n *\n * This function uses the create2 opcode and a `salt` to deterministically deploy\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\n * the clones cannot be deployed twice at the same address.\n */\n function cloneDeterministic(address implementation, bytes32 salt)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let ptr := mload(0x40)\n mstore(\n ptr,\n 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000\n )\n mstore(add(ptr, 0x14), shl(0x60, implementation))\n mstore(\n add(ptr, 0x28),\n 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000\n )\n instance := create2(0, ptr, 0x37, salt)\n }\n require(instance != address(0), \"ERC1167: create2 failed\");\n }\n\n /**\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\n */\n function predictDeterministicAddress(\n address implementation,\n bytes32 salt,\n address deployer\n ) internal pure returns (address predicted) {\n /// @solidity memory-safe-assembly\n assembly {\n let ptr := mload(0x40)\n mstore(\n ptr,\n 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000\n )\n mstore(add(ptr, 0x14), shl(0x60, implementation))\n mstore(\n add(ptr, 0x28),\n 0x5af43d82803e903d91602b57fd5bf3ff00000000000000000000000000000000\n )\n mstore(add(ptr, 0x38), shl(0x60, deployer))\n mstore(add(ptr, 0x4c), salt)\n mstore(add(ptr, 0x6c), keccak256(ptr, 0x37))\n predicted := keccak256(add(ptr, 0x37), 0x55)\n }\n }\n\n /**\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\n */\n function predictDeterministicAddress(address implementation, bytes32 salt)\n internal\n view\n returns (address predicted)\n {\n return predictDeterministicAddress(implementation, salt, address(this));\n }\n}\n"},"contracts/factory/MinimalProxy.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/Proxy.sol\";\nimport \"@openzeppelin/contracts/utils/StorageSlot.sol\";\n\ncontract MinimalProxy is Proxy {\n /**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n * validated in the constructor.\n */\n bytes32 internal constant _IMPLEMENTATION_SLOT =\n 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n constructor(address _impl) payable {\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = _impl;\n }\n\n function _implementation() internal view override returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n}\n"},"@openzeppelin/contracts/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */\nabstract contract Proxy {\n /**\n * @dev Delegates the current call to `implementation`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _delegate(address implementation) internal virtual {\n assembly {\n // Copy msg.data. We take full control of memory in this inline assembly\n // block because it will not return to Solidity code. We overwrite the\n // Solidity scratch pad at memory position 0.\n calldatacopy(0, 0, calldatasize())\n\n // Call the implementation.\n // out and outsize are 0 because we don't know the size yet.\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n // Copy the returned data.\n returndatacopy(0, 0, returndatasize())\n\n switch result\n // delegatecall returns 0 on error.\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n }\n }\n\n /**\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\n * and {_fallback} should delegate.\n */\n function _implementation() internal view virtual returns (address);\n\n /**\n * @dev Delegates the current call to the address returned by `_implementation()`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _fallback() internal virtual {\n _beforeFallback();\n _delegate(_implementation());\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n * function in the contract matches the call data.\n */\n fallback() external payable virtual {\n _fallback();\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n * is empty.\n */\n receive() external payable virtual {\n _fallback();\n }\n\n /**\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n * call, or as part of the Solidity `fallback` or `receive` functions.\n *\n * If overridden should call `super._beforeFallback()`.\n */\n function _beforeFallback() internal virtual {}\n}\n"},"@openzeppelin/contracts/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n *\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\n */\nlibrary StorageSlot {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n}\n"},"contracts/factory/FlairFactory.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"../common/WithdrawExtension.sol\";\nimport \"./Clones.sol\";\n\ncontract FlairFactory is Initializable, Ownable, WithdrawExtension {\n event ProxyCreated(address indexed deployer, address indexed proxyAddress);\n\n constructor() {\n initialize();\n }\n\n function initialize() public initializer {\n __WithdrawExtension_init(_msgSender(), WithdrawMode.OWNER);\n }\n\n function cloneDeterministicSimple(\n address implementation,\n bytes32 salt,\n bytes calldata data\n ) external payable returns (address deployedProxy) {\n bytes32 _salt = keccak256(abi.encodePacked(msg.sender, salt));\n deployedProxy = Clones.cloneDeterministic(implementation, _salt);\n\n if (data.length > 0) {\n (bool success, bytes memory returndata) = deployedProxy.call(data);\n\n if (!success) {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(\"FAILED_TO_CLONE\");\n }\n }\n }\n\n emit ProxyCreated(msg.sender, deployedProxy);\n }\n\n function predictDeterministicSimple(address implementation, bytes32 salt)\n external\n view\n returns (address deployedProxy)\n {\n bytes32 _salt = keccak256(abi.encodePacked(msg.sender, salt));\n deployedProxy = Clones.predictDeterministicAddress(\n implementation,\n _salt\n );\n }\n}\n"},"contracts/collections/ERC721A/extensions/ERC721AFreeMintExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"./ERC721AMinterExtension.sol\";\n\nimport {IERC721FreeMintExtension} from \"../../ERC721/extensions/ERC721FreeMintExtension.sol\";\n\n/**\n * @dev Extension to allow anyone to mint directly without paying.\n */\nabstract contract ERC721AFreeMintExtension is\n IERC721FreeMintExtension,\n Initializable,\n ERC165Storage,\n ERC721AMinterExtension\n{\n function __ERC721AFreeMintExtension_init() internal onlyInitializing {\n __ERC721AFreeMintExtension_init_unchained();\n }\n\n function __ERC721AFreeMintExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721FreeMintExtension).interfaceId);\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721ACollectionMetadataExtension)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function mintFree(address to, uint256 count) external {\n _mintTo(to, count);\n }\n}\n"},"contracts/collections/ERC721/extensions/ERC721FreeMintExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"./ERC721AutoIdMinterExtension.sol\";\n\ninterface IERC721FreeMintExtension {\n function mintFree(address to, uint256 count) external;\n}\n\n/**\n * @dev Extension to allow anyone to mint directly without paying.\n */\nabstract contract ERC721FreeMintExtension is\n IERC721FreeMintExtension,\n Initializable,\n ERC165Storage,\n ERC721AutoIdMinterExtension\n{\n function __ERC721FreeMintExtension_init() internal onlyInitializing {\n __ERC721FreeMintExtension_init_unchained();\n }\n\n function __ERC721FreeMintExtension_init_unchained()\n internal\n onlyInitializing\n {\n _registerInterface(type(IERC721FreeMintExtension).interfaceId);\n }\n\n /* PUBLIC */\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC165Storage, ERC721CollectionMetadataExtension)\n returns (bool)\n {\n return ERC165Storage.supportsInterface(interfaceId);\n }\n\n function mintFree(address to, uint256 count) external {\n _mintTo(to, count);\n }\n}\n"},"contracts/test/TestERC20.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\ncontract TestERC20 is ERC20(\"FlairTest\", \"FTS\") {\n function mint(address to, uint256 amount) public {\n _mint(to, amount);\n }\n}\n"},"contracts/test/TestERC721.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol\";\n\ncontract TestERC721 is ERC721(\"FlairTest\", \"FTS\"), ERC721Enumerable {\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(ERC721, ERC721Enumerable)\n returns (bool)\n {\n return super.supportsInterface(interfaceId);\n }\n\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual override(ERC721, ERC721Enumerable) {\n return super._beforeTokenTransfer(from, to, tokenId);\n }\n\n function mintExact(address to, uint256 tokenId) public returns (bool) {\n _mint(to, tokenId);\n return true;\n }\n\n function mintBulk(address to, uint256 total) public returns (bool) {\n for (uint256 i = 0; i < total; i++) {\n _mint(to, totalSupply());\n }\n return true;\n }\n}\n"},"contracts/misc/opensea/ProxyRegistry.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\ncontract OwnableDelegateProxy {}\n\ncontract ProxyRegistry {\n mapping(address => OwnableDelegateProxy) public proxies;\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":20},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","devdoc","userdoc","storageLayout","evm.gasEstimates"],"":["ast"]}},"metadata":{"useLiteralContent":true}}}},"v2":{"compilerVersion":"v0.8.15+commit.e14f2714","solcInput":{"language":"Solidity","sources":{"src/access/ownable/IERC173.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./IERC173Events.sol\";\n\n/**\n * @title Contract ownership standard interface\n * @dev see https://eips.ethereum.org/EIPS/eip-173\n */\ninterface IERC173 is IERC173Events {\n /**\n * @notice get the ERC173 contract owner\n * @return conrtact owner\n */\n function owner() external view returns (address);\n\n /**\n * @notice transfer contract ownership to new account\n * @param account address of new owner\n */\n function transferOwnership(address account) external;\n}\n"},"src/access/ownable/IERC173Events.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\n/**\n * @title Contract ownership standard interface (event only)\n * @dev see https://eips.ethereum.org/EIPS/eip-173\n */\ninterface IERC173Events {\n event OwnershipTransferred(\n address indexed previousOwner,\n address indexed newOwner\n );\n}\n"},"src/diamond/Diamond.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../access/ownable/OwnableStorage.sol\";\nimport \"../access/ownable/IERC173.sol\";\nimport \"../introspection/ERC165.sol\";\nimport \"../metatx/ERC2771Context.sol\";\nimport \"../diamond/IDiamondCut.sol\";\nimport \"../diamond/IDiamondLoupe.sol\";\n\nimport \"@openzeppelin/contracts/utils/Multicall.sol\";\n\nimport \"./DiamondStorage.sol\";\n\ncontract Diamond is Multicall {\n using ERC165Storage for ERC165Storage.Layout;\n using OwnableStorage for OwnableStorage.Layout;\n\n struct Initialization {\n address initContract;\n bytes initData;\n }\n\n struct CoreFacets {\n address diamondCutFacet;\n address diamondLoupeFacet;\n address erc165Facet;\n address erc173Facet;\n }\n\n constructor(\n address owner,\n CoreFacets memory _coreFacets,\n IDiamondCut.FacetCut[] memory _facets,\n Initialization[] memory _initializations\n ) {\n ERC165Storage.Layout storage erc165 = ERC165Storage.layout();\n\n // register DiamondCut\n\n bytes4[] memory selectorsDiamondCut = new bytes4[](1);\n selectorsDiamondCut[0] = IDiamondCut.diamondCut.selector;\n\n erc165.setSupportedInterface(type(IDiamondCut).interfaceId, true);\n\n // register DiamondLoupe\n\n bytes4[] memory selectorsDiamondLoupe = new bytes4[](4);\n selectorsDiamondLoupe[0] = IDiamondLoupe.facets.selector;\n selectorsDiamondLoupe[1] = IDiamondLoupe.facetFunctionSelectors.selector;\n selectorsDiamondLoupe[2] = IDiamondLoupe.facetAddresses.selector;\n selectorsDiamondLoupe[3] = IDiamondLoupe.facetAddress.selector;\n\n erc165.setSupportedInterface(type(IDiamondLoupe).interfaceId, true);\n\n // register ERC165 (supportsInterface)\n\n bytes4[] memory selectorsERC165 = new bytes4[](1);\n selectorsERC165[0] = IERC165.supportsInterface.selector;\n\n erc165.setSupportedInterface(type(IERC165).interfaceId, true);\n\n // register ERC173 (Ownable)\n\n bytes4[] memory selectorsERC173 = new bytes4[](2);\n selectorsERC173[0] = IERC173.owner.selector;\n selectorsERC173[1] = IERC173.transferOwnership.selector;\n\n erc165.setSupportedInterface(type(IERC173).interfaceId, true);\n\n // execute the first ever diamond cut,\n // we are calling the addFunctions directly to save ~ %50 gas\n\n DiamondStorage.addFunctions(_coreFacets.diamondCutFacet, selectorsDiamondCut);\n DiamondStorage.addFunctions(_coreFacets.diamondLoupeFacet, selectorsDiamondLoupe);\n DiamondStorage.addFunctions(_coreFacets.erc165Facet, selectorsERC165);\n DiamondStorage.addFunctions(_coreFacets.erc173Facet, selectorsERC173);\n\n // set owner\n\n OwnableStorage.layout().setOwner(owner);\n\n // initialization\n\n for (uint256 i = 0; i < _facets.length; i++) {\n DiamondStorage.addFunctions(_facets[i].facetAddress, _facets[i].functionSelectors);\n }\n\n for (uint256 i = 0; i < _initializations.length; i++) {\n DiamondStorage.initializeDiamondCut(_initializations[i].initContract, _initializations[i].initData);\n }\n }\n\n // Find facet for function that is called and execute the\n // function if a facet is found and return any value.\n fallback() external payable {\n DiamondStorage.Layout storage l;\n bytes32 position = DiamondStorage.DIAMOND_STORAGE_POSITION;\n // get diamond storage\n assembly {\n l.slot := position\n }\n\n // get facet from function selector\n address facet = l.selectorToFacetAndPosition[msg.sig].facetAddress;\n require(facet != address(0), \"BAD_FUNC\");\n\n // Execute external function from facet using delegatecall and return any value.\n assembly {\n // copy function selector and any arguments\n calldatacopy(0, 0, calldatasize())\n // execute function call using the facet\n let result := delegatecall(gas(), facet, 0, calldatasize(), 0, 0)\n // get any return value\n returndatacopy(0, 0, returndatasize())\n // return any return value or error back to the caller\n switch result\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n }\n }\n\n receive() external payable {}\n}\n"},"src/access/ownable/OwnableStorage.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nlibrary OwnableStorage {\n struct Layout {\n address owner;\n }\n\n bytes32 internal constant STORAGE_SLOT =\n keccak256(\"openzeppelin.contracts.storage.Ownable\");\n\n function layout() internal pure returns (Layout storage l) {\n bytes32 slot = STORAGE_SLOT;\n assembly {\n l.slot := slot\n }\n }\n\n function setOwner(Layout storage l, address owner) internal {\n l.owner = owner;\n }\n}\n"},"src/introspection/ERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./IERC165.sol\";\nimport \"./ERC165Storage.sol\";\n\n/**\n * @title ERC165 implementation\n */\ncontract ERC165 is IERC165 {\n using ERC165Storage for ERC165Storage.Layout;\n\n /**\n * @inheritdoc IERC165\n */\n function supportsInterface(bytes4 interfaceId) public view returns (bool) {\n return ERC165Storage.layout().isSupportedInterface(interfaceId);\n }\n}\n"},"src/metatx/ERC2771Context.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./ERC2771ContextStorage.sol\";\nimport \"./ERC2771ContextInternal.sol\";\nimport \"./IERC2771Context.sol\";\n\ncontract ERC2771Context is IERC2771Context, ERC2771ContextInternal {\n using ERC2771ContextStorage for ERC2771ContextStorage.Layout;\n\n function isTrustedForwarder(address forwarder) public view virtual returns (bool) {\n return _isTrustedForwarder(forwarder);\n }\n}\n"},"src/diamond/IDiamondCut.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\n/******************************************************************************\\\n* Author: Nick Mudge (https://twitter.com/mudgen)\n* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535\n/******************************************************************************/\n\ninterface IDiamondCut {\n enum FacetCutAction {\n Add,\n Replace,\n Remove\n }\n // Add=0, Replace=1, Remove=2\n\n struct FacetCut {\n address facetAddress;\n FacetCutAction action;\n bytes4[] functionSelectors;\n }\n\n /// @notice Add/replace/remove any number of functions and optionally execute\n /// a function with delegatecall\n /// @param _diamondCut Contains the facet addresses and function selectors\n /// @param _init The address of the contract or facet to execute _calldata\n /// @param _calldata A function call, including function selector and arguments\n /// _calldata is executed with delegatecall on _init\n function diamondCut(\n FacetCut[] calldata _diamondCut,\n address _init,\n bytes calldata _calldata\n ) external;\n\n event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata);\n}\n"},"src/diamond/IDiamondLoupe.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\n/******************************************************************************\\\n* Author: Nick Mudge (https://twitter.com/mudgen)\n* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535\n/******************************************************************************/\n\n// A loupe is a small magnifying glass used to look at diamonds.\n// These functions look at diamonds\ninterface IDiamondLoupe {\n /// These functions are expected to be called frequently\n /// by tools.\n\n struct Facet {\n address facetAddress;\n bytes4[] functionSelectors;\n }\n\n /// @notice Gets all facet addresses and their four byte function selectors.\n /// @return facets_ Facet\n function facets() external view returns (Facet[] memory facets_);\n\n /// @notice Gets all the function selectors supported by a specific facet.\n /// @param _facet The facet address.\n /// @return facetFunctionSelectors_\n function facetFunctionSelectors(address _facet)\n external\n view\n returns (bytes4[] memory facetFunctionSelectors_);\n\n /// @notice Get all the facet addresses used by a diamond.\n /// @return facetAddresses_\n function facetAddresses()\n external\n view\n returns (address[] memory facetAddresses_);\n\n /// @notice Gets the facet that supports the given selector.\n /// @dev If facet is not found return address(0).\n /// @param _functionSelector The function selector.\n /// @return facetAddress_ The facet address.\n function facetAddress(bytes4 _functionSelector)\n external\n view\n returns (address facetAddress_);\n}\n"},"src/diamond/DiamondStorage.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\n/******************************************************************************\\\n* Author: Nick Mudge (https://twitter.com/mudgen)\n* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535\n/******************************************************************************/\n\nimport \"../diamond/IDiamondCut.sol\";\n\n// Remember to add the loupe functions from DiamondLoupeFacet to the diamond.\n// The loupe functions are required by the EIP2535 Diamonds standard\n\nerror DiamondFacetAlreadyExists(address facet, bytes4 selector);\nerror DiamondFacetSameFunction(address facet, bytes4 selector);\n\nlibrary DiamondStorage {\n bytes32 constant DIAMOND_STORAGE_POSITION = keccak256(\"diamond.standard.diamond.storage\");\n\n struct FacetAddressAndPosition {\n address facetAddress;\n uint96 functionSelectorPosition; // position in facetFunctionSelectors.functionSelectors array\n }\n\n struct FacetFunctionSelectors {\n bytes4[] functionSelectors;\n uint256 facetAddressPosition; // position of facetAddress in facetAddresses array\n }\n\n struct Layout {\n // maps function selector to the facet address and\n // the position of the selector in the facetFunctionSelectors.selectors array\n mapping(bytes4 => FacetAddressAndPosition) selectorToFacetAndPosition;\n // maps facet addresses to function selectors\n mapping(address => FacetFunctionSelectors) facetFunctionSelectors;\n // facet addresses\n address[] facetAddresses;\n }\n\n function layout() internal pure returns (Layout storage l) {\n bytes32 position = DIAMOND_STORAGE_POSITION;\n assembly {\n l.slot := position\n }\n }\n\n event DiamondCut(IDiamondCut.FacetCut[] _diamondCut, address _init, bytes _calldata);\n\n // Internal function version of diamondCut\n function diamondCut(\n IDiamondCut.FacetCut[] memory _diamondCut,\n address _init,\n bytes memory _calldata\n ) internal {\n for (uint256 facetIndex; facetIndex < _diamondCut.length; facetIndex++) {\n IDiamondCut.FacetCutAction action = _diamondCut[facetIndex].action;\n if (action == IDiamondCut.FacetCutAction.Add) {\n addFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);\n } else if (action == IDiamondCut.FacetCutAction.Replace) {\n replaceFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);\n } else if (action == IDiamondCut.FacetCutAction.Remove) {\n removeFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);\n } else {\n revert(\"LibDiamondCut: Incorrect FacetCutAction\");\n }\n }\n emit DiamondCut(_diamondCut, _init, _calldata);\n initializeDiamondCut(_init, _calldata);\n }\n\n function addFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {\n // require(\n // _functionSelectors.length > 0,\n // \"LibDiamondCut: No selectors in facet to cut\"\n // );\n Layout storage l = layout();\n // require(\n // _facetAddress != address(0),\n // \"LibDiamondCut: Add facet can't be address(0)\"\n // );\n uint96 selectorPosition = uint96(l.facetFunctionSelectors[_facetAddress].functionSelectors.length);\n // add new facet address if it does not exist\n if (selectorPosition == 0) {\n addFacet(l, _facetAddress);\n }\n for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {\n bytes4 selector = _functionSelectors[selectorIndex];\n address oldFacetAddress = l.selectorToFacetAndPosition[selector].facetAddress;\n\n if (oldFacetAddress != address(0)) {\n revert DiamondFacetAlreadyExists(oldFacetAddress, selector);\n }\n\n addFunction(l, selector, selectorPosition, _facetAddress);\n selectorPosition++;\n }\n }\n\n function replaceFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {\n // require(\n // _functionSelectors.length > 0,\n // \"LibDiamondCut: No selectors in facet to cut\"\n // );\n Layout storage l = layout();\n // require(\n // _facetAddress != address(0),\n // \"LibDiamondCut: Add facet can't be address(0)\"\n // );\n uint96 selectorPosition = uint96(l.facetFunctionSelectors[_facetAddress].functionSelectors.length);\n // add new facet address if it does not exist\n if (selectorPosition == 0) {\n addFacet(l, _facetAddress);\n }\n for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {\n bytes4 selector = _functionSelectors[selectorIndex];\n address oldFacetAddress = l.selectorToFacetAndPosition[selector].facetAddress;\n\n if (oldFacetAddress == _facetAddress) {\n revert DiamondFacetSameFunction(oldFacetAddress, selector);\n }\n\n removeFunction(l, oldFacetAddress, selector);\n addFunction(l, selector, selectorPosition, _facetAddress);\n selectorPosition++;\n }\n }\n\n function removeFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {\n // require(\n // _functionSelectors.length > 0,\n // \"LibDiamondCut: No selectors in facet to cut\"\n // );\n Layout storage l = layout();\n // if function does not exist then do nothing and return\n // require(\n // _facetAddress == address(0),\n // \"LibDiamondCut: Remove facet address must be address(0)\"\n // );\n for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {\n bytes4 selector = _functionSelectors[selectorIndex];\n address oldFacetAddress = l.selectorToFacetAndPosition[selector].facetAddress;\n removeFunction(l, oldFacetAddress, selector);\n }\n }\n\n function addFacet(Layout storage l, address _facetAddress) internal {\n enforceHasContractCode(_facetAddress, \"LibDiamondCut: New facet has no code\");\n l.facetFunctionSelectors[_facetAddress].facetAddressPosition = l.facetAddresses.length;\n l.facetAddresses.push(_facetAddress);\n }\n\n function addFunction(\n Layout storage l,\n bytes4 _selector,\n uint96 _selectorPosition,\n address _facetAddress\n ) internal {\n l.selectorToFacetAndPosition[_selector].functionSelectorPosition = _selectorPosition;\n l.facetFunctionSelectors[_facetAddress].functionSelectors.push(_selector);\n l.selectorToFacetAndPosition[_selector].facetAddress = _facetAddress;\n }\n\n function removeFunction(\n Layout storage l,\n address _facetAddress,\n bytes4 _selector\n ) internal {\n // require(\n // _facetAddress != address(0),\n // \"LibDiamondCut: Can't remove function that doesn't exist\"\n // );\n // an immutable function is a function defined directly in a diamond\n // require(\n // _facetAddress != address(this),\n // \"LibDiamondCut: Can't remove immutable function\"\n // );\n // replace selector with last selector, then delete last selector\n uint256 selectorPosition = l.selectorToFacetAndPosition[_selector].functionSelectorPosition;\n uint256 lastSelectorPosition = l.facetFunctionSelectors[_facetAddress].functionSelectors.length - 1;\n // if not the same then replace _selector with lastSelector\n if (selectorPosition != lastSelectorPosition) {\n bytes4 lastSelector = l.facetFunctionSelectors[_facetAddress].functionSelectors[lastSelectorPosition];\n l.facetFunctionSelectors[_facetAddress].functionSelectors[selectorPosition] = lastSelector;\n l.selectorToFacetAndPosition[lastSelector].functionSelectorPosition = uint96(selectorPosition);\n }\n // delete the last selector\n l.facetFunctionSelectors[_facetAddress].functionSelectors.pop();\n delete l.selectorToFacetAndPosition[_selector];\n\n // if no more selectors for facet address then delete the facet address\n if (lastSelectorPosition == 0) {\n // replace facet address with last facet address and delete last facet address\n uint256 lastFacetAddressPosition = l.facetAddresses.length - 1;\n uint256 facetAddressPosition = l.facetFunctionSelectors[_facetAddress].facetAddressPosition;\n if (facetAddressPosition != lastFacetAddressPosition) {\n address lastFacetAddress = l.facetAddresses[lastFacetAddressPosition];\n l.facetAddresses[facetAddressPosition] = lastFacetAddress;\n l.facetFunctionSelectors[lastFacetAddress].facetAddressPosition = facetAddressPosition;\n }\n l.facetAddresses.pop();\n delete l.facetFunctionSelectors[_facetAddress].facetAddressPosition;\n }\n }\n\n function initializeDiamondCut(address _init, bytes memory _calldata) internal {\n if (_init == address(0)) {\n require(_calldata.length == 0, \"LibDiamondCut: _init is address(0) but_calldata is not empty\");\n } else {\n require(_calldata.length > 0, \"LibDiamondCut: _calldata is empty but _init is not address(0)\");\n if (_init != address(this)) {\n enforceHasContractCode(_init, \"LibDiamondCut: _init address has no code\");\n }\n (bool success, bytes memory error) = _init.delegatecall(_calldata);\n if (!success) {\n if (error.length > 0) {\n // bubble up the error\n revert(string(error));\n } else {\n revert(\"LibDiamondCut: _init function reverted\");\n }\n }\n }\n }\n\n function enforceHasContractCode(address _contract, string memory _errorMessage) internal view {\n uint256 contractSize;\n assembly {\n contractSize := extcodesize(_contract)\n }\n require(contractSize > 0, _errorMessage);\n }\n}\n"},"@openzeppelin/contracts/utils/Multicall.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (utils/Multicall.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./Address.sol\";\n\n/**\n * @dev Provides a function to batch together multiple calls in a single external call.\n *\n * _Available since v4.1._\n */\nabstract contract Multicall {\n /**\n * @dev Receives and executes a batch of function calls on this contract.\n */\n function multicall(bytes[] calldata data) external virtual returns (bytes[] memory results) {\n results = new bytes[](data.length);\n for (uint256 i = 0; i < data.length; i++) {\n results[i] = Address.functionDelegateCall(address(this), data[i]);\n }\n return results;\n }\n}\n"},"src/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\n/**\n * @title ERC165 interface registration interface\n * @dev see https://eips.ethereum.org/EIPS/eip-165\n */\ninterface IERC165 {\n /**\n * @notice query whether contract has registered support for given interface\n * @param interfaceId interface id\n * @return bool whether interface is supported\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"src/introspection/ERC165Storage.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nlibrary ERC165Storage {\n struct Layout {\n mapping(bytes4 => bool) supportedInterfaces;\n }\n\n bytes32 internal constant STORAGE_SLOT = keccak256(\"openzeppelin.contracts.storage.ERC165\");\n\n function layout() internal pure returns (Layout storage l) {\n bytes32 slot = STORAGE_SLOT;\n assembly {\n l.slot := slot\n }\n }\n\n function isSupportedInterface(Layout storage l, bytes4 interfaceId) internal view returns (bool) {\n return l.supportedInterfaces[interfaceId];\n }\n\n function setSupportedInterface(\n Layout storage l,\n bytes4 interfaceId,\n bool status\n ) internal {\n require(interfaceId != 0xffffffff, \"ERC165: invalid interface id\");\n l.supportedInterfaces[interfaceId] = status;\n }\n}\n"},"src/metatx/ERC2771ContextStorage.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nlibrary ERC2771ContextStorage {\n struct Layout {\n address trustedForwarder;\n }\n\n bytes32 internal constant STORAGE_SLOT = keccak256(\"openzeppelin.contracts.storage.ERC2771Context\");\n\n function layout() internal pure returns (Layout storage l) {\n bytes32 slot = STORAGE_SLOT;\n assembly {\n l.slot := slot\n }\n }\n}\n"},"src/metatx/ERC2771ContextInternal.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/utils/Context.sol\";\n\nimport \"./ERC2771ContextStorage.sol\";\n\nabstract contract ERC2771ContextInternal is Context {\n function _isTrustedForwarder(address operator) internal view returns (bool) {\n return ERC2771ContextStorage.layout().trustedForwarder == operator;\n }\n\n function _msgSender() internal view virtual override returns (address sender) {\n if (_isTrustedForwarder(msg.sender)) {\n // The assembly code is more direct than the Solidity version using `abi.decode`.\n /// @solidity memory-safe-assembly\n assembly {\n sender := shr(96, calldataload(sub(calldatasize(), 20)))\n }\n } else {\n return super._msgSender();\n }\n }\n\n function _msgData() internal view virtual override returns (bytes calldata) {\n if (_isTrustedForwarder(msg.sender)) {\n return msg.data[:msg.data.length - 20];\n } else {\n return super._msgData();\n }\n }\n}\n"},"src/metatx/IERC2771Context.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\ninterface IERC2771Context {\n function isTrustedForwarder(address forwarder) external view returns (bool);\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n}\n"},"@openzeppelin/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCall(target, data, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n require(isContract(target), \"Address: call to non-contract\");\n\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n require(isContract(target), \"Address: static call to non-contract\");\n\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(isContract(target), \"Address: delegate call to non-contract\");\n\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n }\n}\n"},"@openzeppelin/contracts/proxy/utils/Initializable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../../utils/Address.sol\";\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * contract MyToken is ERC20Upgradeable {\n * function initialize() initializer public {\n * __ERC20_init(\"MyToken\", \"MTK\");\n * }\n * }\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n * function initializeV2() reinitializer(2) public {\n * __ERC20Permit_init(\"MyToken\");\n * }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n * _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n /**\n * @dev Indicates that the contract has been initialized.\n * @custom:oz-retyped-from bool\n */\n uint8 private _initialized;\n\n /**\n * @dev Indicates that the contract is in the process of being initialized.\n */\n bool private _initializing;\n\n /**\n * @dev Triggered when the contract has been initialized or reinitialized.\n */\n event Initialized(uint8 version);\n\n /**\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n * `onlyInitializing` functions can be used to initialize parent contracts. Equivalent to `reinitializer(1)`.\n */\n modifier initializer() {\n bool isTopLevelCall = !_initializing;\n require(\n (isTopLevelCall && _initialized < 1) || (!Address.isContract(address(this)) && _initialized == 1),\n \"Initializable: contract is already initialized\"\n );\n _initialized = 1;\n if (isTopLevelCall) {\n _initializing = true;\n }\n _;\n if (isTopLevelCall) {\n _initializing = false;\n emit Initialized(1);\n }\n }\n\n /**\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n * used to initialize parent contracts.\n *\n * `initializer` is equivalent to `reinitializer(1)`, so a reinitializer may be used after the original\n * initialization step. This is essential to configure modules that are added through upgrades and that require\n * initialization.\n *\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n * a contract, executing them in the right order is up to the developer or operator.\n */\n modifier reinitializer(uint8 version) {\n require(!_initializing && _initialized < version, \"Initializable: contract is already initialized\");\n _initialized = version;\n _initializing = true;\n _;\n _initializing = false;\n emit Initialized(version);\n }\n\n /**\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\n */\n modifier onlyInitializing() {\n require(_initializing, \"Initializable: contract is not initializing\");\n _;\n }\n\n /**\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n * through proxies.\n */\n function _disableInitializers() internal virtual {\n require(!_initializing, \"Initializable: contract is initializing\");\n if (_initialized < type(uint8).max) {\n _initialized = type(uint8).max;\n emit Initialized(type(uint8).max);\n }\n }\n}\n"},"src/factory/FlairFactoryNewable.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"../common/WithdrawExtension.sol\";\nimport \"./Clones.sol\";\nimport \"./MinimalProxy.sol\";\n\ncontract FlairFactoryNewable is Initializable, Ownable, WithdrawExtension {\n event ProxyCreated(address indexed deployer, address indexed proxyAddress);\n\n constructor() {\n initialize();\n }\n\n function initialize() public initializer {\n __WithdrawExtension_init(_msgSender(), WithdrawMode.OWNER);\n }\n\n function cloneDeterministicSimple(\n address implementation,\n bytes32 salt,\n bytes calldata data\n ) external payable returns (address deployedProxy) {\n MinimalProxy p = new MinimalProxy{salt: salt}(implementation);\n deployedProxy = address(p);\n\n if (data.length > 0) {\n (bool success, bytes memory returndata) = deployedProxy.call(data);\n\n if (!success) {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(\"FAILED_TO_CLONE\");\n }\n }\n }\n\n emit ProxyCreated(msg.sender, address(deployedProxy));\n }\n}\n"},"src/common/WithdrawExtension.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol\";\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nenum WithdrawMode {\n OWNER,\n RECIPIENT,\n ANYONE,\n NOBODY\n}\n\ninterface IWithdrawExtension {\n function setWithdrawRecipient(address _withdrawRecipient) external;\n\n function lockWithdrawRecipient() external;\n\n function revokeWithdrawPower() external;\n\n function setWithdrawMode(WithdrawMode _withdrawMode) external;\n\n function lockWithdrawMode() external;\n\n function withdraw(\n address[] calldata claimTokens,\n uint256[] calldata amounts\n ) external;\n}\n\nabstract contract WithdrawExtension is\n IWithdrawExtension,\n Initializable,\n Ownable,\n ERC165Storage\n{\n using Address for address;\n using Address for address payable;\n\n event WithdrawPowerRevoked();\n event Withdrawn(address[] claimTokens, uint256[] amounts);\n\n address public withdrawRecipient;\n bool public withdrawRecipientLocked;\n\n bool public withdrawPowerRevoked;\n\n WithdrawMode public withdrawMode;\n bool public withdrawModeLocked;\n\n /* INTERNAL */\n\n function __WithdrawExtension_init(\n address _withdrawRecipient,\n WithdrawMode _withdrawMode\n ) internal onlyInitializing {\n __WithdrawExtension_init_unchained(_withdrawRecipient, _withdrawMode);\n }\n\n function __WithdrawExtension_init_unchained(\n address _withdrawRecipient,\n WithdrawMode _withdrawMode\n ) internal onlyInitializing {\n _registerInterface(type(IWithdrawExtension).interfaceId);\n\n withdrawRecipient = _withdrawRecipient;\n withdrawMode = _withdrawMode;\n }\n\n /* ADMIN */\n\n function setWithdrawRecipient(address _withdrawRecipient)\n external\n onlyOwner\n {\n require(!withdrawRecipientLocked, \"LOCKED\");\n withdrawRecipient = _withdrawRecipient;\n }\n\n function lockWithdrawRecipient() external onlyOwner {\n require(!withdrawRecipientLocked, \"LOCKED\");\n withdrawRecipientLocked = true;\n }\n\n function setWithdrawMode(WithdrawMode _withdrawMode) external onlyOwner {\n require(!withdrawModeLocked, \"LOCKED\");\n withdrawMode = _withdrawMode;\n }\n\n function lockWithdrawMode() external onlyOwner {\n require(!withdrawModeLocked, \"OCKED\");\n withdrawModeLocked = true;\n }\n\n /* PUBLIC */\n\n function withdraw(\n address[] calldata claimTokens,\n uint256[] calldata amounts\n ) external {\n /**\n * We are using msg.sender for smaller attack surface when evaluating\n * the sender of the function call. If in future we want to handle \"withdraw\"\n * functionality via meta transactions, we should consider using `_msgSender`\n */\n _assertWithdrawAccess(msg.sender);\n\n require(withdrawRecipient != address(0), \"WITHDRAW/NO_RECIPIENT\");\n require(!withdrawPowerRevoked, \"WITHDRAW/EMERGENCY_POWER_REVOKED\");\n\n for (uint256 i = 0; i < claimTokens.length; i++) {\n if (claimTokens[i] == address(0)) {\n payable(withdrawRecipient).sendValue(amounts[i]);\n } else {\n IERC20(claimTokens[i]).transfer(withdrawRecipient, amounts[i]);\n }\n }\n\n emit Withdrawn(claimTokens, amounts);\n }\n\n function revokeWithdrawPower() external onlyOwner {\n withdrawPowerRevoked = true;\n emit WithdrawPowerRevoked();\n }\n\n /* INTERNAL */\n\n function _assertWithdrawAccess(address account) internal view {\n if (withdrawMode == WithdrawMode.NOBODY) {\n revert(\"WITHDRAW/LOCKED\");\n } else if (withdrawMode == WithdrawMode.ANYONE) {\n return;\n } else if (withdrawMode == WithdrawMode.RECIPIENT) {\n require(withdrawRecipient == account, \"WITHDRAW/ONLY_RECIPIENT\");\n } else if (withdrawMode == WithdrawMode.OWNER) {\n require(owner() == account, \"WITHDRAW/ONLY_OWNER\");\n }\n }\n}\n"},"src/factory/Clones.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nlibrary Clones {\n /**\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n *\n * This function uses the create opcode, which should never revert.\n */\n function clone(address implementation) internal returns (address instance) {\n /// @solidity memory-safe-assembly\n assembly {\n let ptr := mload(0x40)\n mstore(\n ptr,\n 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000\n )\n mstore(add(ptr, 0x14), shl(0x60, implementation))\n mstore(\n add(ptr, 0x28),\n 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000\n )\n instance := create(0, ptr, 0x37)\n }\n require(instance != address(0), \"ERC1167: create failed\");\n }\n\n /**\n * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.\n *\n * This function uses the create2 opcode and a `salt` to deterministically deploy\n * the clone. Using the same `implementation` and `salt` multiple time will revert, since\n * the clones cannot be deployed twice at the same address.\n */\n function cloneDeterministic(address implementation, bytes32 salt)\n internal\n returns (address instance)\n {\n /// @solidity memory-safe-assembly\n assembly {\n let ptr := mload(0x40)\n mstore(\n ptr,\n 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000\n )\n mstore(add(ptr, 0x14), shl(0x60, implementation))\n mstore(\n add(ptr, 0x28),\n 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000\n )\n instance := create2(0, ptr, 0x37, salt)\n }\n require(instance != address(0), \"ERC1167: create2 failed\");\n }\n\n /**\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\n */\n function predictDeterministicAddress(\n address implementation,\n bytes32 salt,\n address deployer\n ) internal pure returns (address predicted) {\n /// @solidity memory-safe-assembly\n assembly {\n let ptr := mload(0x40)\n mstore(\n ptr,\n 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000\n )\n mstore(add(ptr, 0x14), shl(0x60, implementation))\n mstore(\n add(ptr, 0x28),\n 0x5af43d82803e903d91602b57fd5bf3ff00000000000000000000000000000000\n )\n mstore(add(ptr, 0x38), shl(0x60, deployer))\n mstore(add(ptr, 0x4c), salt)\n mstore(add(ptr, 0x6c), keccak256(ptr, 0x37))\n predicted := keccak256(add(ptr, 0x37), 0x55)\n }\n }\n\n /**\n * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.\n */\n function predictDeterministicAddress(address implementation, bytes32 salt)\n internal\n view\n returns (address predicted)\n {\n return predictDeterministicAddress(implementation, salt, address(this));\n }\n}\n"},"src/factory/MinimalProxy.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/Proxy.sol\";\nimport \"@openzeppelin/contracts/utils/StorageSlot.sol\";\n\ncontract MinimalProxy is Proxy {\n /**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n * validated in the constructor.\n */\n bytes32 internal constant _IMPLEMENTATION_SLOT =\n 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n constructor(address _impl) payable {\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = _impl;\n }\n\n function _implementation() internal view override returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n}\n"},"@openzeppelin/contracts/access/Ownable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n constructor() {\n _transferOwnership(_msgSender());\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions anymore. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby removing any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n"},"@openzeppelin/contracts/utils/Counters.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title Counters\n * @author Matt Condon (@shrugs)\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\n *\n * Include with `using Counters for Counters.Counter;`\n */\nlibrary Counters {\n struct Counter {\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\n // this feature: see https://github.com/ethereum/solidity/issues/4637\n uint256 _value; // default: 0\n }\n\n function current(Counter storage counter) internal view returns (uint256) {\n return counter._value;\n }\n\n function increment(Counter storage counter) internal {\n unchecked {\n counter._value += 1;\n }\n }\n\n function decrement(Counter storage counter) internal {\n uint256 value = counter._value;\n require(value > 0, \"Counter: decrement overflow\");\n unchecked {\n counter._value = value - 1;\n }\n }\n\n function reset(Counter storage counter) internal {\n counter._value = 0;\n }\n}\n"},"@openzeppelin/contracts/security/ReentrancyGuard.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Contract module that helps prevent reentrant calls to a function.\n *\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n * available, which can be applied to functions to make sure there are no nested\n * (reentrant) calls to them.\n *\n * Note that because there is a single `nonReentrant` guard, functions marked as\n * `nonReentrant` may not call one another. This can be worked around by making\n * those functions `private`, and then adding `external` `nonReentrant` entry\n * points to them.\n *\n * TIP: If you would like to learn more about reentrancy and alternative ways\n * to protect against it, check out our blog post\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n */\nabstract contract ReentrancyGuard {\n // Booleans are more expensive than uint256 or any type that takes up a full\n // word because each write operation emits an extra SLOAD to first read the\n // slot's contents, replace the bits taken up by the boolean, and then write\n // back. This is the compiler's defense against contract upgrades and\n // pointer aliasing, and it cannot be disabled.\n\n // The values being non-zero value makes deployment a bit more expensive,\n // but in exchange the refund on every call to nonReentrant will be lower in\n // amount. Since refunds are capped to a percentage of the total\n // transaction's gas, it is best to keep them low in cases like this one, to\n // increase the likelihood of the full refund coming into effect.\n uint256 private constant _NOT_ENTERED = 1;\n uint256 private constant _ENTERED = 2;\n\n uint256 private _status;\n\n constructor() {\n _status = _NOT_ENTERED;\n }\n\n /**\n * @dev Prevents a contract from calling itself, directly or indirectly.\n * Calling a `nonReentrant` function from another `nonReentrant`\n * function is not supported. It is possible to prevent this from happening\n * by making the `nonReentrant` function external, and making it call a\n * `private` function that does the actual work.\n */\n modifier nonReentrant() {\n // On the first call to nonReentrant, _notEntered will be true\n require(_status != _ENTERED, \"ReentrancyGuard: reentrant call\");\n\n // Any calls to nonReentrant after this point will fail\n _status = _ENTERED;\n\n _;\n\n // By storing the original value once again, a refund is triggered (see\n // https://eips.ethereum.org/EIPS/eip-2200)\n _status = _NOT_ENTERED;\n }\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address from,\n address to,\n uint256 amount\n ) external returns (bool);\n}\n"},"@openzeppelin/contracts/utils/introspection/ERC165Storage.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165Storage.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./ERC165.sol\";\n\n/**\n * @dev Storage based implementation of the {IERC165} interface.\n *\n * Contracts may inherit from this and call {_registerInterface} to declare\n * their support of an interface.\n */\nabstract contract ERC165Storage is ERC165 {\n /**\n * @dev Mapping of interface ids to whether or not it's supported.\n */\n mapping(bytes4 => bool) private _supportedInterfaces;\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return super.supportsInterface(interfaceId) || _supportedInterfaces[interfaceId];\n }\n\n /**\n * @dev Registers the contract as an implementer of the interface defined by\n * `interfaceId`. Support of the actual ERC165 interface is automatic and\n * registering its interface id is not required.\n *\n * See {IERC165-supportsInterface}.\n *\n * Requirements:\n *\n * - `interfaceId` cannot be the ERC165 invalid interface (`0xffffffff`).\n */\n function _registerInterface(bytes4 interfaceId) internal virtual {\n require(interfaceId != 0xffffffff, \"ERC165: invalid interface id\");\n _supportedInterfaces[interfaceId] = true;\n }\n}\n"},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC721 compliant contract.\n */\ninterface IERC721 is IERC165 {\n /**\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\n */\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\n\n /**\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\n */\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\n\n /**\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\n */\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n /**\n * @dev Returns the number of tokens in ``owner``'s account.\n */\n function balanceOf(address owner) external view returns (uint256 balance);\n\n /**\n * @dev Returns the owner of the `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function ownerOf(uint256 tokenId) external view returns (address owner);\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId,\n bytes calldata data\n ) external;\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId\n ) external;\n\n /**\n * @dev Transfers `tokenId` token from `from` to `to`.\n *\n * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address from,\n address to,\n uint256 tokenId\n ) external;\n\n /**\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\n * The approval is cleared when the token is transferred.\n *\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n *\n * Requirements:\n *\n * - The caller must own the token or be an approved operator.\n * - `tokenId` must exist.\n *\n * Emits an {Approval} event.\n */\n function approve(address to, uint256 tokenId) external;\n\n /**\n * @dev Approve or remove `operator` as an operator for the caller.\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n *\n * Requirements:\n *\n * - The `operator` cannot be the caller.\n *\n * Emits an {ApprovalForAll} event.\n */\n function setApprovalForAll(address operator, bool _approved) external;\n\n /**\n * @dev Returns the account approved for `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function getApproved(uint256 tokenId) external view returns (address operator);\n\n /**\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n *\n * See {setApprovalForAll}\n */\n function isApprovedForAll(address owner, address operator) external view returns (bool);\n}\n"},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n *\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\n */\nabstract contract ERC165 is IERC165 {\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IERC165).interfaceId;\n }\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"@openzeppelin/contracts/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */\nabstract contract Proxy {\n /**\n * @dev Delegates the current call to `implementation`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _delegate(address implementation) internal virtual {\n assembly {\n // Copy msg.data. We take full control of memory in this inline assembly\n // block because it will not return to Solidity code. We overwrite the\n // Solidity scratch pad at memory position 0.\n calldatacopy(0, 0, calldatasize())\n\n // Call the implementation.\n // out and outsize are 0 because we don't know the size yet.\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n // Copy the returned data.\n returndatacopy(0, 0, returndatasize())\n\n switch result\n // delegatecall returns 0 on error.\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n }\n }\n\n /**\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\n * and {_fallback} should delegate.\n */\n function _implementation() internal view virtual returns (address);\n\n /**\n * @dev Delegates the current call to the address returned by `_implementation()`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _fallback() internal virtual {\n _beforeFallback();\n _delegate(_implementation());\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n * function in the contract matches the call data.\n */\n fallback() external payable virtual {\n _fallback();\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n * is empty.\n */\n receive() external payable virtual {\n _fallback();\n }\n\n /**\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n * call, or as part of the Solidity `fallback` or `receive` functions.\n *\n * If overridden should call `super._beforeFallback()`.\n */\n function _beforeFallback() internal virtual {}\n}\n"},"@openzeppelin/contracts/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n *\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\n */\nlibrary StorageSlot {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n}\n"},"src/token/ERC1155/base/ERC1155BaseInternal.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Context.sol\";\n\nimport \"../IERC1155Events.sol\";\nimport \"../IERC1155Receiver.sol\";\nimport \"./ERC1155BaseStorage.sol\";\n\n/**\n * @title Base ERC1155 internal functions\n * @dev derived from https://github.com/OpenZeppelin/openzeppelin-contracts/ (MIT license)\n */\nabstract contract ERC1155BaseInternal is Context, IERC1155Events {\n using Address for address;\n\n /**\n * @notice query the balance of given token held by given address\n * @param account address to query\n * @param id token to query\n * @return token balance\n */\n function _balanceOf(address account, uint256 id) internal view virtual returns (uint256) {\n require(account != address(0), \"ERC1155: balance query for the zero address\");\n return ERC1155BaseStorage.layout().balances[id][account];\n }\n\n /**\n * @notice mint given quantity of tokens for given address\n * @dev ERC1155Receiver implementation is not checked\n * @param account beneficiary of minting\n * @param id token ID\n * @param amount quantity of tokens to mint\n * @param data data payload\n */\n function _mint(\n address account,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) internal virtual {\n address operator = _msgSender();\n require(account != address(0), \"ERC1155: mint to the zero address\");\n\n _beforeTokenTransfer(operator, address(0), account, _asSingletonArray(id), _asSingletonArray(amount), data);\n\n ERC1155BaseStorage.layout().balances[id][account] += amount;\n\n emit TransferSingle(operator, address(0), account, id, amount);\n }\n\n /**\n * @notice mint given quantity of tokens for given address\n * @param account beneficiary of minting\n * @param id token ID\n * @param amount quantity of tokens to mint\n * @param data data payload\n */\n function _safeMint(\n address account,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) internal virtual {\n _mint(account, id, amount, data);\n\n _doSafeTransferAcceptanceCheck(_msgSender(), address(0), account, id, amount, data);\n }\n\n /**\n * @notice mint batch of tokens for given address\n * @dev ERC1155Receiver implementation is not checked\n * @param account beneficiary of minting\n * @param ids list of token IDs\n * @param amounts list of quantities of tokens to mint\n * @param data data payload\n */\n function _mintBatch(\n address account,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual {\n require(account != address(0), \"ERC1155: mint to the zero address\");\n require(ids.length == amounts.length, \"ERC1155: ids and amounts length mismatch\");\n\n address sender = _msgSender();\n\n _beforeTokenTransfer(sender, address(0), account, ids, amounts, data);\n\n mapping(uint256 => mapping(address => uint256)) storage balances = ERC1155BaseStorage.layout().balances;\n\n for (uint256 i; i < ids.length; ) {\n balances[ids[i]][account] += amounts[i];\n unchecked {\n i++;\n }\n }\n\n emit TransferBatch(sender, address(0), account, ids, amounts);\n }\n\n /**\n * @notice mint batch of tokens for given address\n * @param account beneficiary of minting\n * @param ids list of token IDs\n * @param amounts list of quantities of tokens to mint\n * @param data data payload\n */\n function _safeMintBatch(\n address account,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual {\n _mintBatch(account, ids, amounts, data);\n\n _doSafeBatchTransferAcceptanceCheck(_msgSender(), address(0), account, ids, amounts, data);\n }\n\n /**\n * @notice burn given quantity of tokens held by given address\n * @param account holder of tokens to burn\n * @param id token ID\n * @param amount quantity of tokens to burn\n */\n function _burn(\n address account,\n uint256 id,\n uint256 amount\n ) internal virtual {\n require(account != address(0), \"ERC1155: burn from the zero address\");\n\n address sender = _msgSender();\n\n _beforeTokenTransfer(sender, account, address(0), _asSingletonArray(id), _asSingletonArray(amount), \"\");\n\n mapping(address => uint256) storage balances = ERC1155BaseStorage.layout().balances[id];\n\n unchecked {\n require(balances[account] >= amount, \"ERC1155: burn amount exceeds balance\");\n balances[account] -= amount;\n }\n\n emit TransferSingle(sender, account, address(0), id, amount);\n }\n\n /**\n * @notice burn given batch of tokens held by given address\n * @param account holder of tokens to burn\n * @param ids token IDs\n * @param amounts quantities of tokens to burn\n */\n function _burnBatch(\n address account,\n uint256[] memory ids,\n uint256[] memory amounts\n ) internal virtual {\n require(account != address(0), \"ERC1155: burn from the zero address\");\n require(ids.length == amounts.length, \"ERC1155: ids and amounts length mismatch\");\n\n address sender = _msgSender();\n\n _beforeTokenTransfer(sender, account, address(0), ids, amounts, \"\");\n\n mapping(uint256 => mapping(address => uint256)) storage balances = ERC1155BaseStorage.layout().balances;\n\n unchecked {\n for (uint256 i; i < ids.length; i++) {\n uint256 id = ids[i];\n require(balances[id][account] >= amounts[i], \"ERC1155: burn amount exceeds balance\");\n balances[id][account] -= amounts[i];\n }\n }\n\n emit TransferBatch(sender, account, address(0), ids, amounts);\n }\n\n /**\n * @notice transfer tokens between given addresses\n * @dev ERC1155Receiver implementation is not checked\n * @param operator executor of transfer\n * @param sender sender of tokens\n * @param recipient receiver of tokens\n * @param id token ID\n * @param amount quantity of tokens to transfer\n * @param data data payload\n */\n function _transfer(\n address operator,\n address sender,\n address recipient,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) internal virtual {\n require(recipient != address(0), \"ERC1155: transfer to the zero address\");\n\n _beforeTokenTransfer(operator, sender, recipient, _asSingletonArray(id), _asSingletonArray(amount), data);\n\n mapping(uint256 => mapping(address => uint256)) storage balances = ERC1155BaseStorage.layout().balances;\n\n unchecked {\n uint256 senderBalance = balances[id][sender];\n require(senderBalance >= amount, \"ERC1155: insufficient balances for transfer\");\n balances[id][sender] = senderBalance - amount;\n }\n\n balances[id][recipient] += amount;\n\n emit TransferSingle(operator, sender, recipient, id, amount);\n }\n\n /**\n * @notice transfer tokens between given addresses\n * @param operator executor of transfer\n * @param sender sender of tokens\n * @param recipient receiver of tokens\n * @param id token ID\n * @param amount quantity of tokens to transfer\n * @param data data payload\n */\n function _safeTransfer(\n address operator,\n address sender,\n address recipient,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) internal virtual {\n _transfer(operator, sender, recipient, id, amount, data);\n\n _doSafeTransferAcceptanceCheck(operator, sender, recipient, id, amount, data);\n }\n\n /**\n * @notice transfer batch of tokens between given addresses\n * @dev ERC1155Receiver implementation is not checked\n * @param operator executor of transfer\n * @param sender sender of tokens\n * @param recipient receiver of tokens\n * @param ids token IDs\n * @param amounts quantities of tokens to transfer\n * @param data data payload\n */\n function _transferBatch(\n address operator,\n address sender,\n address recipient,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual {\n require(recipient != address(0), \"ERC1155: transfer to the zero address\");\n require(ids.length == amounts.length, \"ERC1155: ids and amounts length mismatch\");\n\n _beforeTokenTransfer(operator, sender, recipient, ids, amounts, data);\n\n mapping(uint256 => mapping(address => uint256)) storage balances = ERC1155BaseStorage.layout().balances;\n\n for (uint256 i; i < ids.length; ) {\n uint256 token = ids[i];\n uint256 amount = amounts[i];\n\n unchecked {\n uint256 senderBalance = balances[token][sender];\n\n require(senderBalance >= amount, \"ERC1155: insufficient balances for transfer\");\n\n balances[token][sender] = senderBalance - amount;\n\n i++;\n }\n\n // balance increase cannot be unchecked because ERC1155Base neither tracks nor validates a totalSupply\n balances[token][recipient] += amount;\n }\n\n emit TransferBatch(operator, sender, recipient, ids, amounts);\n }\n\n /**\n * @notice transfer batch of tokens between given addresses\n * @param operator executor of transfer\n * @param sender sender of tokens\n * @param recipient receiver of tokens\n * @param ids token IDs\n * @param amounts quantities of tokens to transfer\n * @param data data payload\n */\n function _safeTransferBatch(\n address operator,\n address sender,\n address recipient,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual {\n _transferBatch(operator, sender, recipient, ids, amounts, data);\n\n _doSafeBatchTransferAcceptanceCheck(operator, sender, recipient, ids, amounts, data);\n }\n\n /**\n * @notice wrap given element in array of length 1\n * @param element element to wrap\n * @return singleton array\n */\n function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {\n uint256[] memory array = new uint256[](1);\n array[0] = element;\n return array;\n }\n\n /**\n * @notice revert if applicable transfer recipient is not valid ERC1155Receiver\n * @param operator executor of transfer\n * @param from sender of tokens\n * @param to receiver of tokens\n * @param id token ID\n * @param amount quantity of tokens to transfer\n * @param data data payload\n */\n function _doSafeTransferAcceptanceCheck(\n address operator,\n address from,\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) private {\n if (to.isContract()) {\n try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {\n require(\n response == IERC1155Receiver.onERC1155Received.selector,\n \"ERC1155: ERC1155Receiver rejected tokens\"\n );\n } catch Error(string memory reason) {\n revert(reason);\n } catch {\n revert(\"ERC1155: transfer to non ERC1155Receiver implementer\");\n }\n }\n }\n\n /**\n * @notice revert if applicable transfer recipient is not valid ERC1155Receiver\n * @param operator executor of transfer\n * @param from sender of tokens\n * @param to receiver of tokens\n * @param ids token IDs\n * @param amounts quantities of tokens to transfer\n * @param data data payload\n */\n function _doSafeBatchTransferAcceptanceCheck(\n address operator,\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) private {\n if (to.isContract()) {\n try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (\n bytes4 response\n ) {\n require(\n response == IERC1155Receiver.onERC1155BatchReceived.selector,\n \"ERC1155: ERC1155Receiver rejected tokens\"\n );\n } catch Error(string memory reason) {\n revert(reason);\n } catch {\n revert(\"ERC1155: transfer to non ERC1155Receiver implementer\");\n }\n }\n }\n\n /**\n * @notice ERC1155 hook, called before all transfers including mint and burn\n * @dev function should be overridden and new implementation must call super\n * @dev called for both single and batch transfers\n * @param operator executor of transfer\n * @param from sender of tokens\n * @param to receiver of tokens\n * @param ids token IDs\n * @param amounts quantities of tokens to transfer\n * @param data data payload\n */\n function _beforeTokenTransfer(\n address operator,\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual {}\n}\n"},"src/token/ERC1155/IERC1155Events.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../introspection/IERC165.sol\";\n\n/**\n * @title Partial ERC1155 interface needed by internal functions\n */\ninterface IERC1155Events {\n event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\n\n event TransferBatch(\n address indexed operator,\n address indexed from,\n address indexed to,\n uint256[] ids,\n uint256[] values\n );\n\n event ApprovalForAll(address indexed account, address indexed operator, bool approved);\n}\n"},"src/token/ERC1155/IERC1155Receiver.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../introspection/IERC165.sol\";\n\n/**\n * @title ERC1155 transfer receiver interface\n */\ninterface IERC1155Receiver is IERC165 {\n /**\n * @dev Handles the receipt of a single ERC1155 token type. This function is\n * called at the end of a `safeTransferFrom` after the balance has been updated.\n *\n * NOTE: To accept the transfer, this must return\n * `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n * (i.e. 0xf23a6e61, or its own function selector).\n *\n * @param operator The address which initiated the transfer (i.e. msg.sender)\n * @param from The address which previously owned the token\n * @param id The ID of the token being transferred\n * @param value The amount of tokens being transferred\n * @param data Additional data with no specified format\n * @return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed\n */\n function onERC1155Received(\n address operator,\n address from,\n uint256 id,\n uint256 value,\n bytes calldata data\n ) external returns (bytes4);\n\n /**\n * @dev Handles the receipt of a multiple ERC1155 token types. This function\n * is called at the end of a `safeBatchTransferFrom` after the balances have\n * been updated.\n *\n * NOTE: To accept the transfer(s), this must return\n * `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n * (i.e. 0xbc197c81, or its own function selector).\n *\n * @param operator The address which initiated the batch transfer (i.e. msg.sender)\n * @param from The address which previously owned the token\n * @param ids An array containing ids of each token being transferred (order and length must match values array)\n * @param values An array containing amounts of each token being transferred (order and length must match ids array)\n * @param data Additional data with no specified format\n * @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed\n */\n function onERC1155BatchReceived(\n address operator,\n address from,\n uint256[] calldata ids,\n uint256[] calldata values,\n bytes calldata data\n ) external returns (bytes4);\n}\n"},"src/token/ERC1155/base/ERC1155BaseStorage.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nlibrary ERC1155BaseStorage {\n struct Layout {\n mapping(uint256 => mapping(address => uint256)) balances;\n mapping(address => mapping(address => bool)) operatorApprovals;\n }\n\n bytes32 internal constant STORAGE_SLOT = keccak256(\"openzeppelin.contracts.storage.ERC1155Base\");\n\n function layout() internal pure returns (Layout storage l) {\n bytes32 slot = STORAGE_SLOT;\n assembly {\n l.slot := slot\n }\n }\n}\n"},"src/token/ERC1155/facets/minting/ERC1155MintByRole.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../../../common/Errors.sol\";\nimport \"../../../../access/roles/AccessControlInternal.sol\";\nimport \"../../extensions/mintable/IERC1155Mintable.sol\";\nimport \"../../base/ERC1155BaseInternal.sol\";\nimport \"./IERC1155MintByRole.sol\";\n\n/**\n * @dev Extension of {ERC1155} that allows senders with MINTER_ROLE to mint new tokens.\n */\ncontract ERC1155MintByRole is IERC1155MintByRole, AccessControlInternal {\n bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n\n /**\n * @inheritdoc IERC1155MintByRole\n */\n function mintByRole(\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) public virtual onlyRole(MINTER_ROLE) {\n IERC1155Mintable(address(this)).mintByFacet(to, id, amount, data);\n }\n}\n"},"src/common/Errors.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\n/**\n * The caller must be the current contract itself.\n */\nerror SenderIsNotSelf();\n"},"src/access/roles/AccessControlInternal.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/utils/Context.sol\";\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\n\nimport \"./AccessControlStorage.sol\";\nimport \"./IAccessControlEvents.sol\";\n\nabstract contract AccessControlInternal is Context, IAccessControlEvents {\n using AccessControlStorage for AccessControlStorage.Layout;\n\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\n\n /**\n * @dev Modifier that checks that an account has a specific role. Reverts\n * with a standardized message including the required role.\n *\n * The format of the revert reason is given by the following regular expression:\n *\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\n *\n * _Available since v4.1._\n */\n modifier onlyRole(bytes32 role) {\n _checkRole(role);\n _;\n }\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function _hasRole(bytes32 role, address account)\n internal\n view\n virtual\n returns (bool)\n {\n return AccessControlStorage.layout().roles[role].members[account];\n }\n\n /**\n * @dev Revert with a standard message if `_msgSender()` is missing `role`.\n * Overriding this function changes the behavior of the {onlyRole} modifier.\n *\n * Format of the revert message is described in {_checkRole}.\n *\n * _Available since v4.6._\n */\n function _checkRole(bytes32 role) internal view virtual {\n _checkRole(role, _msgSender());\n }\n\n /**\n * @dev Revert with a standard message if `account` is missing `role`.\n *\n * The format of the revert reason is given by the following regular expression:\n *\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\n */\n function _checkRole(bytes32 role, address account) internal view virtual {\n if (!_hasRole(role, account)) {\n revert(\n string(\n abi.encodePacked(\n \"AccessControl: account \",\n Strings.toHexString(account),\n \" is missing role \",\n Strings.toHexString(uint256(role), 32)\n )\n )\n );\n }\n }\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {_setRoleAdmin}.\n */\n function _getRoleAdmin(bytes32 role)\n internal\n view\n virtual\n returns (bytes32)\n {\n return AccessControlStorage.layout().roles[role].adminRole;\n }\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been revoked `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `account`.\n *\n * May emit a {RoleRevoked} event.\n */\n function _renounceRole(bytes32 role, address account) internal virtual {\n require(\n account == _msgSender(),\n \"AccessControl: can only renounce roles for self\"\n );\n\n _revokeRole(role, account);\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event. Note that unlike {grantRole}, this function doesn't perform any\n * checks on the calling account.\n *\n * May emit a {RoleGranted} event.\n *\n * [WARNING]\n * ====\n * This function should only be called from the constructor when setting\n * up the initial roles for the system.\n *\n * Using this function in any other way is effectively circumventing the admin\n * system imposed by {AccessControl}.\n * ====\n *\n * NOTE: This function is deprecated in favor of {_grantRole}.\n */\n function _setupRole(bytes32 role, address account) internal virtual {\n _grantRole(role, account);\n }\n\n /**\n * @dev Sets `adminRole` as ``role``'s admin role.\n *\n * Emits a {RoleAdminChanged} event.\n */\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\n bytes32 previousAdminRole = _getRoleAdmin(role);\n AccessControlStorage.layout().roles[role].adminRole = adminRole;\n emit RoleAdminChanged(role, previousAdminRole, adminRole);\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * Internal function without access restriction.\n *\n * May emit a {RoleGranted} event.\n */\n function _grantRole(bytes32 role, address account) internal virtual {\n if (!_hasRole(role, account)) {\n AccessControlStorage.layout().roles[role].members[account] = true;\n emit RoleGranted(role, account, _msgSender());\n }\n }\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * Internal function without access restriction.\n *\n * May emit a {RoleRevoked} event.\n */\n function _revokeRole(bytes32 role, address account) internal virtual {\n if (_hasRole(role, account)) {\n AccessControlStorage.layout().roles[role].members[account] = false;\n emit RoleRevoked(role, account, _msgSender());\n }\n }\n}\n"},"src/token/ERC1155/extensions/mintable/IERC1155Mintable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\n/**\n * @dev Extension of {ERC1155} that allows other facets from the diamond to mint tokens.\n */\ninterface IERC1155Mintable {\n /**\n * @dev Creates `amount` new tokens for `to`, of token type `id`.\n *\n * See {ERC1155-_mint}.\n *\n * Requirements:\n *\n * - the caller must be diamond itself (other facets).\n */\n function mintByFacet(\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) external;\n}\n"},"src/token/ERC1155/facets/minting/IERC1155MintByRole.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\n/**\n * @dev Extension of {ERC1155} that allows a specific role to mint tokens.\n */\ninterface IERC1155MintByRole {\n /**\n * @dev Creates `amount` new tokens for `to`, of token type `id`.\n *\n * See {ERC1155-_mint}.\n *\n * Requirements:\n *\n * - the caller must have MINTER_ROLE.\n */\n function mintByRole(\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) external;\n}\n"},"src/access/roles/AccessControlStorage.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nlibrary AccessControlStorage {\n struct RoleData {\n mapping(address => bool) members;\n bytes32 adminRole;\n }\n\n struct Layout {\n mapping(bytes32 => RoleData) roles;\n }\n\n bytes32 internal constant STORAGE_SLOT = keccak256(\"openzeppelin.contracts.storage.AccessControl\");\n\n function layout() internal pure returns (Layout storage l) {\n bytes32 slot = STORAGE_SLOT;\n assembly {\n l.slot := slot\n }\n }\n}\n"},"src/access/roles/IAccessControlEvents.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\n/**\n * @dev External interface of AccessControl declared to support ERC165 detection.\n */\ninterface IAccessControlEvents {\n /**\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n *\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n * {RoleAdminChanged} not being emitted signaling this.\n *\n * _Available since v3.1._\n */\n event RoleAdminChanged(\n bytes32 indexed role,\n bytes32 indexed previousAdminRole,\n bytes32 indexed newAdminRole\n );\n\n /**\n * @dev Emitted when `account` is granted `role`.\n *\n * `sender` is the account that originated the contract call, an admin role\n * bearer except when using {AccessControl-_setupRole}.\n */\n event RoleGranted(\n bytes32 indexed role,\n address indexed account,\n address indexed sender\n );\n\n /**\n * @dev Emitted when `account` is revoked `role`.\n *\n * `sender` is the account that originated the contract call:\n * - if using `revokeRole`, it is the admin role bearer\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\n */\n event RoleRevoked(\n bytes32 indexed role,\n address indexed account,\n address indexed sender\n );\n}\n"},"@openzeppelin/contracts/utils/Strings.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n bytes16 private constant _HEX_SYMBOLS = \"0123456789abcdef\";\n uint8 private constant _ADDRESS_LENGTH = 20;\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n */\n function toString(uint256 value) internal pure returns (string memory) {\n // Inspired by OraclizeAPI's implementation - MIT licence\n // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\n\n if (value == 0) {\n return \"0\";\n }\n uint256 temp = value;\n uint256 digits;\n while (temp != 0) {\n digits++;\n temp /= 10;\n }\n bytes memory buffer = new bytes(digits);\n while (value != 0) {\n digits -= 1;\n buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\n value /= 10;\n }\n return string(buffer);\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n */\n function toHexString(uint256 value) internal pure returns (string memory) {\n if (value == 0) {\n return \"0x00\";\n }\n uint256 temp = value;\n uint256 length = 0;\n while (temp != 0) {\n length++;\n temp >>= 8;\n }\n return toHexString(value, length);\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n */\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n bytes memory buffer = new bytes(2 * length + 2);\n buffer[0] = \"0\";\n buffer[1] = \"x\";\n for (uint256 i = 2 * length + 1; i > 1; --i) {\n buffer[i] = _HEX_SYMBOLS[value & 0xf];\n value >>= 4;\n }\n require(value == 0, \"Strings: hex length insufficient\");\n return string(buffer);\n }\n\n /**\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\n */\n function toHexString(address addr) internal pure returns (string memory) {\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\n }\n}\n"},"src/token/ERC1155/facets/minting/ERC1155MintByRoleERC2771.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../../../metatx/ERC2771ContextInternal.sol\";\nimport \"./ERC1155MintByRole.sol\";\n\n/**\n * @dev Extension of {ERC1155} to mint by MINTER_ROLE with meta-transactions supported via ERC2771.\n */\ncontract ERC1155MintByRoleERC2771 is ERC1155MintByRole, ERC2771ContextInternal {\n function _msgSender() internal view virtual override(Context, ERC2771ContextInternal) returns (address) {\n return ERC2771ContextInternal._msgSender();\n }\n\n function _msgData() internal view virtual override(Context, ERC2771ContextInternal) returns (bytes calldata) {\n return ERC2771ContextInternal._msgData();\n }\n}\n"},"src/token/ERC1155/facets/sales/ERC1155TieredSalesERC2771.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../../../metatx/ERC2771ContextInternal.sol\";\nimport \"./ERC1155TieredSales.sol\";\n\n/**\n * @dev Tiered Sales facet for ERC1155 with meta-transactions support via ERC2771\n */\ncontract ERC1155TieredSalesERC2771 is ERC1155TieredSales, ERC2771ContextInternal {\n function _msgSender() internal view virtual override(Context, ERC2771ContextInternal) returns (address) {\n return ERC2771ContextInternal._msgSender();\n }\n\n function _msgData() internal view virtual override(Context, ERC2771ContextInternal) returns (bytes calldata) {\n return ERC2771ContextInternal._msgData();\n }\n}\n"},"src/token/ERC1155/facets/sales/ERC1155TieredSales.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\n\nimport \"../../../../introspection/ERC165Storage.sol\";\nimport \"../../../../finance/sales/TieredSales.sol\";\nimport \"../../extensions/mintable/IERC1155Mintable.sol\";\nimport \"../../extensions/supply/ERC1155SupplyStorage.sol\";\nimport \"../../extensions/supply/IERC1155Supply.sol\";\nimport \"./ERC1155TieredSalesStorage.sol\";\nimport \"./IERC1155TieredSales.sol\";\n\n/**\n * @title ERC1155 - Tiered Sales\n * @notice Sales mechanism for ERC1155 NFTs with multiple tiered pricing, allowlist and allocation plans.\n *\n * @custom:type eip-2535-facet\n * @custom:category NFTs\n * @custom:required-dependencies eip165:0xb164884b\n * @custom:provides-interfaces 0x79f33254 0x5ae18a74\n */\ncontract ERC1155TieredSales is IERC1155TieredSales, ReentrancyGuard, TieredSales {\n using ERC165Storage for ERC165Storage.Layout;\n using ERC1155TieredSalesStorage for ERC1155TieredSalesStorage.Layout;\n using ERC1155SupplyStorage for ERC1155SupplyStorage.Layout;\n\n function mintByTier(\n uint256 tierId,\n uint256 count,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) external payable nonReentrant {\n super._executeSale(tierId, count, maxAllowance, proof);\n\n IERC1155Mintable(address(this)).mintByFacet(\n _msgSender(),\n ERC1155TieredSalesStorage.layout().tierToTokenId[tierId],\n count,\n \"\"\n );\n }\n\n function tierToTokenId(uint256 tierId) external view returns (uint256) {\n return ERC1155TieredSalesStorage.layout().tierToTokenId[tierId];\n }\n\n function tierToTokenId(uint256[] calldata tierIds) external view returns (uint256[] memory) {\n uint256[] memory tokenIds = new uint256[](tierIds.length);\n\n for (uint256 i = 0; i < tierIds.length; i++) {\n tokenIds[i] = ERC1155TieredSalesStorage.layout().tierToTokenId[tierIds[i]];\n }\n\n return tokenIds;\n }\n\n function _remainingSupplyForTier(uint256 tierId) internal view override returns (uint256) {\n if (!ERC165Storage.layout().supportedInterfaces[type(IERC1155Supply).interfaceId]) {\n return type(uint256).max;\n }\n\n uint256 tokenId = ERC1155TieredSalesStorage.layout().tierToTokenId[tierId];\n\n uint256 remainingSupply = ERC1155SupplyStorage.layout().maxSupply[tokenId] -\n ERC1155SupplyStorage.layout().totalSupply[tokenId];\n\n return remainingSupply;\n }\n}\n"},"src/finance/sales/TieredSales.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./ITieredSales.sol\";\nimport \"./TieredSalesInternal.sol\";\n\n/**\n * @title Abstract sales mechanism for any asset (e.g NFTs) with multiple tiered pricing, allowlist and allocation plans.\n */\nabstract contract TieredSales is ITieredSales, TieredSalesInternal {\n function onTierAllowlist(\n uint256 tierId,\n address minter,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) public view returns (bool) {\n return super._onTierAllowlist(tierId, minter, maxAllowance, proof);\n }\n\n function eligibleForTier(\n uint256 tierId,\n address minter,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) public view returns (uint256 maxMintable) {\n return super._eligibleForTier(tierId, minter, maxAllowance, proof);\n }\n\n function remainingForTier(uint256 tierId) public view returns (uint256) {\n TieredSalesStorage.Layout storage l = TieredSalesStorage.layout();\n\n uint256 availableSupply = _availableSupplyForTier(tierId);\n uint256 availableAllocation = l.tiers[tierId].maxAllocation - l.tierMints[tierId];\n\n if (availableSupply < availableAllocation) {\n return availableSupply;\n } else {\n return availableAllocation;\n }\n }\n\n function walletMintedByTier(uint256 tierId, address wallet) public view returns (uint256) {\n return TieredSalesStorage.layout().walletMinted[tierId][wallet];\n }\n\n function tierMints(uint256 tierId) public view returns (uint256) {\n return TieredSalesStorage.layout().tierMints[tierId];\n }\n\n function totalReserved() external view returns (uint256) {\n return TieredSalesStorage.layout().totalReserved;\n }\n\n function reservedMints() external view returns (uint256) {\n return TieredSalesStorage.layout().reservedMints;\n }\n\n function tiers(uint256 tierId) external view returns (Tier memory) {\n return TieredSalesStorage.layout().tiers[tierId];\n }\n}\n"},"src/token/ERC1155/extensions/supply/ERC1155SupplyStorage.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nlibrary ERC1155SupplyStorage {\n struct Layout {\n mapping(uint256 => uint256) totalSupply;\n mapping(uint256 => uint256) maxSupply;\n }\n\n bytes32 internal constant STORAGE_SLOT = keccak256(\"v2.flair.contracts.storage.ERC1155Supply\");\n\n function layout() internal pure returns (Layout storage l) {\n bytes32 slot = STORAGE_SLOT;\n assembly {\n l.slot := slot\n }\n }\n}\n"},"src/token/ERC1155/extensions/supply/IERC1155Supply.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\n/**\n * @dev Extension of {ERC1155} that tracks supply and defines a max supply cap per token ID.\n */\ninterface IERC1155Supply {\n /**\n * @dev Total amount of tokens in with a given id.\n */\n function totalSupply(uint256 id) external view returns (uint256);\n\n /**\n * @dev Maximum amount of tokens possible to exist for a given id.\n */\n function maxSupply(uint256 id) external view returns (uint256);\n\n /**\n * @dev Indicates whether any token exist with a given id, or not.\n */\n function exists(uint256 id) external view returns (bool);\n}\n"},"src/token/ERC1155/facets/sales/ERC1155TieredSalesStorage.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nlibrary ERC1155TieredSalesStorage {\n struct Layout {\n mapping(uint256 => uint256) tierToTokenId;\n }\n\n bytes32 internal constant STORAGE_SLOT = keccak256(\"v2.flair.contracts.storage.ERC1155TieredSales\");\n\n function layout() internal pure returns (Layout storage l) {\n bytes32 slot = STORAGE_SLOT;\n assembly {\n l.slot := slot\n }\n }\n}\n"},"src/token/ERC1155/facets/sales/IERC1155TieredSales.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\ninterface IERC1155TieredSales {\n function tierToTokenId(uint256 tierId) external view returns (uint256);\n\n function tierToTokenId(uint256[] calldata tierIds) external view returns (uint256[] memory);\n}\n"},"src/finance/sales/ITieredSales.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./ITieredSalesInternal.sol\";\n\ninterface ITieredSales is ITieredSalesInternal {\n function onTierAllowlist(\n uint256 tierId,\n address minter,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) external view returns (bool);\n\n function eligibleForTier(\n uint256 tierId,\n address minter,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) external view returns (uint256);\n\n function mintByTier(\n uint256 tierId,\n uint256 count,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) external payable;\n\n function remainingForTier(uint256 tierId) external view returns (uint256);\n\n function walletMintedByTier(uint256 tierId, address wallet) external view returns (uint256);\n\n function tierMints(uint256 tierId) external view returns (uint256);\n\n function totalReserved() external view returns (uint256);\n\n function reservedMints() external view returns (uint256);\n\n function tiers(uint256 tierId) external view returns (Tier memory);\n}\n"},"src/finance/sales/TieredSalesInternal.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/utils/cryptography/MerkleProof.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport \"./ITieredSalesInternal.sol\";\nimport \"./TieredSalesStorage.sol\";\n\nimport \"../../access/ownable/OwnableInternal.sol\";\n\n/**\n * @title Sales mechanism for NFTs with multiple tiered pricing, allowlist and allocation plans\n */\nabstract contract TieredSalesInternal is ITieredSalesInternal, Context, OwnableInternal {\n using TieredSalesStorage for TieredSalesStorage.Layout;\n\n function _configureTiering(uint256 tierId, Tier calldata tier) internal {\n TieredSalesStorage.Layout storage l = TieredSalesStorage.layout();\n\n require(tier.maxAllocation >= l.tierMints[tierId], \"LOWER_THAN_MINTED\");\n\n if (l.tiers[tierId].reserved > 0) {\n require(tier.reserved >= l.tierMints[tierId], \"LOW_RESERVE_AMOUNT\");\n }\n\n if (l.tierMints[tierId] > 0) {\n require(tier.maxPerWallet >= l.tiers[tierId].maxPerWallet, \"LOW_MAX_PER_WALLET\");\n }\n\n l.totalReserved -= l.tiers[tierId].reserved;\n l.tiers[tierId] = tier;\n l.totalReserved += tier.reserved;\n }\n\n function _configureTiering(uint256[] calldata _tierIds, Tier[] calldata _tiers) internal {\n for (uint256 i = 0; i < _tierIds.length; i++) {\n _configureTiering(_tierIds[i], _tiers[i]);\n }\n }\n\n function _onTierAllowlist(\n uint256 tierId,\n address minter,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) internal view returns (bool) {\n return\n MerkleProof.verify(\n proof,\n TieredSalesStorage.layout().tiers[tierId].merkleRoot,\n _generateMerkleLeaf(minter, maxAllowance)\n );\n }\n\n function _eligibleForTier(\n uint256 tierId,\n address minter,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) internal view returns (uint256 maxMintable) {\n TieredSalesStorage.Layout storage l = TieredSalesStorage.layout();\n\n require(l.tiers[tierId].maxPerWallet > 0, \"NOT_EXISTS\");\n require(block.timestamp >= l.tiers[tierId].start, \"NOT_STARTED\");\n require(block.timestamp <= l.tiers[tierId].end, \"ALREADY_ENDED\");\n\n maxMintable = l.tiers[tierId].maxPerWallet - l.walletMinted[tierId][minter];\n\n if (l.tiers[tierId].merkleRoot != bytes32(0)) {\n require(l.walletMinted[tierId][minter] < maxAllowance, \"MAXED_ALLOWANCE\");\n require(_onTierAllowlist(tierId, minter, maxAllowance, proof), \"NOT_ALLOWLISTED\");\n\n uint256 remainingAllowance = maxAllowance - l.walletMinted[tierId][minter];\n\n if (maxMintable > remainingAllowance) {\n maxMintable = remainingAllowance;\n }\n }\n }\n\n function _availableSupplyForTier(uint256 tierId) internal view returns (uint256 remaining) {\n TieredSalesStorage.Layout storage l = TieredSalesStorage.layout();\n\n // Substract all the remaining reserved spots from the total remaining supply...\n remaining = _remainingSupplyForTier(tierId) - (l.totalReserved - l.reservedMints);\n\n // If this tier has reserved spots, add remaining spots back to result...\n if (l.tiers[tierId].reserved > 0) {\n remaining += (l.tiers[tierId].reserved - l.tierMints[tierId]);\n }\n }\n\n function _executeSale(\n uint256 tierId,\n uint256 count,\n uint256 maxAllowance,\n bytes32[] calldata proof\n ) internal {\n address minter = _msgSender();\n\n uint256 maxMintable = _eligibleForTier(tierId, minter, maxAllowance, proof);\n\n TieredSalesStorage.Layout storage l = TieredSalesStorage.layout();\n\n require(count <= maxMintable, \"EXCEEDS_MAX\");\n require(count <= _availableSupplyForTier(tierId), \"EXCEEDS_ALLOCATION\");\n require(count + l.tierMints[tierId] <= l.tiers[tierId].maxAllocation, \"EXCEEDS_ALLOCATION\");\n\n if (l.tiers[tierId].currency == address(0)) {\n require(l.tiers[tierId].price * count <= msg.value, \"INSUFFICIENT_AMOUNT\");\n } else {\n IERC20(l.tiers[tierId].currency).transferFrom(minter, address(this), l.tiers[tierId].price * count);\n }\n\n l.walletMinted[tierId][minter] += count;\n l.tierMints[tierId] += count;\n\n if (l.tiers[tierId].reserved > 0) {\n l.reservedMints += count;\n }\n }\n\n function _remainingSupplyForTier(\n uint256 /*tierId*/\n ) internal view virtual returns (uint256) {\n return type(uint256).max;\n }\n\n /* PRIVATE */\n\n function _generateMerkleLeaf(address account, uint256 maxAllowance) private pure returns (bytes32) {\n return keccak256(abi.encodePacked(account, maxAllowance));\n }\n}\n"},"src/finance/sales/ITieredSalesInternal.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\ninterface ITieredSalesInternal {\n struct Tier {\n uint256 start;\n uint256 end;\n address currency;\n uint256 price;\n uint256 maxPerWallet;\n bytes32 merkleRoot;\n uint256 reserved;\n uint256 maxAllocation;\n }\n}\n"},"src/finance/sales/TieredSalesStorage.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./ITieredSales.sol\";\n\nlibrary TieredSalesStorage {\n struct Layout {\n uint256 totalReserved;\n uint256 reservedMints;\n mapping(uint256 => ITieredSales.Tier) tiers;\n mapping(uint256 => uint256) tierMints;\n mapping(uint256 => mapping(address => uint256)) walletMinted;\n }\n\n bytes32 internal constant STORAGE_SLOT = keccak256(\"v2.flair.contracts.storage.TieredSales\");\n\n function layout() internal pure returns (Layout storage l) {\n bytes32 slot = STORAGE_SLOT;\n assembly {\n l.slot := slot\n }\n }\n}\n"},"src/access/ownable/OwnableInternal.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/utils/Context.sol\";\n\nimport \"./OwnableStorage.sol\";\nimport \"./IERC173Events.sol\";\n\nabstract contract OwnableInternal is IERC173Events, Context {\n using OwnableStorage for OwnableStorage.Layout;\n\n modifier onlyOwner() {\n require(_msgSender() == _owner(), \"Ownable: sender must be owner\");\n _;\n }\n\n function _owner() internal view virtual returns (address) {\n return OwnableStorage.layout().owner;\n }\n\n function _transferOwnership(address account) internal virtual {\n OwnableStorage.layout().setOwner(account);\n emit OwnershipTransferred(_msgSender(), account);\n }\n}\n"},"@openzeppelin/contracts/utils/cryptography/MerkleProof.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/cryptography/MerkleProof.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev These functions deal with verification of Merkle Tree proofs.\n *\n * The proofs can be generated using the JavaScript library\n * https://github.com/miguelmota/merkletreejs[merkletreejs].\n * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled.\n *\n * See `test/utils/cryptography/MerkleProof.test.js` for some examples.\n *\n * WARNING: You should avoid using leaf values that are 64 bytes long prior to\n * hashing, or use a hash function other than keccak256 for hashing leaves.\n * This is because the concatenation of a sorted pair of internal nodes in\n * the merkle tree could be reinterpreted as a leaf value.\n */\nlibrary MerkleProof {\n /**\n * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree\n * defined by `root`. For this, a `proof` must be provided, containing\n * sibling hashes on the branch from the leaf to the root of the tree. Each\n * pair of leaves and each pair of pre-images are assumed to be sorted.\n */\n function verify(\n bytes32[] memory proof,\n bytes32 root,\n bytes32 leaf\n ) internal pure returns (bool) {\n return processProof(proof, leaf) == root;\n }\n\n /**\n * @dev Calldata version of {verify}\n *\n * _Available since v4.7._\n */\n function verifyCalldata(\n bytes32[] calldata proof,\n bytes32 root,\n bytes32 leaf\n ) internal pure returns (bool) {\n return processProofCalldata(proof, leaf) == root;\n }\n\n /**\n * @dev Returns the rebuilt hash obtained by traversing a Merkle tree up\n * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt\n * hash matches the root of the tree. When processing the proof, the pairs\n * of leafs & pre-images are assumed to be sorted.\n *\n * _Available since v4.4._\n */\n function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) {\n bytes32 computedHash = leaf;\n for (uint256 i = 0; i < proof.length; i++) {\n computedHash = _hashPair(computedHash, proof[i]);\n }\n return computedHash;\n }\n\n /**\n * @dev Calldata version of {processProof}\n *\n * _Available since v4.7._\n */\n function processProofCalldata(bytes32[] calldata proof, bytes32 leaf) internal pure returns (bytes32) {\n bytes32 computedHash = leaf;\n for (uint256 i = 0; i < proof.length; i++) {\n computedHash = _hashPair(computedHash, proof[i]);\n }\n return computedHash;\n }\n\n /**\n * @dev Returns true if the `leaves` can be proved to be a part of a Merkle tree defined by\n * `root`, according to `proof` and `proofFlags` as described in {processMultiProof}.\n *\n * _Available since v4.7._\n */\n function multiProofVerify(\n bytes32[] memory proof,\n bool[] memory proofFlags,\n bytes32 root,\n bytes32[] memory leaves\n ) internal pure returns (bool) {\n return processMultiProof(proof, proofFlags, leaves) == root;\n }\n\n /**\n * @dev Calldata version of {multiProofVerify}\n *\n * _Available since v4.7._\n */\n function multiProofVerifyCalldata(\n bytes32[] calldata proof,\n bool[] calldata proofFlags,\n bytes32 root,\n bytes32[] memory leaves\n ) internal pure returns (bool) {\n return processMultiProofCalldata(proof, proofFlags, leaves) == root;\n }\n\n /**\n * @dev Returns the root of a tree reconstructed from `leaves` and the sibling nodes in `proof`,\n * consuming from one or the other at each step according to the instructions given by\n * `proofFlags`.\n *\n * _Available since v4.7._\n */\n function processMultiProof(\n bytes32[] memory proof,\n bool[] memory proofFlags,\n bytes32[] memory leaves\n ) internal pure returns (bytes32 merkleRoot) {\n // This function rebuild the root hash by traversing the tree up from the leaves. The root is rebuilt by\n // consuming and producing values on a queue. The queue starts with the `leaves` array, then goes onto the\n // `hashes` array. At the end of the process, the last hash in the `hashes` array should contain the root of\n // the merkle tree.\n uint256 leavesLen = leaves.length;\n uint256 totalHashes = proofFlags.length;\n\n // Check proof validity.\n require(leavesLen + proof.length - 1 == totalHashes, \"MerkleProof: invalid multiproof\");\n\n // The xxxPos values are \"pointers\" to the next value to consume in each array. All accesses are done using\n // `xxx[xxxPos++]`, which return the current value and increment the pointer, thus mimicking a queue's \"pop\".\n bytes32[] memory hashes = new bytes32[](totalHashes);\n uint256 leafPos = 0;\n uint256 hashPos = 0;\n uint256 proofPos = 0;\n // At each step, we compute the next hash using two values:\n // - a value from the \"main queue\". If not all leaves have been consumed, we get the next leaf, otherwise we\n // get the next hash.\n // - depending on the flag, either another value for the \"main queue\" (merging branches) or an element from the\n // `proof` array.\n for (uint256 i = 0; i < totalHashes; i++) {\n bytes32 a = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++];\n bytes32 b = proofFlags[i] ? leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++] : proof[proofPos++];\n hashes[i] = _hashPair(a, b);\n }\n\n if (totalHashes > 0) {\n return hashes[totalHashes - 1];\n } else if (leavesLen > 0) {\n return leaves[0];\n } else {\n return proof[0];\n }\n }\n\n /**\n * @dev Calldata version of {processMultiProof}\n *\n * _Available since v4.7._\n */\n function processMultiProofCalldata(\n bytes32[] calldata proof,\n bool[] calldata proofFlags,\n bytes32[] memory leaves\n ) internal pure returns (bytes32 merkleRoot) {\n // This function rebuild the root hash by traversing the tree up from the leaves. The root is rebuilt by\n // consuming and producing values on a queue. The queue starts with the `leaves` array, then goes onto the\n // `hashes` array. At the end of the process, the last hash in the `hashes` array should contain the root of\n // the merkle tree.\n uint256 leavesLen = leaves.length;\n uint256 totalHashes = proofFlags.length;\n\n // Check proof validity.\n require(leavesLen + proof.length - 1 == totalHashes, \"MerkleProof: invalid multiproof\");\n\n // The xxxPos values are \"pointers\" to the next value to consume in each array. All accesses are done using\n // `xxx[xxxPos++]`, which return the current value and increment the pointer, thus mimicking a queue's \"pop\".\n bytes32[] memory hashes = new bytes32[](totalHashes);\n uint256 leafPos = 0;\n uint256 hashPos = 0;\n uint256 proofPos = 0;\n // At each step, we compute the next hash using two values:\n // - a value from the \"main queue\". If not all leaves have been consumed, we get the next leaf, otherwise we\n // get the next hash.\n // - depending on the flag, either another value for the \"main queue\" (merging branches) or an element from the\n // `proof` array.\n for (uint256 i = 0; i < totalHashes; i++) {\n bytes32 a = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++];\n bytes32 b = proofFlags[i] ? leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++] : proof[proofPos++];\n hashes[i] = _hashPair(a, b);\n }\n\n if (totalHashes > 0) {\n return hashes[totalHashes - 1];\n } else if (leavesLen > 0) {\n return leaves[0];\n } else {\n return proof[0];\n }\n }\n\n function _hashPair(bytes32 a, bytes32 b) private pure returns (bytes32) {\n return a < b ? _efficientHash(a, b) : _efficientHash(b, a);\n }\n\n function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) {\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x00, a)\n mstore(0x20, b)\n value := keccak256(0x00, 0x40)\n }\n }\n}\n"},"src/factory/FlairFactory.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"../common/WithdrawExtension.sol\";\nimport \"./Clones.sol\";\n\ncontract FlairFactory is Initializable, Ownable, WithdrawExtension {\n event ProxyCreated(address indexed deployer, address indexed proxyAddress);\n\n constructor() {\n initialize();\n }\n\n function initialize() public initializer {\n __WithdrawExtension_init(_msgSender(), WithdrawMode.OWNER);\n }\n\n function cloneDeterministicSimple(\n address implementation,\n bytes32 salt,\n bytes calldata data\n ) external payable returns (address deployedProxy) {\n bytes32 _salt = keccak256(abi.encodePacked(msg.sender, salt));\n deployedProxy = Clones.cloneDeterministic(implementation, _salt);\n\n if (data.length > 0) {\n (bool success, bytes memory returndata) = deployedProxy.call(data);\n\n if (!success) {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(\"FAILED_TO_CLONE\");\n }\n }\n }\n\n emit ProxyCreated(msg.sender, deployedProxy);\n }\n\n function predictDeterministicSimple(address implementation, bytes32 salt)\n external\n view\n returns (address deployedProxy)\n {\n bytes32 _salt = keccak256(abi.encodePacked(msg.sender, salt));\n deployedProxy = Clones.predictDeterministicAddress(\n implementation,\n _salt\n );\n }\n}\n"},"src/diamond/DiamondLoupe.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\n/******************************************************************************\\\n* Author: Nick Mudge (https://twitter.com/mudgen)\n* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535\n/******************************************************************************/\n\nimport \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\n\nimport \"./DiamondStorage.sol\";\nimport \"./IDiamondLoupe.sol\";\n\n// The functions in DiamondLoupe MUST be added to a diamond.\n// The EIP-2535 Diamond standard requires these functions.\n\n/**\n * @title Diamond - Loupe\n * @notice Standard EIP-2535 loupe functions to allow inspecting a diamond for explorers.\n *\n * @custom:type eip-2535-facet\n * @custom:category Diamonds\n * @custom:provides-interfaces 0x48e2b093\n */\ncontract DiamondLoupe is IDiamondLoupe {\n /// @notice Gets all facets and their selectors.\n /// @return facets_ Facet\n function facets() external view override returns (Facet[] memory facets_) {\n DiamondStorage.Layout storage l = DiamondStorage.layout();\n uint256 numFacets = l.facetAddresses.length;\n facets_ = new Facet[](numFacets);\n for (uint256 i; i < numFacets; i++) {\n address facetAddress_ = l.facetAddresses[i];\n facets_[i].facetAddress = facetAddress_;\n facets_[i].functionSelectors = l.facetFunctionSelectors[facetAddress_].functionSelectors;\n }\n }\n\n /// @notice Gets all the function selectors provided by a facet.\n /// @param _facet The facet address.\n /// @return facetFunctionSelectors_\n function facetFunctionSelectors(address _facet)\n external\n view\n override\n returns (bytes4[] memory facetFunctionSelectors_)\n {\n DiamondStorage.Layout storage l = DiamondStorage.layout();\n facetFunctionSelectors_ = l.facetFunctionSelectors[_facet].functionSelectors;\n }\n\n /// @notice Get all the facet addresses used by a diamond.\n /// @return facetAddresses_\n function facetAddresses() external view override returns (address[] memory facetAddresses_) {\n DiamondStorage.Layout storage l = DiamondStorage.layout();\n facetAddresses_ = l.facetAddresses;\n }\n\n /// @notice Gets the facet that supports the given selector.\n /// @dev If facet is not found return address(0).\n /// @param _functionSelector The function selector.\n /// @return facetAddress_ The facet address.\n function facetAddress(bytes4 _functionSelector) external view override returns (address facetAddress_) {\n DiamondStorage.Layout storage l = DiamondStorage.layout();\n facetAddress_ = l.selectorToFacetAndPosition[_functionSelector].facetAddress;\n }\n}\n"},"src/diamond/DiamondCut.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\n/******************************************************************************\\\n* Author: Nick Mudge (https://twitter.com/mudgen)\n* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535\n/******************************************************************************/\n\nimport \"./IDiamondCut.sol\";\nimport \"./DiamondStorage.sol\";\nimport \"../access/ownable/OwnableInternal.sol\";\n\n// Remember to add the loupe functions from DiamondLoupeFacet to the diamond.\n// The loupe functions are required by the EIP2535 Diamonds standard\n\n/**\n * @title Diamond - Cut\n * @notice Standard EIP-2535 cut functionality to add, replace and remove facets from a diamond.\n *\n * @custom:type eip-2535-facet\n * @custom:category Diamonds\n * @custom:provides-interfaces 0x1f931c1c\n */\ncontract DiamondCut is IDiamondCut, OwnableInternal {\n /// @notice Add/replace/remove any number of functions and optionally execute\n /// a function with delegatecall\n /// @param _diamondCut Contains the facet addresses and function selectors\n /// @param _init The address of the contract or facet to execute _calldata\n /// @param _calldata A function call, including function selector and arguments\n /// _calldata is executed with delegatecall on _init\n function diamondCut(\n FacetCut[] calldata _diamondCut,\n address _init,\n bytes calldata _calldata\n ) external override onlyOwner {\n DiamondStorage.diamondCut(_diamondCut, _init, _calldata);\n }\n}\n"},"src/token/ERC1155/facets/supply/ERC1155SupplyOwnable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../extensions/supply/ERC1155SupplyInternal.sol\";\nimport \"../../extensions/supply/ERC1155SupplyStorage.sol\";\nimport \"../../../../access/ownable/OwnableInternal.sol\";\nimport \"./IERC1155SupplyAdmin.sol\";\n\n/**\n * @title ERC1155 - Supply - Admin - Ownable\n * @notice Allows owner of a EIP-1155 contract to change max supply of token IDs.\n *\n * @custom:type eip-2535-facet\n * @custom:category NFTs\n * @custom:peer-dependencies eip165:0xd9b67a26 eip165:0x744f4bd4\n * @custom:provides-interfaces 0x5b2cf486\n */\ncontract ERC1155SupplyOwnable is IERC1155SupplyAdmin, ERC1155SupplyInternal, OwnableInternal {\n using ERC1155SupplyStorage for ERC1155SupplyStorage.Layout;\n\n function setMaxSupply(uint256 tokenId, uint256 newValue) public onlyOwner {\n _setMaxSupply(tokenId, newValue);\n }\n\n function setMaxSupplyBatch(uint256[] calldata tokenIds, uint256[] calldata newValues) public onlyOwner {\n _setMaxSupplyBatch(tokenIds, newValues);\n }\n}\n"},"src/token/ERC1155/extensions/supply/ERC1155SupplyInternal.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../base/ERC1155BaseInternal.sol\";\nimport \"./ERC1155SupplyStorage.sol\";\n\n/**\n * @dev Extension of ERC1155 that adds tracking of total supply per id.\n *\n * Useful for scenarios where Fungible and Non-fungible tokens have to be\n * clearly identified. Note: While a totalSupply of 1 might mean the\n * corresponding is an NFT, there is no guarantees that no other token with the\n * same id are not going to be minted.\n */\nabstract contract ERC1155SupplyInternal is ERC1155BaseInternal {\n using ERC1155SupplyStorage for ERC1155SupplyStorage.Layout;\n\n /**\n * @dev Total amount of tokens in with a given id.\n */\n function _totalSupply(uint256 id) internal view virtual returns (uint256) {\n return ERC1155SupplyStorage.layout().totalSupply[id];\n }\n\n /**\n * @dev Total amount of tokens in with a given id.\n */\n function _maxSupply(uint256 id) internal view virtual returns (uint256) {\n return ERC1155SupplyStorage.layout().maxSupply[id];\n }\n\n /**\n * @dev Seta maximum amount of tokens possible to exist for a given token ID.\n */\n function _setMaxSupply(uint256 tokenId, uint256 newValue) internal {\n ERC1155SupplyStorage.layout().maxSupply[tokenId] = newValue;\n }\n\n /**\n * @dev Sets maximum amount of tokens possible to exist for multiple token IDs.\n */\n function _setMaxSupplyBatch(uint256[] calldata tokenIds, uint256[] calldata newValues) internal {\n mapping(uint256 => uint256) storage l = ERC1155SupplyStorage.layout().maxSupply;\n\n for (uint256 i = 0; i < tokenIds.length; i++) {\n l[tokenIds[i]] = newValues[i];\n }\n }\n\n /**\n * @dev Indicates whether any token exist with a given id, or not.\n */\n function _exists(uint256 id) internal view virtual returns (bool) {\n return ERC1155SupplyStorage.layout().totalSupply[id] > 0;\n }\n\n /**\n * @dev See {ERC1155-_beforeTokenTransfer}.\n */\n function _beforeTokenTransfer(\n address operator,\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual override {\n super._beforeTokenTransfer(operator, from, to, ids, amounts, data);\n\n if (from == address(0)) {\n mapping(uint256 => uint256) storage totalSupply = ERC1155SupplyStorage.layout().totalSupply;\n mapping(uint256 => uint256) storage maxSupply = ERC1155SupplyStorage.layout().maxSupply;\n\n for (uint256 i = 0; i < ids.length; ++i) {\n totalSupply[ids[i]] += amounts[i];\n\n require(totalSupply[ids[i]] <= maxSupply[ids[i]], \"SUPPLY_EXCEED_MAX\");\n }\n }\n\n if (to == address(0)) {\n mapping(uint256 => uint256) storage totalSupply = ERC1155SupplyStorage.layout().totalSupply;\n\n for (uint256 i = 0; i < ids.length; ++i) {\n uint256 id = ids[i];\n uint256 amount = amounts[i];\n uint256 supply = totalSupply[id];\n require(supply >= amount, \"ERC1155: burn amount exceeds totalSupply\");\n unchecked {\n totalSupply[id] = supply - amount;\n }\n }\n }\n }\n}\n"},"src/token/ERC1155/facets/supply/IERC1155SupplyAdmin.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\ninterface IERC1155SupplyAdmin {\n function setMaxSupply(uint256 tokenId, uint256 newValue) external;\n\n function setMaxSupplyBatch(uint256[] calldata tokenIds, uint256[] calldata newValues) external;\n}\n"},"src/token/ERC1155/extensions/supply/ERC1155Supply.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./IERC1155Supply.sol\";\nimport \"./ERC1155SupplyInternal.sol\";\n\n/**\n * @dev Extension of ERC1155 that adds tracking of total supply per id.\n *\n * Useful for scenarios where Fungible and Non-fungible tokens have to be\n * clearly identified. Note: While a totalSupply of 1 might mean the\n * corresponding is an NFT, there is no guarantees that no other token with the\n * same id are not going to be minted.\n */\nabstract contract ERC1155Supply is IERC1155Supply, ERC1155SupplyInternal {\n /**\n * @inheritdoc IERC1155Supply\n */\n function totalSupply(uint256 id) public view virtual returns (uint256) {\n return _totalSupply(id);\n }\n\n /**\n * @inheritdoc IERC1155Supply\n */\n function maxSupply(uint256 id) public view virtual returns (uint256) {\n return _maxSupply(id);\n }\n\n /**\n * @inheritdoc IERC1155Supply\n */\n function exists(uint256 id) public view virtual returns (bool) {\n return _exists(id);\n }\n}\n"},"src/token/ERC1155/ERC1155WithERC2771.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./base/ERC1155BaseERC2771.sol\";\nimport \"./extensions/supply/ERC1155Supply.sol\";\nimport \"./extensions/lockable/ERC1155Lockable.sol\";\nimport \"./extensions/mintable/ERC1155Mintable.sol\";\nimport \"./extensions/burnable/ERC1155Burnable.sol\";\n\ncontract ERC1155WithERC2771 is ERC1155BaseERC2771, ERC1155Supply, ERC1155Mintable, ERC1155Burnable, ERC1155Lockable {\n function _beforeTokenTransfer(\n address operator,\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual override(ERC1155BaseInternal, ERC1155SupplyInternal, ERC1155LockableInternal) {\n ERC1155BaseInternal._beforeTokenTransfer(operator, from, to, ids, amounts, data);\n }\n\n function _msgSender() internal view virtual override(Context, ERC1155BaseERC2771) returns (address) {\n return ERC1155BaseERC2771._msgSender();\n }\n\n function _msgData() internal view virtual override(Context, ERC1155BaseERC2771) returns (bytes calldata) {\n return ERC1155BaseERC2771._msgData();\n }\n}\n"},"src/token/ERC1155/base/ERC1155BaseERC2771.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../../metatx/ERC2771ContextInternal.sol\";\n\nimport \"./ERC1155Base.sol\";\n\n/**\n * @title Base ERC1155 contract with meta-transactions support (via ERC2771).\n */\nabstract contract ERC1155BaseERC2771 is ERC1155Base, ERC2771ContextInternal {\n function _msgSender() internal view virtual override(Context, ERC2771ContextInternal) returns (address) {\n return ERC2771ContextInternal._msgSender();\n }\n\n function _msgData() internal view virtual override(Context, ERC2771ContextInternal) returns (bytes calldata) {\n return ERC2771ContextInternal._msgData();\n }\n}\n"},"src/token/ERC1155/extensions/lockable/ERC1155Lockable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../../../common/Errors.sol\";\nimport \"./ERC1155LockableInternal.sol\";\nimport \"./IERC1155Lockable.sol\";\n\nabstract contract ERC1155Lockable is IERC1155Lockable, ERC1155LockableInternal {\n function locked(address account, uint256 tokenId) public view virtual returns (uint256) {\n return super._locked(account, tokenId);\n }\n\n function locked(address account, uint256[] calldata ticketTokenIds) public view returns (uint256[] memory) {\n uint256[] memory amounts = new uint256[](ticketTokenIds.length);\n\n for (uint256 i = 0; i < ticketTokenIds.length; i++) {\n amounts[i] = _locked(account, ticketTokenIds[i]);\n }\n\n return amounts;\n }\n\n /**\n * @inheritdoc IERC1155Lockable\n */\n function lockByFacet(\n address account,\n uint256 id,\n uint256 amount\n ) public virtual override {\n if (address(this) != msg.sender) {\n revert SenderIsNotSelf();\n }\n\n _lock(account, id, amount);\n }\n\n /**\n * @inheritdoc IERC1155Lockable\n */\n function unlockByFacet(\n address account,\n uint256 id,\n uint256 amount\n ) public virtual override {\n if (address(this) != msg.sender) {\n revert SenderIsNotSelf();\n }\n\n _unlock(account, id, amount);\n }\n}\n"},"src/token/ERC1155/extensions/mintable/ERC1155Mintable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../../../common/Errors.sol\";\nimport \"../../base/ERC1155BaseInternal.sol\";\nimport \"./IERC1155Mintable.sol\";\n\n/**\n * @title Extension of {ERC1155} that allows other facets of the diamond to mint based on arbitrary logic.\n */\nabstract contract ERC1155Mintable is IERC1155Mintable, ERC1155BaseInternal {\n /**\n * @inheritdoc IERC1155Mintable\n */\n function mintByFacet(\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) public virtual {\n if (address(this) != msg.sender) {\n revert SenderIsNotSelf();\n }\n\n _mint(to, id, amount, data);\n }\n}\n"},"src/token/ERC1155/extensions/burnable/ERC1155Burnable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../../../common/Errors.sol\";\nimport \"../../IERC1155.sol\";\nimport \"../../base/ERC1155BaseInternal.sol\";\nimport \"./IERC1155Burnable.sol\";\nimport \"./ERC1155BurnableStorage.sol\";\n\n/**\n * @title Extension of {ERC1155} that allows users or approved operators to burn tokens.\n */\nabstract contract ERC1155Burnable is IERC1155Burnable, ERC1155BaseInternal {\n function burnablePausedUntil() public view override returns (uint256) {\n return ERC1155BurnableStorage.layout().pausedUntil;\n }\n\n function burn(\n address account,\n uint256 id,\n uint256 value\n ) public virtual {\n require(\n account == _msgSender() || IERC1155(address(this)).isApprovedForAll(account, _msgSender()),\n \"ERC1155: caller is not owner nor approved\"\n );\n\n _burn(account, id, value);\n }\n\n function burnBatch(\n address account,\n uint256[] memory ids,\n uint256[] memory values\n ) public virtual {\n require(\n account == _msgSender() || IERC1155(address(this)).isApprovedForAll(account, _msgSender()),\n \"ERC1155: caller is not owner nor approved\"\n );\n\n _burnBatch(account, ids, values);\n }\n\n function burnByFacet(\n address account,\n uint256 id,\n uint256 amount\n ) public virtual {\n if (address(this) != msg.sender) {\n revert SenderIsNotSelf();\n }\n\n _burn(account, id, amount);\n }\n\n function burnBatchByFacet(\n address account,\n uint256[] memory ids,\n uint256[] memory values\n ) public virtual {\n if (address(this) != msg.sender) {\n revert SenderIsNotSelf();\n }\n\n _burnBatch(account, ids, values);\n }\n}\n"},"src/token/ERC1155/base/ERC1155Base.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../IERC1155.sol\";\nimport \"../IERC1155Receiver.sol\";\nimport \"./ERC1155BaseInternal.sol\";\n\n/**\n * @title Base ERC1155 contract\n * @dev derived from https://github.com/OpenZeppelin/openzeppelin-contracts/ (MIT license)\n */\ncontract ERC1155Base is IERC1155, ERC1155BaseInternal {\n /**\n * @inheritdoc IERC1155\n */\n function balanceOf(address account, uint256 id) public view virtual returns (uint256) {\n return _balanceOf(account, id);\n }\n\n /**\n * @inheritdoc IERC1155\n */\n function balanceOfBatch(address[] memory accounts, uint256[] memory ids)\n public\n view\n virtual\n returns (uint256[] memory)\n {\n require(accounts.length == ids.length, \"ERC1155: accounts and ids length mismatch\");\n\n mapping(uint256 => mapping(address => uint256)) storage balances = ERC1155BaseStorage.layout().balances;\n\n uint256[] memory batchBalances = new uint256[](accounts.length);\n\n unchecked {\n for (uint256 i; i < accounts.length; i++) {\n require(accounts[i] != address(0), \"ERC1155: batch balance query for the zero address\");\n batchBalances[i] = balances[ids[i]][accounts[i]];\n }\n }\n\n return batchBalances;\n }\n\n /**\n * @inheritdoc IERC1155\n */\n function isApprovedForAll(address account, address operator) public view virtual returns (bool) {\n return ERC1155BaseStorage.layout().operatorApprovals[account][operator];\n }\n\n /**\n * @inheritdoc IERC1155\n */\n function setApprovalForAll(address operator, bool status) public virtual {\n address sender = _msgSender();\n require(sender != operator, \"ERC1155: setting approval status for self\");\n ERC1155BaseStorage.layout().operatorApprovals[sender][operator] = status;\n emit ApprovalForAll(sender, operator, status);\n }\n\n /**\n * @inheritdoc IERC1155\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) public virtual {\n address sender = _msgSender();\n require(from == sender || isApprovedForAll(from, sender), \"ERC1155: caller is not owner nor approved\");\n _safeTransfer(sender, from, to, id, amount, data);\n }\n\n /**\n * @inheritdoc IERC1155\n */\n function safeBatchTransferFrom(\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) public virtual {\n address sender = _msgSender();\n require(from == sender || isApprovedForAll(from, sender), \"ERC1155: caller is not owner nor approved\");\n _safeTransferBatch(sender, from, to, ids, amounts, data);\n }\n}\n"},"src/token/ERC1155/IERC1155.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./IERC1155Events.sol\";\nimport \"../../introspection/IERC165.sol\";\n\n/**\n * @title ERC1155 interface\n * @dev see https://github.com/ethereum/EIPs/issues/1155\n */\ninterface IERC1155 is IERC1155Events {\n /**\n * @notice query the balance of given token held by given address\n * @param account address to query\n * @param id token to query\n * @return token balance\n */\n function balanceOf(address account, uint256 id) external view returns (uint256);\n\n /**\n * @notice query the balances of given tokens held by given addresses\n * @param accounts addresss to query\n * @param ids tokens to query\n * @return token balances\n */\n function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)\n external\n view\n returns (uint256[] memory);\n\n /**\n * @notice query approval status of given operator with respect to given address\n * @param account address to query for approval granted\n * @param operator address to query for approval received\n * @return whether operator is approved to spend tokens held by account\n */\n function isApprovedForAll(address account, address operator) external view returns (bool);\n\n /**\n * @notice grant approval to or revoke approval from given operator to spend held tokens\n * @param operator address whose approval status to update\n * @param status whether operator should be considered approved\n */\n function setApprovalForAll(address operator, bool status) external;\n\n /**\n * @notice transfer tokens between given addresses, checking for ERC1155Receiver implementation if applicable\n * @param from sender of tokens\n * @param to receiver of tokens\n * @param id token ID\n * @param amount quantity of tokens to transfer\n * @param data data payload\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 id,\n uint256 amount,\n bytes calldata data\n ) external;\n\n /**\n * @notice transfer batch of tokens between given addresses, checking for ERC1155Receiver implementation if applicable\n * @param from sender of tokens\n * @param to receiver of tokens\n * @param ids list of token IDs\n * @param amounts list of quantities of tokens to transfer\n * @param data data payload\n */\n function safeBatchTransferFrom(\n address from,\n address to,\n uint256[] calldata ids,\n uint256[] calldata amounts,\n bytes calldata data\n ) external;\n}\n"},"src/token/ERC1155/extensions/lockable/ERC1155LockableInternal.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../base/ERC1155BaseInternal.sol\";\nimport \"./ERC1155LockableStorage.sol\";\n\nabstract contract ERC1155LockableInternal is ERC1155BaseInternal {\n using ERC1155LockableStorage for ERC1155LockableStorage.Layout;\n\n function _locked(address account, uint256 tokenId) internal view virtual returns (uint256) {\n mapping(uint256 => uint256) storage locks = ERC1155LockableStorage.layout().lockedAmount[account];\n\n return locks[tokenId];\n }\n\n /* INTERNAL */\n\n function _lock(\n address account,\n uint256 tokenId,\n uint256 amount\n ) internal virtual {\n mapping(uint256 => uint256) storage locks = ERC1155LockableStorage.layout().lockedAmount[account];\n\n require(_balanceOf(account, tokenId) - locks[tokenId] >= amount, \"NOT_ENOUGH_BALANCE\");\n\n locks[tokenId] += amount;\n }\n\n function _unlock(\n address account,\n uint256 tokenId,\n uint256 amount\n ) internal virtual {\n mapping(uint256 => uint256) storage locks = ERC1155LockableStorage.layout().lockedAmount[account];\n\n require(locks[tokenId] >= amount, \"NOT_ENOUGH_LOCKED\");\n\n locks[tokenId] -= amount;\n }\n\n /**\n * @dev See {ERC1155-_beforeTokenTransfer}.\n */\n function _beforeTokenTransfer(\n address operator,\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual override {\n if (from != address(0)) {\n for (uint256 i = 0; i < ids.length; i++) {\n require(\n _balanceOf(from, ids[i]) - ERC1155LockableStorage.layout().lockedAmount[from][ids[i]] >= amounts[i],\n \"LOCKED\"\n );\n }\n }\n\n super._beforeTokenTransfer(operator, from, to, ids, amounts, data);\n }\n}\n"},"src/token/ERC1155/extensions/lockable/IERC1155Lockable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\n/**\n * @dev Extension of {ERC1155} that allows other facets from the diamond to lock the tokens.\n */\ninterface IERC1155Lockable {\n /**\n * @dev Locks `amount` of tokens of `account`, of token type `id`.\n *\n * Requirements:\n *\n * - the caller must be diamond itself (other facets).\n */\n function lockByFacet(\n address account,\n uint256 id,\n uint256 amount\n ) external;\n\n /**\n * @dev Un-locks `amount` of tokens of `account`, of token type `id`.\n *\n * Requirements:\n *\n * - the caller must be diamond itself (other facets).\n */\n function unlockByFacet(\n address account,\n uint256 id,\n uint256 amount\n ) external;\n}\n"},"src/token/ERC1155/extensions/lockable/ERC1155LockableStorage.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nlibrary ERC1155LockableStorage {\n struct Layout {\n mapping(address => mapping(uint256 => uint256)) lockedAmount;\n }\n\n bytes32 internal constant STORAGE_SLOT = keccak256(\"v2.flair.contracts.storage.ERC1155Lockable\");\n\n function layout() internal pure returns (Layout storage l) {\n bytes32 slot = STORAGE_SLOT;\n assembly {\n l.slot := slot\n }\n }\n}\n"},"src/token/ERC1155/extensions/burnable/IERC1155Burnable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\n/**\n * @dev Extension of {ERC1155} that allows holders or approved operators to burn tokens.\n */\ninterface IERC1155Burnable {\n function burnablePausedUntil() external view returns (uint256);\n\n function burn(\n address account,\n uint256 id,\n uint256 value\n ) external;\n\n function burnBatch(\n address account,\n uint256[] memory ids,\n uint256[] memory values\n ) external;\n\n function burnByFacet(\n address account,\n uint256 id,\n uint256 amount\n ) external;\n\n function burnBatchByFacet(\n address account,\n uint256[] memory ids,\n uint256[] memory values\n ) external;\n}\n"},"src/token/ERC1155/extensions/burnable/ERC1155BurnableStorage.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nlibrary ERC1155BurnableStorage {\n struct Layout {\n uint256 pausedUntil;\n }\n\n bytes32 internal constant STORAGE_SLOT = keccak256(\"v2.flair.contracts.storage.ERC1155Burnable\");\n\n function layout() internal pure returns (Layout storage l) {\n bytes32 slot = STORAGE_SLOT;\n assembly {\n l.slot := slot\n }\n }\n}\n"},"src/token/ERC1155/facets/burnable/ERC1155BurnableOwnable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../../../access/ownable/OwnableInternal.sol\";\nimport \"../../extensions/burnable/ERC1155BurnableStorage.sol\";\nimport \"./IERC1155BurnableAdmin.sol\";\n\n/**\n * @title ERC1155 - Burnable - Admin - Ownable\n * @notice Extension of ERC1155 to allow owner to manage burning mechanism.\n *\n * @custom:type eip-2535-facet\n * @custom:category NFTs\n * @custom:peer-dependencies eip165:0xdc290004\n * @custom:provides-interfaces 0x710fb577\n */\ncontract ERC1155BurnableOwnable is IERC1155BurnableAdmin, OwnableInternal {\n using ERC1155BurnableStorage for ERC1155BurnableStorage.Layout;\n\n function setBurnablePausedUntil(uint256 newTimestamp) public onlyOwner {\n ERC1155BurnableStorage.layout().pausedUntil = newTimestamp;\n }\n}\n"},"src/token/ERC1155/facets/burnable/IERC1155BurnableAdmin.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\ninterface IERC1155BurnableAdmin {\n function setBurnablePausedUntil(uint256 newTimestamp) external;\n}\n"},"src/introspection/ERC165Ownable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../access/ownable/OwnableInternal.sol\";\nimport \"./IERC165.sol\";\nimport \"./ERC165Storage.sol\";\nimport \"./IERC165Admin.sol\";\n\n/**\n * @title ERC165 - Admin - Ownable\n * @notice Standard EIP-165 management facet using Ownable extension for access control.\n *\n * @custom:type eip-2535-facet\n * @custom:category Diamonds\n * @custom:provides-interfaces 0x2a848091\n */\ncontract ERC165Ownable is IERC165Admin, OwnableInternal {\n using ERC165Storage for ERC165Storage.Layout;\n\n /**\n * @param interfaceIds list of interface id to set as supported\n * @param interfaceIdsToRemove list of interface id to unset as supported\n */\n function setERC165(bytes4[] calldata interfaceIds, bytes4[] calldata interfaceIdsToRemove) public onlyOwner {\n ERC165Storage.Layout storage l = ERC165Storage.layout();\n\n l.supportedInterfaces[type(IERC165).interfaceId] = true;\n\n for (uint256 i = 0; i < interfaceIds.length; i++) {\n l.supportedInterfaces[interfaceIds[i]] = true;\n }\n\n for (uint256 i = 0; i < interfaceIdsToRemove.length; i++) {\n l.supportedInterfaces[interfaceIdsToRemove[i]] = false;\n }\n }\n}\n"},"src/introspection/IERC165Admin.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\ninterface IERC165Admin {\n function setERC165(bytes4[] calldata interfaceIds, bytes4[] calldata interfaceIdsToRemove) external;\n}\n"},"src/token/ERC1155/ERC1155.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./base/ERC1155Base.sol\";\nimport \"./extensions/supply/ERC1155Supply.sol\";\nimport \"./extensions/lockable/ERC1155Lockable.sol\";\nimport \"./extensions/mintable/ERC1155Mintable.sol\";\nimport \"./extensions/burnable/ERC1155Burnable.sol\";\n\n/**\n * @title ERC1155 - Standard\n * @notice Standard EIP-1155 NFTs with core capabilities of Mintable, Burnable and Lockable.\n *\n * @custom:type eip-2535-facet\n * @custom:category NFTs\n * @custom:provides-interfaces 0xd9b67a26 0x744f4bd4 0xdc290004 0xff3508c6 0xb164884b\n */\ncontract ERC1155 is ERC1155Base, ERC1155Supply, ERC1155Mintable, ERC1155Burnable, ERC1155Lockable {\n /**\n * @notice inheritdoc IERC1155Metadata\n */\n function _beforeTokenTransfer(\n address operator,\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n ) internal virtual override(ERC1155BaseInternal, ERC1155SupplyInternal, ERC1155LockableInternal) {\n super._beforeTokenTransfer(operator, from, to, ids, amounts, data);\n }\n}\n"},"src/token/ERC1155/facets/minting/ERC1155MintByOwner.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../../../common/Errors.sol\";\nimport \"../../../../access/ownable/OwnableInternal.sol\";\nimport \"../../extensions/mintable/IERC1155Mintable.sol\";\nimport \"../../base/ERC1155BaseInternal.sol\";\nimport \"./IERC1155MintByOwner.sol\";\n\n/**\n * @dev Extension of {ERC1155} that allows owner to mint new tokens.\n */\ncontract ERC1155MintByOwner is IERC1155MintByOwner, OwnableInternal {\n /**\n * @inheritdoc IERC1155MintByOwner\n */\n function mintByOwner(\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) public virtual onlyOwner {\n IERC1155Mintable(address(this)).mintByFacet(to, id, amount, data);\n }\n}\n"},"src/token/ERC1155/facets/minting/IERC1155MintByOwner.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\n/**\n * @dev Extension of {ERC1155} that allows diamond owner to mint tokens.\n */\ninterface IERC1155MintByOwner {\n /**\n * @dev Creates `amount` new tokens for `to`, of token type `id`.\n *\n * See {ERC1155-_mint}.\n *\n * Requirements:\n *\n * - the caller must be diamond owner.\n */\n function mintByOwner(\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n ) external;\n}\n"},"src/token/ERC1155/facets/minting/ERC1155MintByOwnerERC2771.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../../../metatx/ERC2771ContextInternal.sol\";\nimport \"./ERC1155MintByOwner.sol\";\n\n/**\n * @dev Extension of {ERC1155} to mint as diamond owner with meta-transactions supported via ERC2771.\n */\ncontract ERC1155MintByOwnerERC2771 is ERC1155MintByOwner, ERC2771ContextInternal {\n function _msgSender() internal view virtual override(Context, ERC2771ContextInternal) returns (address) {\n return ERC2771ContextInternal._msgSender();\n }\n\n function _msgData() internal view virtual override(Context, ERC2771ContextInternal) returns (bytes calldata) {\n return ERC2771ContextInternal._msgData();\n }\n}\n"},"src/token/ERC1155/facets/sales/ERC1155TieredSalesOwnable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../../../access/ownable/OwnableInternal.sol\";\nimport \"./ERC1155TieredSalesStorage.sol\";\nimport \"./IERC1155TieredSalesAdmin.sol\";\n\n/**\n * @title ERC1155 - Tiered Sales - Admin - Ownable\n * @notice Used to manage which ERC1155 token is related to which the sales tier.\n *\n * @custom:type eip-2535-facet\n * @custom:category NFTs\n * @custom:peer-dependencies eip165:0x79f33254\n * @custom:provides-interfaces 0x76c5dd21\n */\ncontract ERC1155TieredSalesOwnable is IERC1155TieredSalesAdmin, OwnableInternal {\n using ERC1155TieredSalesStorage for ERC1155TieredSalesStorage.Layout;\n\n function configureTierTokenId(uint256 tierId, uint256 tokenId) external onlyOwner {\n ERC1155TieredSalesStorage.layout().tierToTokenId[tierId] = tokenId;\n }\n\n function configureTierTokenId(uint256[] calldata tierIds, uint256[] calldata tokenIds) external onlyOwner {\n require(\n tierIds.length == tokenIds.length,\n \"ERC1155TieredSalesOwnable: tierIds and tokenIds must be same length\"\n );\n\n for (uint256 i = 0; i < tierIds.length; i++) {\n ERC1155TieredSalesStorage.layout().tierToTokenId[tierIds[i]] = tokenIds[i];\n }\n }\n}\n"},"src/token/ERC1155/facets/sales/IERC1155TieredSalesAdmin.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\ninterface IERC1155TieredSalesAdmin {\n function configureTierTokenId(uint256 tierId, uint256 tokenId) external;\n\n function configureTierTokenId(uint256[] calldata tierIds, uint256[] calldata tokenIds) external;\n}\n"},"src/token/ERC1155/facets/metadata/ERC1155MetadataOwnable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\n\nimport \"../../../../access/ownable/OwnableInternal.sol\";\n\nimport \"./ERC1155MetadataInternal.sol\";\nimport \"./ERC1155MetadataStorage.sol\";\nimport \"./IERC1155MetadataAdmin.sol\";\n\n/**\n * @title ERC1155 - Metadata - Admin - Ownable\n * @notice Allows diamond owner to change base, per-token, and fallback URIs, as wel as freezing URIs.\n * @dev See https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions\n *\n * @custom:type eip-2535-facet\n * @custom:category NFTs\n * @custom:peer-dependencies eip165:0x0e89341c\n * @custom:provides-interfaces 0x3f963a7f\n */\ncontract ERC1155MetadataOwnable is IERC1155MetadataAdmin, ERC1155MetadataInternal, OwnableInternal {\n function setBaseURI(string calldata newBaseURI) public onlyOwner {\n _setBaseURI(newBaseURI);\n }\n\n function setFallbackURI(string calldata newFallbackURI) public onlyOwner {\n _setFallbackURI(newFallbackURI);\n }\n\n function setURISuffix(string calldata newURISuffix) public onlyOwner {\n _setURISuffix(newURISuffix);\n }\n\n function setURI(uint256 tokenId, string calldata newTokenURI) public onlyOwner {\n _setURI(tokenId, newTokenURI);\n }\n\n function setURIBatch(uint256[] calldata tokenIds, string[] calldata newTokenURIs) public onlyOwner {\n for (uint256 i = 0; i < tokenIds.length; i++) {\n _setURI(tokenIds[i], newTokenURIs[i]);\n }\n }\n\n function lockBaseURI() public onlyOwner {\n _lockBaseURI();\n }\n\n function lockFallbackURI() public onlyOwner {\n _lockFallbackURI();\n }\n\n function lockURISuffix() public onlyOwner {\n _lockURISuffix();\n }\n\n function lockURIUntil(uint256 tokenId) public onlyOwner {\n _lockURIUntil(tokenId);\n }\n}\n"},"src/token/ERC1155/facets/metadata/ERC1155MetadataInternal.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./IERC1155MetadataEvents.sol\";\nimport \"./ERC1155MetadataStorage.sol\";\n\nabstract contract ERC1155MetadataInternal is IERC1155MetadataEvents {\n function _setBaseURI(string memory baseURI) internal {\n require(!ERC1155MetadataStorage.layout().baseURILocked, \"ERC1155Metadata: baseURI locked\");\n ERC1155MetadataStorage.layout().baseURI = baseURI;\n }\n\n function _setFallbackURI(string memory baseURI) internal {\n require(!ERC1155MetadataStorage.layout().fallbackURILocked, \"ERC1155Metadata: fallbackURI locked\");\n ERC1155MetadataStorage.layout().baseURI = baseURI;\n }\n\n function _setURI(uint256 tokenId, string memory tokenURI) internal {\n require(tokenId > ERC1155MetadataStorage.layout().lastLockedTokenId, \"ERC1155Metadata: tokenURI locked\");\n ERC1155MetadataStorage.layout().tokenURIs[tokenId] = tokenURI;\n emit URI(tokenURI, tokenId);\n }\n\n function _setURISuffix(string memory uriSuffix) internal {\n require(!ERC1155MetadataStorage.layout().uriSuffixLocked, \"ERC1155Metadata: uriSuffix locked\");\n ERC1155MetadataStorage.layout().uriSuffix = uriSuffix;\n }\n\n function _lockBaseURI() internal {\n ERC1155MetadataStorage.layout().baseURILocked = true;\n }\n\n function _lockFallbackURI() internal {\n ERC1155MetadataStorage.layout().fallbackURILocked = true;\n }\n\n function _lockURIUntil(uint256 tokenId) internal {\n ERC1155MetadataStorage.layout().lastLockedTokenId = tokenId;\n }\n\n function _lockURISuffix() internal {\n ERC1155MetadataStorage.layout().uriSuffixLocked = true;\n }\n}\n"},"src/token/ERC1155/facets/metadata/ERC1155MetadataStorage.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nlibrary ERC1155MetadataStorage {\n bytes32 internal constant STORAGE_SLOT = keccak256(\"v2.flair.contracts.storage.ERC1155Metadata\");\n\n struct Layout {\n string baseURI;\n bool baseURILocked;\n string fallbackURI;\n bool fallbackURILocked;\n string uriSuffix;\n bool uriSuffixLocked;\n uint256 lastLockedTokenId;\n mapping(uint256 => string) tokenURIs;\n }\n\n function layout() internal pure returns (Layout storage l) {\n bytes32 slot = STORAGE_SLOT;\n assembly {\n l.slot := slot\n }\n }\n}\n"},"src/token/ERC1155/facets/metadata/IERC1155MetadataAdmin.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\ninterface IERC1155MetadataAdmin {\n function setBaseURI(string calldata newBaseURI) external;\n\n function setFallbackURI(string calldata newFallbackURI) external;\n\n function setURISuffix(string calldata newURIPrefix) external;\n\n function setURI(uint256 tokenId, string calldata newTokenURI) external;\n\n function setURIBatch(uint256[] calldata tokenIds, string[] calldata newTokenURIs) external;\n\n function lockBaseURI() external;\n\n function lockFallbackURI() external;\n\n function lockURISuffix() external;\n\n function lockURIUntil(uint256 tokenId) external;\n}\n"},"src/token/ERC1155/facets/metadata/IERC1155MetadataEvents.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\ninterface IERC1155MetadataEvents {\n event URI(string value, uint256 indexed tokenId);\n}\n"},"@openzeppelin/contracts/utils/cryptography/ECDSA.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.3) (utils/cryptography/ECDSA.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../Strings.sol\";\n\n/**\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n *\n * These functions can be used to verify that a message was signed by the holder\n * of the private keys of a given address.\n */\nlibrary ECDSA {\n enum RecoverError {\n NoError,\n InvalidSignature,\n InvalidSignatureLength,\n InvalidSignatureS,\n InvalidSignatureV\n }\n\n function _throwError(RecoverError error) private pure {\n if (error == RecoverError.NoError) {\n return; // no error: do nothing\n } else if (error == RecoverError.InvalidSignature) {\n revert(\"ECDSA: invalid signature\");\n } else if (error == RecoverError.InvalidSignatureLength) {\n revert(\"ECDSA: invalid signature length\");\n } else if (error == RecoverError.InvalidSignatureS) {\n revert(\"ECDSA: invalid signature 's' value\");\n } else if (error == RecoverError.InvalidSignatureV) {\n revert(\"ECDSA: invalid signature 'v' value\");\n }\n }\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with\n * `signature` or error string. This address can then be used for verification purposes.\n *\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {toEthSignedMessageHash} on it.\n *\n * Documentation for signature generation:\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n *\n * _Available since v4.3._\n */\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {\n if (signature.length == 65) {\n bytes32 r;\n bytes32 s;\n uint8 v;\n // ecrecover takes the signature parameters, and the only way to get them\n // currently is to use assembly.\n /// @solidity memory-safe-assembly\n assembly {\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n }\n return tryRecover(hash, v, r, s);\n } else {\n return (address(0), RecoverError.InvalidSignatureLength);\n }\n }\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with\n * `signature`. This address can then be used for verification purposes.\n *\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {toEthSignedMessageHash} on it.\n */\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\n (address recovered, RecoverError error) = tryRecover(hash, signature);\n _throwError(error);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n *\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\n *\n * _Available since v4.3._\n */\n function tryRecover(\n bytes32 hash,\n bytes32 r,\n bytes32 vs\n ) internal pure returns (address, RecoverError) {\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\n uint8 v = uint8((uint256(vs) >> 255) + 27);\n return tryRecover(hash, v, r, s);\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n *\n * _Available since v4.2._\n */\n function recover(\n bytes32 hash,\n bytes32 r,\n bytes32 vs\n ) internal pure returns (address) {\n (address recovered, RecoverError error) = tryRecover(hash, r, vs);\n _throwError(error);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n * `r` and `s` signature fields separately.\n *\n * _Available since v4.3._\n */\n function tryRecover(\n bytes32 hash,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal pure returns (address, RecoverError) {\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\n // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\n //\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\n // these malleable signatures as well.\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\n return (address(0), RecoverError.InvalidSignatureS);\n }\n if (v != 27 && v != 28) {\n return (address(0), RecoverError.InvalidSignatureV);\n }\n\n // If the signature is valid (and not malleable), return the signer address\n address signer = ecrecover(hash, v, r, s);\n if (signer == address(0)) {\n return (address(0), RecoverError.InvalidSignature);\n }\n\n return (signer, RecoverError.NoError);\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `v`,\n * `r` and `s` signature fields separately.\n */\n function recover(\n bytes32 hash,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal pure returns (address) {\n (address recovered, RecoverError error) = tryRecover(hash, v, r, s);\n _throwError(error);\n return recovered;\n }\n\n /**\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\n * produces hash corresponding to the one signed with the\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n * JSON-RPC method as part of EIP-191.\n *\n * See {recover}.\n */\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\n // 32 is the length in bytes of hash,\n // enforced by the type signature above\n return keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", hash));\n }\n\n /**\n * @dev Returns an Ethereum Signed Message, created from `s`. This\n * produces hash corresponding to the one signed with the\n * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]\n * JSON-RPC method as part of EIP-191.\n *\n * See {recover}.\n */\n function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n\", Strings.toString(s.length), s));\n }\n\n /**\n * @dev Returns an Ethereum Signed Typed Data, created from a\n * `domainSeparator` and a `structHash`. This produces hash corresponding\n * to the one signed with the\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]\n * JSON-RPC method as part of EIP-712.\n *\n * See {recover}.\n */\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"\\x19\\x01\", domainSeparator, structHash));\n }\n}\n"},"@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/cryptography/draft-EIP712.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./ECDSA.sol\";\n\n/**\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\n *\n * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\n * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\n * they need in their contracts using a combination of `abi.encode` and `keccak256`.\n *\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n * ({_hashTypedDataV4}).\n *\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n * the chain id to protect against replay attacks on an eventual fork of the chain.\n *\n * NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n *\n * _Available since v3.4._\n */\nabstract contract EIP712 {\n /* solhint-disable var-name-mixedcase */\n // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to\n // invalidate the cached domain separator if the chain id changes.\n bytes32 private immutable _CACHED_DOMAIN_SEPARATOR;\n uint256 private immutable _CACHED_CHAIN_ID;\n address private immutable _CACHED_THIS;\n\n bytes32 private immutable _HASHED_NAME;\n bytes32 private immutable _HASHED_VERSION;\n bytes32 private immutable _TYPE_HASH;\n\n /* solhint-enable var-name-mixedcase */\n\n /**\n * @dev Initializes the domain separator and parameter caches.\n *\n * The meaning of `name` and `version` is specified in\n * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\n *\n * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n * - `version`: the current major version of the signing domain.\n *\n * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n * contract upgrade].\n */\n constructor(string memory name, string memory version) {\n bytes32 hashedName = keccak256(bytes(name));\n bytes32 hashedVersion = keccak256(bytes(version));\n bytes32 typeHash = keccak256(\n \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"\n );\n _HASHED_NAME = hashedName;\n _HASHED_VERSION = hashedVersion;\n _CACHED_CHAIN_ID = block.chainid;\n _CACHED_DOMAIN_SEPARATOR = _buildDomainSeparator(typeHash, hashedName, hashedVersion);\n _CACHED_THIS = address(this);\n _TYPE_HASH = typeHash;\n }\n\n /**\n * @dev Returns the domain separator for the current chain.\n */\n function _domainSeparatorV4() internal view returns (bytes32) {\n if (address(this) == _CACHED_THIS && block.chainid == _CACHED_CHAIN_ID) {\n return _CACHED_DOMAIN_SEPARATOR;\n } else {\n return _buildDomainSeparator(_TYPE_HASH, _HASHED_NAME, _HASHED_VERSION);\n }\n }\n\n function _buildDomainSeparator(\n bytes32 typeHash,\n bytes32 nameHash,\n bytes32 versionHash\n ) private view returns (bytes32) {\n return keccak256(abi.encode(typeHash, nameHash, versionHash, block.chainid, address(this)));\n }\n\n /**\n * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n * function returns the hash of the fully encoded EIP712 message for this domain.\n *\n * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n *\n * ```solidity\n * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n * keccak256(\"Mail(address to,string contents)\"),\n * mailTo,\n * keccak256(bytes(mailContents))\n * )));\n * address signer = ECDSA.recover(digest, signature);\n * ```\n */\n function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\n return ECDSA.toTypedDataHash(_domainSeparatorV4(), structHash);\n }\n}\n"},"src/common/UnorderedForwarder.sol":{"content":"// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/utils/Context.sol\";\nimport \"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\";\nimport \"@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol\";\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\n\ncontract UnorderedForwarder is EIP712, ReentrancyGuard {\n using ECDSA for bytes32;\n\n struct MetaTransaction {\n address from;\n address to;\n uint256 value;\n uint256 minGasPrice;\n uint256 maxGasPrice;\n uint256 expiresAt;\n uint256 nonce;\n bytes data;\n }\n\n bytes32 private constant _TYPEHASH =\n keccak256(\n \"MetaTransaction(address from,address to,uint256 value,uint256 minGasPrice,uint256 maxGasPrice,uint256 expiresAt,uint256 nonce,bytes data)\"\n );\n\n mapping(bytes32 => uint256) mtxHashToExecutedBlockNumber;\n\n constructor() EIP712(\"UnorderedForwarder\", \"0.0.1\") {}\n\n /// @dev Refunds up to `msg.value` leftover ETH at the end of the call.\n modifier refundsAttachedEth() {\n _;\n uint256 remainingBalance = msg.value > address(this).balance\n ? address(this).balance\n : msg.value;\n if (remainingBalance > 0) {\n payable(msg.sender).transfer(remainingBalance);\n }\n }\n\n /// @dev Ensures that the ETH balance of `this` does not go below the\n /// initial ETH balance before the call (excluding ETH attached to the call).\n modifier doesNotReduceEthBalance() {\n uint256 initialBalance = address(this).balance - msg.value;\n _;\n require(initialBalance <= address(this).balance, \"FWD_ETH_LEAK\");\n }\n\n function verify(MetaTransaction calldata mtx, bytes calldata signature)\n public\n view\n returns (bytes32 mtxHash)\n {\n mtxHash = _hashTypedDataV4(\n keccak256(\n abi.encode(\n _TYPEHASH,\n mtx.from,\n mtx.to,\n mtx.value,\n mtx.minGasPrice,\n mtx.maxGasPrice,\n mtx.expiresAt,\n mtx.nonce,\n keccak256(mtx.data)\n )\n )\n );\n\n // Must not be expired.\n require(mtx.expiresAt > block.timestamp, \"FWD_EXPIRED\");\n\n // Must be signed by the signer.\n require(\n mtxHash.recover(signature) == mtx.from,\n \"FWD_INVALID_SIGNATURE\"\n );\n\n // Transaction must not have been already executed.\n require(mtxHashToExecutedBlockNumber[mtxHash] == 0, \"FWD_REPLAYED\");\n\n return mtxHash;\n }\n\n function execute(MetaTransaction calldata mtx, bytes calldata signature)\n public\n payable\n nonReentrant\n doesNotReduceEthBalance\n refundsAttachedEth\n returns (bytes memory)\n {\n return _execute(mtx, signature);\n }\n\n function batchExecute(\n MetaTransaction[] calldata mtxs,\n bytes[] calldata signatures\n )\n public\n payable\n nonReentrant\n doesNotReduceEthBalance\n refundsAttachedEth\n returns (bytes[] memory returnResults)\n {\n require(mtxs.length == signatures.length, \"FWD_MISMATCH_SIGNATURES\");\n\n returnResults = new bytes[](mtxs.length);\n\n for (uint256 i = 0; i < mtxs.length; ++i) {\n returnResults[i] = _execute(mtxs[i], signatures[i]);\n }\n }\n\n function _execute(MetaTransaction calldata mtx, bytes calldata signature)\n internal\n returns (bytes memory)\n {\n // Must have a valid gas price.\n require(\n mtx.minGasPrice <= tx.gasprice && tx.gasprice <= mtx.maxGasPrice,\n \"FWD_INVALID_GAS\"\n );\n\n // Must have enough ETH.\n require(mtx.value <= address(this).balance, \"FWD_INVALID_VALUE\");\n\n bytes32 mtxHash = verify(mtx, signature);\n\n mtxHashToExecutedBlockNumber[mtxHash] = block.number;\n\n (bool success, bytes memory returndata) = mtx.to.call{value: mtx.value}(\n abi.encodePacked(mtx.data, mtx.from)\n );\n\n if (!success) {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(\"FWD_CALL_FAILED\");\n }\n }\n\n return returndata;\n }\n}\n"},"src/token/ERC1155/facets/metadata/ERC1155Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\n\nimport \"./IERC1155Metadata.sol\";\nimport \"./IERC1155MetadataExtra.sol\";\nimport \"./ERC1155MetadataInternal.sol\";\nimport \"./ERC1155MetadataStorage.sol\";\n\n/**\n * @title ERC1155 - Metadata\n * @notice Provides metadata for ERC1155 tokens according to standard. This extension supports base URI, per-token URI, and a fallback URI. You can also freeze URIs until a certain token ID.\n * @dev See https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions\n *\n * @custom:type eip-2535-facet\n * @custom:category NFTs\n * @custom:peer-dependencies eip165:0xd9b67a26\n * @custom:provides-interfaces 0x0e89341c 0x57bbc86d\n */\ncontract ERC1155Metadata is IERC1155Metadata, IERC1155MetadataExtra, ERC1155MetadataInternal {\n /**\n * @notice inheritdoc IERC1155Metadata\n */\n function uri(uint256 tokenId) public view virtual returns (string memory) {\n ERC1155MetadataStorage.Layout storage l = ERC1155MetadataStorage.layout();\n\n string memory _tokenIdURI = l.tokenURIs[tokenId];\n string memory _baseURI = l.baseURI;\n\n if (bytes(_baseURI).length == 0) {\n return _tokenIdURI;\n } else if (bytes(_tokenIdURI).length > 0) {\n return string(abi.encodePacked(_baseURI, _tokenIdURI));\n } else {\n return string(abi.encodePacked(_baseURI, l.fallbackURI, Strings.toString(tokenId)));\n }\n }\n\n function uriBatch(uint256[] calldata tokenIds) external view returns (string[] memory) {\n string[] memory uris = new string[](tokenIds.length);\n\n for (uint256 i = 0; i < tokenIds.length; i++) {\n uris[i] = uri(tokenIds[i]);\n }\n\n return uris;\n }\n\n function baseURI() external view returns (string memory) {\n return ERC1155MetadataStorage.layout().baseURI;\n }\n\n function fallbackURI() external view returns (string memory) {\n return ERC1155MetadataStorage.layout().fallbackURI;\n }\n\n function uriSuffix() external view returns (string memory) {\n return ERC1155MetadataStorage.layout().uriSuffix;\n }\n\n function baseURILocked() external view returns (bool) {\n return ERC1155MetadataStorage.layout().baseURILocked;\n }\n\n function fallbackURILocked() external view returns (bool) {\n return ERC1155MetadataStorage.layout().fallbackURILocked;\n }\n\n function uriSuffixLocked() external view returns (bool) {\n return ERC1155MetadataStorage.layout().uriSuffixLocked;\n }\n\n function lastLockedTokenId() external view returns (uint256) {\n return ERC1155MetadataStorage.layout().lastLockedTokenId;\n }\n}\n"},"src/token/ERC1155/facets/metadata/IERC1155Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\ninterface IERC1155Metadata {\n /**\n * @dev Returns the URI for token type `id`.\n *\n * If the `\\{id\\}` substring is present in the URI, it must be replaced by\n * clients with the actual token type ID.\n */\n function uri(uint256 id) external view returns (string memory);\n}\n"},"src/token/ERC1155/facets/metadata/IERC1155MetadataExtra.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\ninterface IERC1155MetadataExtra {\n function baseURI() external view returns (string memory);\n\n function fallbackURI() external view returns (string memory);\n\n function uriSuffix() external view returns (string memory);\n\n function baseURILocked() external view returns (bool);\n\n function fallbackURILocked() external view returns (bool);\n\n function uriSuffixLocked() external view returns (bool);\n\n function lastLockedTokenId() external view returns (uint256);\n\n function uriBatch(uint256[] calldata tokenIds) external view returns (string[] memory);\n}\n"},"src/access/roles/IAccessControl.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./IAccessControlEvents.sol\";\n\n/**\n * @dev External interface of AccessControl declared to support ERC165 detection.\n */\ninterface IAccessControl is IAccessControlEvents {\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) external view returns (bool);\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function grantRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function revokeRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been granted `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `account`.\n */\n function renounceRole(bytes32 role, address account) external;\n}\n"},"src/access/roles/IAccessControlEnumerable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./IAccessControl.sol\";\n\n/**\n * @dev External interface of AccessControlEnumerable declared to support ERC165 detection.\n */\ninterface IAccessControlEnumerable is IAccessControl {\n /**\n * @dev Returns one of the accounts that have `role`. `index` must be a\n * value between 0 and {getRoleMemberCount}, non-inclusive.\n *\n * Role bearers are not sorted in any particular way, and their ordering may\n * change at any point.\n *\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\n * you perform all queries on the same block. See the following\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\n * for more information.\n */\n function getRoleMember(bytes32 role, uint256 index)\n external\n view\n returns (address);\n\n /**\n * @dev Returns the number of accounts that have `role`. Can be used\n * together with {getRoleMember} to enumerate all bearers of a role.\n */\n function getRoleMemberCount(bytes32 role) external view returns (uint256);\n}\n"},"src/access/roles/AccessControlEnumerable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\";\n\nimport \"./IAccessControlEnumerable.sol\";\nimport \"./AccessControlEnumerableStorage.sol\";\nimport \"./AccessControl.sol\";\n\n/**\n * @dev Extension of {AccessControl} that allows enumerating the members of each role.\n */\nabstract contract AccessControlEnumerable is\n IAccessControlEnumerable,\n AccessControl\n{\n using EnumerableSet for EnumerableSet.AddressSet;\n using AccessControlEnumerableStorage for AccessControlEnumerableStorage.Layout;\n\n /**\n * @dev Returns one of the accounts that have `role`. `index` must be a\n * value between 0 and {getRoleMemberCount}, non-inclusive.\n *\n * Role bearers are not sorted in any particular way, and their ordering may\n * change at any point.\n *\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\n * you perform all queries on the same block. See the following\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\n * for more information.\n */\n function getRoleMember(bytes32 role, uint256 index)\n public\n view\n virtual\n override\n returns (address)\n {\n return\n AccessControlEnumerableStorage.layout().roleMembers[role].at(index);\n }\n\n /**\n * @dev Returns the number of accounts that have `role`. Can be used\n * together with {getRoleMember} to enumerate all bearers of a role.\n */\n function getRoleMemberCount(bytes32 role)\n public\n view\n virtual\n override\n returns (uint256)\n {\n return\n AccessControlEnumerableStorage.layout().roleMembers[role].length();\n }\n\n /**\n * @dev Overload {_grantRole} to track enumerable memberships\n */\n function _grantRole(bytes32 role, address account)\n internal\n virtual\n override\n {\n super._grantRole(role, account);\n AccessControlEnumerableStorage.layout().roleMembers[role].add(account);\n }\n\n /**\n * @dev Overload {_revokeRole} to track enumerable memberships\n */\n function _revokeRole(bytes32 role, address account)\n internal\n virtual\n override\n {\n super._revokeRole(role, account);\n AccessControlEnumerableStorage.layout().roleMembers[role].remove(\n account\n );\n }\n}\n"},"src/access/roles/AccessControlEnumerableStorage.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\";\n\nlibrary AccessControlEnumerableStorage {\n using EnumerableSet for EnumerableSet.AddressSet;\n\n struct Layout {\n mapping(bytes32 => EnumerableSet.AddressSet) roleMembers;\n }\n\n bytes32 internal constant STORAGE_SLOT = keccak256(\"openzeppelin.contracts.storage.AccessControlEnumerable\");\n\n function layout() internal pure returns (Layout storage l) {\n bytes32 slot = STORAGE_SLOT;\n assembly {\n l.slot := slot\n }\n }\n}\n"},"src/access/roles/AccessControl.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/utils/Context.sol\";\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\n\nimport \"./AccessControlInternal.sol\";\nimport \"./IAccessControl.sol\";\n\nabstract contract AccessControl is AccessControlInternal, IAccessControl {\n function grantRole(bytes32 role, address account)\n public\n virtual\n override\n onlyRole(_getRoleAdmin(role))\n {\n _grantRole(role, account);\n }\n\n function revokeRole(bytes32 role, address account)\n public\n virtual\n onlyRole(_getRoleAdmin(role))\n {\n _revokeRole(role, account);\n }\n\n function renounceRole(bytes32 role, address account)\n public\n virtual\n override\n {\n _renounceRole(role, account);\n }\n\n function getRoleAdmin(bytes32 role)\n public\n view\n virtual\n override\n returns (bytes32)\n {\n return _getRoleAdmin(role);\n }\n}\n"},"@openzeppelin/contracts/utils/structs/EnumerableSet.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/structs/EnumerableSet.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for managing\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n * types.\n *\n * Sets have the following properties:\n *\n * - Elements are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```\n * contract Example {\n * // Add the library methods\n * using EnumerableSet for EnumerableSet.AddressSet;\n *\n * // Declare a set state variable\n * EnumerableSet.AddressSet private mySet;\n * }\n * ```\n *\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n * and `uint256` (`UintSet`) are supported.\n *\n * [WARNING]\n * ====\n * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure unusable.\n * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\n *\n * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an array of EnumerableSet.\n * ====\n */\nlibrary EnumerableSet {\n // To implement this library for multiple types with as little code\n // repetition as possible, we write it in terms of a generic Set type with\n // bytes32 values.\n // The Set implementation uses private functions, and user-facing\n // implementations (such as AddressSet) are just wrappers around the\n // underlying Set.\n // This means that we can only create new EnumerableSets for types that fit\n // in bytes32.\n\n struct Set {\n // Storage of set values\n bytes32[] _values;\n // Position of the value in the `values` array, plus 1 because index 0\n // means a value is not in the set.\n mapping(bytes32 => uint256) _indexes;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function _add(Set storage set, bytes32 value) private returns (bool) {\n if (!_contains(set, value)) {\n set._values.push(value);\n // The value is stored at length-1, but we add 1 to all indexes\n // and use 0 as a sentinel value\n set._indexes[value] = set._values.length;\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function _remove(Set storage set, bytes32 value) private returns (bool) {\n // We read and store the value's index to prevent multiple reads from the same storage slot\n uint256 valueIndex = set._indexes[value];\n\n if (valueIndex != 0) {\n // Equivalent to contains(set, value)\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\n // the array, and then remove the last element (sometimes called as 'swap and pop').\n // This modifies the order of the array, as noted in {at}.\n\n uint256 toDeleteIndex = valueIndex - 1;\n uint256 lastIndex = set._values.length - 1;\n\n if (lastIndex != toDeleteIndex) {\n bytes32 lastValue = set._values[lastIndex];\n\n // Move the last value to the index where the value to delete is\n set._values[toDeleteIndex] = lastValue;\n // Update the index for the moved value\n set._indexes[lastValue] = valueIndex; // Replace lastValue's index to valueIndex\n }\n\n // Delete the slot where the moved value was stored\n set._values.pop();\n\n // Delete the index for the deleted slot\n delete set._indexes[value];\n\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function _contains(Set storage set, bytes32 value) private view returns (bool) {\n return set._indexes[value] != 0;\n }\n\n /**\n * @dev Returns the number of values on the set. O(1).\n */\n function _length(Set storage set) private view returns (uint256) {\n return set._values.length;\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function _at(Set storage set, uint256 index) private view returns (bytes32) {\n return set._values[index];\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function _values(Set storage set) private view returns (bytes32[] memory) {\n return set._values;\n }\n\n // Bytes32Set\n\n struct Bytes32Set {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n return _add(set._inner, value);\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n return _remove(set._inner, value);\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\n return _contains(set._inner, value);\n }\n\n /**\n * @dev Returns the number of values in the set. O(1).\n */\n function length(Bytes32Set storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\n return _at(set._inner, index);\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {\n return _values(set._inner);\n }\n\n // AddressSet\n\n struct AddressSet {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(AddressSet storage set, address value) internal returns (bool) {\n return _add(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(AddressSet storage set, address value) internal returns (bool) {\n return _remove(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(AddressSet storage set, address value) internal view returns (bool) {\n return _contains(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Returns the number of values in the set. O(1).\n */\n function length(AddressSet storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\n return address(uint160(uint256(_at(set._inner, index))));\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function values(AddressSet storage set) internal view returns (address[] memory) {\n bytes32[] memory store = _values(set._inner);\n address[] memory result;\n\n /// @solidity memory-safe-assembly\n assembly {\n result := store\n }\n\n return result;\n }\n\n // UintSet\n\n struct UintSet {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(UintSet storage set, uint256 value) internal returns (bool) {\n return _add(set._inner, bytes32(value));\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(UintSet storage set, uint256 value) internal returns (bool) {\n return _remove(set._inner, bytes32(value));\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(UintSet storage set, uint256 value) internal view returns (bool) {\n return _contains(set._inner, bytes32(value));\n }\n\n /**\n * @dev Returns the number of values on the set. O(1).\n */\n function length(UintSet storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(UintSet storage set, uint256 index) internal view returns (uint256) {\n return uint256(_at(set._inner, index));\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function values(UintSet storage set) internal view returns (uint256[] memory) {\n bytes32[] memory store = _values(set._inner);\n uint256[] memory result;\n\n /// @solidity memory-safe-assembly\n assembly {\n result := store\n }\n\n return result;\n }\n}\n"},"src/access/roles/AccessControlEnumerableERC2771.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/utils/Context.sol\";\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\n\nimport \"../../metatx/ERC2771ContextInternal.sol\";\nimport \"./AccessControlEnumerable.sol\";\n\nabstract contract AccessControlEnumerableERC2771 is\n ERC2771ContextInternal,\n AccessControlEnumerable\n{\n function _msgSender()\n internal\n view\n virtual\n override(Context, ERC2771ContextInternal)\n returns (address)\n {\n return ERC2771ContextInternal._msgSender();\n }\n\n function _msgData()\n internal\n view\n virtual\n override(Context, ERC2771ContextInternal)\n returns (bytes calldata)\n {\n return ERC2771ContextInternal._msgData();\n }\n}\n"},"src/access/roles/AccessControlERC2771.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"@openzeppelin/contracts/utils/Context.sol\";\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\n\nimport \"../../metatx/ERC2771ContextInternal.sol\";\nimport \"./AccessControl.sol\";\n\nabstract contract AccessControlERC2771 is\n ERC2771ContextInternal,\n AccessControl\n{\n function _msgSender()\n internal\n view\n virtual\n override(Context, ERC2771ContextInternal)\n returns (address)\n {\n return ERC2771ContextInternal._msgSender();\n }\n\n function _msgData()\n internal\n view\n virtual\n override(Context, ERC2771ContextInternal)\n returns (bytes calldata)\n {\n return ERC2771ContextInternal._msgData();\n }\n}\n"},"src/metatx/ERC2771ContextOwnable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../access/ownable/OwnableInternal.sol\";\nimport \"./ERC2771ContextStorage.sol\";\nimport \"./IERC2771ContextAdmin.sol\";\n\ncontract ERC2771ContextOwnable is IERC2771ContextAdmin, OwnableInternal {\n function setTrustedForwarder(address trustedForwarder) public onlyOwner {\n ERC2771ContextStorage.layout().trustedForwarder = trustedForwarder;\n }\n}\n"},"src/metatx/IERC2771ContextAdmin.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\ninterface IERC2771ContextAdmin {\n function setTrustedForwarder(address trustedForwarder) external;\n}\n"},"src/finance/sales/TieredSalesOwnable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./ITieredSalesAdmin.sol\";\nimport \"./TieredSalesInternal.sol\";\n\nimport \"../../access/ownable/OwnableInternal.sol\";\n\n/**\n * @title Tiered Sales - Admin - Ownable\n * @notice Allow contract owner to manage sale tiers.\n *\n * @custom:type eip-2535-facet\n * @custom:category NFTs\n * @custom:peer-dependencies eip165:0x79f33254\n * @custom:provides-interfaces 0xf8458dcd\n */\ncontract TieredSalesOwnable is ITieredSalesAdmin, OwnableInternal, TieredSalesInternal {\n function configureTiering(uint256 tierId, ITieredSalesInternal.Tier calldata tier) external override onlyOwner {\n super._configureTiering(tierId, tier);\n }\n\n function configureTiering(uint256[] calldata tierIds, ITieredSalesInternal.Tier[] calldata tiers)\n external\n override\n onlyOwner\n {\n super._configureTiering(tierIds, tiers);\n }\n}\n"},"src/finance/sales/ITieredSalesAdmin.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./ITieredSalesInternal.sol\";\n\ninterface ITieredSalesAdmin {\n function configureTiering(uint256, ITieredSalesInternal.Tier calldata)\n external;\n\n function configureTiering(\n uint256[] calldata,\n ITieredSalesInternal.Tier[] calldata\n ) external;\n}\n"},"src/finance/sales/TieredSalesERC2771.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"../../metatx/ERC2771ContextInternal.sol\";\nimport \"./TieredSales.sol\";\n\n/**\n * @title Tiered Sales facet with meta-transactions support via ERC2771\n */\nabstract contract TieredSalesERC2771 is TieredSales, ERC2771ContextInternal {\n function _msgSender() internal view override(Context, ERC2771ContextInternal) returns (address) {\n return ERC2771ContextInternal._msgSender();\n }\n\n function _msgData() internal view override(Context, ERC2771ContextInternal) returns (bytes calldata) {\n return ERC2771ContextInternal._msgData();\n }\n}\n"},"src/access/ownable/Ownable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./IERC173.sol\";\nimport \"./OwnableInternal.sol\";\n\n/**\n * @title Ownership access control based on ERC173\n */\ncontract Ownable is IERC173, OwnableInternal {\n /**\n * @inheritdoc IERC173\n */\n function owner() public view virtual returns (address) {\n return _owner();\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions anymore. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby removing any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @inheritdoc IERC173\n */\n function transferOwnership(address account) public virtual onlyOwner {\n _transferOwnership(account);\n }\n}\n"},"src/access/ownable/OwnableERC2771.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.15;\n\nimport \"./Ownable.sol\";\nimport \"../../metatx/ERC2771ContextInternal.sol\";\n\n/**\n * @title Ownable extension with meta-transactions support via ERC2771\n */\nabstract contract OwnableERC2771 is Ownable, ERC2771ContextInternal {\n function _msgSender() internal view virtual override(Context, ERC2771ContextInternal) returns (address) {\n return ERC2771ContextInternal._msgSender();\n }\n\n function _msgData() internal view virtual override(Context, ERC2771ContextInternal) returns (bytes calldata) {\n return ERC2771ContextInternal._msgData();\n }\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":1337},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","devdoc","userdoc","storageLayout","evm.gasEstimates"],"":["ast"]}},"metadata":{"useLiteralContent":true}}}}} diff --git a/packages/registry/src/facets.json b/packages/registry/src/facets.json index 24ece0863..21711c8c8 100644 --- a/packages/registry/src/facets.json +++ b/packages/registry/src/facets.json @@ -1 +1 @@ -{"v2":{"diamond/DiamondCut":{"category":"Diamonds","title":"Diamond - Cut","notice":"Standard EIP-2535 cut functionality to add, replace and remove facets from a diamond.","repo":"github.com/flair-sdk/contracts","ref":"main","fqn":"diamond/DiamondCut","version":"2.2.0","addresses":{"3":"0x2ccF63FE5613d729E4bc7edAb240aba09B2A703b","4":"0x34d0fd8aA560340707B364c03D1CC4F70c132Da3","rinkeby":"0x34d0fd8aA560340707B364c03D1CC4F70c132Da3","ropsten":"0x2ccF63FE5613d729E4bc7edAb240aba09B2A703b"},"functionSelectors":["diamondCut((address,uint8,bytes4[])[],address,bytes)"],"providesInterfaces":["0x1f931c1c"],"peerDependencies":[],"requiredDependencies":[]},"diamond/DiamondLoupe":{"category":"Diamonds","title":"Diamond - Loupe","notice":"Standard EIP-2535 loupe functions to allow inspecting a diamond for explorers.","repo":"github.com/flair-sdk/contracts","ref":"main","fqn":"diamond/DiamondLoupe","version":"2.2.0","addresses":{"3":"0x9d938a88094296ff207966671bBCAF14Bf28286f","4":"0x702355611a2d7F54275f9d6660082F2A72Ba5DF6","rinkeby":"0x702355611a2d7F54275f9d6660082F2A72Ba5DF6","ropsten":"0x9d938a88094296ff207966671bBCAF14Bf28286f"},"functionSelectors":["facetAddress(bytes4)","facetAddresses()","facetFunctionSelectors(address)","facets()"],"providesInterfaces":["0x48e2b093"],"peerDependencies":[],"requiredDependencies":[]},"token/ERC1155/ERC1155":{"category":"NFTs","title":"ERC1155 - Standard","notice":"Standard EIP-1155 NFTs with core capabilities of Mintable, Burnable and Lockable.","repo":"github.com/flair-sdk/contracts","ref":"main","fqn":"token/ERC1155/ERC1155","version":"2.2.0","addresses":{"3":"0x1FAaCD621bd3B14F3494Be13c7Cf85334EC3F492","4":"0x724C344e5a9e01997D542F99ef0D2f7B419819de","rinkeby":"0x724C344e5a9e01997D542F99ef0D2f7B419819de","ropsten":"0x1FAaCD621bd3B14F3494Be13c7Cf85334EC3F492"},"functionSelectors":["balanceOf(address,uint256)","balanceOfBatch(address[],uint256[])","burn(address,uint256,uint256)","burnBatch(address,uint256[],uint256[])","burnBatchByFacet(address,uint256[],uint256[])","burnByFacet(address,uint256,uint256)","burnablePausedUntil()","exists(uint256)","isApprovedForAll(address,address)","lockByFacet(address,uint256,uint256)","locked(address,uint256)","locked(address,uint256[])","maxSupply(uint256)","mintByFacet(address,uint256,uint256,bytes)","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)","safeTransferFrom(address,address,uint256,uint256,bytes)","setApprovalForAll(address,bool)","totalSupply(uint256)","unlockByFacet(address,uint256,uint256)"],"providesInterfaces":["0xd9b67a26","0x744f4bd4","0xdc290004","0xff3508c6","0xb164884b"],"peerDependencies":[],"requiredDependencies":[]},"token/ERC1155/facets/burnable/ERC1155BurnableOwnable":{"category":"NFTs","title":"ERC1155 - Burnable - Admin - Ownable","notice":"Extension of ERC1155 to allow owner to manage burning mechanism.","repo":"github.com/flair-sdk/contracts","ref":"main","fqn":"token/ERC1155/facets/burnable/ERC1155BurnableOwnable","version":"2.2.0","addresses":{"3":"0x48F9152b91103E158029921C59Ff844d30468288","4":"0x784F5AE3d12E03112564b0318c60653EB84FA4Cf","rinkeby":"0x784F5AE3d12E03112564b0318c60653EB84FA4Cf","ropsten":"0x48F9152b91103E158029921C59Ff844d30468288"},"functionSelectors":["setBurnablePausedUntil(uint256)"],"providesInterfaces":["0x710fb577"],"peerDependencies":["0xdc290004"],"requiredDependencies":[]},"token/ERC1155/facets/metadata/ERC1155Metadata":{"category":"NFTs","title":"ERC1155 - Metadata","notice":"Provides metadata for ERC1155 tokens according to standard. This extension supports base URI, per-token URI, and a fallback URI. You can also freeze URIs until a certain token ID.","repo":"github.com/flair-sdk/contracts","ref":"main","fqn":"token/ERC1155/facets/metadata/ERC1155Metadata","version":"2.2.0","addresses":{"3":"0x6d018457d731E1EFA8700a454a52e46c2Ce1451e","4":"0x877546CE36fC055d2506aCe87838FD22eED420Be","rinkeby":"0x877546CE36fC055d2506aCe87838FD22eED420Be","ropsten":"0x6d018457d731E1EFA8700a454a52e46c2Ce1451e"},"functionSelectors":["baseURI()","baseURILocked()","fallbackURI()","fallbackURILocked()","lastLockedTokenId()","uri(uint256)","uriBatch(uint256[])"],"providesInterfaces":["0x0e89341c","0xc6575680"],"peerDependencies":["0xd9b67a26"],"requiredDependencies":[]},"token/ERC1155/facets/metadata/ERC1155MetadataOwnable":{"category":"NFTs","title":"ERC1155 - Metadata - Admin - Ownable","notice":"Allows diamond owner to change base, per-token, and fallback URIs, as wel as freezing URIs.","repo":"github.com/flair-sdk/contracts","ref":"main","fqn":"token/ERC1155/facets/metadata/ERC1155MetadataOwnable","version":"2.2.0","addresses":{"3":"0xE949eBA5548cCAfc29612a41916DcAE6a56ed877","4":"0x7b151958c3Fc4261fF3AD87c614163dAB22e7B6B","rinkeby":"0x7b151958c3Fc4261fF3AD87c614163dAB22e7B6B","ropsten":"0xE949eBA5548cCAfc29612a41916DcAE6a56ed877"},"functionSelectors":["lockBaseURI()","lockFallbackURI()","lockURIUntil(uint256)","setBaseURI(string)","setFallbackURI(string)","setURI(uint256,string)","setURIBatch(uint256[],string[])"],"providesInterfaces":["0x0dfe03d4"],"peerDependencies":["0x0e89341c"],"requiredDependencies":[]},"token/ERC1155/facets/supply/ERC1155SupplyOwnable":{"category":"NFTs","title":"ERC1155 - Supply - Admin - Ownable","notice":"Allows owner of a EIP-1155 contract to change max supply of token IDs.","repo":"github.com/flair-sdk/contracts","ref":"main","fqn":"token/ERC1155/facets/supply/ERC1155SupplyOwnable","version":"2.2.0","addresses":{"3":"0xD01F2668247FC1c7334591457dc1a8e3C6a5a8E4","4":"0x5ca0011fF1695bd67DB02F4fAEA7328Aa9CF5589","rinkeby":"0x5ca0011fF1695bd67DB02F4fAEA7328Aa9CF5589","ropsten":"0xD01F2668247FC1c7334591457dc1a8e3C6a5a8E4"},"functionSelectors":["setMaxSupply(uint256,uint256)","setMaxSupplyBatch(uint256[],uint256[])"],"providesInterfaces":["0x5b2cf486"],"peerDependencies":["0xd9b67a26","0x744f4bd4"],"requiredDependencies":[]},"token/ERC1155/facets/sales/ERC1155TieredSales":{"category":"NFTs","title":"ERC1155 - Tiered Sales","notice":"Sales mechanism for ERC1155 NFTs with multiple tiered pricing, allowlist and allocation plans.","repo":"github.com/flair-sdk/contracts","ref":"main","fqn":"token/ERC1155/facets/sales/ERC1155TieredSales","version":"2.2.0","addresses":{"3":"0x355d2D09CF839D2CBBcdDf29198Fb3460ef0A3F5","4":"0x21c5968a500c87E1116fBf034E131795498d8cBf","rinkeby":"0x21c5968a500c87E1116fBf034E131795498d8cBf","ropsten":"0x355d2D09CF839D2CBBcdDf29198Fb3460ef0A3F5"},"functionSelectors":["eligibleForTier(uint256,address,uint256,bytes32[])","mintByTier(uint256,uint256,uint256,bytes32[])","onTierAllowlist(uint256,address,uint256,bytes32[])","remainingForTier(uint256)","reservedMints()","tierMints(uint256)","tierToTokenId(uint256)","tierToTokenId(uint256[])","tiers(uint256)","totalReserved()","walletMintedByTier(uint256,address)"],"providesInterfaces":["0x79f33254","0x5ae18a74"],"peerDependencies":[],"requiredDependencies":["0xb164884b"]},"token/ERC1155/facets/sales/ERC1155TieredSalesOwnable":{"category":"NFTs","title":"ERC1155 - Tiered Sales - Admin - Ownable","notice":"Used to manage which ERC1155 token is related to which the sales tier.","repo":"github.com/flair-sdk/contracts","ref":"main","fqn":"token/ERC1155/facets/sales/ERC1155TieredSalesOwnable","version":"2.2.0","addresses":{"3":"0x73fb9dDfA54EC7d0fecC22c88B8e9E98a2C1bF78","4":"0xD6C73dc3D628BC2f7d422350cEaB79C5f7e878F7","rinkeby":"0xD6C73dc3D628BC2f7d422350cEaB79C5f7e878F7","ropsten":"0x73fb9dDfA54EC7d0fecC22c88B8e9E98a2C1bF78"},"functionSelectors":["configureTierTokenId(uint256,uint256)","configureTierTokenId(uint256[],uint256[])"],"providesInterfaces":["0x76c5dd21"],"peerDependencies":["0x79f33254"],"requiredDependencies":[]},"introspection/ERC165Ownable":{"category":"Diamonds","title":"ERC165 - Admin - Ownable","notice":"Standard EIP-165 management facet using Ownable extension for access control.","repo":"github.com/flair-sdk/contracts","ref":"main","fqn":"introspection/ERC165Ownable","version":"2.2.0","addresses":{"3":"0xE07116Ab6e1599eF4991986D68E0377d705Ab455","4":"0xdd13cD39976d4Ae6c7Bb6F0333bB68Abcd0b8f88","rinkeby":"0xdd13cD39976d4Ae6c7Bb6F0333bB68Abcd0b8f88","ropsten":"0xE07116Ab6e1599eF4991986D68E0377d705Ab455"},"functionSelectors":["setERC165(bytes4[],bytes4[])"],"providesInterfaces":["0x2a848091"],"peerDependencies":[],"requiredDependencies":[]},"finance/sales/TieredSalesOwnable":{"category":"NFTs","title":"Tiered Sales - Admin - Ownable","notice":"Allow contract owner to manage sale tiers.","repo":"github.com/flair-sdk/contracts","ref":"main","fqn":"finance/sales/TieredSalesOwnable","version":"2.2.0","addresses":{"3":"0xe61cc06a7435EC72507c028a577BbAD42E67eAc1","4":"0x80b613989a974AD6877b163eE2fa59535d462F47","rinkeby":"0x80b613989a974AD6877b163eE2fa59535d462F47","ropsten":"0xe61cc06a7435EC72507c028a577BbAD42E67eAc1"},"functionSelectors":["configureTiering(uint256,(uint256,uint256,address,uint256,uint256,bytes32,uint256,uint256))","configureTiering(uint256[],(uint256,uint256,address,uint256,uint256,bytes32,uint256,uint256)[])"],"providesInterfaces":["0xf8458dcd"],"peerDependencies":["0x79f33254"],"requiredDependencies":[]}}} +{"v2":{"diamond/DiamondCut":{"category":"Diamonds","title":"Diamond - Cut","notice":"Standard EIP-2535 cut functionality to add, replace and remove facets from a diamond.","repo":"github.com/flair-sdk/contracts","ref":"main","fqn":"diamond/DiamondCut","version":"2.3.0","addresses":{"3":"0x2ccF63FE5613d729E4bc7edAb240aba09B2A703b","4":"0x34d0fd8aA560340707B364c03D1CC4F70c132Da3","rinkeby":"0x34d0fd8aA560340707B364c03D1CC4F70c132Da3","ropsten":"0x2ccF63FE5613d729E4bc7edAb240aba09B2A703b"},"functionSelectors":["diamondCut((address,uint8,bytes4[])[],address,bytes)"],"providesInterfaces":["0x1f931c1c"],"peerDependencies":[],"requiredDependencies":[]},"diamond/DiamondLoupe":{"category":"Diamonds","title":"Diamond - Loupe","notice":"Standard EIP-2535 loupe functions to allow inspecting a diamond for explorers.","repo":"github.com/flair-sdk/contracts","ref":"main","fqn":"diamond/DiamondLoupe","version":"2.3.0","addresses":{"3":"0x9d938a88094296ff207966671bBCAF14Bf28286f","4":"0x702355611a2d7F54275f9d6660082F2A72Ba5DF6","rinkeby":"0x702355611a2d7F54275f9d6660082F2A72Ba5DF6","ropsten":"0x9d938a88094296ff207966671bBCAF14Bf28286f"},"functionSelectors":["facetAddress(bytes4)","facetAddresses()","facetFunctionSelectors(address)","facets()"],"providesInterfaces":["0x48e2b093"],"peerDependencies":[],"requiredDependencies":[]},"token/ERC1155/ERC1155":{"category":"NFTs","title":"ERC1155 - Standard","notice":"Standard EIP-1155 NFTs with core capabilities of Mintable, Burnable and Lockable.","repo":"github.com/flair-sdk/contracts","ref":"main","fqn":"token/ERC1155/ERC1155","version":"2.3.0","addresses":{"3":"0x1FAaCD621bd3B14F3494Be13c7Cf85334EC3F492","4":"0x724C344e5a9e01997D542F99ef0D2f7B419819de","rinkeby":"0x724C344e5a9e01997D542F99ef0D2f7B419819de","ropsten":"0x1FAaCD621bd3B14F3494Be13c7Cf85334EC3F492"},"functionSelectors":["balanceOf(address,uint256)","balanceOfBatch(address[],uint256[])","burn(address,uint256,uint256)","burnBatch(address,uint256[],uint256[])","burnBatchByFacet(address,uint256[],uint256[])","burnByFacet(address,uint256,uint256)","burnablePausedUntil()","exists(uint256)","isApprovedForAll(address,address)","lockByFacet(address,uint256,uint256)","locked(address,uint256)","locked(address,uint256[])","maxSupply(uint256)","mintByFacet(address,uint256,uint256,bytes)","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)","safeTransferFrom(address,address,uint256,uint256,bytes)","setApprovalForAll(address,bool)","totalSupply(uint256)","unlockByFacet(address,uint256,uint256)"],"providesInterfaces":["0xd9b67a26","0x744f4bd4","0xdc290004","0xff3508c6","0xb164884b"],"peerDependencies":[],"requiredDependencies":[]},"token/ERC1155/facets/burnable/ERC1155BurnableOwnable":{"category":"NFTs","title":"ERC1155 - Burnable - Admin - Ownable","notice":"Extension of ERC1155 to allow owner to manage burning mechanism.","repo":"github.com/flair-sdk/contracts","ref":"main","fqn":"token/ERC1155/facets/burnable/ERC1155BurnableOwnable","version":"2.3.0","addresses":{"3":"0x48F9152b91103E158029921C59Ff844d30468288","4":"0x784F5AE3d12E03112564b0318c60653EB84FA4Cf","rinkeby":"0x784F5AE3d12E03112564b0318c60653EB84FA4Cf","ropsten":"0x48F9152b91103E158029921C59Ff844d30468288"},"functionSelectors":["setBurnablePausedUntil(uint256)"],"providesInterfaces":["0x710fb577"],"peerDependencies":["0xdc290004"],"requiredDependencies":[]},"token/ERC1155/facets/metadata/ERC1155Metadata":{"category":"NFTs","title":"ERC1155 - Metadata","notice":"Provides metadata for ERC1155 tokens according to standard. This extension supports base URI, per-token URI, and a fallback URI. You can also freeze URIs until a certain token ID.","repo":"github.com/flair-sdk/contracts","ref":"main","fqn":"token/ERC1155/facets/metadata/ERC1155Metadata","version":"2.3.0","addresses":{"3":"0x9d9Ec7d191a11F38d3941A2A8d656584aF01748e","4":"0x877546CE36fC055d2506aCe87838FD22eED420Be","rinkeby":"0x877546CE36fC055d2506aCe87838FD22eED420Be","ropsten":"0x9d9Ec7d191a11F38d3941A2A8d656584aF01748e"},"functionSelectors":["baseURI()","baseURILocked()","fallbackURI()","fallbackURILocked()","lastLockedTokenId()","uri(uint256)","uriBatch(uint256[])","uriSuffix()","uriSuffixLocked()"],"providesInterfaces":["0x0e89341c","0x57bbc86d"],"peerDependencies":["0xd9b67a26"],"requiredDependencies":[]},"token/ERC1155/facets/metadata/ERC1155MetadataOwnable":{"category":"NFTs","title":"ERC1155 - Metadata - Admin - Ownable","notice":"Allows diamond owner to change base, per-token, and fallback URIs, as wel as freezing URIs.","repo":"github.com/flair-sdk/contracts","ref":"main","fqn":"token/ERC1155/facets/metadata/ERC1155MetadataOwnable","version":"2.3.0","addresses":{"3":"0xE9fCC8544F378332CAF85A9AbBd1d24872feAd54","4":"0x7b151958c3Fc4261fF3AD87c614163dAB22e7B6B","rinkeby":"0x7b151958c3Fc4261fF3AD87c614163dAB22e7B6B","ropsten":"0xE9fCC8544F378332CAF85A9AbBd1d24872feAd54"},"functionSelectors":["lockBaseURI()","lockFallbackURI()","lockURISuffix()","lockURIUntil(uint256)","setBaseURI(string)","setFallbackURI(string)","setURI(uint256,string)","setURIBatch(uint256[],string[])","setURISuffix(string)"],"providesInterfaces":["0x3f963a7f"],"peerDependencies":["0x0e89341c"],"requiredDependencies":[]},"token/ERC1155/facets/supply/ERC1155SupplyOwnable":{"category":"NFTs","title":"ERC1155 - Supply - Admin - Ownable","notice":"Allows owner of a EIP-1155 contract to change max supply of token IDs.","repo":"github.com/flair-sdk/contracts","ref":"main","fqn":"token/ERC1155/facets/supply/ERC1155SupplyOwnable","version":"2.3.0","addresses":{"3":"0xD01F2668247FC1c7334591457dc1a8e3C6a5a8E4","4":"0x5ca0011fF1695bd67DB02F4fAEA7328Aa9CF5589","rinkeby":"0x5ca0011fF1695bd67DB02F4fAEA7328Aa9CF5589","ropsten":"0xD01F2668247FC1c7334591457dc1a8e3C6a5a8E4"},"functionSelectors":["setMaxSupply(uint256,uint256)","setMaxSupplyBatch(uint256[],uint256[])"],"providesInterfaces":["0x5b2cf486"],"peerDependencies":["0xd9b67a26","0x744f4bd4"],"requiredDependencies":[]},"token/ERC1155/facets/sales/ERC1155TieredSales":{"category":"NFTs","title":"ERC1155 - Tiered Sales","notice":"Sales mechanism for ERC1155 NFTs with multiple tiered pricing, allowlist and allocation plans.","repo":"github.com/flair-sdk/contracts","ref":"main","fqn":"token/ERC1155/facets/sales/ERC1155TieredSales","version":"2.3.0","addresses":{"3":"0x355d2D09CF839D2CBBcdDf29198Fb3460ef0A3F5","4":"0x21c5968a500c87E1116fBf034E131795498d8cBf","rinkeby":"0x21c5968a500c87E1116fBf034E131795498d8cBf","ropsten":"0x355d2D09CF839D2CBBcdDf29198Fb3460ef0A3F5"},"functionSelectors":["eligibleForTier(uint256,address,uint256,bytes32[])","mintByTier(uint256,uint256,uint256,bytes32[])","onTierAllowlist(uint256,address,uint256,bytes32[])","remainingForTier(uint256)","reservedMints()","tierMints(uint256)","tierToTokenId(uint256)","tierToTokenId(uint256[])","tiers(uint256)","totalReserved()","walletMintedByTier(uint256,address)"],"providesInterfaces":["0x79f33254","0x5ae18a74"],"peerDependencies":[],"requiredDependencies":["0xb164884b"]},"token/ERC1155/facets/sales/ERC1155TieredSalesOwnable":{"category":"NFTs","title":"ERC1155 - Tiered Sales - Admin - Ownable","notice":"Used to manage which ERC1155 token is related to which the sales tier.","repo":"github.com/flair-sdk/contracts","ref":"main","fqn":"token/ERC1155/facets/sales/ERC1155TieredSalesOwnable","version":"2.3.0","addresses":{"3":"0x73fb9dDfA54EC7d0fecC22c88B8e9E98a2C1bF78","4":"0xD6C73dc3D628BC2f7d422350cEaB79C5f7e878F7","rinkeby":"0xD6C73dc3D628BC2f7d422350cEaB79C5f7e878F7","ropsten":"0x73fb9dDfA54EC7d0fecC22c88B8e9E98a2C1bF78"},"functionSelectors":["configureTierTokenId(uint256,uint256)","configureTierTokenId(uint256[],uint256[])"],"providesInterfaces":["0x76c5dd21"],"peerDependencies":["0x79f33254"],"requiredDependencies":[]},"introspection/ERC165Ownable":{"category":"Diamonds","title":"ERC165 - Admin - Ownable","notice":"Standard EIP-165 management facet using Ownable extension for access control.","repo":"github.com/flair-sdk/contracts","ref":"main","fqn":"introspection/ERC165Ownable","version":"2.3.0","addresses":{"3":"0xE07116Ab6e1599eF4991986D68E0377d705Ab455","4":"0xdd13cD39976d4Ae6c7Bb6F0333bB68Abcd0b8f88","rinkeby":"0xdd13cD39976d4Ae6c7Bb6F0333bB68Abcd0b8f88","ropsten":"0xE07116Ab6e1599eF4991986D68E0377d705Ab455"},"functionSelectors":["setERC165(bytes4[],bytes4[])"],"providesInterfaces":["0x2a848091"],"peerDependencies":[],"requiredDependencies":[]},"finance/sales/TieredSalesOwnable":{"category":"NFTs","title":"Tiered Sales - Admin - Ownable","notice":"Allow contract owner to manage sale tiers.","repo":"github.com/flair-sdk/contracts","ref":"main","fqn":"finance/sales/TieredSalesOwnable","version":"2.3.0","addresses":{"3":"0xe61cc06a7435EC72507c028a577BbAD42E67eAc1","4":"0x80b613989a974AD6877b163eE2fa59535d462F47","rinkeby":"0x80b613989a974AD6877b163eE2fa59535d462F47","ropsten":"0xe61cc06a7435EC72507c028a577BbAD42E67eAc1"},"functionSelectors":["configureTiering(uint256,(uint256,uint256,address,uint256,uint256,bytes32,uint256,uint256))","configureTiering(uint256[],(uint256,uint256,address,uint256,uint256,bytes32,uint256,uint256)[])"],"providesInterfaces":["0xf8458dcd"],"peerDependencies":["0x79f33254"],"requiredDependencies":[]}}} diff --git a/packages/registry/src/registry-mapping.json b/packages/registry/src/registry-mapping.json index cfd7b3c7d..899b6a66a 100644 --- a/packages/registry/src/registry-mapping.json +++ b/packages/registry/src/registry-mapping.json @@ -1 +1 @@ -{"v1":{"collections/ERC721/extensions/ERC721AutoIdMinterExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721AutoIdMinterExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721AutoIdMinterExtension.sol","abi":[{"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":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/ERC721BulkifyExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721BulkifyExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721BulkifyExtension.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"transferFromBulk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"from","type":"address[]"},{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"transferFromBulk","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/ERC721CollectionMetadataExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721CollectionMetadataExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721CollectionMetadataExtension.sol","abi":[{"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":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/ERC721FreeMintExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721FreeMintExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721FreeMintExtension.sol","abi":[{"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":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintFree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/ERC721LockableExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721LockableExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721LockableExtension.sol","abi":[{"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":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"filterUnlocked","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"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":"tokenIds","type":"uint256[]"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"locked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/ERC721OneOfOneMintExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721OneOfOneMintExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721OneOfOneMintExtension.sol","abi":[{"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":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastFrozenTokenId","type":"uint256"}],"name":"freezeTokenURIs","outputs":[],"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":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastFrozenTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"string[]","name":"tokenURIs","type":"string[]"}],"name":"mintWithTokenURIsByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"string[]","name":"tokenURIs","type":"string[]"}],"name":"mintWithTokenURIsByRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"tokenURI","type":"string"}],"name":"setTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/ERC721OwnerManagedExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721OwnerManagedExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721OwnerManagedExtension.sol","abi":[{"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":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"managementPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeManagementPower","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/ERC721OwnerMintExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721OwnerMintExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721OwnerMintExtension.sol","abi":[{"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":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/ERC721PerTokenMetadataExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721PerTokenMetadataExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721PerTokenMetadataExtension.sol","abi":[{"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":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":"_lastFrozenTokenId","type":"uint256"}],"name":"freezeTokenURIs","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastFrozenTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"tokenURI","type":"string"}],"name":"setTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/ERC721PrefixedMetadataExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721PrefixedMetadataExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721PrefixedMetadataExtension.sol","abi":[{"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":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"freezeTokenURI","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"placeholderURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"string","name":"newValue","type":"string"}],"name":"setPlaceholderURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURIPrefix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURISuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIPrefix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURISuffix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/ERC721PreSaleExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721PreSaleExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721PreSaleExtension.sol","abi":[{"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":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintPreSale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onPreSaleAllowList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","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":[],"name":"preSaleAllowlistMerkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleMaxMintPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSalePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"bytes32","name":"newRoot","type":"bytes32"}],"name":"setAllowlistMerkleRoot","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPreSaleMaxMintPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPreSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"isActive","type":"bool"}],"name":"togglePreSaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/ERC721PublicSaleExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721PublicSaleExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721PublicSaleExtension.sol","abi":[{"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":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintPublicSale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleMaxMintPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSalePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPublicSaleMaxMintPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPublicSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"isActive","type":"bool"}],"name":"togglePublicSaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/ERC721RoleBasedLockableExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721RoleBasedLockableExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721RoleBasedLockableExtension.sol","abi":[{"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":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LOCKER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"filterUnlocked","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasRoleBasedLockableExtension","outputs":[{"internalType":"bool","name":"","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":"tokenIds","type":"uint256[]"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"locked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/ERC721RoleBasedMintExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721RoleBasedMintExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721RoleBasedMintExtension.sol","abi":[{"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":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/ERC721RoyaltyExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721RoyaltyExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721RoyaltyExtension.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"DefaultRoyaltySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"TokenRoyaltyRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"TokenRoyaltySet","type":"event"},{"inputs":[],"name":"defaultRoyalty","outputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getRaribleV2Royalties","outputs":[{"components":[{"internalType":"address payable","name":"account","type":"address"},{"internalType":"uint96","name":"value","type":"uint96"}],"internalType":"struct LibPart.Part[]","name":"result","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenRoyaltiesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getTokenRoyaltyByIndex","outputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyalty","name":"royalty","type":"tuple"}],"name":"setDefaultRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig[]","name":"royaltyConfigs","type":"tuple[]"}],"name":"setTokenRoyalties","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/ERC721TieringExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721TieringExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721TieringExtension.sol","abi":[{"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":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":"tierId","type":"uint256"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct IERC721TieringExtension.Tier","name":"tier","type":"tuple"}],"name":"configureTiering","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tierIds","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct IERC721TieringExtension.Tier[]","name":"_tiers","type":"tuple[]"}],"name":"configureTiering","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"eligibleForTier","outputs":[{"internalType":"uint256","name":"maxMintable","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintByTier","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onTierAllowlist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","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":"tierId","type":"uint256"}],"name":"remainingForTier","outputs":[{"internalType":"uint256","name":"tierRemaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reservedMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tierMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tiers","outputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReserved","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"walletMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"name":"walletMintedByTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721AutoIdMinterExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721AutoIdMinterExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721AutoIdMinterExtension.sol","abi":[{"inputs":[],"name":"freezeMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721BulkifyExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721BulkifyExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721BulkifyExtension.sol","abi":[{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"transferFromBulk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"from","type":"address[]"},{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"transferFromBulk","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721CollectionMetadataExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721CollectionMetadataExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721CollectionMetadataExtension.sol","abi":[{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721FreeMintExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721FreeMintExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721FreeMintExtension.sol","abi":[{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintFree","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721LockableExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721LockableExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721LockableExtension.sol","abi":[{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"locked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721OneOfOneMintExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721OneOfOneMintExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721OneOfOneMintExtension.sol","abi":[{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"string[]","name":"tokenURIs","type":"string[]"}],"name":"mintWithTokenURIsByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"string[]","name":"tokenURIs","type":"string[]"}],"name":"mintWithTokenURIsByRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721OwnerManagedExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721OwnerManagedExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721OwnerManagedExtension.sol","abi":[{"inputs":[],"name":"revokeManagementPower","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721OwnerMintExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721OwnerMintExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721OwnerMintExtension.sol","abi":[{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721PerTokenMetadataExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721PerTokenMetadataExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721PerTokenMetadataExtension.sol","abi":[{"inputs":[{"internalType":"uint256","name":"_lastFrozenTokenId","type":"uint256"}],"name":"freezeTokenURIs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"tokenURI","type":"string"}],"name":"setTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721PrefixedMetadataExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721PrefixedMetadataExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721PrefixedMetadataExtension.sol","abi":[{"inputs":[],"name":"freezeTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"placeholderURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setPlaceholderURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURIPrefix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURISuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIPrefix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURISuffix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721PreSaleExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721PreSaleExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721PreSaleExtension.sol","abi":[{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintPreSale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onPreSaleAllowList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"newRoot","type":"bytes32"}],"name":"setAllowlistMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPreSaleMaxMintPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPreSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isActive","type":"bool"}],"name":"togglePreSaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721PublicSaleExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721PublicSaleExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721PublicSaleExtension.sol","abi":[{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintPublicSale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPublicSaleMaxMintPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPublicSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isActive","type":"bool"}],"name":"togglePublicSaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721RoleBasedLockableExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721RoleBasedLockableExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721RoleBasedLockableExtension.sol","abi":[{"inputs":[],"name":"hasRoleBasedLockableExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721RoleBasedMintExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721RoleBasedMintExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721RoleBasedMintExtension.sol","abi":[{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721RoyaltyExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721RoyaltyExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721RoyaltyExtension.sol","abi":[{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getRaribleV2Royalties","outputs":[{"components":[{"internalType":"address payable","name":"account","type":"address"},{"internalType":"uint96","name":"value","type":"uint96"}],"internalType":"struct LibPart.Part[]","name":"result","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyalty","name":"royalty","type":"tuple"}],"name":"setDefaultRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig[]","name":"royaltyConfigs","type":"tuple[]"}],"name":"setTokenRoyalties","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721TieringExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721TieringExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721TieringExtension.sol","abi":[{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"eligibleForTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintByTier","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onTierAllowlist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/presets/ERC721ManagedPrefixedCollection":{"address":{"1":"0x2f6ccd01759b3DB70e15f29fa647873Ed6bD42E3","3":"0xC226F6dFcEb1b2Ae174820de51d077275ceE0E14","4":"0xC5dA76FA5e66Fb9b0e77a9Cb29BA02210D2034bF","5":"0xE949eBA5548cCAfc29612a41916DcAE6a56ed877","25":"0xAd450761261B1C70C7583ff500D291E1A07EE495","56":"0xa79B21B345846224b307212FB7278b2e74Ea3295","66":"0xeeFF78D0184C338E5379F7B16EFbc9Ba3Ae0B42E","97":"0x7Ac4a0cE09D67f1C6Dc25138AdacF8D2195A363F","137":"0x6C2d2c8472Df1522050a71fa0f5868cb00601dbB","250":"0x0e6223dEfF249b5E2Ff966f2f24CE87de1229Df5","280":"0x38a67Eddf0fcdC223a961B5aB96DB0B1C75F262b","4002":"0x0e6223dEfF249b5E2Ff966f2f24CE87de1229Df5","9000":"0x437f9E3A2EF9089Bf3C8A89599b40f62fA2Bb3F9","42161":"0x2759c16F06B07D3Aaea777223068295A0938fe69","43113":"0x933d6a003a024dB27926Ca44bF717658813BA570","43114":"0xC97b52877Aa14987198eA8cABaa678B566baadF1","421611":"0x644962F716f6D75E026Bd9B3b42582C3D1346c4A","arbitrumOne":"0x2759c16F06B07D3Aaea777223068295A0938fe69","arbitrumTestnet":"0x644962F716f6D75E026Bd9B3b42582C3D1346c4A","avalanche":"0xC97b52877Aa14987198eA8cABaa678B566baadF1","avalancheFujiTestnet":"0x933d6a003a024dB27926Ca44bF717658813BA570","bsc":"0xa79B21B345846224b307212FB7278b2e74Ea3295","bscTestnet":"0x7Ac4a0cE09D67f1C6Dc25138AdacF8D2195A363F","cronos":"0xAd450761261B1C70C7583ff500D291E1A07EE495","evmosTestnet":"0x437f9E3A2EF9089Bf3C8A89599b40f62fA2Bb3F9","ftmTestnet":"0x0e6223dEfF249b5E2Ff966f2f24CE87de1229Df5","goerli":"0xE949eBA5548cCAfc29612a41916DcAE6a56ed877","mainnet":"0x2f6ccd01759b3DB70e15f29fa647873Ed6bD42E3","okcMainnet":"0xeeFF78D0184C338E5379F7B16EFbc9Ba3Ae0B42E","opera":"0x0e6223dEfF249b5E2Ff966f2f24CE87de1229Df5","polygon":"0x6C2d2c8472Df1522050a71fa0f5868cb00601dbB","rinkeby":"0xC5dA76FA5e66Fb9b0e77a9Cb29BA02210D2034bF","ropsten":"0xC226F6dFcEb1b2Ae174820de51d077275ceE0E14","zksyncTestnet":"0x38a67Eddf0fcdC223a961B5aB96DB0B1C75F262b"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721ManagedPrefixedCollection","sourceName":"contracts/collections/ERC721/presets/ERC721ManagedPrefixedCollection.sol","abi":[{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"string","name":"placeholderURI","type":"string"},{"internalType":"string","name":"tokenURIPrefix","type":"string"},{"internalType":"address[]","name":"initialHolders","type":"address[]"},{"internalType":"uint256[]","name":"initialAmounts","type":"uint256[]"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"internalType":"address","name":"defaultRoyaltyAddress","type":"address"},{"internalType":"uint16","name":"defaultRoyaltyBps","type":"uint16"},{"internalType":"address","name":"trustedForwarder","type":"address"},{"internalType":"enum LicenseVersion","name":"licenseVersion","type":"uint8"}],"internalType":"struct ERC721ManagedPrefixedCollection.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"DefaultRoyaltySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"TokenRoyaltyRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"TokenRoyaltySet","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"},{"inputs":[],"name":"_trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultRoyalty","outputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"freezeTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getInfo","outputs":[{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"uint256","name":"_totalSupply","type":"uint256"},{"internalType":"uint256","name":"_senderBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getRaribleV2Royalties","outputs":[{"components":[{"internalType":"address payable","name":"account","type":"address"},{"internalType":"uint96","name":"value","type":"uint96"}],"internalType":"struct LibPart.Part[]","name":"result","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenRoyaltiesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getTokenRoyaltyByIndex","outputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"string","name":"placeholderURI","type":"string"},{"internalType":"string","name":"tokenURIPrefix","type":"string"},{"internalType":"address[]","name":"initialHolders","type":"address[]"},{"internalType":"uint256[]","name":"initialAmounts","type":"uint256[]"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"internalType":"address","name":"defaultRoyaltyAddress","type":"address"},{"internalType":"uint16","name":"defaultRoyaltyBps","type":"uint16"},{"internalType":"address","name":"trustedForwarder","type":"address"},{"internalType":"enum LicenseVersion","name":"licenseVersion","type":"uint8"}],"internalType":"struct ERC721ManagedPrefixedCollection.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","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":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersion","outputs":[{"internalType":"enum LicenseVersion","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersionLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"managementPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"placeholderURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeManagementPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyalty","name":"royalty","type":"tuple"}],"name":"setDefaultRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum LicenseVersion","name":"_licenseVersion","type":"uint8"}],"name":"setLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setPlaceholderURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig[]","name":"royaltyConfigs","type":"tuple[]"}],"name":"setTokenRoyalties","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURIPrefix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURISuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"trustedForwarder","type":"address"}],"name":"setTrustedForwarder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIPrefix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURISuffix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"transferFromBulk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"from","type":"address[]"},{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"transferFromBulk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405260006012553480156200001657600080fd5b5060405162004ee638038062004ee68339810160408190526200003991620010ed565b8051602082015160046200005662000050620000b8565b620000d4565b6002805482919060ff19166001836005811115620000785762000078620012b0565b0217905550600390506200008d838262001354565b5060046200009c828262001354565b505050620000b181336200012f60201b60201c565b50620015a9565b6000620000cf620003df60201b620015861760201c565b905090565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620001505750600054600160ff909116105b806200018057506200016d306200041d60201b620015a81760201c565b15801562000180575060005460ff166001145b620001e95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156200020d576000805461ff0019166101001790555b8260c00151518360a001515114620002685760405162461bcd60e51b815260206004820152601b60248201527f4552433732312f494e56414c49445f494e495449414c5f4152475300000000006044820152606401620001e0565b6200027382620000d4565b61016083015162000284906200042c565b8251602084015160408501516200029d92919062000464565b620002b7836060015184608001516200049b60201b60201c565b60e0830151620002c790620004d5565b620002d16200050a565b620002db62000540565b620002f78361010001518461012001516200057460201b60201c565b6101408301516200030890620005aa565b62000312620005df565b60e083015160105560005b8360a001515181101562000392576200037d8460a00151828151811062000348576200034862001420565b60200260200101518560c00151838151811062000369576200036962001420565b60200260200101516200061360201b60201c565b8062000389816200144c565b9150506200031d565b508015620003da576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6002546000906201000090046001600160a01b0316330362000408575060131936013560601c90565b620000cf620006a960201b620015b71760201c565b6001600160a01b03163b151590565b600054610100900460ff16620004565760405162461bcd60e51b8152600401620001e09062001468565b6200046181620006ad565b50565b600054610100900460ff166200048e5760405162461bcd60e51b8152600401620001e09062001468565b620003da83838362000725565b600054610100900460ff16620004c55760405162461bcd60e51b8152600401620001e09062001468565b620004d18282620007b2565b5050565b600054610100900460ff16620004ff5760405162461bcd60e51b8152600401620001e09062001468565b62000461816200084a565b600054610100900460ff16620005345760405162461bcd60e51b8152600401620001e09062001468565b6200053e6200089d565b565b600054610100900460ff166200056a5760405162461bcd60e51b8152600401620001e09062001468565b6200053e620008d9565b600054610100900460ff166200059e5760405162461bcd60e51b8152600401620001e09062001468565b620004d1828262000915565b600054610100900460ff16620005d45760405162461bcd60e51b8152600401620001e09062001468565b6200046181620009b2565b600054610100900460ff16620006095760405162461bcd60e51b8152600401620001e09062001468565b6200053e62000a06565b601054816200062160125490565b6200062d9190620014b3565b11156200066e5760405162461bcd60e51b815260206004820152600e60248201526d455843454544535f535550504c5960901b6044820152606401620001e0565b60005b81811015620003da5760125462000689848262000a42565b6200069362000a64565b5080620006a0816200144c565b91505062000671565b3390565b600054610100900460ff16620006d75760405162461bcd60e51b8152600401620001e09062001468565b620006e963b964efe960e01b62000a7d565b620006fb630c934a3560e31b62000a7d565b6002805482919060ff191660018360058111156200071d576200071d620012b0565b021790555050565b600054610100900460ff166200074f5760405162461bcd60e51b8152600401620001e09062001468565b60096200075d848262001354565b50600a6200076c838262001354565b50600b6200077b828262001354565b506200078e633d96f4ff60e11b62000a7d565b620007a06380ac58cd60e01b62000a7d565b620003da635b5e139f60e01b62000a7d565b600054610100900460ff16620007dc5760405162461bcd60e51b8152600401620001e09062001468565b600c620007ea838262001354565b50600d620007f9828262001354565b50604080518082019091526005815264173539b7b760d91b6020820152600e9062000825908262001354565b5062000838631f2f406b60e01b62000a7d565b620004d1635b5e139f60e01b62000a7d565b600054610100900460ff16620008745760405162461bcd60e51b8152600401620001e09062001468565b60108190556200088b6330f487b560e11b62000a7d565b620004616380ac58cd60e01b62000a7d565b600054610100900460ff16620008c75760405162461bcd60e51b8152600401620001e09062001468565b6200053e631aa1577160e11b62000a7d565b600054610100900460ff16620009035760405162461bcd60e51b8152600401620001e09062001468565b6200053e63948e2d5360e01b62000a7d565b600054610100900460ff166200093f5760405162461bcd60e51b8152600401620001e09062001468565b62000951633a47bf5160e11b62000a7d565b6200096363152a902d60e11b62000a7d565b6200097563c69dbd8f60e01b62000a7d565b6200098763656cb66560e11b62000a7d565b604080518082019091526001600160a01b038316815261ffff82166020820152620003da8162000b01565b600054610100900460ff16620009dc5760405162461bcd60e51b8152600401620001e09062001468565b600280546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b600054610100900460ff1662000a305760405162461bcd60e51b8152600401620001e09062001468565b6200053e632a7c3e4960e01b62000a7d565b620004d182826040518060200160405280600081525062000be760201b60201c565b6012805490600062000a76836200144c565b9190505550565b6001600160e01b0319808216900362000ad95760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e74657266616365206964000000006044820152606401620001e0565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b612710816020015161ffff161062000b4a5760405162461bcd60e51b815260206004820152600b60248201526a496e76616c69642062707360a81b6044820152606401620001e0565b60408051808201825282516001600160a01b03168082526020808501805161ffff169190930181905260148054600160a01b9092026001600160b01b03199092169092171790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe419262000bdc92916001600160a01b0392909216825261ffff16602082015260400190565b60405180910390a150565b62000bf3838362000c21565b62000c02600084848462000d69565b620003da5760405162461bcd60e51b8152600401620001e090620014ce565b6001600160a01b03821662000c795760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401620001e0565b6000818152600560205260409020546001600160a01b03161562000ce05760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401620001e0565b6001600160a01b038216600090815260066020526040812080546001929062000d0b908490620014b3565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600062000d8a846001600160a01b03166200041d60201b620015a81760201c565b1562000e89576001600160a01b03841663150b7a0262000da9620000b8565b8786866040518563ffffffff1660e01b815260040162000dcd949392919062001520565b6020604051808303816000875af192505050801562000e0b575060408051601f3d908101601f1916820190925262000e089181019062001576565b60015b62000e6e573d80801562000e3c576040519150601f19603f3d011682016040523d82523d6000602084013e62000e41565b606091505b50805160000362000e665760405162461bcd60e51b8152600401620001e090620014ce565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905062000e8d565b5060015b949350505050565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b038111828210171562000ed15762000ed162000e95565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000f025762000f0262000e95565b604052919050565b60005b8381101562000f2757818101518382015260200162000f0d565b8381111562000f37576000848401525b50505050565b600082601f83011262000f4f57600080fd5b81516001600160401b0381111562000f6b5762000f6b62000e95565b62000f80601f8201601f191660200162000ed7565b81815284602083860101111562000f9657600080fd5b62000e8d82602083016020870162000f0a565b60006001600160401b0382111562000fc55762000fc562000e95565b5060051b60200190565b80516001600160a01b038116811462000fe757600080fd5b919050565b600082601f83011262000ffe57600080fd5b8151602062001017620010118362000fa9565b62000ed7565b82815260059290921b840181019181810190868411156200103757600080fd5b8286015b848110156200105d576200104f8162000fcf565b83529183019183016200103b565b509695505050505050565b600082601f8301126200107a57600080fd5b815160206200108d620010118362000fa9565b82815260059290921b84018101918181019086841115620010ad57600080fd5b8286015b848110156200105d5780518352918301918301620010b1565b805161ffff8116811462000fe757600080fd5b80516006811062000fe757600080fd5b6000602082840312156200110057600080fd5b81516001600160401b03808211156200111857600080fd5b9083019061018082860312156200112e57600080fd5b6200113862000eab565b8251828111156200114857600080fd5b620011568782860162000f3d565b8252506020830151828111156200116c57600080fd5b6200117a8782860162000f3d565b6020830152506040830151828111156200119357600080fd5b620011a18782860162000f3d565b604083015250606083015182811115620011ba57600080fd5b620011c88782860162000f3d565b606083015250608083015182811115620011e157600080fd5b620011ef8782860162000f3d565b60808301525060a0830151828111156200120857600080fd5b620012168782860162000fec565b60a08301525060c0830151828111156200122f57600080fd5b6200123d8782860162001068565b60c08301525060e083015160e082015261010091506200125f82840162000fcf565b82820152610120915062001275828401620010ca565b8282015261014091506200128b82840162000fcf565b828201526101609150620012a1828401620010dd565b91810191909152949350505050565b634e487b7160e01b600052602160045260246000fd5b600181811c90821680620012db57607f821691505b602082108103620012fc57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003da57600081815260208120601f850160051c810160208610156200132b5750805b601f850160051c820191505b818110156200134c5782815560010162001337565b505050505050565b81516001600160401b0381111562001370576200137062000e95565b6200138881620013818454620012c6565b8462001302565b602080601f831160018114620013c05760008415620013a75750858301515b600019600386901b1c1916600185901b1785556200134c565b600085815260208120601f198616915b82811015620013f157888601518255948401946001909101908401620013d0565b5085821015620014105787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820162001461576200146162001436565b5060010190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008219821115620014c957620014c962001436565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600060018060a01b0380871683528086166020840152508360408301526080606083015282518060808401526200155f8160a085016020870162000f0a565b601f01601f19169190910160a00195945050505050565b6000602082840312156200158957600080fd5b81516001600160e01b031981168114620015a257600080fd5b9392505050565b61392d80620015b96000396000f3fe608060405234801561001057600080fd5b50600436106102825760003560e01c80637e980342116101585780637e980342146105125780638da5cb5b1461051a578063938e3d7b14610522578063948e2d531461053557806395d89b411461053d57806399e0dd7c14610545578063a22cb46514610558578063a341793b1461056b578063a821d90814610573578063a9852bfb14610580578063b88d4fde14610593578063ba4695fd146105a6578063bf9b7a57146105ae578063c0ac9983146105c0578063c29de630146105c8578063c7db2893146105d5578063c87b56dd146105dd578063cad96cca146105f0578063d5abeb0114610610578063da74222814610619578063dbbc853b1461062c578063dd89c6fa14610634578063e8a3d4851461063c578063e985e9c514610644578063ef60ceaf14610657578063f2fde38b1461066a578063f384702f1461067d57600080fd5b806301ffc9a714610287578063059fb6f7146102af5780630653aca5146102c457806306fdde0314610306578063081812fc1461031b578063095ea7b31461033b5780630b4b2ea71461034e578063167446071461036157806318160ddd1461036957806323b872dd1461037b5780632a55205a1461038e5780632fe388be146103c05780633542aee2146103d35780633574a2dd146103e657806342842e0e146103f957806350a5292f1461040c5780635136dcc71461042657806356c022bb14610439578063572b6c05146104525780635a9b0b89146104655780636352211e1461048857806364ed29131461049b5780636f8b44b0146104ae57806370a08231146104c1578063715018a6146104d45780637313cba9146104dc5780637885fdc7146104e4575b600080fd5b61029a610295366004612aa8565b61068a565b60405190151581526020015b60405180910390f35b6102c26102bd366004612bd9565b61069b565b005b6102d76102d2366004612c36565b61073b565b60408051825181526020808401516001600160a01b0316908201529181015161ffff16908201526060016102a6565b61030e6107c0565b6040516102a69190612ca7565b61032e610329366004612c36565b6107cf565b6040516102a69190612cba565b6102c2610349366004612cce565b6107f6565b6102c261035c366004612df2565b610922565b6102c2610b80565b6012545b6040519081526020016102a6565b6102c2610389366004612fa4565b610b97565b6103a161039c366004612fe0565b610bcf565b604080516001600160a01b0390931683526020830191909152016102a6565b6102c26103ce366004613002565b610c94565b6102c26103e1366004612cce565b610df9565b6102c26103f436600461307f565b610e0f565b6102c2610407366004612fa4565b610e23565b6002546104199060ff1681565b6040516102a691906130c9565b6102c26104343660046130f1565b610e3e565b60025461032e906201000090046001600160a01b031681565b61029a610460366004613165565b610ea1565b61046d610ebb565b604080519384526020840192909252908201526060016102a6565b61032e610496366004612c36565b610fb6565b6102c26104a9366004613180565b610feb565b6102c26104bc366004612c36565b611063565b61036d6104cf366004613165565b6110d9565b6102c261115f565b61030e611173565b601454610504906001600160a01b03811690600160a01b900461ffff1682565b6040516102a692919061319b565b61036d611205565b61032e611211565b6102c261053036600461307f565b611226565b6102c261123a565b61030e611251565b6102c261055336600461307f565b61125b565b6102c26105663660046131b8565b611292565b61030e6112a4565b60135461029a9060ff1681565b6102c261058e36600461307f565b6112b6565b6102c26105a13660046131f4565b6112ed565b6102c2611326565b60025461029a90610100900460ff1681565b61030e61133d565b600f5461029a9060ff1681565b61030e61134c565b61030e6105eb366004612c36565b6113ac565b6106036105fe366004612c36565b6113b7565b6040516102a6919061326f565b61036d60105481565b6102c2610627366004613165565b611472565b61030e6114a4565b6102c26114b3565b61030e6114cc565b61029a6106523660046132d0565b6114db565b6102c26106653660046132fa565b6114ee565b6102c2610678366004613165565b611510565b60115461029a9060ff1681565b6000610695826115bb565b92915050565b60005b815181101561073557306001600160a01b03166323b872dd85858585815181106106ca576106ca613312565b60200260200101516040518463ffffffff1660e01b81526004016106f093929190613328565b600060405180830381600087803b15801561070a57600080fd5b505af115801561071e573d6000803e3d6000fd5b50505050808061072d90613362565b91505061069e565b50505050565b60408051606081018252600080825260208201819052918101829052906107636016846115f7565b6000818152601560209081526040918290208251808401845290546001600160a01b03808216835261ffff600160a01b90920482168385019081528551606081018752968752925116928501929092525116908201529392505050565b60606107ca611603565b905090565b60006107da82611612565b506000908152600760205260409020546001600160a01b031690565b600061080182610fb6565b9050806001600160a01b0316836001600160a01b0316036108735760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b0316610885611637565b6001600160a01b031614806108a157506108a181610652611637565b6109135760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161086a565b61091d8383611641565b505050565b600054610100900460ff16158080156109425750600054600160ff909116105b806109635750610951306115a8565b158015610963575060005460ff166001145b6109c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161086a565b6000805460ff1916600117905580156109e9576000805461ff0019166101001790555b8260c00151518360a001515114610a405760405162461bcd60e51b815260206004820152601b60248201527a4552433732312f494e56414c49445f494e495449414c5f4152475360281b604482015260640161086a565b610a49826116af565b610a5783610160015161170a565b610a6e83600001518460200151856040015161173a565b610a808360600151846080015161176c565b610a8d8360e0015161179d565b610a956117cd565b610a9d6117fc565b610ab183610100015184610120015161182b565b610abf83610140015161185c565b610ac761188c565b60e083015160105560005b8360a0015151811015610b3557610b238460a001518281518110610af857610af8613312565b60200260200101518560c001518381518110610b1657610b16613312565b60200260200101516118bb565b80610b2d81613362565b915050610ad2565b50801561091d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b610b88611944565b6011805460ff19166001179055565b610ba8610ba2611637565b826119b3565b610bc45760405162461bcd60e51b815260040161086a9061337b565b61091d838383611a12565b60008281526015602052604081205481906001600160a01b031615610c34576000848152601560205260409020546001600160a01b0381169061271090610c2190600160a01b900461ffff16866133c9565b610c2b91906133fe565b91509150610c8d565b6014546001600160a01b031615801590610c5a5750601454600160a01b900461ffff1615155b15610c86576014546001600160a01b0381169061271090610c2190600160a01b900461ffff16866133c9565b5060009050805b9250929050565b8151835114610cdf5760405162461bcd60e51b815260206004820152601760248201527608ca49e9abea89ebe988a9c8ea890be9a92a69a82a8869604b1b604482015260640161086a565b8051835114610d2d5760405162461bcd60e51b815260206004820152601a60248201527908ca49e9abea89e968a9cbe988a9c8ea890be9a92a69a82a886960331b604482015260640161086a565b60005b815181101561073557306001600160a01b03166323b872dd858381518110610d5a57610d5a613312565b6020026020010151858481518110610d7457610d74613312565b6020026020010151858581518110610d8e57610d8e613312565b60200260200101516040518463ffffffff1660e01b8152600401610db493929190613328565b600060405180830381600087803b158015610dce57600080fd5b505af1158015610de2573d6000803e3d6000fd5b505050508080610df190613362565b915050610d30565b610e01611944565b610e0b82826118bb565b5050565b610e17611944565b600c610e0b8282613494565b61091d838383604051806020016040528060008152506112ed565b610e46611944565b610e0b8282808060200260200160405190810160405280939291908181526020016000905b82821015610e9757610e8860608302860136819003810190613553565b81526020019060010190610e6b565b5050505050611bae565b6002546201000090046001600160a01b0390811691161490565b600080808080610ec9611637565b6001600160a01b031614610f4557306370a08231610ee5611637565b6040518263ffffffff1660e01b8152600401610f019190612cba565b602060405180830381865afa158015610f1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4291906135b7565b90505b601054306001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610faa91906135b7565b90959094509092509050565b6000818152600560205260408120546001600160a01b0316806106955760405162461bcd60e51b815260040161086a906135d0565b610ff3611944565b600254610100900460ff161561103c5760405162461bcd60e51b815260206004820152600e60248201526d131250d15394d157d313d0d2d15160921b604482015260640161086a565b6002805482919060ff1916600183600581111561105b5761105b6130b3565b021790555050565b61106b611944565b60115460ff161561108e5760405162461bcd60e51b815260040161086a90613602565b6012548110156110d45760405162461bcd60e51b81526020600482015260116024820152704c4f5745525f5448414e5f535550504c5960781b604482015260640161086a565b601055565b60006001600160a01b0382166111435760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161086a565b506001600160a01b031660009081526006602052604090205490565b611167611944565b61117160006116af565b565b6060600c805461118290613412565b80601f01602080910402602001604051908101604052809291908181526020018280546111ae90613412565b80156111fb5780601f106111d0576101008083540402835291602001916111fb565b820191906000526020600020905b8154815290600101906020018083116111de57829003601f168201915b5050505050905090565b60006107ca6016611d55565b6000546201000090046001600160a01b031690565b61122e611944565b600b610e0b8282613494565b611242611944565b6013805460ff19166001179055565b60606107ca611d5f565b611263611944565b600f5460ff16156112865760405162461bcd60e51b815260040161086a90613602565b600d610e0b8282613494565b610e0b61129d611637565b8383611d6e565b6002546060906107ca9060ff16611e38565b6112be611944565b600f5460ff16156112e15760405162461bcd60e51b815260040161086a90613602565b600e610e0b8282613494565b6112fe6112f8611637565b836119b3565b61131a5760405162461bcd60e51b815260040161086a9061337b565b61073584848484611fb6565b61132e611944565b600f805460ff19166001179055565b6060600d805461118290613412565b60606040518060600160405280603181526020016138c7603191396002546113879060ff166005811115611382576113826130b3565b611fe9565b604051602001611398929190613622565b604051602081830303815290604052905090565b6060610695826120e9565b604080516001808252818301909252606091816020015b60408051808201909152600080825260208201528152602001906001900390816113ce57505060145481519192506001600160a01b031690829060009061141757611417613312565b60209081029190910101516001600160a01b039190911690526014548151600160a01b90910461ffff1690829060009061145357611453613312565b6020908102919091018101516001600160601b03909216910152919050565b61147a611944565b600280546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6060600e805461118290613412565b6114bb611944565b6002805461ff001916610100179055565b6060600b805461118290613412565b60006114e783836121c5565b9392505050565b6114f6611944565b61150d61150836839003830183613651565b612228565b50565b611518611944565b6001600160a01b03811661157d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161086a565b61150d816116af565b600061159133610ea1565b156115a3575060131936013560601c90565b503390565b6001600160a01b03163b151590565b3390565b60006301ffc9a760e01b6001600160e01b0319831614806106955750506001600160e01b03191660009081526001602052604090205460ff1690565b60006114e783836122d3565b60606009805461118290613412565b61161b816122fd565b61150d5760405162461bcd60e51b815260040161086a906135d0565b60006107ca611586565b600081815260076020526040902080546001600160a01b0319166001600160a01b038416908117909155819061167682610fb6565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff166117315760405162461bcd60e51b815260040161086a906136ab565b61150d8161231a565b600054610100900460ff166117615760405162461bcd60e51b815260040161086a906136ab565b61091d838383612361565b600054610100900460ff166117935760405162461bcd60e51b815260040161086a906136ab565b610e0b82826123df565b600054610100900460ff166117c45760405162461bcd60e51b815260040161086a906136ab565b61150d8161246a565b600054610100900460ff166117f45760405162461bcd60e51b815260040161086a906136ab565b6111716124b6565b600054610100900460ff166118235760405162461bcd60e51b815260040161086a906136ab565b6111716124ed565b600054610100900460ff166118525760405162461bcd60e51b815260040161086a906136ab565b610e0b8282612524565b600054610100900460ff166118835760405162461bcd60e51b815260040161086a906136ab565b61150d816125b4565b600054610100900460ff166118b35760405162461bcd60e51b815260040161086a906136ab565b6111716125db565b601054816118c860125490565b6118d291906136f6565b11156119115760405162461bcd60e51b815260206004820152600e60248201526d455843454544535f535550504c5960901b604482015260640161086a565b60005b8181101561091d576012546119298482612612565b61193161262c565b508061193c81613362565b915050611914565b61194c611637565b6001600160a01b031661195d611211565b6001600160a01b0316146111715760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161086a565b6000806119bf83610fb6565b9050806001600160a01b0316846001600160a01b031614806119e657506119e681856114db565b80611a0a5750836001600160a01b03166119ff846107cf565b6001600160a01b0316145b949350505050565b826001600160a01b0316611a2582610fb6565b6001600160a01b031614611a895760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161086a565b6001600160a01b038216611aeb5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161086a565b611af6600082611641565b6001600160a01b0383166000908152600660205260408120805460019290611b1f90849061370e565b90915550506001600160a01b0382166000908152600660205260408120805460019290611b4d9084906136f6565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60005b8151811015610e0b576000828281518110611bce57611bce613312565b60200260200101519050612710816040015161ffff1610611c015760405162461bcd60e51b815260040161086a90613725565b60208101516001600160a01b0316611c7a578051600090815260156020526040902080546001600160b01b03191690558051611c3f90601690612643565b5080516040519081527fa2870857763bd9ae76c957f869f16b31c18dd3bb4c7b4d3a4496dc5c57c657f99060200160405180910390a1611d42565b6040805180820182526020808401516001600160a01b0390811683528484015161ffff90811683850190815286516000908152601590945294909220925183549451909216600160a01b026001600160b01b03199094169116179190911790558051611ce89060169061264f565b50805160208083015160408085015181519485526001600160a01b039092169284019290925261ffff1682820152517f389b70fb0887f01e83784eb1c4c589f740eca53b00ed0f45e41db5d079719abb9181900360600190a15b5080611d4d81613362565b915050611bb1565b6000610695825490565b6060600a805461118290613412565b816001600160a01b0316836001600160a01b031603611dcb5760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b604482015260640161086a565b6001600160a01b03838116600081815260086020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60606006826005811115611e4e57611e4e6130b3565b60ff161115611e5c57600080fd5b816005811115611e6e57611e6e6130b3565b600003611e9857505060408051808201909152600781526604342455f4343360cc1b602082015290565b816005811115611eaa57611eaa6130b3565b600103611ed457505060408051808201909152600781526621a122afa2a1a960c91b602082015290565b816005811115611ee657611ee66130b3565b600203611f1157505060408051808201909152600881526721a122afa722a1a960c11b602082015290565b816005811115611f2357611f236130b3565b600303611f5157505060408051808201909152600b81526a4342455f4e4543525f485360a81b602082015290565b816005811115611f6357611f636130b3565b600403611f8c57505060408051808201909152600681526521a122afa82960d11b602082015290565b50506040805180820190915260098152684342455f50525f485360b81b602082015290565b919050565b611fc1848484611a12565b611fcd8484848461265b565b6107355760405162461bcd60e51b815260040161086a9061374a565b6060816000036120105750506040805180820190915260018152600360fc1b602082015290565b8160005b811561203a578061202481613362565b91506120339050600a836133fe565b9150612014565b6000816001600160401b0381111561205457612054612adc565b6040519080825280601f01601f19166020018201604052801561207e576020820181803683370190505b5090505b8415611a0a5761209360018361370e565b91506120a0600a8661379c565b6120ab9060306136f6565b60f81b8183815181106120c0576120c0613312565b60200101906001600160f81b031916908160001a9053506120e2600a866133fe565b9450612082565b60606000600d80546120fa90613412565b90501161219157600c805461210e90613412565b80601f016020809104026020016040519081016040528092919081815260200182805461213a90613412565b80156121875780601f1061215c57610100808354040283529160200191612187565b820191906000526020600020905b81548152906001019060200180831161216a57829003601f168201915b5050505050610695565b600d61219c83611fe9565b600e6040516020016121b093929190613823565b60405160208183030381529060405292915050565b60135460009060ff166121fa576121da611211565b6001600160a01b0316826001600160a01b0316036121fa57506001610695565b6001600160a01b0380841660009081526008602090815260408083209386168352929052205460ff166114e7565b612710816020015161ffff16106122515760405162461bcd60e51b815260040161086a90613725565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601480546001600160b01b031916909217600160a01b9091021790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe41926122c8929161319b565b60405180910390a150565b60008260000182815481106122ea576122ea613312565b9060005260206000200154905092915050565b6000908152600560205260409020546001600160a01b0316151590565b600054610100900460ff166123415760405162461bcd60e51b815260040161086a906136ab565b61235163b964efe960e01b61276a565b61103c630c934a3560e31b61276a565b600054610100900460ff166123885760405162461bcd60e51b815260040161086a906136ab565b60096123948482613494565b50600a6123a18382613494565b50600b6123ae8282613494565b506123bf633d96f4ff60e11b61276a565b6123cf6380ac58cd60e01b61276a565b61091d635b5e139f60e01b61276a565b600054610100900460ff166124065760405162461bcd60e51b815260040161086a906136ab565b600c6124128382613494565b50600d61241f8282613494565b50604080518082019091526005815264173539b7b760d91b6020820152600e906124499082613494565b5061245a631f2f406b60e01b61276a565b610e0b635b5e139f60e01b61276a565b600054610100900460ff166124915760405162461bcd60e51b815260040161086a906136ab565b60108190556124a66330f487b560e11b61276a565b61150d6380ac58cd60e01b61276a565b600054610100900460ff166124dd5760405162461bcd60e51b815260040161086a906136ab565b611171631aa1577160e11b61276a565b600054610100900460ff166125145760405162461bcd60e51b815260040161086a906136ab565b61117163948e2d5360e01b61276a565b600054610100900460ff1661254b5760405162461bcd60e51b815260040161086a906136ab565b61255b633a47bf5160e11b61276a565b61256b63152a902d60e11b61276a565b61257b63c69dbd8f60e01b61276a565b61258b63656cb66560e11b61276a565b604080518082019091526001600160a01b038316815261ffff8216602082015261091d81612228565b600054610100900460ff1661147a5760405162461bcd60e51b815260040161086a906136ab565b600054610100900460ff166126025760405162461bcd60e51b815260040161086a906136ab565b611171632a7c3e4960e01b61276a565b610e0b8282604051806020016040528060008152506127eb565b6012805490600061263c83613362565b9190505550565b60006114e7838361281e565b60006114e78383612911565b600061266f846001600160a01b03166115a8565b1561275f57836001600160a01b031663150b7a0261268b611637565b8786866040518563ffffffff1660e01b81526004016126ad9493929190613856565b6020604051808303816000875af19250505080156126e8575060408051601f3d908101601f191682019092526126e591810190613893565b60015b612745573d808015612716576040519150601f19603f3d011682016040523d82523d6000602084013e61271b565b606091505b50805160000361273d5760405162461bcd60e51b815260040161086a9061374a565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611a0a565b506001949350505050565b6001600160e01b031980821690036127c35760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b604482015260640161086a565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b6127f58383612960565b612802600084848461265b565b61091d5760405162461bcd60e51b815260040161086a9061374a565b6000818152600183016020526040812054801561290757600061284260018361370e565b85549091506000906128569060019061370e565b90508181146128bb57600086600001828154811061287657612876613312565b906000526020600020015490508087600001848154811061289957612899613312565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806128cc576128cc6138b0565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610695565b6000915050610695565b600081815260018301602052604081205461295857508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610695565b506000610695565b6001600160a01b0382166129b65760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161086a565b6129bf816122fd565b15612a0b5760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b604482015260640161086a565b6001600160a01b0382166000908152600660205260408120805460019290612a349084906136f6565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b03198116811461150d57600080fd5b600060208284031215612aba57600080fd5b81356114e781612a92565b80356001600160a01b0381168114611fb157600080fd5b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b0381118282101715612b1557612b15612adc565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612b4357612b43612adc565b604052919050565b60006001600160401b03821115612b6457612b64612adc565b5060051b60200190565b600082601f830112612b7f57600080fd5b81356020612b94612b8f83612b4b565b612b1b565b82815260059290921b84018101918181019086841115612bb357600080fd5b8286015b84811015612bce5780358352918301918301612bb7565b509695505050505050565b600080600060608486031215612bee57600080fd5b612bf784612ac5565b9250612c0560208501612ac5565b915060408401356001600160401b03811115612c2057600080fd5b612c2c86828701612b6e565b9150509250925092565b600060208284031215612c4857600080fd5b5035919050565b60005b83811015612c6a578181015183820152602001612c52565b838111156107355750506000910152565b60008151808452612c93816020860160208601612c4f565b601f01601f19169290920160200192915050565b6020815260006114e76020830184612c7b565b6001600160a01b0391909116815260200190565b60008060408385031215612ce157600080fd5b612cea83612ac5565b946020939093013593505050565b60006001600160401b03831115612d1157612d11612adc565b612d24601f8401601f1916602001612b1b565b9050828152838383011115612d3857600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6057600080fd5b6114e783833560208501612cf8565b600082601f830112612d8057600080fd5b81356020612d90612b8f83612b4b565b82815260059290921b84018101918181019086841115612daf57600080fd5b8286015b84811015612bce57612dc481612ac5565b8352918301918301612db3565b803561ffff81168114611fb157600080fd5b803560068110611fb157600080fd5b60008060408385031215612e0557600080fd5b82356001600160401b0380821115612e1c57600080fd5b908401906101808287031215612e3157600080fd5b612e39612af2565b823582811115612e4857600080fd5b612e5488828601612d4f565b825250602083013582811115612e6957600080fd5b612e7588828601612d4f565b602083015250604083013582811115612e8d57600080fd5b612e9988828601612d4f565b604083015250606083013582811115612eb157600080fd5b612ebd88828601612d4f565b606083015250608083013582811115612ed557600080fd5b612ee188828601612d4f565b60808301525060a083013582811115612ef957600080fd5b612f0588828601612d6f565b60a08301525060c083013582811115612f1d57600080fd5b612f2988828601612b6e565b60c08301525060e083013560e08201526101009150612f49828401612ac5565b828201526101209150612f5d828401612dd1565b828201526101409150612f71828401612ac5565b828201526101609150612f85828401612de3565b82820152809450505050612f9b60208401612ac5565b90509250929050565b600080600060608486031215612fb957600080fd5b612fc284612ac5565b9250612fd060208501612ac5565b9150604084013590509250925092565b60008060408385031215612ff357600080fd5b50508035926020909101359150565b60008060006060848603121561301757600080fd5b83356001600160401b038082111561302e57600080fd5b61303a87838801612d6f565b9450602086013591508082111561305057600080fd5b61305c87838801612d6f565b9350604086013591508082111561307257600080fd5b50612c2c86828701612b6e565b60006020828403121561309157600080fd5b81356001600160401b038111156130a757600080fd5b611a0a84828501612d4f565b634e487b7160e01b600052602160045260246000fd5b60208101600683106130eb57634e487b7160e01b600052602160045260246000fd5b91905290565b6000806020838503121561310457600080fd5b82356001600160401b038082111561311b57600080fd5b818501915085601f83011261312f57600080fd5b81358181111561313e57600080fd5b86602060608302850101111561315357600080fd5b60209290920196919550909350505050565b60006020828403121561317757600080fd5b6114e782612ac5565b60006020828403121561319257600080fd5b6114e782612de3565b6001600160a01b0392909216825261ffff16602082015260400190565b600080604083850312156131cb57600080fd5b6131d483612ac5565b9150602083013580151581146131e957600080fd5b809150509250929050565b6000806000806080858703121561320a57600080fd5b61321385612ac5565b935061322160208601612ac5565b92506040850135915060608501356001600160401b0381111561324357600080fd5b8501601f8101871361325457600080fd5b61326387823560208401612cf8565b91505092959194509250565b602080825282518282018190526000919060409081850190868401855b828110156132c357815180516001600160a01b031685528601516001600160601b031686850152928401929085019060010161328c565b5091979650505050505050565b600080604083850312156132e357600080fd5b6132ec83612ac5565b9150612f9b60208401612ac5565b60006040828403121561330c57600080fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b600052601160045260246000fd5b6000600182016133745761337461334c565b5060010190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b60008160001904831182151516156133e3576133e361334c565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261340d5761340d6133e8565b500490565b600181811c9082168061342657607f821691505b60208210810361330c57634e487b7160e01b600052602260045260246000fd5b601f82111561091d57600081815260208120601f850160051c8101602086101561346d5750805b601f850160051c820191505b8181101561348c57828155600101613479565b505050505050565b81516001600160401b038111156134ad576134ad612adc565b6134c1816134bb8454613412565b84613446565b602080601f8311600181146134f657600084156134de5750858301515b600019600386901b1c1916600185901b17855561348c565b600085815260208120601f198616915b8281101561352557888601518255948401946001909101908401613506565b50858210156135435787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060828403121561356557600080fd5b604051606081018181106001600160401b038211171561358757613587612adc565b6040528235815261359a60208401612ac5565b60208201526135ab60408401612dd1565b60408201529392505050565b6000602082840312156135c957600080fd5b5051919050565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b602080825260069082015265232927ad22a760d11b604082015260600190565b60008351613634818460208801612c4f565b835190830190613648818360208801612c4f565b01949350505050565b60006040828403121561366357600080fd5b604051604081018181106001600160401b038211171561368557613685612adc565b60405261369183612ac5565b815261369f60208401612dd1565b60208201529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600082198211156137095761370961334c565b500190565b6000828210156137205761372061334c565b500390565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6000826137ab576137ab6133e8565b500690565b600081546137bd81613412565b600182811680156137d557600181146137ea57613819565b60ff1984168752821515830287019450613819565b8560005260208060002060005b858110156138105781548a8201529084019082016137f7565b50505082870194505b5050505092915050565b600061382f82866137b0565b845161383f818360208901612c4f565b61384b818301866137b0565b979650505050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061388990830184612c7b565b9695505050505050565b6000602082840312156138a557600080fd5b81516114e781612a92565b634e487b7160e01b600052603160045260246000fdfe61723a2f2f5f44396b4e3157724e576243713535425341475262544234625333763851415054596d42546853625833412fa2646970667358221220d5e8b8ddf78359b0b5fd06e30f8258d5154e8f267c23e93443223f5494880a9764736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106102825760003560e01c80637e980342116101585780637e980342146105125780638da5cb5b1461051a578063938e3d7b14610522578063948e2d531461053557806395d89b411461053d57806399e0dd7c14610545578063a22cb46514610558578063a341793b1461056b578063a821d90814610573578063a9852bfb14610580578063b88d4fde14610593578063ba4695fd146105a6578063bf9b7a57146105ae578063c0ac9983146105c0578063c29de630146105c8578063c7db2893146105d5578063c87b56dd146105dd578063cad96cca146105f0578063d5abeb0114610610578063da74222814610619578063dbbc853b1461062c578063dd89c6fa14610634578063e8a3d4851461063c578063e985e9c514610644578063ef60ceaf14610657578063f2fde38b1461066a578063f384702f1461067d57600080fd5b806301ffc9a714610287578063059fb6f7146102af5780630653aca5146102c457806306fdde0314610306578063081812fc1461031b578063095ea7b31461033b5780630b4b2ea71461034e578063167446071461036157806318160ddd1461036957806323b872dd1461037b5780632a55205a1461038e5780632fe388be146103c05780633542aee2146103d35780633574a2dd146103e657806342842e0e146103f957806350a5292f1461040c5780635136dcc71461042657806356c022bb14610439578063572b6c05146104525780635a9b0b89146104655780636352211e1461048857806364ed29131461049b5780636f8b44b0146104ae57806370a08231146104c1578063715018a6146104d45780637313cba9146104dc5780637885fdc7146104e4575b600080fd5b61029a610295366004612aa8565b61068a565b60405190151581526020015b60405180910390f35b6102c26102bd366004612bd9565b61069b565b005b6102d76102d2366004612c36565b61073b565b60408051825181526020808401516001600160a01b0316908201529181015161ffff16908201526060016102a6565b61030e6107c0565b6040516102a69190612ca7565b61032e610329366004612c36565b6107cf565b6040516102a69190612cba565b6102c2610349366004612cce565b6107f6565b6102c261035c366004612df2565b610922565b6102c2610b80565b6012545b6040519081526020016102a6565b6102c2610389366004612fa4565b610b97565b6103a161039c366004612fe0565b610bcf565b604080516001600160a01b0390931683526020830191909152016102a6565b6102c26103ce366004613002565b610c94565b6102c26103e1366004612cce565b610df9565b6102c26103f436600461307f565b610e0f565b6102c2610407366004612fa4565b610e23565b6002546104199060ff1681565b6040516102a691906130c9565b6102c26104343660046130f1565b610e3e565b60025461032e906201000090046001600160a01b031681565b61029a610460366004613165565b610ea1565b61046d610ebb565b604080519384526020840192909252908201526060016102a6565b61032e610496366004612c36565b610fb6565b6102c26104a9366004613180565b610feb565b6102c26104bc366004612c36565b611063565b61036d6104cf366004613165565b6110d9565b6102c261115f565b61030e611173565b601454610504906001600160a01b03811690600160a01b900461ffff1682565b6040516102a692919061319b565b61036d611205565b61032e611211565b6102c261053036600461307f565b611226565b6102c261123a565b61030e611251565b6102c261055336600461307f565b61125b565b6102c26105663660046131b8565b611292565b61030e6112a4565b60135461029a9060ff1681565b6102c261058e36600461307f565b6112b6565b6102c26105a13660046131f4565b6112ed565b6102c2611326565b60025461029a90610100900460ff1681565b61030e61133d565b600f5461029a9060ff1681565b61030e61134c565b61030e6105eb366004612c36565b6113ac565b6106036105fe366004612c36565b6113b7565b6040516102a6919061326f565b61036d60105481565b6102c2610627366004613165565b611472565b61030e6114a4565b6102c26114b3565b61030e6114cc565b61029a6106523660046132d0565b6114db565b6102c26106653660046132fa565b6114ee565b6102c2610678366004613165565b611510565b60115461029a9060ff1681565b6000610695826115bb565b92915050565b60005b815181101561073557306001600160a01b03166323b872dd85858585815181106106ca576106ca613312565b60200260200101516040518463ffffffff1660e01b81526004016106f093929190613328565b600060405180830381600087803b15801561070a57600080fd5b505af115801561071e573d6000803e3d6000fd5b50505050808061072d90613362565b91505061069e565b50505050565b60408051606081018252600080825260208201819052918101829052906107636016846115f7565b6000818152601560209081526040918290208251808401845290546001600160a01b03808216835261ffff600160a01b90920482168385019081528551606081018752968752925116928501929092525116908201529392505050565b60606107ca611603565b905090565b60006107da82611612565b506000908152600760205260409020546001600160a01b031690565b600061080182610fb6565b9050806001600160a01b0316836001600160a01b0316036108735760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b0316610885611637565b6001600160a01b031614806108a157506108a181610652611637565b6109135760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161086a565b61091d8383611641565b505050565b600054610100900460ff16158080156109425750600054600160ff909116105b806109635750610951306115a8565b158015610963575060005460ff166001145b6109c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161086a565b6000805460ff1916600117905580156109e9576000805461ff0019166101001790555b8260c00151518360a001515114610a405760405162461bcd60e51b815260206004820152601b60248201527a4552433732312f494e56414c49445f494e495449414c5f4152475360281b604482015260640161086a565b610a49826116af565b610a5783610160015161170a565b610a6e83600001518460200151856040015161173a565b610a808360600151846080015161176c565b610a8d8360e0015161179d565b610a956117cd565b610a9d6117fc565b610ab183610100015184610120015161182b565b610abf83610140015161185c565b610ac761188c565b60e083015160105560005b8360a0015151811015610b3557610b238460a001518281518110610af857610af8613312565b60200260200101518560c001518381518110610b1657610b16613312565b60200260200101516118bb565b80610b2d81613362565b915050610ad2565b50801561091d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b610b88611944565b6011805460ff19166001179055565b610ba8610ba2611637565b826119b3565b610bc45760405162461bcd60e51b815260040161086a9061337b565b61091d838383611a12565b60008281526015602052604081205481906001600160a01b031615610c34576000848152601560205260409020546001600160a01b0381169061271090610c2190600160a01b900461ffff16866133c9565b610c2b91906133fe565b91509150610c8d565b6014546001600160a01b031615801590610c5a5750601454600160a01b900461ffff1615155b15610c86576014546001600160a01b0381169061271090610c2190600160a01b900461ffff16866133c9565b5060009050805b9250929050565b8151835114610cdf5760405162461bcd60e51b815260206004820152601760248201527608ca49e9abea89ebe988a9c8ea890be9a92a69a82a8869604b1b604482015260640161086a565b8051835114610d2d5760405162461bcd60e51b815260206004820152601a60248201527908ca49e9abea89e968a9cbe988a9c8ea890be9a92a69a82a886960331b604482015260640161086a565b60005b815181101561073557306001600160a01b03166323b872dd858381518110610d5a57610d5a613312565b6020026020010151858481518110610d7457610d74613312565b6020026020010151858581518110610d8e57610d8e613312565b60200260200101516040518463ffffffff1660e01b8152600401610db493929190613328565b600060405180830381600087803b158015610dce57600080fd5b505af1158015610de2573d6000803e3d6000fd5b505050508080610df190613362565b915050610d30565b610e01611944565b610e0b82826118bb565b5050565b610e17611944565b600c610e0b8282613494565b61091d838383604051806020016040528060008152506112ed565b610e46611944565b610e0b8282808060200260200160405190810160405280939291908181526020016000905b82821015610e9757610e8860608302860136819003810190613553565b81526020019060010190610e6b565b5050505050611bae565b6002546201000090046001600160a01b0390811691161490565b600080808080610ec9611637565b6001600160a01b031614610f4557306370a08231610ee5611637565b6040518263ffffffff1660e01b8152600401610f019190612cba565b602060405180830381865afa158015610f1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4291906135b7565b90505b601054306001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610faa91906135b7565b90959094509092509050565b6000818152600560205260408120546001600160a01b0316806106955760405162461bcd60e51b815260040161086a906135d0565b610ff3611944565b600254610100900460ff161561103c5760405162461bcd60e51b815260206004820152600e60248201526d131250d15394d157d313d0d2d15160921b604482015260640161086a565b6002805482919060ff1916600183600581111561105b5761105b6130b3565b021790555050565b61106b611944565b60115460ff161561108e5760405162461bcd60e51b815260040161086a90613602565b6012548110156110d45760405162461bcd60e51b81526020600482015260116024820152704c4f5745525f5448414e5f535550504c5960781b604482015260640161086a565b601055565b60006001600160a01b0382166111435760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161086a565b506001600160a01b031660009081526006602052604090205490565b611167611944565b61117160006116af565b565b6060600c805461118290613412565b80601f01602080910402602001604051908101604052809291908181526020018280546111ae90613412565b80156111fb5780601f106111d0576101008083540402835291602001916111fb565b820191906000526020600020905b8154815290600101906020018083116111de57829003601f168201915b5050505050905090565b60006107ca6016611d55565b6000546201000090046001600160a01b031690565b61122e611944565b600b610e0b8282613494565b611242611944565b6013805460ff19166001179055565b60606107ca611d5f565b611263611944565b600f5460ff16156112865760405162461bcd60e51b815260040161086a90613602565b600d610e0b8282613494565b610e0b61129d611637565b8383611d6e565b6002546060906107ca9060ff16611e38565b6112be611944565b600f5460ff16156112e15760405162461bcd60e51b815260040161086a90613602565b600e610e0b8282613494565b6112fe6112f8611637565b836119b3565b61131a5760405162461bcd60e51b815260040161086a9061337b565b61073584848484611fb6565b61132e611944565b600f805460ff19166001179055565b6060600d805461118290613412565b60606040518060600160405280603181526020016138c7603191396002546113879060ff166005811115611382576113826130b3565b611fe9565b604051602001611398929190613622565b604051602081830303815290604052905090565b6060610695826120e9565b604080516001808252818301909252606091816020015b60408051808201909152600080825260208201528152602001906001900390816113ce57505060145481519192506001600160a01b031690829060009061141757611417613312565b60209081029190910101516001600160a01b039190911690526014548151600160a01b90910461ffff1690829060009061145357611453613312565b6020908102919091018101516001600160601b03909216910152919050565b61147a611944565b600280546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6060600e805461118290613412565b6114bb611944565b6002805461ff001916610100179055565b6060600b805461118290613412565b60006114e783836121c5565b9392505050565b6114f6611944565b61150d61150836839003830183613651565b612228565b50565b611518611944565b6001600160a01b03811661157d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161086a565b61150d816116af565b600061159133610ea1565b156115a3575060131936013560601c90565b503390565b6001600160a01b03163b151590565b3390565b60006301ffc9a760e01b6001600160e01b0319831614806106955750506001600160e01b03191660009081526001602052604090205460ff1690565b60006114e783836122d3565b60606009805461118290613412565b61161b816122fd565b61150d5760405162461bcd60e51b815260040161086a906135d0565b60006107ca611586565b600081815260076020526040902080546001600160a01b0319166001600160a01b038416908117909155819061167682610fb6565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff166117315760405162461bcd60e51b815260040161086a906136ab565b61150d8161231a565b600054610100900460ff166117615760405162461bcd60e51b815260040161086a906136ab565b61091d838383612361565b600054610100900460ff166117935760405162461bcd60e51b815260040161086a906136ab565b610e0b82826123df565b600054610100900460ff166117c45760405162461bcd60e51b815260040161086a906136ab565b61150d8161246a565b600054610100900460ff166117f45760405162461bcd60e51b815260040161086a906136ab565b6111716124b6565b600054610100900460ff166118235760405162461bcd60e51b815260040161086a906136ab565b6111716124ed565b600054610100900460ff166118525760405162461bcd60e51b815260040161086a906136ab565b610e0b8282612524565b600054610100900460ff166118835760405162461bcd60e51b815260040161086a906136ab565b61150d816125b4565b600054610100900460ff166118b35760405162461bcd60e51b815260040161086a906136ab565b6111716125db565b601054816118c860125490565b6118d291906136f6565b11156119115760405162461bcd60e51b815260206004820152600e60248201526d455843454544535f535550504c5960901b604482015260640161086a565b60005b8181101561091d576012546119298482612612565b61193161262c565b508061193c81613362565b915050611914565b61194c611637565b6001600160a01b031661195d611211565b6001600160a01b0316146111715760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161086a565b6000806119bf83610fb6565b9050806001600160a01b0316846001600160a01b031614806119e657506119e681856114db565b80611a0a5750836001600160a01b03166119ff846107cf565b6001600160a01b0316145b949350505050565b826001600160a01b0316611a2582610fb6565b6001600160a01b031614611a895760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161086a565b6001600160a01b038216611aeb5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161086a565b611af6600082611641565b6001600160a01b0383166000908152600660205260408120805460019290611b1f90849061370e565b90915550506001600160a01b0382166000908152600660205260408120805460019290611b4d9084906136f6565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60005b8151811015610e0b576000828281518110611bce57611bce613312565b60200260200101519050612710816040015161ffff1610611c015760405162461bcd60e51b815260040161086a90613725565b60208101516001600160a01b0316611c7a578051600090815260156020526040902080546001600160b01b03191690558051611c3f90601690612643565b5080516040519081527fa2870857763bd9ae76c957f869f16b31c18dd3bb4c7b4d3a4496dc5c57c657f99060200160405180910390a1611d42565b6040805180820182526020808401516001600160a01b0390811683528484015161ffff90811683850190815286516000908152601590945294909220925183549451909216600160a01b026001600160b01b03199094169116179190911790558051611ce89060169061264f565b50805160208083015160408085015181519485526001600160a01b039092169284019290925261ffff1682820152517f389b70fb0887f01e83784eb1c4c589f740eca53b00ed0f45e41db5d079719abb9181900360600190a15b5080611d4d81613362565b915050611bb1565b6000610695825490565b6060600a805461118290613412565b816001600160a01b0316836001600160a01b031603611dcb5760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b604482015260640161086a565b6001600160a01b03838116600081815260086020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60606006826005811115611e4e57611e4e6130b3565b60ff161115611e5c57600080fd5b816005811115611e6e57611e6e6130b3565b600003611e9857505060408051808201909152600781526604342455f4343360cc1b602082015290565b816005811115611eaa57611eaa6130b3565b600103611ed457505060408051808201909152600781526621a122afa2a1a960c91b602082015290565b816005811115611ee657611ee66130b3565b600203611f1157505060408051808201909152600881526721a122afa722a1a960c11b602082015290565b816005811115611f2357611f236130b3565b600303611f5157505060408051808201909152600b81526a4342455f4e4543525f485360a81b602082015290565b816005811115611f6357611f636130b3565b600403611f8c57505060408051808201909152600681526521a122afa82960d11b602082015290565b50506040805180820190915260098152684342455f50525f485360b81b602082015290565b919050565b611fc1848484611a12565b611fcd8484848461265b565b6107355760405162461bcd60e51b815260040161086a9061374a565b6060816000036120105750506040805180820190915260018152600360fc1b602082015290565b8160005b811561203a578061202481613362565b91506120339050600a836133fe565b9150612014565b6000816001600160401b0381111561205457612054612adc565b6040519080825280601f01601f19166020018201604052801561207e576020820181803683370190505b5090505b8415611a0a5761209360018361370e565b91506120a0600a8661379c565b6120ab9060306136f6565b60f81b8183815181106120c0576120c0613312565b60200101906001600160f81b031916908160001a9053506120e2600a866133fe565b9450612082565b60606000600d80546120fa90613412565b90501161219157600c805461210e90613412565b80601f016020809104026020016040519081016040528092919081815260200182805461213a90613412565b80156121875780601f1061215c57610100808354040283529160200191612187565b820191906000526020600020905b81548152906001019060200180831161216a57829003601f168201915b5050505050610695565b600d61219c83611fe9565b600e6040516020016121b093929190613823565b60405160208183030381529060405292915050565b60135460009060ff166121fa576121da611211565b6001600160a01b0316826001600160a01b0316036121fa57506001610695565b6001600160a01b0380841660009081526008602090815260408083209386168352929052205460ff166114e7565b612710816020015161ffff16106122515760405162461bcd60e51b815260040161086a90613725565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601480546001600160b01b031916909217600160a01b9091021790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe41926122c8929161319b565b60405180910390a150565b60008260000182815481106122ea576122ea613312565b9060005260206000200154905092915050565b6000908152600560205260409020546001600160a01b0316151590565b600054610100900460ff166123415760405162461bcd60e51b815260040161086a906136ab565b61235163b964efe960e01b61276a565b61103c630c934a3560e31b61276a565b600054610100900460ff166123885760405162461bcd60e51b815260040161086a906136ab565b60096123948482613494565b50600a6123a18382613494565b50600b6123ae8282613494565b506123bf633d96f4ff60e11b61276a565b6123cf6380ac58cd60e01b61276a565b61091d635b5e139f60e01b61276a565b600054610100900460ff166124065760405162461bcd60e51b815260040161086a906136ab565b600c6124128382613494565b50600d61241f8282613494565b50604080518082019091526005815264173539b7b760d91b6020820152600e906124499082613494565b5061245a631f2f406b60e01b61276a565b610e0b635b5e139f60e01b61276a565b600054610100900460ff166124915760405162461bcd60e51b815260040161086a906136ab565b60108190556124a66330f487b560e11b61276a565b61150d6380ac58cd60e01b61276a565b600054610100900460ff166124dd5760405162461bcd60e51b815260040161086a906136ab565b611171631aa1577160e11b61276a565b600054610100900460ff166125145760405162461bcd60e51b815260040161086a906136ab565b61117163948e2d5360e01b61276a565b600054610100900460ff1661254b5760405162461bcd60e51b815260040161086a906136ab565b61255b633a47bf5160e11b61276a565b61256b63152a902d60e11b61276a565b61257b63c69dbd8f60e01b61276a565b61258b63656cb66560e11b61276a565b604080518082019091526001600160a01b038316815261ffff8216602082015261091d81612228565b600054610100900460ff1661147a5760405162461bcd60e51b815260040161086a906136ab565b600054610100900460ff166126025760405162461bcd60e51b815260040161086a906136ab565b611171632a7c3e4960e01b61276a565b610e0b8282604051806020016040528060008152506127eb565b6012805490600061263c83613362565b9190505550565b60006114e7838361281e565b60006114e78383612911565b600061266f846001600160a01b03166115a8565b1561275f57836001600160a01b031663150b7a0261268b611637565b8786866040518563ffffffff1660e01b81526004016126ad9493929190613856565b6020604051808303816000875af19250505080156126e8575060408051601f3d908101601f191682019092526126e591810190613893565b60015b612745573d808015612716576040519150601f19603f3d011682016040523d82523d6000602084013e61271b565b606091505b50805160000361273d5760405162461bcd60e51b815260040161086a9061374a565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611a0a565b506001949350505050565b6001600160e01b031980821690036127c35760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b604482015260640161086a565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b6127f58383612960565b612802600084848461265b565b61091d5760405162461bcd60e51b815260040161086a9061374a565b6000818152600183016020526040812054801561290757600061284260018361370e565b85549091506000906128569060019061370e565b90508181146128bb57600086600001828154811061287657612876613312565b906000526020600020015490508087600001848154811061289957612899613312565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806128cc576128cc6138b0565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610695565b6000915050610695565b600081815260018301602052604081205461295857508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610695565b506000610695565b6001600160a01b0382166129b65760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161086a565b6129bf816122fd565b15612a0b5760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b604482015260640161086a565b6001600160a01b0382166000908152600660205260408120805460019290612a349084906136f6565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b03198116811461150d57600080fd5b600060208284031215612aba57600080fd5b81356114e781612a92565b80356001600160a01b0381168114611fb157600080fd5b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b0381118282101715612b1557612b15612adc565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612b4357612b43612adc565b604052919050565b60006001600160401b03821115612b6457612b64612adc565b5060051b60200190565b600082601f830112612b7f57600080fd5b81356020612b94612b8f83612b4b565b612b1b565b82815260059290921b84018101918181019086841115612bb357600080fd5b8286015b84811015612bce5780358352918301918301612bb7565b509695505050505050565b600080600060608486031215612bee57600080fd5b612bf784612ac5565b9250612c0560208501612ac5565b915060408401356001600160401b03811115612c2057600080fd5b612c2c86828701612b6e565b9150509250925092565b600060208284031215612c4857600080fd5b5035919050565b60005b83811015612c6a578181015183820152602001612c52565b838111156107355750506000910152565b60008151808452612c93816020860160208601612c4f565b601f01601f19169290920160200192915050565b6020815260006114e76020830184612c7b565b6001600160a01b0391909116815260200190565b60008060408385031215612ce157600080fd5b612cea83612ac5565b946020939093013593505050565b60006001600160401b03831115612d1157612d11612adc565b612d24601f8401601f1916602001612b1b565b9050828152838383011115612d3857600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6057600080fd5b6114e783833560208501612cf8565b600082601f830112612d8057600080fd5b81356020612d90612b8f83612b4b565b82815260059290921b84018101918181019086841115612daf57600080fd5b8286015b84811015612bce57612dc481612ac5565b8352918301918301612db3565b803561ffff81168114611fb157600080fd5b803560068110611fb157600080fd5b60008060408385031215612e0557600080fd5b82356001600160401b0380821115612e1c57600080fd5b908401906101808287031215612e3157600080fd5b612e39612af2565b823582811115612e4857600080fd5b612e5488828601612d4f565b825250602083013582811115612e6957600080fd5b612e7588828601612d4f565b602083015250604083013582811115612e8d57600080fd5b612e9988828601612d4f565b604083015250606083013582811115612eb157600080fd5b612ebd88828601612d4f565b606083015250608083013582811115612ed557600080fd5b612ee188828601612d4f565b60808301525060a083013582811115612ef957600080fd5b612f0588828601612d6f565b60a08301525060c083013582811115612f1d57600080fd5b612f2988828601612b6e565b60c08301525060e083013560e08201526101009150612f49828401612ac5565b828201526101209150612f5d828401612dd1565b828201526101409150612f71828401612ac5565b828201526101609150612f85828401612de3565b82820152809450505050612f9b60208401612ac5565b90509250929050565b600080600060608486031215612fb957600080fd5b612fc284612ac5565b9250612fd060208501612ac5565b9150604084013590509250925092565b60008060408385031215612ff357600080fd5b50508035926020909101359150565b60008060006060848603121561301757600080fd5b83356001600160401b038082111561302e57600080fd5b61303a87838801612d6f565b9450602086013591508082111561305057600080fd5b61305c87838801612d6f565b9350604086013591508082111561307257600080fd5b50612c2c86828701612b6e565b60006020828403121561309157600080fd5b81356001600160401b038111156130a757600080fd5b611a0a84828501612d4f565b634e487b7160e01b600052602160045260246000fd5b60208101600683106130eb57634e487b7160e01b600052602160045260246000fd5b91905290565b6000806020838503121561310457600080fd5b82356001600160401b038082111561311b57600080fd5b818501915085601f83011261312f57600080fd5b81358181111561313e57600080fd5b86602060608302850101111561315357600080fd5b60209290920196919550909350505050565b60006020828403121561317757600080fd5b6114e782612ac5565b60006020828403121561319257600080fd5b6114e782612de3565b6001600160a01b0392909216825261ffff16602082015260400190565b600080604083850312156131cb57600080fd5b6131d483612ac5565b9150602083013580151581146131e957600080fd5b809150509250929050565b6000806000806080858703121561320a57600080fd5b61321385612ac5565b935061322160208601612ac5565b92506040850135915060608501356001600160401b0381111561324357600080fd5b8501601f8101871361325457600080fd5b61326387823560208401612cf8565b91505092959194509250565b602080825282518282018190526000919060409081850190868401855b828110156132c357815180516001600160a01b031685528601516001600160601b031686850152928401929085019060010161328c565b5091979650505050505050565b600080604083850312156132e357600080fd5b6132ec83612ac5565b9150612f9b60208401612ac5565b60006040828403121561330c57600080fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b600052601160045260246000fd5b6000600182016133745761337461334c565b5060010190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b60008160001904831182151516156133e3576133e361334c565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261340d5761340d6133e8565b500490565b600181811c9082168061342657607f821691505b60208210810361330c57634e487b7160e01b600052602260045260246000fd5b601f82111561091d57600081815260208120601f850160051c8101602086101561346d5750805b601f850160051c820191505b8181101561348c57828155600101613479565b505050505050565b81516001600160401b038111156134ad576134ad612adc565b6134c1816134bb8454613412565b84613446565b602080601f8311600181146134f657600084156134de5750858301515b600019600386901b1c1916600185901b17855561348c565b600085815260208120601f198616915b8281101561352557888601518255948401946001909101908401613506565b50858210156135435787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060828403121561356557600080fd5b604051606081018181106001600160401b038211171561358757613587612adc565b6040528235815261359a60208401612ac5565b60208201526135ab60408401612dd1565b60408201529392505050565b6000602082840312156135c957600080fd5b5051919050565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b602080825260069082015265232927ad22a760d11b604082015260600190565b60008351613634818460208801612c4f565b835190830190613648818360208801612c4f565b01949350505050565b60006040828403121561366357600080fd5b604051604081018181106001600160401b038211171561368557613685612adc565b60405261369183612ac5565b815261369f60208401612dd1565b60208201529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600082198211156137095761370961334c565b500190565b6000828210156137205761372061334c565b500390565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6000826137ab576137ab6133e8565b500690565b600081546137bd81613412565b600182811680156137d557600181146137ea57613819565b60ff1984168752821515830287019450613819565b8560005260208060002060005b858110156138105781548a8201529084019082016137f7565b50505082870194505b5050505092915050565b600061382f82866137b0565b845161383f818360208901612c4f565b61384b818301866137b0565b979650505050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061388990830184612c7b565b9695505050505050565b6000602082840312156138a557600080fd5b81516114e781612a92565b634e487b7160e01b600052603160045260246000fdfe61723a2f2f5f44396b4e3157724e576243713535425341475262544234625333763851415054596d42546853625833412fa2646970667358221220d5e8b8ddf78359b0b5fd06e30f8258d5154e8f267c23e93443223f5494880a9764736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/presets/ERC721OneOfOneCollection":{"address":{"1":"0xff7cbd71bddc5a51bf68054e2f4f0b7df9273e1b","3":"0xa95222e729bEE6E32E23D2AA97cED56cc9b719CA","4":"0xa248486C80B933BCC494a2eA5C217E38f2862B98","5":"0x48F9152b91103E158029921C59Ff844d30468288","25":"0x6910176Ba412F3c3FD94630AA56F1573B9d79B7B","56":"0x26aaa1F0Be85042402C97766EAC22357AeCCEbc6","66":"0xb273f563F6fD19a4B48c027456EBc53c58a661c5","97":"0x2e43759e52d69Eb4561541f6F7A6C4E82CD2448A","137":"0x3C3FD4F5794DC0AEaC2387DAdc4F336a0993866a","250":"0x3E368e34Ae2CD9F2617F397cE6B6310fE1cAEaed","280":"0xcFa78184d7549d57eFc9ab96B6456becf1A07F4D","4002":"0x3E368e34Ae2CD9F2617F397cE6B6310fE1cAEaed","9000":"0xa79B21B345846224b307212FB7278b2e74Ea3295","42161":"0xB3C2dE2f1972f2f1cF3BD5EAC67dECFDA6EF739d","43113":"0xeAE43cFE24194F531A4Dc06d4bb93C39F2C6c665","43114":"0xBB0AA646E8D63d920a7Ab1C96Ba082cbF075DcDA","421611":"0xb6008DA1e10C37F3834F0bF466a168cd1Fc5A6A5","arbitrumOne":"0xB3C2dE2f1972f2f1cF3BD5EAC67dECFDA6EF739d","arbitrumTestnet":"0xb6008DA1e10C37F3834F0bF466a168cd1Fc5A6A5","avalanche":"0xBB0AA646E8D63d920a7Ab1C96Ba082cbF075DcDA","avalancheFujiTestnet":"0xeAE43cFE24194F531A4Dc06d4bb93C39F2C6c665","bsc":"0x26aaa1F0Be85042402C97766EAC22357AeCCEbc6","bscTestnet":"0x2e43759e52d69Eb4561541f6F7A6C4E82CD2448A","cronos":"0x6910176Ba412F3c3FD94630AA56F1573B9d79B7B","evmosTestnet":"0xa79B21B345846224b307212FB7278b2e74Ea3295","ftmTestnet":"0x3E368e34Ae2CD9F2617F397cE6B6310fE1cAEaed","goerli":"0x48F9152b91103E158029921C59Ff844d30468288","mainnet":"0xff7cbd71bddc5a51bf68054e2f4f0b7df9273e1b","okcMainnet":"0xb273f563F6fD19a4B48c027456EBc53c58a661c5","opera":"0x3E368e34Ae2CD9F2617F397cE6B6310fE1cAEaed","polygon":"0x3C3FD4F5794DC0AEaC2387DAdc4F336a0993866a","rinkeby":"0xa248486C80B933BCC494a2eA5C217E38f2862B98","ropsten":"0xa95222e729bEE6E32E23D2AA97cED56cc9b719CA","zksyncTestnet":"0xcFa78184d7549d57eFc9ab96B6456becf1A07F4D"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721OneOfOneCollection","sourceName":"contracts/collections/ERC721/presets/ERC721OneOfOneCollection.sol","abi":[{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"internalType":"address","name":"defaultRoyaltyAddress","type":"address"},{"internalType":"uint16","name":"defaultRoyaltyBps","type":"uint16"},{"internalType":"address","name":"trustedForwarder","type":"address"},{"internalType":"enum LicenseVersion","name":"licenseVersion","type":"uint8"}],"internalType":"struct ERC721OneOfOneCollection.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"DefaultRoyaltySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"TokenRoyaltyRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"TokenRoyaltySet","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"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultRoyalty","outputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastFrozenTokenId","type":"uint256"}],"name":"freezeTokenURIs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getInfo","outputs":[{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"uint256","name":"_totalSupply","type":"uint256"},{"internalType":"uint256","name":"_senderBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getRaribleV2Royalties","outputs":[{"components":[{"internalType":"address payable","name":"account","type":"address"},{"internalType":"uint96","name":"value","type":"uint96"}],"internalType":"struct LibPart.Part[]","name":"result","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenRoyaltiesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getTokenRoyaltyByIndex","outputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"internalType":"address","name":"defaultRoyaltyAddress","type":"address"},{"internalType":"uint16","name":"defaultRoyaltyBps","type":"uint16"},{"internalType":"address","name":"trustedForwarder","type":"address"},{"internalType":"enum LicenseVersion","name":"licenseVersion","type":"uint8"}],"internalType":"struct ERC721OneOfOneCollection.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","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":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastFrozenTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersion","outputs":[{"internalType":"enum LicenseVersion","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersionLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"string[]","name":"tokenURIs","type":"string[]"}],"name":"mintWithTokenURIsByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"string[]","name":"tokenURIs","type":"string[]"}],"name":"mintWithTokenURIsByRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyalty","name":"royalty","type":"tuple"}],"name":"setDefaultRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum LicenseVersion","name":"_licenseVersion","type":"uint8"}],"name":"setLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig[]","name":"royaltyConfigs","type":"tuple[]"}],"name":"setTokenRoyalties","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"tokenURI","type":"string"}],"name":"setTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"trustedForwarder","type":"address"}],"name":"setTrustedForwarder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040526000600f553480156200001657600080fd5b506040516200489938038062004899833981016040819052620000399162000b75565b8051602082015160046200005662000050620000b8565b620000d4565b6002805482919060ff1916600183600581111562000078576200007862000c8e565b0217905550600490506200008d838262000d32565b5060056200009c828262000d32565b505050620000b181336200012f60201b60201c565b5062000e49565b6000620000cf6200031e60201b620014a11760201c565b905090565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620001505750600054600160ff909116105b806200018057506200016d306200035660201b620014c31760201c565b15801562000180575060005460ff166001145b620001e95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156200020d576000805461ff0019166101001790555b6200021a60008362000365565b620002467f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68362000365565b6200025182620000d4565b60e0830151620002619062000375565b8251602084015160408501516200027a929190620003ad565b62000284620003e4565b6200028e6200041a565b620002986200044e565b6060830151620002a89062000482565b620002c283608001518460a00151620004b760201b60201c565b60c0830151620002d290620004ed565b801562000319576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6016546000906001600160a01b0316330362000341575060131936013560601c90565b620000cf6200052260201b620014d21760201c565b6001600160a01b03163b151590565b62000371828262000526565b5050565b600054610100900460ff166200039f5760405162461bcd60e51b8152600401620001e09062000dfe565b620003aa81620005cc565b50565b600054610100900460ff16620003d75760405162461bcd60e51b8152600401620001e09062000dfe565b6200031983838362000644565b600054610100900460ff166200040e5760405162461bcd60e51b8152600401620001e09062000dfe565b62000418620006d1565b565b600054610100900460ff16620004445760405162461bcd60e51b8152600401620001e09062000dfe565b620004186200070d565b600054610100900460ff16620004785760405162461bcd60e51b8152600401620001e09062000dfe565b6200041862000749565b600054610100900460ff16620004ac5760405162461bcd60e51b8152600401620001e09062000dfe565b620003aa8162000785565b600054610100900460ff16620004e15760405162461bcd60e51b8152600401620001e09062000dfe565b620003718282620007d8565b600054610100900460ff16620005175760405162461bcd60e51b8152600401620001e09062000dfe565b620003aa8162000875565b3390565b60008281526003602090815260408083206001600160a01b038516845290915290205460ff16620003715760008281526003602090815260408083206001600160a01b03851684529091529020805460ff1916600117905562000588620000b8565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600054610100900460ff16620005f65760405162461bcd60e51b8152600401620001e09062000dfe565b6200060863b964efe960e01b620008c1565b6200061a630c934a3560e31b620008c1565b6002805482919060ff191660018360058111156200063c576200063c62000c8e565b021790555050565b600054610100900460ff166200066e5760405162461bcd60e51b8152600401620001e09062000dfe565b600a6200067c848262000d32565b50600b6200068b838262000d32565b50600c6200069a828262000d32565b50620006ad633d96f4ff60e11b620008c1565b620006bf6380ac58cd60e01b620008c1565b62000319635b5e139f60e01b620008c1565b600054610100900460ff16620006fb5760405162461bcd60e51b8152600401620001e09062000dfe565b62000418632929b36760e11b620008c1565b600054610100900460ff16620007375760405162461bcd60e51b8152600401620001e09062000dfe565b62000418631aa1577160e11b620008c1565b600054610100900460ff16620007735760405162461bcd60e51b8152600401620001e09062000dfe565b62000418630d169dbf60e31b620008c1565b600054610100900460ff16620007af5760405162461bcd60e51b8152600401620001e09062000dfe565b600d819055620007c66330f487b560e11b620008c1565b620003aa6380ac58cd60e01b620008c1565b600054610100900460ff16620008025760405162461bcd60e51b8152600401620001e09062000dfe565b62000814633a47bf5160e11b620008c1565b6200082663152a902d60e11b620008c1565b6200083863c69dbd8f60e01b620008c1565b6200084a63656cb66560e11b620008c1565b604080518082019091526001600160a01b038316815261ffff82166020820152620003198162000945565b600054610100900460ff166200089f5760405162461bcd60e51b8152600401620001e09062000dfe565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160e01b031980821690036200091d5760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e74657266616365206964000000006044820152606401620001e0565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b612710816020015161ffff16106200098e5760405162461bcd60e51b815260206004820152600b60248201526a496e76616c69642062707360a81b6044820152606401620001e0565b60408051808201825282516001600160a01b03168082526020808501805161ffff169190930181905260128054600160a01b9092026001600160b01b03199092169092171790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe419262000a2092916001600160a01b0392909216825261ffff16602082015260400190565b60405180910390a150565b634e487b7160e01b600052604160045260246000fd5b60405161010081016001600160401b038111828210171562000a675762000a6762000a2b565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000a985762000a9862000a2b565b604052919050565b600082601f83011262000ab257600080fd5b81516001600160401b0381111562000ace5762000ace62000a2b565b602062000ae4601f8301601f1916820162000a6d565b828152858284870101111562000af957600080fd5b60005b8381101562000b1957858101830151828201840152820162000afc565b8381111562000b2b5760008385840101525b5095945050505050565b80516001600160a01b038116811462000b4d57600080fd5b919050565b805161ffff8116811462000b4d57600080fd5b80516006811062000b4d57600080fd5b60006020828403121562000b8857600080fd5b81516001600160401b038082111562000ba057600080fd5b90830190610100828603121562000bb657600080fd5b62000bc062000a41565b82518281111562000bd057600080fd5b62000bde8782860162000aa0565b82525060208301518281111562000bf457600080fd5b62000c028782860162000aa0565b60208301525060408301518281111562000c1b57600080fd5b62000c298782860162000aa0565b6040830152506060830151606082015262000c476080840162000b35565b608082015262000c5a60a0840162000b52565b60a082015262000c6d60c0840162000b35565b60c082015262000c8060e0840162000b65565b60e082015295945050505050565b634e487b7160e01b600052602160045260246000fd5b600181811c9082168062000cb957607f821691505b60208210810362000cda57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200031957600081815260208120601f850160051c8101602086101562000d095750805b601f850160051c820191505b8181101562000d2a5782815560010162000d15565b505050505050565b81516001600160401b0381111562000d4e5762000d4e62000a2b565b62000d668162000d5f845462000ca4565b8462000ce0565b602080601f83116001811462000d9e576000841562000d855750858301515b600019600386901b1c1916600185901b17855562000d2a565b600085815260208120601f198616915b8281101562000dcf5788860151825594840194600190910190840162000dae565b508582101562000dee5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b613a408062000e596000396000f3fe608060405234801561001057600080fd5b50600436106102825760003560e01c80637885fdc7116101585780637885fdc7146104fc5780637e9803421461052a5780638da5cb5b146105325780638e28cf981461053a57806391d148541461054d578063938e3d7b1461056057806394bb53f81461057357806395d89b4114610586578063a217fddf1461058e578063a22cb46514610596578063a341793b146105a9578063b88d4fde146105b1578063b89df8e8146105c4578063bf9b7a57146105cd578063c7db2893146105df578063c87b56dd146105e7578063cad96cca146105fa578063d53913931461061a578063d547741f1461062f578063d5abeb0114610642578063da7422281461064b578063dd89c6fa1461065e578063e8a3d48514610666578063e985e9c51461066e578063ef60ceaf14610681578063f2fde38b14610694578063f384702f146106a757600080fd5b806301ffc9a7146102875780630653aca5146102af57806306fdde03146102f1578063081812fc14610306578063095ea7b314610326578063162094c41461033b578063167446071461034e57806318160ddd1461035657806323b872dd14610368578063248a9ca31461037b5780632a55205a1461038e5780632ee774bd146103c05780632f2ff15d146103d35780633542aee2146103e657806336568abe146103f957806342842e0e1461040c5780634473f20a1461041f57806350a5292f146104325780635136dcc71461044c57806356c022bb1461045f578063572b6c05146104725780635a9b0b89146104855780636352211e146104a857806364ed2913146104bb5780636f8b44b0146104ce57806370a08231146104e1578063715018a6146104f4575b600080fd5b61029a610295366004612cff565b6106b4565b60405190151581526020015b60405180910390f35b6102c26102bd366004612d1c565b6106c5565b60408051825181526020808401516001600160a01b0316908201529181015161ffff16908201526060016102a6565b6102f961074a565b6040516102a69190612d8d565b610319610314366004612d1c565b610759565b6040516102a69190612da0565b610339610334366004612dcb565b610780565b005b610339610349366004612edb565b6108ac565b6103396108e3565b600f545b6040519081526020016102a6565b610339610376366004612f21565b6108fa565b61035a610389366004612d1c565b610932565b6103a161039c366004612f5d565b610947565b604080516001600160a01b0390931683526020830191909152016102a6565b6103396103ce366004612f7f565b610a0c565b6103396103e136600461305d565b610a71565b6103396103f4366004612dcb565b610a8d565b61033961040736600461305d565b610a9f565b61033961041a366004612f21565b610b29565b61033961042d366004612d1c565b610b44565b60025461043f9060ff1681565b6040516102a6919061309f565b61033961045a3660046130c7565b610b94565b601654610319906001600160a01b031681565b61029a61048036600461313b565b610bf7565b61048d610c0b565b604080519384526020840192909252908201526060016102a6565b6103196104b6366004612d1c565b610d06565b6103396104c9366004613165565b610d3b565b6103396104dc366004612d1c565b610db3565b61035a6104ef36600461313b565b610e29565b610339610eaf565b60125461051c906001600160a01b03811690600160a01b900461ffff1682565b6040516102a6929190613180565b61035a610ec3565b610319610ecf565b610339610548366004612f7f565b610ee4565b61029a61055b36600461305d565b610f73565b61033961056e36600461319d565b610f9e565b6103396105813660046131e3565b610fb2565b6102f9611157565b61035a600081565b6103396105a43660046132ef565b611161565b6102f9611173565b6103396105bf36600461332b565b611185565b61035a60115481565b60025461029a90610100900460ff1681565b6102f96111c4565b6102f96105f5366004612d1c565b611224565b61060d610608366004612d1c565b61122f565b6040516102a691906133a6565b61035a6000805160206139eb83398151915281565b61033961063d36600461305d565b6112ea565b61035a600d5481565b61033961065936600461313b565b611306565b610339611330565b6102f9611349565b61029a61067c366004613407565b6113db565b61033961068f366004613431565b611409565b6103396106a236600461313b565b61142b565b600e5461029a9060ff1681565b60006106bf826114d6565b92915050565b60408051606081018252600080825260208201819052918101829052906106ed601484611512565b6000818152601360209081526040918290208251808401845290546001600160a01b03808216835261ffff600160a01b90920482168385019081528551606081018752968752925116928501929092525116908201529392505050565b6060610754611525565b905090565b600061076482611534565b506000908152600860205260409020546001600160a01b031690565b600061078b82610d06565b9050806001600160a01b0316836001600160a01b0316036107fd5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661080f611559565b6001600160a01b0316148061082b575061082b8161067c611559565b61089d5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016107f4565b6108a78383611563565b505050565b6108b46115d1565b60115482116108d55760405162461bcd60e51b81526004016107f490613449565b6108df8282611640565b5050565b6108eb6115d1565b600e805460ff19166001179055565b61090b610905611559565b826116c4565b6109275760405162461bcd60e51b81526004016107f490613469565b6108a7838383611723565b60009081526003602052604090206001015490565b60008281526013602052604081205481906001600160a01b0316156109ac576000848152601360205260409020546001600160a01b038116906127109061099990600160a01b900461ffff16866134cd565b6109a39190613502565b91509150610a05565b6012546001600160a01b0316158015906109d25750601254600160a01b900461ffff1615155b156109fe576012546001600160a01b038116906127109061099990600160a01b900461ffff16866134cd565b5060009050805b9250929050565b610a146115d1565b600f54610a2184846118bf565b60005b83811015610a6a57610a58610a398284613516565b848381518110610a4b57610a4b61352e565b6020026020010151611640565b80610a6281613544565b915050610a24565b5050505050565b610a7a82610932565b610a8381611948565b6108a78383611959565b610a956115d1565b6108df82826118bf565b610aa7611559565b6001600160a01b0316816001600160a01b031614610b1f5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016107f4565b6108df82826119e0565b6108a783838360405180602001604052806000815250611185565b610b4c6115d1565b6011548111610b8f5760405162461bcd60e51b815260206004820152600f60248201526e43414e4e4f545f554e465245455a4560881b60448201526064016107f4565b601155565b610b9c6115d1565b6108df8282808060200260200160405190810160405280939291908181526020016000905b82821015610bed57610bde6060830286013681900381019061355d565b81526020019060010190610bc1565b5050505050611a65565b6016546001600160a01b0391821691161490565b600080808080610c19611559565b6001600160a01b031614610c9557306370a08231610c35611559565b6040518263ffffffff1660e01b8152600401610c519190612da0565b602060405180830381865afa158015610c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9291906135c1565b90505b600d54306001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfa91906135c1565b90959094509092509050565b6000818152600660205260408120546001600160a01b0316806106bf5760405162461bcd60e51b81526004016107f4906135da565b610d436115d1565b600254610100900460ff1615610d8c5760405162461bcd60e51b815260206004820152600e60248201526d131250d15394d157d313d0d2d15160921b60448201526064016107f4565b6002805482919060ff19166001836005811115610dab57610dab613089565b021790555050565b610dbb6115d1565b600e5460ff1615610dde5760405162461bcd60e51b81526004016107f490613449565b600f54811015610e245760405162461bcd60e51b81526020600482015260116024820152704c4f5745525f5448414e5f535550504c5960781b60448201526064016107f4565b600d55565b60006001600160a01b038216610e935760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016107f4565b506001600160a01b031660009081526007602052604090205490565b610eb76115d1565b610ec16000611c0c565b565b60006107546014611c67565b6000546201000090046001600160a01b031690565b610efe6000805160206139eb83398151915261055b611559565b610f3c5760405162461bcd60e51b815260206004820152600f60248201526e4e4f545f4d494e5445525f524f4c4560881b60448201526064016107f4565b600f54610f4984846118bf565b60005b83811015610a6a57610f61610a398284613516565b80610f6b81613544565b915050610f4c565b60009182526003602090815260408084206001600160a01b0393909316845291905290205460ff1690565b610fa66115d1565b600c6108df828261368e565b600054610100900460ff1615808015610fd25750600054600160ff909116105b80610ff35750610fe1306114c3565b158015610ff3575060005460ff166001145b6110565760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107f4565b6000805460ff191660011790558015611079576000805461ff0019166101001790555b611084600083611c71565b61109c6000805160206139eb83398151915283611c71565b6110a582611c0c565b6110b28360e00151611c7b565b6110c9836000015184602001518560400151611cab565b6110d1611cdd565b6110d9611d0c565b6110e1611d3b565b6110ee8360600151611d6a565b61110083608001518460a00151611d9a565b61110d8360c00151611dcb565b80156108a7576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6060610754611dfb565b6108df61116c611559565b8383611e0a565b6002546060906107549060ff16611ed4565b611196611190611559565b836116c4565b6111b25760405162461bcd60e51b81526004016107f490613469565b6111be84848484612052565b50505050565b60606040518060600160405280603181526020016139ba603191396002546111ff9060ff1660058111156111fa576111fa613089565b612085565b60405160200161121092919061374d565b604051602081830303815290604052905090565b60606106bf82612185565b604080516001808252818301909252606091816020015b604080518082019091526000808252602082015281526020019060019003908161124657505060125481519192506001600160a01b031690829060009061128f5761128f61352e565b60209081029190910101516001600160a01b039190911690526012548151600160a01b90910461ffff169082906000906112cb576112cb61352e565b6020908102919091018101516001600160601b03909216910152919050565b6112f382610932565b6112fc81611948565b6108a783836119e0565b61130e6115d1565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6113386115d1565b6002805461ff001916610100179055565b6060600c80546113589061360c565b80601f01602080910402602001604051908101604052809291908181526020018280546113849061360c565b80156113d15780601f106113a6576101008083540402835291602001916113d1565b820191906000526020600020905b8154815290600101906020018083116113b457829003601f168201915b5050505050905090565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205460ff1690565b6114116115d1565b6114286114233683900383018361377c565b612190565b50565b6114336115d1565b6001600160a01b0381166114985760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107f4565b61142881611c0c565b60006114ac33610bf7565b156114be575060131936013560601c90565b503390565b6001600160a01b03163b151590565b3390565b60006301ffc9a760e01b6001600160e01b0319831614806106bf5750506001600160e01b03191660009081526001602052604090205460ff1690565b600061151e838361223b565b9392505050565b6060600a80546113589061360c565b61153d81612265565b6114285760405162461bcd60e51b81526004016107f4906135da565b60006107546114a1565b600081815260086020526040902080546001600160a01b0319166001600160a01b038416908117909155819061159882610d06565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6115d9611559565b6001600160a01b03166115ea610ecf565b6001600160a01b031614610ec15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f4565b61164982612265565b6116ac5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016107f4565b60008281526010602052604090206108a7828261368e565b6000806116d083610d06565b9050806001600160a01b0316846001600160a01b031614806116f757506116f781856113db565b8061171b5750836001600160a01b031661171084610759565b6001600160a01b0316145b949350505050565b826001600160a01b031661173682610d06565b6001600160a01b03161461179a5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016107f4565b6001600160a01b0382166117fc5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016107f4565b611807600082611563565b6001600160a01b03831660009081526007602052604081208054600192906118309084906137d6565b90915550506001600160a01b038216600090815260076020526040812080546001929061185e908490613516565b909155505060008181526006602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600d54816118cc600f5490565b6118d69190613516565b11156119155760405162461bcd60e51b815260206004820152600e60248201526d455843454544535f535550504c5960901b60448201526064016107f4565b60005b818110156108a757600f5461192d8482612282565b61193561229c565b508061194081613544565b915050611918565b61142881611954611559565b6122b3565b6119638282610f73565b6108df5760008281526003602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561199c611559565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6119ea8282610f73565b156108df5760008281526003602090815260408083206001600160a01b03851684529091529020805460ff19169055611a21611559565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b60005b81518110156108df576000828281518110611a8557611a8561352e565b60200260200101519050612710816040015161ffff1610611ab85760405162461bcd60e51b81526004016107f4906137ed565b60208101516001600160a01b0316611b31578051600090815260136020526040902080546001600160b01b03191690558051611af690601490612317565b5080516040519081527fa2870857763bd9ae76c957f869f16b31c18dd3bb4c7b4d3a4496dc5c57c657f99060200160405180910390a1611bf9565b6040805180820182526020808401516001600160a01b0390811683528484015161ffff90811683850190815286516000908152601390945294909220925183549451909216600160a01b026001600160b01b03199094169116179190911790558051611b9f90601490612323565b50805160208083015160408085015181519485526001600160a01b039092169284019290925261ffff1682820152517f389b70fb0887f01e83784eb1c4c589f740eca53b00ed0f45e41db5d079719abb9181900360600190a15b5080611c0481613544565b915050611a68565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b60006106bf825490565b6108df8282611959565b600054610100900460ff16611ca25760405162461bcd60e51b81526004016107f490613812565b6114288161232f565b600054610100900460ff16611cd25760405162461bcd60e51b81526004016107f490613812565b6108a7838383612376565b600054610100900460ff16611d045760405162461bcd60e51b81526004016107f490613812565b610ec16123f4565b600054610100900460ff16611d335760405162461bcd60e51b81526004016107f490613812565b610ec161242b565b600054610100900460ff16611d625760405162461bcd60e51b81526004016107f490613812565b610ec1612462565b600054610100900460ff16611d915760405162461bcd60e51b81526004016107f490613812565b61142881612499565b600054610100900460ff16611dc15760405162461bcd60e51b81526004016107f490613812565b6108df82826124e5565b600054610100900460ff16611df25760405162461bcd60e51b81526004016107f490613812565b61142881612575565b6060600b80546113589061360c565b816001600160a01b0316836001600160a01b031603611e675760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b60448201526064016107f4565b6001600160a01b03838116600081815260096020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60606006826005811115611eea57611eea613089565b60ff161115611ef857600080fd5b816005811115611f0a57611f0a613089565b600003611f3457505060408051808201909152600781526604342455f4343360cc1b602082015290565b816005811115611f4657611f46613089565b600103611f7057505060408051808201909152600781526621a122afa2a1a960c91b602082015290565b816005811115611f8257611f82613089565b600203611fad57505060408051808201909152600881526721a122afa722a1a960c11b602082015290565b816005811115611fbf57611fbf613089565b600303611fed57505060408051808201909152600b81526a4342455f4e4543525f485360a81b602082015290565b816005811115611fff57611fff613089565b60040361202857505060408051808201909152600681526521a122afa82960d11b602082015290565b50506040805180820190915260098152684342455f50525f485360b81b602082015290565b919050565b61205d848484611723565b6120698484848461259c565b6111be5760405162461bcd60e51b81526004016107f49061385d565b6060816000036120ac5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156120d657806120c081613544565b91506120cf9050600a83613502565b91506120b0565b6000816001600160401b038111156120f0576120f0612df5565b6040519080825280601f01601f19166020018201604052801561211a576020820181803683370190505b5090505b841561171b5761212f6001836137d6565b915061213c600a866138af565b612147906030613516565b60f81b81838151811061215c5761215c61352e565b60200101906001600160f81b031916908160001a90535061217e600a86613502565b945061211e565b60606106bf826126ab565b612710816020015161ffff16106121b95760405162461bcd60e51b81526004016107f4906137ed565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601280546001600160b01b031916909217600160a01b9091021790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe41926122309291613180565b60405180910390a150565b60008260000182815481106122525761225261352e565b9060005260206000200154905092915050565b6000908152600660205260409020546001600160a01b0316151590565b6108df8282604051806020016040528060008152506127b3565b600f80549060006122ac83613544565b9190505550565b6122bd8282610f73565b6108df576122d5816001600160a01b031660146127e6565b6122e08360206127e6565b6040516020016122f19291906138c3565b60408051601f198184030181529082905262461bcd60e51b82526107f491600401612d8d565b600061151e8383612981565b600061151e8383612a74565b600054610100900460ff166123565760405162461bcd60e51b81526004016107f490613812565b61236663b964efe960e01b612ac3565b610d8c630c934a3560e31b612ac3565b600054610100900460ff1661239d5760405162461bcd60e51b81526004016107f490613812565b600a6123a9848261368e565b50600b6123b6838261368e565b50600c6123c3828261368e565b506123d4633d96f4ff60e11b612ac3565b6123e46380ac58cd60e01b612ac3565b6108a7635b5e139f60e01b612ac3565b600054610100900460ff1661241b5760405162461bcd60e51b81526004016107f490613812565b610ec1632929b36760e11b612ac3565b600054610100900460ff166124525760405162461bcd60e51b81526004016107f490613812565b610ec1631aa1577160e11b612ac3565b600054610100900460ff166124895760405162461bcd60e51b81526004016107f490613812565b610ec1630d169dbf60e31b612ac3565b600054610100900460ff166124c05760405162461bcd60e51b81526004016107f490613812565b600d8190556124d56330f487b560e11b612ac3565b6114286380ac58cd60e01b612ac3565b600054610100900460ff1661250c5760405162461bcd60e51b81526004016107f490613812565b61251c633a47bf5160e11b612ac3565b61252c63152a902d60e11b612ac3565b61253c63c69dbd8f60e01b612ac3565b61254c63656cb66560e11b612ac3565b604080518082019091526001600160a01b038316815261ffff821660208201526108a781612190565b600054610100900460ff1661130e5760405162461bcd60e51b81526004016107f490613812565b60006125b0846001600160a01b03166114c3565b156126a057836001600160a01b031663150b7a026125cc611559565b8786866040518563ffffffff1660e01b81526004016125ee9493929190613932565b6020604051808303816000875af1925050508015612629575060408051601f3d908101601f191682019092526126269181019061396f565b60015b612686573d808015612657576040519150601f19603f3d011682016040523d82523d6000602084013e61265c565b606091505b50805160000361267e5760405162461bcd60e51b81526004016107f49061385d565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061171b565b506001949350505050565b60606126b682611534565b600082815260106020526040812080546126cf9061360c565b80601f01602080910402602001604051908101604052809291908181526020018280546126fb9061360c565b80156127485780601f1061271d57610100808354040283529160200191612748565b820191906000526020600020905b81548152906001019060200180831161272b57829003601f168201915b50505050509050600061276660408051602081019091526000815290565b90508051600003612778575092915050565b8151156127aa57808260405160200161279292919061374d565b60405160208183030381529060405292505050919050565b61171b84612b44565b6127bd8383612bb7565b6127ca600084848461259c565b6108a75760405162461bcd60e51b81526004016107f49061385d565b606060006127f58360026134cd565b612800906002613516565b6001600160401b0381111561281757612817612df5565b6040519080825280601f01601f191660200182016040528015612841576020820181803683370190505b509050600360fc1b8160008151811061285c5761285c61352e565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061288b5761288b61352e565b60200101906001600160f81b031916908160001a90535060006128af8460026134cd565b6128ba906001613516565b90505b6001811115612932576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106128ee576128ee61352e565b1a60f81b8282815181106129045761290461352e565b60200101906001600160f81b031916908160001a90535060049490941c9361292b8161398c565b90506128bd565b50831561151e5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107f4565b60008181526001830160205260408120548015612a6a5760006129a56001836137d6565b85549091506000906129b9906001906137d6565b9050818114612a1e5760008660000182815481106129d9576129d961352e565b90600052602060002001549050808760000184815481106129fc576129fc61352e565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612a2f57612a2f6139a3565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506106bf565b60009150506106bf565b6000818152600183016020526040812054612abb575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556106bf565b5060006106bf565b6001600160e01b03198082169003612b1c5760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b60448201526064016107f4565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b6060612b4f82611534565b6000612b6660408051602081019091526000815290565b90506000815111612b86576040518060200160405280600081525061151e565b80612b9084612085565b604051602001612ba192919061374d565b6040516020818303038152906040529392505050565b6001600160a01b038216612c0d5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016107f4565b612c1681612265565b15612c625760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b60448201526064016107f4565b6001600160a01b0382166000908152600760205260408120805460019290612c8b908490613516565b909155505060008181526006602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b03198116811461142857600080fd5b600060208284031215612d1157600080fd5b813561151e81612ce9565b600060208284031215612d2e57600080fd5b5035919050565b60005b83811015612d50578181015183820152602001612d38565b838111156111be5750506000910152565b60008151808452612d79816020860160208601612d35565b601f01601f19169290920160200192915050565b60208152600061151e6020830184612d61565b6001600160a01b0391909116815260200190565b80356001600160a01b038116811461204d57600080fd5b60008060408385031215612dde57600080fd5b612de783612db4565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60405161010081016001600160401b0381118282101715612e2e57612e2e612df5565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612e5c57612e5c612df5565b604052919050565b60006001600160401b03831115612e7d57612e7d612df5565b612e90601f8401601f1916602001612e34565b9050828152838383011115612ea457600080fd5b828260208301376000602084830101529392505050565b600082601f830112612ecc57600080fd5b61151e83833560208501612e64565b60008060408385031215612eee57600080fd5b8235915060208301356001600160401b03811115612f0b57600080fd5b612f1785828601612ebb565b9150509250929050565b600080600060608486031215612f3657600080fd5b612f3f84612db4565b9250612f4d60208501612db4565b9150604084013590509250925092565b60008060408385031215612f7057600080fd5b50508035926020909101359150565b600080600060608486031215612f9457600080fd5b612f9d84612db4565b9250602080850135925060408501356001600160401b0380821115612fc157600080fd5b818701915087601f830112612fd557600080fd5b813581811115612fe757612fe7612df5565b8060051b612ff6858201612e34565b918252838101850191858101908b84111561301057600080fd5b86860192505b8383101561304c5782358581111561302e5760008081fd5b61303c8d89838a0101612ebb565b8352509186019190860190613016565b809750505050505050509250925092565b6000806040838503121561307057600080fd5b8235915061308060208401612db4565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600683106130c157634e487b7160e01b600052602160045260246000fd5b91905290565b600080602083850312156130da57600080fd5b82356001600160401b03808211156130f157600080fd5b818501915085601f83011261310557600080fd5b81358181111561311457600080fd5b86602060608302850101111561312957600080fd5b60209290920196919550909350505050565b60006020828403121561314d57600080fd5b61151e82612db4565b80356006811061204d57600080fd5b60006020828403121561317757600080fd5b61151e82613156565b6001600160a01b0392909216825261ffff16602082015260400190565b6000602082840312156131af57600080fd5b81356001600160401b038111156131c557600080fd5b61171b84828501612ebb565b803561ffff8116811461204d57600080fd5b600080604083850312156131f657600080fd5b82356001600160401b038082111561320d57600080fd5b90840190610100828703121561322257600080fd5b61322a612e0b565b82358281111561323957600080fd5b61324588828601612ebb565b82525060208301358281111561325a57600080fd5b61326688828601612ebb565b60208301525060408301358281111561327e57600080fd5b61328a88828601612ebb565b604083015250606083013560608201526132a660808401612db4565b60808201526132b760a084016131d1565b60a08201526132c860c08401612db4565b60c08201526132d960e08401613156565b60e0820152935061308091505060208401612db4565b6000806040838503121561330257600080fd5b61330b83612db4565b91506020830135801515811461332057600080fd5b809150509250929050565b6000806000806080858703121561334157600080fd5b61334a85612db4565b935061335860208601612db4565b92506040850135915060608501356001600160401b0381111561337a57600080fd5b8501601f8101871361338b57600080fd5b61339a87823560208401612e64565b91505092959194509250565b602080825282518282018190526000919060409081850190868401855b828110156133fa57815180516001600160a01b031685528601516001600160601b03168685015292840192908501906001016133c3565b5091979650505050505050565b6000806040838503121561341a57600080fd5b61342383612db4565b915061308060208401612db4565b60006040828403121561344357600080fd5b50919050565b602080825260069082015265232927ad22a760d11b604082015260600190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156134e7576134e76134b7565b500290565b634e487b7160e01b600052601260045260246000fd5b600082613511576135116134ec565b500490565b60008219821115613529576135296134b7565b500190565b634e487b7160e01b600052603260045260246000fd5b600060018201613556576135566134b7565b5060010190565b60006060828403121561356f57600080fd5b604051606081018181106001600160401b038211171561359157613591612df5565b604052823581526135a460208401612db4565b60208201526135b5604084016131d1565b60408201529392505050565b6000602082840312156135d357600080fd5b5051919050565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b600181811c9082168061362057607f821691505b60208210810361344357634e487b7160e01b600052602260045260246000fd5b601f8211156108a757600081815260208120601f850160051c810160208610156136675750805b601f850160051c820191505b8181101561368657828155600101613673565b505050505050565b81516001600160401b038111156136a7576136a7612df5565b6136bb816136b5845461360c565b84613640565b602080601f8311600181146136f057600084156136d85750858301515b600019600386901b1c1916600185901b178555613686565b600085815260208120601f198616915b8281101561371f57888601518255948401946001909101908401613700565b508582101561373d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000835161375f818460208801612d35565b835190830190613773818360208801612d35565b01949350505050565b60006040828403121561378e57600080fd5b604051604081018181106001600160401b03821117156137b0576137b0612df5565b6040526137bc83612db4565b81526137ca602084016131d1565b60208201529392505050565b6000828210156137e8576137e86134b7565b500390565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6000826138be576138be6134ec565b500690565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516138f5816017850160208801612d35565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613926816028840160208801612d35565b01602801949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061396590830184612d61565b9695505050505050565b60006020828403121561398157600080fd5b815161151e81612ce9565b60008161399b5761399b6134b7565b506000190190565b634e487b7160e01b600052603160045260246000fdfe61723a2f2f5f44396b4e3157724e576243713535425341475262544234625333763851415054596d42546853625833412f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a26469706673582212206cd92116012347787cf680c1c79fdc1db0e3153cec328cab68502271966858e864736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106102825760003560e01c80637885fdc7116101585780637885fdc7146104fc5780637e9803421461052a5780638da5cb5b146105325780638e28cf981461053a57806391d148541461054d578063938e3d7b1461056057806394bb53f81461057357806395d89b4114610586578063a217fddf1461058e578063a22cb46514610596578063a341793b146105a9578063b88d4fde146105b1578063b89df8e8146105c4578063bf9b7a57146105cd578063c7db2893146105df578063c87b56dd146105e7578063cad96cca146105fa578063d53913931461061a578063d547741f1461062f578063d5abeb0114610642578063da7422281461064b578063dd89c6fa1461065e578063e8a3d48514610666578063e985e9c51461066e578063ef60ceaf14610681578063f2fde38b14610694578063f384702f146106a757600080fd5b806301ffc9a7146102875780630653aca5146102af57806306fdde03146102f1578063081812fc14610306578063095ea7b314610326578063162094c41461033b578063167446071461034e57806318160ddd1461035657806323b872dd14610368578063248a9ca31461037b5780632a55205a1461038e5780632ee774bd146103c05780632f2ff15d146103d35780633542aee2146103e657806336568abe146103f957806342842e0e1461040c5780634473f20a1461041f57806350a5292f146104325780635136dcc71461044c57806356c022bb1461045f578063572b6c05146104725780635a9b0b89146104855780636352211e146104a857806364ed2913146104bb5780636f8b44b0146104ce57806370a08231146104e1578063715018a6146104f4575b600080fd5b61029a610295366004612cff565b6106b4565b60405190151581526020015b60405180910390f35b6102c26102bd366004612d1c565b6106c5565b60408051825181526020808401516001600160a01b0316908201529181015161ffff16908201526060016102a6565b6102f961074a565b6040516102a69190612d8d565b610319610314366004612d1c565b610759565b6040516102a69190612da0565b610339610334366004612dcb565b610780565b005b610339610349366004612edb565b6108ac565b6103396108e3565b600f545b6040519081526020016102a6565b610339610376366004612f21565b6108fa565b61035a610389366004612d1c565b610932565b6103a161039c366004612f5d565b610947565b604080516001600160a01b0390931683526020830191909152016102a6565b6103396103ce366004612f7f565b610a0c565b6103396103e136600461305d565b610a71565b6103396103f4366004612dcb565b610a8d565b61033961040736600461305d565b610a9f565b61033961041a366004612f21565b610b29565b61033961042d366004612d1c565b610b44565b60025461043f9060ff1681565b6040516102a6919061309f565b61033961045a3660046130c7565b610b94565b601654610319906001600160a01b031681565b61029a61048036600461313b565b610bf7565b61048d610c0b565b604080519384526020840192909252908201526060016102a6565b6103196104b6366004612d1c565b610d06565b6103396104c9366004613165565b610d3b565b6103396104dc366004612d1c565b610db3565b61035a6104ef36600461313b565b610e29565b610339610eaf565b60125461051c906001600160a01b03811690600160a01b900461ffff1682565b6040516102a6929190613180565b61035a610ec3565b610319610ecf565b610339610548366004612f7f565b610ee4565b61029a61055b36600461305d565b610f73565b61033961056e36600461319d565b610f9e565b6103396105813660046131e3565b610fb2565b6102f9611157565b61035a600081565b6103396105a43660046132ef565b611161565b6102f9611173565b6103396105bf36600461332b565b611185565b61035a60115481565b60025461029a90610100900460ff1681565b6102f96111c4565b6102f96105f5366004612d1c565b611224565b61060d610608366004612d1c565b61122f565b6040516102a691906133a6565b61035a6000805160206139eb83398151915281565b61033961063d36600461305d565b6112ea565b61035a600d5481565b61033961065936600461313b565b611306565b610339611330565b6102f9611349565b61029a61067c366004613407565b6113db565b61033961068f366004613431565b611409565b6103396106a236600461313b565b61142b565b600e5461029a9060ff1681565b60006106bf826114d6565b92915050565b60408051606081018252600080825260208201819052918101829052906106ed601484611512565b6000818152601360209081526040918290208251808401845290546001600160a01b03808216835261ffff600160a01b90920482168385019081528551606081018752968752925116928501929092525116908201529392505050565b6060610754611525565b905090565b600061076482611534565b506000908152600860205260409020546001600160a01b031690565b600061078b82610d06565b9050806001600160a01b0316836001600160a01b0316036107fd5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661080f611559565b6001600160a01b0316148061082b575061082b8161067c611559565b61089d5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016107f4565b6108a78383611563565b505050565b6108b46115d1565b60115482116108d55760405162461bcd60e51b81526004016107f490613449565b6108df8282611640565b5050565b6108eb6115d1565b600e805460ff19166001179055565b61090b610905611559565b826116c4565b6109275760405162461bcd60e51b81526004016107f490613469565b6108a7838383611723565b60009081526003602052604090206001015490565b60008281526013602052604081205481906001600160a01b0316156109ac576000848152601360205260409020546001600160a01b038116906127109061099990600160a01b900461ffff16866134cd565b6109a39190613502565b91509150610a05565b6012546001600160a01b0316158015906109d25750601254600160a01b900461ffff1615155b156109fe576012546001600160a01b038116906127109061099990600160a01b900461ffff16866134cd565b5060009050805b9250929050565b610a146115d1565b600f54610a2184846118bf565b60005b83811015610a6a57610a58610a398284613516565b848381518110610a4b57610a4b61352e565b6020026020010151611640565b80610a6281613544565b915050610a24565b5050505050565b610a7a82610932565b610a8381611948565b6108a78383611959565b610a956115d1565b6108df82826118bf565b610aa7611559565b6001600160a01b0316816001600160a01b031614610b1f5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016107f4565b6108df82826119e0565b6108a783838360405180602001604052806000815250611185565b610b4c6115d1565b6011548111610b8f5760405162461bcd60e51b815260206004820152600f60248201526e43414e4e4f545f554e465245455a4560881b60448201526064016107f4565b601155565b610b9c6115d1565b6108df8282808060200260200160405190810160405280939291908181526020016000905b82821015610bed57610bde6060830286013681900381019061355d565b81526020019060010190610bc1565b5050505050611a65565b6016546001600160a01b0391821691161490565b600080808080610c19611559565b6001600160a01b031614610c9557306370a08231610c35611559565b6040518263ffffffff1660e01b8152600401610c519190612da0565b602060405180830381865afa158015610c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9291906135c1565b90505b600d54306001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfa91906135c1565b90959094509092509050565b6000818152600660205260408120546001600160a01b0316806106bf5760405162461bcd60e51b81526004016107f4906135da565b610d436115d1565b600254610100900460ff1615610d8c5760405162461bcd60e51b815260206004820152600e60248201526d131250d15394d157d313d0d2d15160921b60448201526064016107f4565b6002805482919060ff19166001836005811115610dab57610dab613089565b021790555050565b610dbb6115d1565b600e5460ff1615610dde5760405162461bcd60e51b81526004016107f490613449565b600f54811015610e245760405162461bcd60e51b81526020600482015260116024820152704c4f5745525f5448414e5f535550504c5960781b60448201526064016107f4565b600d55565b60006001600160a01b038216610e935760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016107f4565b506001600160a01b031660009081526007602052604090205490565b610eb76115d1565b610ec16000611c0c565b565b60006107546014611c67565b6000546201000090046001600160a01b031690565b610efe6000805160206139eb83398151915261055b611559565b610f3c5760405162461bcd60e51b815260206004820152600f60248201526e4e4f545f4d494e5445525f524f4c4560881b60448201526064016107f4565b600f54610f4984846118bf565b60005b83811015610a6a57610f61610a398284613516565b80610f6b81613544565b915050610f4c565b60009182526003602090815260408084206001600160a01b0393909316845291905290205460ff1690565b610fa66115d1565b600c6108df828261368e565b600054610100900460ff1615808015610fd25750600054600160ff909116105b80610ff35750610fe1306114c3565b158015610ff3575060005460ff166001145b6110565760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107f4565b6000805460ff191660011790558015611079576000805461ff0019166101001790555b611084600083611c71565b61109c6000805160206139eb83398151915283611c71565b6110a582611c0c565b6110b28360e00151611c7b565b6110c9836000015184602001518560400151611cab565b6110d1611cdd565b6110d9611d0c565b6110e1611d3b565b6110ee8360600151611d6a565b61110083608001518460a00151611d9a565b61110d8360c00151611dcb565b80156108a7576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6060610754611dfb565b6108df61116c611559565b8383611e0a565b6002546060906107549060ff16611ed4565b611196611190611559565b836116c4565b6111b25760405162461bcd60e51b81526004016107f490613469565b6111be84848484612052565b50505050565b60606040518060600160405280603181526020016139ba603191396002546111ff9060ff1660058111156111fa576111fa613089565b612085565b60405160200161121092919061374d565b604051602081830303815290604052905090565b60606106bf82612185565b604080516001808252818301909252606091816020015b604080518082019091526000808252602082015281526020019060019003908161124657505060125481519192506001600160a01b031690829060009061128f5761128f61352e565b60209081029190910101516001600160a01b039190911690526012548151600160a01b90910461ffff169082906000906112cb576112cb61352e565b6020908102919091018101516001600160601b03909216910152919050565b6112f382610932565b6112fc81611948565b6108a783836119e0565b61130e6115d1565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6113386115d1565b6002805461ff001916610100179055565b6060600c80546113589061360c565b80601f01602080910402602001604051908101604052809291908181526020018280546113849061360c565b80156113d15780601f106113a6576101008083540402835291602001916113d1565b820191906000526020600020905b8154815290600101906020018083116113b457829003601f168201915b5050505050905090565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205460ff1690565b6114116115d1565b6114286114233683900383018361377c565b612190565b50565b6114336115d1565b6001600160a01b0381166114985760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107f4565b61142881611c0c565b60006114ac33610bf7565b156114be575060131936013560601c90565b503390565b6001600160a01b03163b151590565b3390565b60006301ffc9a760e01b6001600160e01b0319831614806106bf5750506001600160e01b03191660009081526001602052604090205460ff1690565b600061151e838361223b565b9392505050565b6060600a80546113589061360c565b61153d81612265565b6114285760405162461bcd60e51b81526004016107f4906135da565b60006107546114a1565b600081815260086020526040902080546001600160a01b0319166001600160a01b038416908117909155819061159882610d06565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6115d9611559565b6001600160a01b03166115ea610ecf565b6001600160a01b031614610ec15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f4565b61164982612265565b6116ac5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016107f4565b60008281526010602052604090206108a7828261368e565b6000806116d083610d06565b9050806001600160a01b0316846001600160a01b031614806116f757506116f781856113db565b8061171b5750836001600160a01b031661171084610759565b6001600160a01b0316145b949350505050565b826001600160a01b031661173682610d06565b6001600160a01b03161461179a5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016107f4565b6001600160a01b0382166117fc5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016107f4565b611807600082611563565b6001600160a01b03831660009081526007602052604081208054600192906118309084906137d6565b90915550506001600160a01b038216600090815260076020526040812080546001929061185e908490613516565b909155505060008181526006602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600d54816118cc600f5490565b6118d69190613516565b11156119155760405162461bcd60e51b815260206004820152600e60248201526d455843454544535f535550504c5960901b60448201526064016107f4565b60005b818110156108a757600f5461192d8482612282565b61193561229c565b508061194081613544565b915050611918565b61142881611954611559565b6122b3565b6119638282610f73565b6108df5760008281526003602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561199c611559565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6119ea8282610f73565b156108df5760008281526003602090815260408083206001600160a01b03851684529091529020805460ff19169055611a21611559565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b60005b81518110156108df576000828281518110611a8557611a8561352e565b60200260200101519050612710816040015161ffff1610611ab85760405162461bcd60e51b81526004016107f4906137ed565b60208101516001600160a01b0316611b31578051600090815260136020526040902080546001600160b01b03191690558051611af690601490612317565b5080516040519081527fa2870857763bd9ae76c957f869f16b31c18dd3bb4c7b4d3a4496dc5c57c657f99060200160405180910390a1611bf9565b6040805180820182526020808401516001600160a01b0390811683528484015161ffff90811683850190815286516000908152601390945294909220925183549451909216600160a01b026001600160b01b03199094169116179190911790558051611b9f90601490612323565b50805160208083015160408085015181519485526001600160a01b039092169284019290925261ffff1682820152517f389b70fb0887f01e83784eb1c4c589f740eca53b00ed0f45e41db5d079719abb9181900360600190a15b5080611c0481613544565b915050611a68565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b60006106bf825490565b6108df8282611959565b600054610100900460ff16611ca25760405162461bcd60e51b81526004016107f490613812565b6114288161232f565b600054610100900460ff16611cd25760405162461bcd60e51b81526004016107f490613812565b6108a7838383612376565b600054610100900460ff16611d045760405162461bcd60e51b81526004016107f490613812565b610ec16123f4565b600054610100900460ff16611d335760405162461bcd60e51b81526004016107f490613812565b610ec161242b565b600054610100900460ff16611d625760405162461bcd60e51b81526004016107f490613812565b610ec1612462565b600054610100900460ff16611d915760405162461bcd60e51b81526004016107f490613812565b61142881612499565b600054610100900460ff16611dc15760405162461bcd60e51b81526004016107f490613812565b6108df82826124e5565b600054610100900460ff16611df25760405162461bcd60e51b81526004016107f490613812565b61142881612575565b6060600b80546113589061360c565b816001600160a01b0316836001600160a01b031603611e675760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b60448201526064016107f4565b6001600160a01b03838116600081815260096020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60606006826005811115611eea57611eea613089565b60ff161115611ef857600080fd5b816005811115611f0a57611f0a613089565b600003611f3457505060408051808201909152600781526604342455f4343360cc1b602082015290565b816005811115611f4657611f46613089565b600103611f7057505060408051808201909152600781526621a122afa2a1a960c91b602082015290565b816005811115611f8257611f82613089565b600203611fad57505060408051808201909152600881526721a122afa722a1a960c11b602082015290565b816005811115611fbf57611fbf613089565b600303611fed57505060408051808201909152600b81526a4342455f4e4543525f485360a81b602082015290565b816005811115611fff57611fff613089565b60040361202857505060408051808201909152600681526521a122afa82960d11b602082015290565b50506040805180820190915260098152684342455f50525f485360b81b602082015290565b919050565b61205d848484611723565b6120698484848461259c565b6111be5760405162461bcd60e51b81526004016107f49061385d565b6060816000036120ac5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156120d657806120c081613544565b91506120cf9050600a83613502565b91506120b0565b6000816001600160401b038111156120f0576120f0612df5565b6040519080825280601f01601f19166020018201604052801561211a576020820181803683370190505b5090505b841561171b5761212f6001836137d6565b915061213c600a866138af565b612147906030613516565b60f81b81838151811061215c5761215c61352e565b60200101906001600160f81b031916908160001a90535061217e600a86613502565b945061211e565b60606106bf826126ab565b612710816020015161ffff16106121b95760405162461bcd60e51b81526004016107f4906137ed565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601280546001600160b01b031916909217600160a01b9091021790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe41926122309291613180565b60405180910390a150565b60008260000182815481106122525761225261352e565b9060005260206000200154905092915050565b6000908152600660205260409020546001600160a01b0316151590565b6108df8282604051806020016040528060008152506127b3565b600f80549060006122ac83613544565b9190505550565b6122bd8282610f73565b6108df576122d5816001600160a01b031660146127e6565b6122e08360206127e6565b6040516020016122f19291906138c3565b60408051601f198184030181529082905262461bcd60e51b82526107f491600401612d8d565b600061151e8383612981565b600061151e8383612a74565b600054610100900460ff166123565760405162461bcd60e51b81526004016107f490613812565b61236663b964efe960e01b612ac3565b610d8c630c934a3560e31b612ac3565b600054610100900460ff1661239d5760405162461bcd60e51b81526004016107f490613812565b600a6123a9848261368e565b50600b6123b6838261368e565b50600c6123c3828261368e565b506123d4633d96f4ff60e11b612ac3565b6123e46380ac58cd60e01b612ac3565b6108a7635b5e139f60e01b612ac3565b600054610100900460ff1661241b5760405162461bcd60e51b81526004016107f490613812565b610ec1632929b36760e11b612ac3565b600054610100900460ff166124525760405162461bcd60e51b81526004016107f490613812565b610ec1631aa1577160e11b612ac3565b600054610100900460ff166124895760405162461bcd60e51b81526004016107f490613812565b610ec1630d169dbf60e31b612ac3565b600054610100900460ff166124c05760405162461bcd60e51b81526004016107f490613812565b600d8190556124d56330f487b560e11b612ac3565b6114286380ac58cd60e01b612ac3565b600054610100900460ff1661250c5760405162461bcd60e51b81526004016107f490613812565b61251c633a47bf5160e11b612ac3565b61252c63152a902d60e11b612ac3565b61253c63c69dbd8f60e01b612ac3565b61254c63656cb66560e11b612ac3565b604080518082019091526001600160a01b038316815261ffff821660208201526108a781612190565b600054610100900460ff1661130e5760405162461bcd60e51b81526004016107f490613812565b60006125b0846001600160a01b03166114c3565b156126a057836001600160a01b031663150b7a026125cc611559565b8786866040518563ffffffff1660e01b81526004016125ee9493929190613932565b6020604051808303816000875af1925050508015612629575060408051601f3d908101601f191682019092526126269181019061396f565b60015b612686573d808015612657576040519150601f19603f3d011682016040523d82523d6000602084013e61265c565b606091505b50805160000361267e5760405162461bcd60e51b81526004016107f49061385d565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061171b565b506001949350505050565b60606126b682611534565b600082815260106020526040812080546126cf9061360c565b80601f01602080910402602001604051908101604052809291908181526020018280546126fb9061360c565b80156127485780601f1061271d57610100808354040283529160200191612748565b820191906000526020600020905b81548152906001019060200180831161272b57829003601f168201915b50505050509050600061276660408051602081019091526000815290565b90508051600003612778575092915050565b8151156127aa57808260405160200161279292919061374d565b60405160208183030381529060405292505050919050565b61171b84612b44565b6127bd8383612bb7565b6127ca600084848461259c565b6108a75760405162461bcd60e51b81526004016107f49061385d565b606060006127f58360026134cd565b612800906002613516565b6001600160401b0381111561281757612817612df5565b6040519080825280601f01601f191660200182016040528015612841576020820181803683370190505b509050600360fc1b8160008151811061285c5761285c61352e565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061288b5761288b61352e565b60200101906001600160f81b031916908160001a90535060006128af8460026134cd565b6128ba906001613516565b90505b6001811115612932576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106128ee576128ee61352e565b1a60f81b8282815181106129045761290461352e565b60200101906001600160f81b031916908160001a90535060049490941c9361292b8161398c565b90506128bd565b50831561151e5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107f4565b60008181526001830160205260408120548015612a6a5760006129a56001836137d6565b85549091506000906129b9906001906137d6565b9050818114612a1e5760008660000182815481106129d9576129d961352e565b90600052602060002001549050808760000184815481106129fc576129fc61352e565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612a2f57612a2f6139a3565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506106bf565b60009150506106bf565b6000818152600183016020526040812054612abb575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556106bf565b5060006106bf565b6001600160e01b03198082169003612b1c5760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b60448201526064016107f4565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b6060612b4f82611534565b6000612b6660408051602081019091526000815290565b90506000815111612b86576040518060200160405280600081525061151e565b80612b9084612085565b604051602001612ba192919061374d565b6040516020818303038152906040529392505050565b6001600160a01b038216612c0d5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016107f4565b612c1681612265565b15612c625760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b60448201526064016107f4565b6001600160a01b0382166000908152600760205260408120805460019290612c8b908490613516565b909155505060008181526006602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b03198116811461142857600080fd5b600060208284031215612d1157600080fd5b813561151e81612ce9565b600060208284031215612d2e57600080fd5b5035919050565b60005b83811015612d50578181015183820152602001612d38565b838111156111be5750506000910152565b60008151808452612d79816020860160208601612d35565b601f01601f19169290920160200192915050565b60208152600061151e6020830184612d61565b6001600160a01b0391909116815260200190565b80356001600160a01b038116811461204d57600080fd5b60008060408385031215612dde57600080fd5b612de783612db4565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60405161010081016001600160401b0381118282101715612e2e57612e2e612df5565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612e5c57612e5c612df5565b604052919050565b60006001600160401b03831115612e7d57612e7d612df5565b612e90601f8401601f1916602001612e34565b9050828152838383011115612ea457600080fd5b828260208301376000602084830101529392505050565b600082601f830112612ecc57600080fd5b61151e83833560208501612e64565b60008060408385031215612eee57600080fd5b8235915060208301356001600160401b03811115612f0b57600080fd5b612f1785828601612ebb565b9150509250929050565b600080600060608486031215612f3657600080fd5b612f3f84612db4565b9250612f4d60208501612db4565b9150604084013590509250925092565b60008060408385031215612f7057600080fd5b50508035926020909101359150565b600080600060608486031215612f9457600080fd5b612f9d84612db4565b9250602080850135925060408501356001600160401b0380821115612fc157600080fd5b818701915087601f830112612fd557600080fd5b813581811115612fe757612fe7612df5565b8060051b612ff6858201612e34565b918252838101850191858101908b84111561301057600080fd5b86860192505b8383101561304c5782358581111561302e5760008081fd5b61303c8d89838a0101612ebb565b8352509186019190860190613016565b809750505050505050509250925092565b6000806040838503121561307057600080fd5b8235915061308060208401612db4565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600683106130c157634e487b7160e01b600052602160045260246000fd5b91905290565b600080602083850312156130da57600080fd5b82356001600160401b03808211156130f157600080fd5b818501915085601f83011261310557600080fd5b81358181111561311457600080fd5b86602060608302850101111561312957600080fd5b60209290920196919550909350505050565b60006020828403121561314d57600080fd5b61151e82612db4565b80356006811061204d57600080fd5b60006020828403121561317757600080fd5b61151e82613156565b6001600160a01b0392909216825261ffff16602082015260400190565b6000602082840312156131af57600080fd5b81356001600160401b038111156131c557600080fd5b61171b84828501612ebb565b803561ffff8116811461204d57600080fd5b600080604083850312156131f657600080fd5b82356001600160401b038082111561320d57600080fd5b90840190610100828703121561322257600080fd5b61322a612e0b565b82358281111561323957600080fd5b61324588828601612ebb565b82525060208301358281111561325a57600080fd5b61326688828601612ebb565b60208301525060408301358281111561327e57600080fd5b61328a88828601612ebb565b604083015250606083013560608201526132a660808401612db4565b60808201526132b760a084016131d1565b60a08201526132c860c08401612db4565b60c08201526132d960e08401613156565b60e0820152935061308091505060208401612db4565b6000806040838503121561330257600080fd5b61330b83612db4565b91506020830135801515811461332057600080fd5b809150509250929050565b6000806000806080858703121561334157600080fd5b61334a85612db4565b935061335860208601612db4565b92506040850135915060608501356001600160401b0381111561337a57600080fd5b8501601f8101871361338b57600080fd5b61339a87823560208401612e64565b91505092959194509250565b602080825282518282018190526000919060409081850190868401855b828110156133fa57815180516001600160a01b031685528601516001600160601b03168685015292840192908501906001016133c3565b5091979650505050505050565b6000806040838503121561341a57600080fd5b61342383612db4565b915061308060208401612db4565b60006040828403121561344357600080fd5b50919050565b602080825260069082015265232927ad22a760d11b604082015260600190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156134e7576134e76134b7565b500290565b634e487b7160e01b600052601260045260246000fd5b600082613511576135116134ec565b500490565b60008219821115613529576135296134b7565b500190565b634e487b7160e01b600052603260045260246000fd5b600060018201613556576135566134b7565b5060010190565b60006060828403121561356f57600080fd5b604051606081018181106001600160401b038211171561359157613591612df5565b604052823581526135a460208401612db4565b60208201526135b5604084016131d1565b60408201529392505050565b6000602082840312156135d357600080fd5b5051919050565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b600181811c9082168061362057607f821691505b60208210810361344357634e487b7160e01b600052602260045260246000fd5b601f8211156108a757600081815260208120601f850160051c810160208610156136675750805b601f850160051c820191505b8181101561368657828155600101613673565b505050505050565b81516001600160401b038111156136a7576136a7612df5565b6136bb816136b5845461360c565b84613640565b602080601f8311600181146136f057600084156136d85750858301515b600019600386901b1c1916600185901b178555613686565b600085815260208120601f198616915b8281101561371f57888601518255948401946001909101908401613700565b508582101561373d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000835161375f818460208801612d35565b835190830190613773818360208801612d35565b01949350505050565b60006040828403121561378e57600080fd5b604051604081018181106001600160401b03821117156137b0576137b0612df5565b6040526137bc83612db4565b81526137ca602084016131d1565b60208201529392505050565b6000828210156137e8576137e86134b7565b500390565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6000826138be576138be6134ec565b500690565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516138f5816017850160208801612d35565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613926816028840160208801612d35565b01602801949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061396590830184612d61565b9695505050505050565b60006020828403121561398157600080fd5b815161151e81612ce9565b60008161399b5761399b6134b7565b506000190190565b634e487b7160e01b600052603160045260246000fdfe61723a2f2f5f44396b4e3157724e576243713535425341475262544234625333763851415054596d42546853625833412f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a26469706673582212206cd92116012347787cf680c1c79fdc1db0e3153cec328cab68502271966858e864736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/presets/ERC721SimpleSalesCollection":{"address":{"1":"0xa9dB7831CC85960dB16bEf4914e4d3Ce0630d2B0","3":"0x137d31C9E75eeb883d88406944540F2FB8bfDcaF","4":"0x802Bd00A39fc1E21fb665A724845E1C0452246eD","5":"0xD01F2668247FC1c7334591457dc1a8e3C6a5a8E4","25":"0x99cfc48d63e4914A0f94d46B0FCF30bD8775067E","56":"0x1Fc79E01fe724Ef4A1f8995f1299B90565a6AD39","65":"0xb2edC1E98b147137D7f6894403E163236bc6FffC","66":"0x1f0c421312EA02e964Cec73fdC49a350626758D3","97":"0x960327273C346eE9dfa122a757425B350b51F833","137":"0xF33c041551e6945bF8f2C34bd61784Ae6F50a8C9","250":"0x5082a0AAffd7A82B16A15b6Ef42774A94527E69B","280":"0x460acb067040E9E8ed8a8A169cbF078E6C0D01eE","4002":"0x5082a0AAffd7A82B16A15b6Ef42774A94527E69B","9000":"0xb2edC1E98b147137D7f6894403E163236bc6FffC","42161":"0xAcB0dD0A3129859955D610233C0DD18BCb15fB88","43113":"0x8fa6C988b115B46Ed2910C53992864754316305f","43114":"0x0e6223dEfF249b5E2Ff966f2f24CE87de1229Df5","421611":"0xE59823282f481889A1264469ACa219f6aCa2fE40","arbitrumOne":"0xAcB0dD0A3129859955D610233C0DD18BCb15fB88","arbitrumTestnet":"0xE59823282f481889A1264469ACa219f6aCa2fE40","avalanche":"0x0e6223dEfF249b5E2Ff966f2f24CE87de1229Df5","avalancheFujiTestnet":"0x8fa6C988b115B46Ed2910C53992864754316305f","bsc":"0x1Fc79E01fe724Ef4A1f8995f1299B90565a6AD39","bscTestnet":"0x960327273C346eE9dfa122a757425B350b51F833","cronos":"0x99cfc48d63e4914A0f94d46B0FCF30bD8775067E","evmosTestnet":"0xb2edC1E98b147137D7f6894403E163236bc6FffC","ftmTestnet":"0x5082a0AAffd7A82B16A15b6Ef42774A94527E69B","goerli":"0xD01F2668247FC1c7334591457dc1a8e3C6a5a8E4","mainnet":"0xa9dB7831CC85960dB16bEf4914e4d3Ce0630d2B0","okcMainnet":"0x1f0c421312EA02e964Cec73fdC49a350626758D3","okcTestnet":"0xb2edC1E98b147137D7f6894403E163236bc6FffC","opera":"0x5082a0AAffd7A82B16A15b6Ef42774A94527E69B","polygon":"0xF33c041551e6945bF8f2C34bd61784Ae6F50a8C9","rinkeby":"0x802Bd00A39fc1E21fb665A724845E1C0452246eD","ropsten":"0x137d31C9E75eeb883d88406944540F2FB8bfDcaF","zksyncTestnet":"0x460acb067040E9E8ed8a8A169cbF078E6C0D01eE"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721SimpleSalesCollection","sourceName":"contracts/collections/ERC721/presets/ERC721SimpleSalesCollection.sol","abi":[{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"string","name":"placeholderURI","type":"string"},{"internalType":"string","name":"tokenURIPrefix","type":"string"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"internalType":"uint256","name":"preSalePrice","type":"uint256"},{"internalType":"uint256","name":"preSaleMaxMintPerWallet","type":"uint256"},{"internalType":"uint256","name":"publicSalePrice","type":"uint256"},{"internalType":"uint256","name":"publicSaleMaxMintPerTx","type":"uint256"},{"internalType":"address","name":"defaultRoyaltyAddress","type":"address"},{"internalType":"uint16","name":"defaultRoyaltyBps","type":"uint16"},{"internalType":"address","name":"proceedsRecipient","type":"address"},{"internalType":"address","name":"trustedForwarder","type":"address"},{"internalType":"enum LicenseVersion","name":"licenseVersion","type":"uint8"}],"internalType":"struct ERC721SimpleSalesCollection.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"DefaultRoyaltySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"TokenRoyaltyRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"TokenRoyaltySet","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":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LOCKER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultRoyalty","outputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"filterUnlocked","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"freezeTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getInfo","outputs":[{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"uint256","name":"_totalSupply","type":"uint256"},{"internalType":"uint256","name":"_senderBalance","type":"uint256"},{"internalType":"uint256","name":"_preSalePrice","type":"uint256"},{"internalType":"uint256","name":"_preSaleMaxMintPerWallet","type":"uint256"},{"internalType":"uint256","name":"_preSaleAlreadyClaimed","type":"uint256"},{"internalType":"bool","name":"_preSaleActive","type":"bool"},{"internalType":"uint256","name":"_publicSalePrice","type":"uint256"},{"internalType":"uint256","name":"_publicSaleMaxMintPerTx","type":"uint256"},{"internalType":"bool","name":"_publicSaleActive","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getRaribleV2Royalties","outputs":[{"components":[{"internalType":"address payable","name":"account","type":"address"},{"internalType":"uint96","name":"value","type":"uint96"}],"internalType":"struct LibPart.Part[]","name":"result","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenRoyaltiesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getTokenRoyaltyByIndex","outputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasRoleBasedLockableExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"string","name":"placeholderURI","type":"string"},{"internalType":"string","name":"tokenURIPrefix","type":"string"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"internalType":"uint256","name":"preSalePrice","type":"uint256"},{"internalType":"uint256","name":"preSaleMaxMintPerWallet","type":"uint256"},{"internalType":"uint256","name":"publicSalePrice","type":"uint256"},{"internalType":"uint256","name":"publicSaleMaxMintPerTx","type":"uint256"},{"internalType":"address","name":"defaultRoyaltyAddress","type":"address"},{"internalType":"uint16","name":"defaultRoyaltyBps","type":"uint16"},{"internalType":"address","name":"proceedsRecipient","type":"address"},{"internalType":"address","name":"trustedForwarder","type":"address"},{"internalType":"enum LicenseVersion","name":"licenseVersion","type":"uint8"}],"internalType":"struct ERC721SimpleSalesCollection.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","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":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersion","outputs":[{"internalType":"enum LicenseVersion","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersionLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"locked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintPreSale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintPublicSale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onPreSaleAllowList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","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":[],"name":"placeholderURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleAllowlistMerkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleMaxMintPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSalePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleMaxMintPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSalePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"bytes32","name":"newRoot","type":"bytes32"}],"name":"setAllowlistMerkleRoot","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyalty","name":"royalty","type":"tuple"}],"name":"setDefaultRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum LicenseVersion","name":"_licenseVersion","type":"uint8"}],"name":"setLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setPlaceholderURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPreSaleMaxMintPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPreSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPublicSaleMaxMintPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPublicSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig[]","name":"royaltyConfigs","type":"tuple[]"}],"name":"setTokenRoyalties","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURIPrefix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURISuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"trustedForwarder","type":"address"}],"name":"setTrustedForwarder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"isActive","type":"bool"}],"name":"togglePreSaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isActive","type":"bool"}],"name":"togglePublicSaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIPrefix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURISuffix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"transferFromBulk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"from","type":"address[]"},{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"transferFromBulk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405260006012553480156200001657600080fd5b5060405162006e1938038062006e19833981016040819052620000399162000eb2565b8051602082015160046200005662000050620000bd565b620000d9565b6002805482919060ff60c01b1916600160c01b8360058111156200007e576200007e62001067565b0217905550600390506200009383826200110b565b506004620000a282826200110b565b5050600160135550620000b6813362000134565b5062001222565b6000620000d46200036960201b62002acd1760201c565b905090565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620001555750600054600160ff909116105b806200018557506200017230620003a160201b62002aef1760201c565b15801562000185575060005460ff166001145b620001ee5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000212576000805461ff0019166101001790555b6200021f600083620003b0565b6200022a82620000d9565b6101808301516200023d906002620003c0565b6101c08301516200024e90620003f6565b825160208401516040850151620002679291906200042e565b62000281836060015184608001516200046560201b60201c565b60a083015162000291906200049b565b6200029b620004d0565b620002a68262000506565b620002b06200053b565b620002ca8360c001518460e001516200056f60201b60201c565b620002e6836101000151846101200151620005b660201b60201c565b62000302836101400151846101600151620005ec60201b60201c565b6101a0830151620003139062000622565b6200031d62000657565b801562000364576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6022546000906001600160a01b031633036200038c575060131936013560601c90565b620000d46200068b60201b62002afe1760201c565b6001600160a01b03163b151590565b620003bc82826200068f565b5050565b600054610100900460ff16620003ea5760405162461bcd60e51b8152600401620001e590620011d7565b620003bc828262000735565b600054610100900460ff16620004205760405162461bcd60e51b8152600401620001e590620011d7565b6200042b81620007c1565b50565b600054610100900460ff16620004585760405162461bcd60e51b8152600401620001e590620011d7565b620003648383836200083f565b600054610100900460ff166200048f5760405162461bcd60e51b8152600401620001e590620011d7565b620003bc8282620008cc565b600054610100900460ff16620004c55760405162461bcd60e51b8152600401620001e590620011d7565b6200042b8162000964565b600054610100900460ff16620004fa5760405162461bcd60e51b8152600401620001e590620011d7565b62000504620009b7565b565b600054610100900460ff16620005305760405162461bcd60e51b8152600401620001e590620011d7565b6200042b81620009f3565b600054610100900460ff16620005655760405162461bcd60e51b8152600401620001e590620011d7565b6200050462000a5b565b600054610100900460ff16620005995760405162461bcd60e51b8152600401620001e590620011d7565b620005ab63209680f760e11b62000a92565b601491909155601555565b600054610100900460ff16620005e05760405162461bcd60e51b8152600401620001e590620011d7565b620003bc828262000b16565b600054610100900460ff16620006165760405162461bcd60e51b8152600401620001e590620011d7565b620003bc828262000b5d565b600054610100900460ff166200064c5760405162461bcd60e51b8152600401620001e590620011d7565b6200042b8162000bfa565b600054610100900460ff16620006815760405162461bcd60e51b8152600401620001e590620011d7565b6200050462000c46565b3390565b6000828152601d602090815260408083206001600160a01b038516845290915290205460ff16620003bc576000828152601d602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620006f1620000bd565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600054610100900460ff166200075f5760405162461bcd60e51b8152600401620001e590620011d7565b6200077163ac2ba33360e01b62000a92565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b836003811115620007b857620007b862001067565b02179055505050565b600054610100900460ff16620007eb5760405162461bcd60e51b8152600401620001e590620011d7565b620007fd63b964efe960e01b62000a92565b6200080f630c934a3560e31b62000a92565b6002805482919060ff60c01b1916600160c01b83600581111562000837576200083762001067565b021790555050565b600054610100900460ff16620008695760405162461bcd60e51b8152600401620001e590620011d7565b600d6200087784826200110b565b50600e6200088683826200110b565b50600f6200089582826200110b565b50620008a8633d96f4ff60e11b62000a92565b620008ba6380ac58cd60e01b62000a92565b62000364635b5e139f60e01b62000a92565b600054610100900460ff16620008f65760405162461bcd60e51b8152600401620001e590620011d7565b60096200090483826200110b565b50600a6200091382826200110b565b50604080518082019091526005815264173539b7b760d91b6020820152600b906200093f90826200110b565b5062000952631f2f406b60e01b62000a92565b620003bc635b5e139f60e01b62000a92565b600054610100900460ff166200098e5760405162461bcd60e51b8152600401620001e590620011d7565b6010819055620009a56330f487b560e11b62000a92565b6200042b6380ac58cd60e01b62000a92565b600054610100900460ff16620009e15760405162461bcd60e51b8152600401620001e590620011d7565b62000504631aa1577160e11b62000a92565b600054610100900460ff1662000a1d5760405162461bcd60e51b8152600401620001e590620011d7565b62000a2f631a056e7160e01b62000a92565b6200042b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a682620003b0565b600054610100900460ff1662000a855760405162461bcd60e51b8152600401620001e590620011d7565b6200050463714ad8e760e01b5b6001600160e01b0319808216900362000aee5760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e74657266616365206964000000006044820152606401620001e5565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b600054610100900460ff1662000b405760405162461bcd60e51b8152600401620001e590620011d7565b62000b526317e0bac360e31b62000a92565b601991909155601a55565b600054610100900460ff1662000b875760405162461bcd60e51b8152600401620001e590620011d7565b62000b99633a47bf5160e11b62000a92565b62000bab63152a902d60e11b62000a92565b62000bbd63c69dbd8f60e01b62000a92565b62000bcf63656cb66560e11b62000a92565b604080518082019091526001600160a01b038316815261ffff82166020820152620003648162000c82565b600054610100900460ff1662000c245760405162461bcd60e51b8152600401620001e590620011d7565b602280546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1662000c705760405162461bcd60e51b8152600401620001e590620011d7565b62000504632a7c3e4960e01b62000a92565b612710816020015161ffff161062000ccb5760405162461bcd60e51b815260206004820152600b60248201526a496e76616c69642062707360a81b6044820152606401620001e5565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601e8054600160a01b9092026001600160b01b03199092169092171790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe419262000d5d92916001600160a01b0392909216825261ffff16602082015260400190565b60405180910390a150565b634e487b7160e01b600052604160045260246000fd5b6040516101e081016001600160401b038111828210171562000da45762000da462000d68565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000dd55762000dd562000d68565b604052919050565b600082601f83011262000def57600080fd5b81516001600160401b0381111562000e0b5762000e0b62000d68565b602062000e21601f8301601f1916820162000daa565b828152858284870101111562000e3657600080fd5b60005b8381101562000e5657858101830151828201840152820162000e39565b8381111562000e685760008385840101525b5095945050505050565b80516001600160a01b038116811462000e8a57600080fd5b919050565b805161ffff8116811462000e8a57600080fd5b80516006811062000e8a57600080fd5b60006020828403121562000ec557600080fd5b81516001600160401b038082111562000edd57600080fd5b908301906101e0828603121562000ef357600080fd5b62000efd62000d7e565b82518281111562000f0d57600080fd5b62000f1b8782860162000ddd565b82525060208301518281111562000f3157600080fd5b62000f3f8782860162000ddd565b60208301525060408301518281111562000f5857600080fd5b62000f668782860162000ddd565b60408301525060608301518281111562000f7f57600080fd5b62000f8d8782860162000ddd565b60608301525060808301518281111562000fa657600080fd5b62000fb48782860162000ddd565b60808301525060a0838101519082015260c0808401519082015260e080840151908201526101008084015190820152610120808401519082015261014091506200100082840162000e72565b8282015261016091506200101682840162000e8f565b8282015261018091506200102c82840162000e72565b828201526101a091506200104282840162000e72565b828201526101c091506200105882840162000ea2565b91810191909152949350505050565b634e487b7160e01b600052602160045260246000fd5b600181811c908216806200109257607f821691505b602082108103620010b357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200036457600081815260208120601f850160051c81016020861015620010e25750805b601f850160051c820191505b818110156200110357828155600101620010ee565b505050505050565b81516001600160401b0381111562001127576200112762000d68565b6200113f816200113884546200107d565b84620010b9565b602080601f8311600181146200117757600084156200115e5750858301515b600019600386901b1c1916600185901b17855562001103565b600085815260208120601f198616915b82811015620011a85788860151825594840194600190910190840162001187565b5085821015620011c75787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b615be780620012326000396000f3fe6080604052600436106104635760003560e01c80638da5cb5b11610242578063c87b56dd11610135578063c87b56dd14610d73578063cad96cca14610d93578063d539139314610dc0578063d547741f14610de2578063d5abeb0114610e02578063d79ff99d14610e18578063da74222814610e2b578063da82b22714610e4b578063dbbc853b14610e60578063dcbe353f14610e75578063dd46706414610e95578063dd89c6fa14610eb5578063de6d6d9614610eca578063e3b9a7e514610eea578063e757c17d14610f0a578063e8a3d48514610f20578063e985e9c514610f35578063ef60ceaf14610f55578063f2fde38b14610f75578063f362136714610f95578063f384702f14610fb7578063f74bbf5914610fd1578063f95df41414610ff1578063fe50b5871461101157600080fd5b80638da5cb5b14610b0057806391d1485414610b15578063938e3d7b14610b3557806395d89b4114610b5557806399e0dd7c14610b6a5780639b6860c814610b8a5780639e6b2c5b14610ba0578063a217fddf14610bb3578063a22cb46514610bc8578063a341793b14610be8578063a9852bfb14610bfd578063aaeaca4814610c1d578063af121f5414610c33578063b27c6f2d14610c54578063b45a3c0e14610c6a578063b6c693e514610c8a578063b88d4fde14610ca4578063ba4695fd14610cc4578063bf9b7a5714610cd9578063c0ac998314610cfa578063c0bb38ff14610d0f578063c29de63014610d2f578063c723955a14610d49578063c7db289314610d5e57600080fd5b8063464bd6401161035a578063464bd640146107d057806349561cb9146107ea5780634f972f5f1461080b57806350a5292f1461082b5780635136dcc71461085957806356c022bb14610879578063572b6c05146108995780635a9b0b89146108b95780635d36598f1461091c5780636057e0ec1461093c5780636198e3391461095d5780636352211e1461097d57806364ed29131461099d5780636f8b44b0146109bd57806370a08231146109dd578063714ad8e7146109fd578063715018a614610a115780637313cba914610a265780637885fdc714610a3b578063791a251914610a765780637d7eee4214610a965780637e98034214610ab6578063837fe14014610acb578063859610c614610ae057600080fd5b806301ffc9a714610468578063059fb6f71461049d5780630653aca5146104bf57806306fdde031461050e578063081812fc14610530578063095ea7b31461055d578063167446071461057d57806318160ddd146105925780631a056e71146105b157806323b872dd146105d1578063248a9ca3146105f15780632a55205a146106115780632bb684ad1461063f5780632c2330671461066c5780632d00b5871461068c5780632d8e85b0146106ba5780632f2ff15d146106da5780632fe388be146106fa5780633542aee21461071a5780633574a2dd1461073a57806336568abe1461075a5780633acf404d1461077a5780633c0e8f2c1461079057806342842e0e146107b0575b600080fd5b34801561047457600080fd5b50610488610483366004614919565b611031565b60405190151581526020015b60405180910390f35b3480156104a957600080fd5b506104bd6104b8366004614a4a565b611042565b005b3480156104cb57600080fd5b506104df6104da366004614aa7565b6110e2565b60408051825181526020808401516001600160a01b0316908201529181015161ffff1690820152606001610494565b34801561051a57600080fd5b50610523611169565b6040516104949190614b18565b34801561053c57600080fd5b5061055061054b366004614aa7565b611178565b6040516104949190614b2b565b34801561056957600080fd5b506104bd610578366004614b3f565b61119f565b34801561058957600080fd5b506104bd6112cb565b34801561059e57600080fd5b506012545b604051908152602001610494565b3480156105bd57600080fd5b506104bd6105cc366004614b3f565b6112e2565b3480156105dd57600080fd5b506104bd6105ec366004614b69565b611348565b3480156105fd57600080fd5b506105a361060c366004614aa7565b611380565b34801561061d57600080fd5b5061063161062c366004614ba5565b611395565b604051610494929190614bc7565b34801561064b57600080fd5b5061065f61065a366004614c24565b61145a565b6040516104949190614c65565b34801561067857600080fd5b506104bd610687366004614ca9565b611524565b34801561069857600080fd5b506002546106ad90600160b01b900460ff1681565b6040516104949190614ce0565b3480156106c657600080fd5b506104bd6106d5366004614d08565b611583565b3480156106e657600080fd5b506104bd6106f5366004614d25565b61159e565b34801561070657600080fd5b506104bd610715366004614db3565b6115ba565b34801561072657600080fd5b506104bd610735366004614b3f565b61171f565b34801561074657600080fd5b506104bd610755366004614ea7565b611727565b34801561076657600080fd5b506104bd610775366004614d25565b61173b565b34801561078657600080fd5b506105a360165481565b34801561079c57600080fd5b506104bd6107ab366004614aa7565b6117c5565b3480156107bc57600080fd5b506104bd6107cb366004614b69565b6117d2565b3480156107dc57600080fd5b506017546104889060ff1681565b3480156107f657600080fd5b5060025461048890600160b81b900460ff1681565b34801561081757600080fd5b506104bd610826366004614d08565b6117ed565b34801561083757600080fd5b5060025461084c90600160c01b900460ff1681565b6040516104949190614edb565b34801561086557600080fd5b506104bd610874366004614eef565b611808565b34801561088557600080fd5b50602254610550906001600160a01b031681565b3480156108a557600080fd5b506104886108b4366004614f63565b61186b565b3480156108c557600080fd5b506108ce61187f565b604080519a8b5260208b0199909952978901969096526060880194909452608087019290925260a0860152151560c085015260e0840152610100830152151561012082015261014001610494565b34801561092857600080fd5b506104bd610937366004614c24565b6119f0565b34801561094857600080fd5b5060025461048890600160a01b900460ff1681565b34801561096957600080fd5b506104bd610978366004614aa7565b611a93565b34801561098957600080fd5b50610550610998366004614aa7565b611aff565b3480156109a957600080fd5b506104bd6109b8366004614f8d565b611b34565b3480156109c957600080fd5b506104bd6109d8366004614aa7565b611bac565b3480156109e957600080fd5b506105a36109f8366004614f63565b611c22565b348015610a0957600080fd5b506001610488565b348015610a1d57600080fd5b506104bd611ca8565b348015610a3257600080fd5b50610523611cbc565b348015610a4757600080fd5b50601e54610a68906001600160a01b03811690600160a01b900461ffff1682565b604051610494929190614fa8565b348015610a8257600080fd5b506104bd610a91366004614aa7565b611d4e565b348015610aa257600080fd5b506104bd610ab1366004614aa7565b611d5b565b348015610ac257600080fd5b506105a3611d68565b348015610ad757600080fd5b506104bd611d74565b348015610aec57600080fd5b506104bd610afb366004614c24565b611dbb565b348015610b0c57600080fd5b50610550611e54565b348015610b2157600080fd5b50610488610b30366004614d25565b611e69565b348015610b4157600080fd5b506104bd610b50366004614ea7565b611e94565b348015610b6157600080fd5b50610523611ea8565b348015610b7657600080fd5b506104bd610b85366004614ea7565b611eb2565b348015610b9657600080fd5b506105a360195481565b6104bd610bae366004614fc5565b611ee9565b348015610bbf57600080fd5b506105a3600081565b348015610bd457600080fd5b506104bd610be3366004615010565b6120b4565b348015610bf457600080fd5b506105236120c6565b348015610c0957600080fd5b506104bd610c18366004614ea7565b6120df565b348015610c2957600080fd5b506105a360155481565b348015610c3f57600080fd5b5060025461048890600160a81b900460ff1681565b348015610c6057600080fd5b506105a3601a5481565b348015610c7657600080fd5b50610488610c85366004614aa7565b612116565b348015610c9657600080fd5b50601b546104889060ff1681565b348015610cb057600080fd5b506104bd610cbf366004615047565b612123565b348015610cd057600080fd5b506104bd61215c565b348015610ce557600080fd5b5060025461048890600160c81b900460ff1681565b348015610d0657600080fd5b50610523612173565b348015610d1b57600080fd5b506104bd610d2a366004614f63565b612182565b348015610d3b57600080fd5b50600c546104889060ff1681565b348015610d5557600080fd5b506104bd6121d6565b348015610d6a57600080fd5b50610523612235565b348015610d7f57600080fd5b50610523610d8e366004614aa7565b61229c565b348015610d9f57600080fd5b50610db3610dae366004614aa7565b6122a7565b60405161049491906150c2565b348015610dcc57600080fd5b506105a3600080516020615b7283398151915281565b348015610dee57600080fd5b506104bd610dfd366004614d25565b612362565b348015610e0e57600080fd5b506105a360105481565b6104bd610e26366004614b3f565b61237e565b348015610e3757600080fd5b506104bd610e46366004614f63565b612476565b348015610e5757600080fd5b506104bd6124a0565b348015610e6c57600080fd5b506105236124e6565b348015610e8157600080fd5b50600254610550906001600160a01b031681565b348015610ea157600080fd5b506104bd610eb0366004614aa7565b6124f5565b348015610ec157600080fd5b506104bd612559565b348015610ed657600080fd5b506104bd610ee5366004615123565b612576565b348015610ef657600080fd5b50610488610f0536600461518e565b6127ae565b348015610f1657600080fd5b506105a360145481565b348015610f2c57600080fd5b506105236127fc565b348015610f4157600080fd5b50610488610f503660046151c7565b61280b565b348015610f6157600080fd5b506104bd610f703660046151f1565b612839565b348015610f8157600080fd5b506104bd610f90366004614f63565b61285b565b348015610fa157600080fd5b506105a3600080516020615b9283398151915281565b348015610fc357600080fd5b506011546104889060ff1681565b348015610fdd57600080fd5b506104bd610fec366004614aa7565b6128d1565b348015610ffd57600080fd5b506104bd61100c366004614aa7565b6128de565b34801561101d57600080fd5b506104bd61102c36600461521b565b6128eb565b600061103c82612b02565b92915050565b60005b81518110156110dc57306001600160a01b03166323b872dd8585858581518110611071576110716153ba565b60200260200101516040518463ffffffff1660e01b8152600401611097939291906153d0565b600060405180830381600087803b1580156110b157600080fd5b505af11580156110c5573d6000803e3d6000fd5b5050505080806110d49061540a565b915050611045565b50505050565b6040805160608101825260008082526020820181905291810191909152600061110c602084612b3e565b6000818152601f60209081526040918290208251808401845290546001600160a01b03808216835261ffff600160a01b90920482168385019081528551606081018752968752925116928501929092525116908201529392505050565b6060611173612b51565b905090565b600061118382612b60565b506000908152600760205260409020546001600160a01b031690565b60006111aa82611aff565b9050806001600160a01b0316836001600160a01b03160361121c5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661122e612b85565b6001600160a01b0316148061124a575061124a81610f50612b85565b6112bc5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401611213565b6112c68383612b8f565b505050565b6112d3612bfd565b6011805460ff19166001179055565b6112fc600080516020615b72833981519152610b30612b85565b61133a5760405162461bcd60e51b815260206004820152600f60248201526e4e4f545f4d494e5445525f524f4c4560881b6044820152606401611213565b6113448282612c6c565b5050565b611359611353612b85565b82612cf5565b6113755760405162461bcd60e51b815260040161121390615423565b6112c6838383612d53565b6000908152601d602052604090206001015490565b6000828152601f602052604081205481906001600160a01b0316156113fa576000848152601f60205260409020546001600160a01b03811690612710906113e790600160a01b900461ffff1686615471565b6113f191906154a6565b91509150611453565b601e546001600160a01b0316158015906114205750601e54600160a01b900461ffff1615155b1561144c57601e546001600160a01b03811690612710906113e790600160a01b900461ffff1686615471565b5060009050805b9250929050565b60606000826001600160401b038111156114765761147661494d565b60405190808252806020026020018201604052801561149f578160200160208202803683370190505b50905060005b8381101561151c576114ce8585838181106114c2576114c26153ba565b90506020020135612116565b61150a578484828181106114e4576114e46153ba565b905060200201358282815181106114fd576114fd6153ba565b6020026020010181815250505b806115148161540a565b9150506114a5565b509392505050565b61152c612bfd565b600254600160b81b900460ff16156115565760405162461bcd60e51b8152600401611213906154ba565b6002805482919060ff60b01b1916600160b01b83600381111561157b5761157b614cca565b021790555050565b61158b612bfd565b601b805460ff1916911515919091179055565b6115a782611380565b6115b081612efa565b6112c68383612f0b565b81518351146116055760405162461bcd60e51b815260206004820152601760248201527608ca49e9abea89ebe988a9c8ea890be9a92a69a82a8869604b1b6044820152606401611213565b80518351146116535760405162461bcd60e51b815260206004820152601a60248201527908ca49e9abea89e968a9cbe988a9c8ea890be9a92a69a82a886960331b6044820152606401611213565b60005b81518110156110dc57306001600160a01b03166323b872dd858381518110611680576116806153ba565b602002602001015185848151811061169a5761169a6153ba565b60200260200101518585815181106116b4576116b46153ba565b60200260200101516040518463ffffffff1660e01b81526004016116da939291906153d0565b600060405180830381600087803b1580156116f457600080fd5b505af1158015611708573d6000803e3d6000fd5b5050505080806117179061540a565b915050611656565b61133a612bfd565b61172f612bfd565b6009611344828261555c565b611743612b85565b6001600160a01b0316816001600160a01b0316146117bb5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401611213565b6113448282612f92565b6117cd612bfd565b601a55565b6112c683838360405180602001604052806000815250612123565b6117f5612bfd565b6017805460ff1916911515919091179055565b611810612bfd565b6113448282808060200260200160405190810160405280939291908181526020016000905b82821015611861576118526060830286013681900381019061561b565b81526020019060010190611835565b5050505050613017565b6022546001600160a01b0391821691161490565b60008080808080808080808080611894612b85565b6001600160a01b03161461191057306370a082316118b0612b85565b6040518263ffffffff1660e01b81526004016118cc9190614b2b565b602060405180830381865afa1580156118e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190d919061567f565b90505b601054306001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611951573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611975919061567f565b8260145460155460186000611988612b85565b6001600160a01b03166001600160a01b0316815260200190815260200160002054601760009054906101000a900460ff16601954601a54601b60009054906101000a900460ff169a509a509a509a509a509a509a509a509a509a505090919293949596979899565b600260135403611a125760405162461bcd60e51b815260040161121390615698565b6002601355611a2f600080516020615b9283398151915233611e69565b611a4b5760405162461bcd60e51b8152600401611213906156cf565b60005b81811015611a8957611a77838383818110611a6b57611a6b6153ba565b905060200201356131bc565b80611a818161540a565b915050611a4e565b5050600160135550565b600260135403611ab55760405162461bcd60e51b815260040161121390615698565b6002601355611ad2600080516020615b9283398151915233611e69565b611aee5760405162461bcd60e51b8152600401611213906156cf565b611af7816131bc565b506001601355565b6000818152600560205260408120546001600160a01b03168061103c5760405162461bcd60e51b8152600401611213906156f8565b611b3c612bfd565b600254600160c81b900460ff1615611b875760405162461bcd60e51b815260206004820152600e60248201526d131250d15394d157d313d0d2d15160921b6044820152606401611213565b6002805482919060ff60c01b1916600160c01b83600581111561157b5761157b614cca565b611bb4612bfd565b60115460ff1615611bd75760405162461bcd60e51b81526004016112139061572a565b601254811015611c1d5760405162461bcd60e51b81526020600482015260116024820152704c4f5745525f5448414e5f535550504c5960781b6044820152606401611213565b601055565b60006001600160a01b038216611c8c5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401611213565b506001600160a01b031660009081526006602052604090205490565b611cb0612bfd565b611cba6000613223565b565b606060098054611ccb906154da565b80601f0160208091040260200160405190810160405280929190818152602001828054611cf7906154da565b8015611d445780601f10611d1957610100808354040283529160200191611d44565b820191906000526020600020905b815481529060010190602001808311611d2757829003601f168201915b5050505050905090565b611d56612bfd565b601955565b611d63612bfd565b601455565b6000611173602061327e565b611d7c612bfd565b600254600160a01b900460ff1615611da65760405162461bcd60e51b8152600401611213906154ba565b6002805460ff60a01b1916600160a01b179055565b600260135403611ddd5760405162461bcd60e51b815260040161121390615698565b6002601355611dfa600080516020615b9283398151915233611e69565b611e165760405162461bcd60e51b8152600401611213906156cf565b60005b81811015611a8957611e42838383818110611e3657611e366153ba565b90506020020135613288565b80611e4c8161540a565b915050611e19565b6000546201000090046001600160a01b031690565b6000918252601d602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611e9c612bfd565b600f611344828261555c565b60606111736132d2565b611eba612bfd565b600c5460ff1615611edd5760405162461bcd60e51b81526004016112139061572a565b600a611344828261555c565b600260135403611f0b5760405162461bcd60e51b815260040161121390615698565b600260135560175460ff16611f4f5760405162461bcd60e51b815260206004820152600a6024820152694e4f545f41435449564560b01b6044820152606401611213565b6000611f59612b85565b9050611fa4838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506016549150611f9f9050846132e1565b61331b565b611fde5760405162461bcd60e51b815260206004820152600b60248201526a2ba927a723afa82927a7a360a91b6044820152606401611213565b6015546001600160a01b03821660009081526018602052604090205461200590869061574a565b11156120445760405162461bcd60e51b815260206004820152600e60248201526d14149157d4d0531157d31253525560921b6044820152606401611213565b34846014546120539190615471565b11156120715760405162461bcd60e51b815260040161121390615762565b6001600160a01b0381166000908152601860205260408120805486929061209990849061574a565b909155506120a990508185612c6c565b505060016013555050565b6113446120bf612b85565b8383613331565b60025460609061117390600160c01b900460ff166133fb565b6120e7612bfd565b600c5460ff161561210a5760405162461bcd60e51b81526004016112139061572a565b600b611344828261555c565b600061103c601c83613579565b61213461212e612b85565b83612cf5565b6121505760405162461bcd60e51b815260040161121390615423565b6110dc8484848461359d565b612164612bfd565b600c805460ff19166001179055565b6060600a8054611ccb906154da565b61218a612bfd565b600254600160a01b900460ff16156121b45760405162461bcd60e51b8152600401611213906154ba565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6121de612bfd565b600254600160b81b900460ff16156122205760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401611213565b6002805460ff60b81b1916600160b81b179055565b6060604051806060016040528060318152602001615b416031913960025461227790600160c01b900460ff16600581111561227257612272614cca565b6135d0565b60405160200161228892919061578f565b604051602081830303815290604052905090565b606061103c826136d0565b604080516001808252818301909252606091816020015b60408051808201909152600080825260208201528152602001906001900390816122be575050601e5481519192506001600160a01b0316908290600090612307576123076153ba565b60209081029190910101516001600160a01b03919091169052601e548151600160a01b90910461ffff16908290600090612343576123436153ba565b6020908102919091018101516001600160601b03909216910152919050565b61236b82611380565b61237481612efa565b6112c68383612f92565b6002601354036123a05760405162461bcd60e51b815260040161121390615698565b6002601355601b5460ff166123f05760405162461bcd60e51b81526020600482015260166024820152755055424c49435f53414c455f4e4f545f41435449564560501b6044820152606401611213565b601a548111156124365760405162461bcd60e51b8152602060048201526011602482015270141550931250d7d4d0531157d312535255607a1b6044820152606401611213565b34816019546124459190615471565b11156124635760405162461bcd60e51b815260040161121390615762565b61246d8282612c6c565b50506001601355565b61247e612bfd565b602280546001600160a01b0319166001600160a01b0392909216919091179055565b6124a8612bfd565b6002805460ff60a81b1916600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b6060600b8054611ccb906154da565b6002601354036125175760405162461bcd60e51b815260040161121390615698565b6002601355612534600080516020615b9283398151915233611e69565b6125505760405162461bcd60e51b8152600401611213906156cf565b611af781613288565b612561612bfd565b6002805460ff60c81b1916600160c81b179055565b61257f336137ac565b6002546001600160a01b03166125cf5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401611213565b600254600160a81b900460ff16156126295760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401611213565b60005b8381101561276a576000858583818110612648576126486153ba565b905060200201602081019061265d9190614f63565b6001600160a01b0316036126a05761269b838383818110612680576126806153ba565b6002546001600160a01b031692602090910201359050613931565b612758565b8484828181106126b2576126b26153ba565b90506020020160208101906126c79190614f63565b6002546001600160a01b039182169163a9059cbb91168585858181106126ef576126ef6153ba565b905060200201356040518363ffffffff1660e01b8152600401612713929190614bc7565b6020604051808303816000875af1158015612732573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275691906157be565b505b806127628161540a565b91505061262c565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a5848484846040516127a094939291906157db565b60405180910390a150505050565b60006127f4838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506016549150611f9f9050876132e1565b949350505050565b6060600f8054611ccb906154da565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205460ff1690565b612841612bfd565b6128586128533683900383018361585d565b613a47565b50565b612863612bfd565b6001600160a01b0381166128c85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611213565b61285881613223565b6128d9612bfd565b601555565b6128e6612bfd565b601655565b600054610100900460ff161580801561290b5750600054600160ff909116105b8061292c575061291a30612aef565b15801561292c575060005460ff166001145b61298f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611213565b6000805460ff1916600117905580156129b2576000805461ff0019166101001790555b6129bd600083613af2565b6129c682613223565b6129d68361018001516002613afc565b6129e4836101c00151613b2d565b6129fb836000015184602001518560400151613b5d565b612a0d83606001518460800151613b8f565b612a1a8360a00151613bc0565b612a22613bf0565b612a2b82613c1f565b612a33613c4f565b612a458360c001518460e00151613c7e565b612a59836101000151846101200151613cc0565b612a6d836101400151846101600151613cf1565b612a7b836101a00151613d22565b612a83613d52565b80156112c6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6000612ad83361186b565b15612aea575060131936013560601c90565b503390565b6001600160a01b03163b151590565b3390565b60006301ffc9a760e01b6001600160e01b03198316148061103c5750506001600160e01b03191660009081526001602052604090205460ff1690565b6000612b4a8383613d81565b9392505050565b6060600d8054611ccb906154da565b612b6981613dab565b6128585760405162461bcd60e51b8152600401611213906156f8565b6000611173612acd565b600081815260076020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612bc482611aff565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b612c05612b85565b6001600160a01b0316612c16611e54565b6001600160a01b031614611cba5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611213565b60105481612c7960125490565b612c83919061574a565b1115612cc25760405162461bcd60e51b815260206004820152600e60248201526d455843454544535f535550504c5960901b6044820152606401611213565b60005b818110156112c657601254612cda8482613dc8565b612ce2613de2565b5080612ced8161540a565b915050612cc5565b600080612d0183611aff565b9050806001600160a01b0316846001600160a01b03161480612d285750612d28818561280b565b806127f45750836001600160a01b0316612d4184611178565b6001600160a01b031614949350505050565b826001600160a01b0316612d6682611aff565b6001600160a01b031614612dca5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401611213565b6001600160a01b038216612e2c5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401611213565b612e37838383613df9565b612e42600082612b8f565b6001600160a01b0383166000908152600660205260408120805460019290612e6b9084906158b7565b90915550506001600160a01b0382166000908152600660205260408120805460019290612e9990849061574a565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61285881612f06612b85565b613e04565b612f158282611e69565b611344576000828152601d602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612f4e612b85565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b612f9c8282611e69565b15611344576000828152601d602090815260408083206001600160a01b03851684529091529020805460ff19169055612fd3612b85565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b60005b8151811015611344576000828281518110613037576130376153ba565b60200260200101519050612710816040015161ffff161061306a5760405162461bcd60e51b8152600401611213906158ce565b60208101516001600160a01b03166130e45780516000908152601f6020908152604090912080546001600160b01b031916905581516130a99190613e68565b5080516040519081527fa2870857763bd9ae76c957f869f16b31c18dd3bb4c7b4d3a4496dc5c57c657f99060200160405180910390a16131a9565b6040805180820182526020808401516001600160a01b0390811683528484015161ffff90811683850190815286516000908152601f855295909520935184549551909116600160a01b026001600160b01b0319909516911617929092179055815161314f9190613e74565b50805160208083015160408085015181519485526001600160a01b039092169284019290925261ffff1682820152517f389b70fb0887f01e83784eb1c4c589f740eca53b00ed0f45e41db5d079719abb9181900360600190a15b50806131b48161540a565b91505061301a565b6131c7601c82613579565b6132005760405162461bcd60e51b815260206004820152600a6024820152691393d517d313d0d2d15160b21b6044820152606401611213565b600881901c6000908152601c602052604090208054600160ff84161b1916905550565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600061103c825490565b613293601c82613579565b156132b05760405162461bcd60e51b8152600401611213906154ba565b600881901c6000908152601c602052604090208054600160ff84161b17905550565b6060600e8054611ccb906154da565b6040516001600160601b0319606083901b166020820152600090603401604051602081830303815290604052805190602001209050919050565b6000826133288584613e80565b14949350505050565b816001600160a01b0316836001600160a01b03160361338e5760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606401611213565b6001600160a01b03838116600081815260086020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6060600682600581111561341157613411614cca565b60ff16111561341f57600080fd5b81600581111561343157613431614cca565b60000361345b57505060408051808201909152600781526604342455f4343360cc1b602082015290565b81600581111561346d5761346d614cca565b60010361349757505060408051808201909152600781526621a122afa2a1a960c91b602082015290565b8160058111156134a9576134a9614cca565b6002036134d457505060408051808201909152600881526721a122afa722a1a960c11b602082015290565b8160058111156134e6576134e6614cca565b60030361351457505060408051808201909152600b81526a4342455f4e4543525f485360a81b602082015290565b81600581111561352657613526614cca565b60040361354f57505060408051808201909152600681526521a122afa82960d11b602082015290565b50506040805180820190915260098152684342455f50525f485360b81b602082015290565b919050565b600881901c600090815260208390526040902054600160ff83161b16151592915050565b6135a8848484612d53565b6135b484848484613ec5565b6110dc5760405162461bcd60e51b8152600401611213906158f3565b6060816000036135f75750506040805180820190915260018152600360fc1b602082015290565b8160005b8115613621578061360b8161540a565b915061361a9050600a836154a6565b91506135fb565b6000816001600160401b0381111561363b5761363b61494d565b6040519080825280601f01601f191660200182016040528015613665576020820181803683370190505b5090505b84156127f45761367a6001836158b7565b9150613687600a86615945565b61369290603061574a565b60f81b8183815181106136a7576136a76153ba565b60200101906001600160f81b031916908160001a9053506136c9600a866154a6565b9450613669565b60606000600a80546136e1906154da565b90501161377857600980546136f5906154da565b80601f0160208091040260200160405190810160405280929190818152602001828054613721906154da565b801561376e5780601f106137435761010080835404028352916020019161376e565b820191906000526020600020905b81548152906001019060200180831161375157829003601f168201915b505050505061103c565b600a613783836135d0565b600b604051602001613797939291906159cc565b60405160208183030381529060405292915050565b6003600254600160b01b900460ff1660038111156137cc576137cc614cca565b0361380b5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401611213565b60028054600160b01b900460ff16600381111561382a5761382a614cca565b036138325750565b6001600254600160b01b900460ff16600381111561385257613852614cca565b036138ae576002546001600160a01b038281169116146128585760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401611213565b6000600254600160b01b900460ff1660038111156138ce576138ce614cca565b0361285857806001600160a01b03166138e5611e54565b6001600160a01b0316146128585760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401611213565b804710156139815760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611213565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146139ce576040519150601f19603f3d011682016040523d82523d6000602084013e6139d3565b606091505b50509050806112c65760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401611213565b612710816020015161ffff1610613a705760405162461bcd60e51b8152600401611213906158ce565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601e80546001600160b01b031916909217600160a01b9091021790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe4192613ae79291614fa8565b60405180910390a150565b6113448282612f0b565b600054610100900460ff16613b235760405162461bcd60e51b8152600401611213906159ff565b6113448282613fd4565b600054610100900460ff16613b545760405162461bcd60e51b8152600401611213906159ff565b61285881614058565b600054610100900460ff16613b845760405162461bcd60e51b8152600401611213906159ff565b6112c683838361409f565b600054610100900460ff16613bb65760405162461bcd60e51b8152600401611213906159ff565b611344828261411d565b600054610100900460ff16613be75760405162461bcd60e51b8152600401611213906159ff565b612858816141a8565b600054610100900460ff16613c175760405162461bcd60e51b8152600401611213906159ff565b611cba6141f4565b600054610100900460ff16613c465760405162461bcd60e51b8152600401611213906159ff565b6128588161422b565b600054610100900460ff16613c765760405162461bcd60e51b8152600401611213906159ff565b611cba61427a565b600054610100900460ff16613ca55760405162461bcd60e51b8152600401611213906159ff565b613cb563209680f760e11b6142ad565b601491909155601555565b600054610100900460ff16613ce75760405162461bcd60e51b8152600401611213906159ff565b611344828261432e565b600054610100900460ff16613d185760405162461bcd60e51b8152600401611213906159ff565b6113448282614370565b600054610100900460ff16613d495760405162461bcd60e51b8152600401611213906159ff565b61285881614400565b600054610100900460ff16613d795760405162461bcd60e51b8152600401611213906159ff565b611cba614427565b6000826000018281548110613d9857613d986153ba565b9060005260206000200154905092915050565b6000908152600560205260409020546001600160a01b0316151590565b61134482826040518060200160405280600081525061445e565b60128054906000613df28361540a565b9190505550565b6112c6838383614491565b613e0e8282611e69565b61134457613e26816001600160a01b031660146144b9565b613e318360206144b9565b604051602001613e42929190615a4a565b60408051601f198184030181529082905262461bcd60e51b825261121391600401614b18565b6000612b4a8383614654565b6000612b4a8383614747565b600081815b845181101561151c57613eb182868381518110613ea457613ea46153ba565b6020026020010151614796565b915080613ebd8161540a565b915050613e85565b6000613ed9846001600160a01b0316612aef565b15613fc957836001600160a01b031663150b7a02613ef5612b85565b8786866040518563ffffffff1660e01b8152600401613f179493929190615ab9565b6020604051808303816000875af1925050508015613f52575060408051601f3d908101601f19168201909252613f4f91810190615af6565b60015b613faf573d808015613f80576040519150601f19603f3d011682016040523d82523d6000602084013e613f85565b606091505b508051600003613fa75760405162461bcd60e51b8152600401611213906158f3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506127f4565b506001949350505050565b600054610100900460ff16613ffb5760405162461bcd60e51b8152600401611213906159ff565b61400b63ac2ba33360e01b6142ad565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b83600381111561404f5761404f614cca565b02179055505050565b600054610100900460ff1661407f5760405162461bcd60e51b8152600401611213906159ff565b61408f63b964efe960e01b6142ad565b611b87630c934a3560e31b6142ad565b600054610100900460ff166140c65760405162461bcd60e51b8152600401611213906159ff565b600d6140d2848261555c565b50600e6140df838261555c565b50600f6140ec828261555c565b506140fd633d96f4ff60e11b6142ad565b61410d6380ac58cd60e01b6142ad565b6112c6635b5e139f60e01b6142ad565b600054610100900460ff166141445760405162461bcd60e51b8152600401611213906159ff565b6009614150838261555c565b50600a61415d828261555c565b50604080518082019091526005815264173539b7b760d91b6020820152600b90614187908261555c565b50614198631f2f406b60e01b6142ad565b611344635b5e139f60e01b6142ad565b600054610100900460ff166141cf5760405162461bcd60e51b8152600401611213906159ff565b60108190556141e46330f487b560e11b6142ad565b6128586380ac58cd60e01b6142ad565b600054610100900460ff1661421b5760405162461bcd60e51b8152600401611213906159ff565b611cba631aa1577160e11b6142ad565b600054610100900460ff166142525760405162461bcd60e51b8152600401611213906159ff565b614262631a056e7160e01b6142ad565b612858600080516020615b7283398151915282613af2565b600054610100900460ff166142a15760405162461bcd60e51b8152600401611213906159ff565b611cba63714ad8e760e01b5b6001600160e01b031980821690036143065760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401611213565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b600054610100900460ff166143555760405162461bcd60e51b8152600401611213906159ff565b6143656317e0bac360e31b6142ad565b601991909155601a55565b600054610100900460ff166143975760405162461bcd60e51b8152600401611213906159ff565b6143a7633a47bf5160e11b6142ad565b6143b763152a902d60e11b6142ad565b6143c763c69dbd8f60e01b6142ad565b6143d763656cb66560e11b6142ad565b604080518082019091526001600160a01b038316815261ffff821660208201526112c681613a47565b600054610100900460ff1661247e5760405162461bcd60e51b8152600401611213906159ff565b600054610100900460ff1661444e5760405162461bcd60e51b8152600401611213906159ff565b611cba632a7c3e4960e01b6142ad565b61446883836147c5565b6144756000848484613ec5565b6112c65760405162461bcd60e51b8152600401611213906158f3565b61449c601c82613579565b156112c65760405162461bcd60e51b8152600401611213906154ba565b606060006144c8836002615471565b6144d390600261574a565b6001600160401b038111156144ea576144ea61494d565b6040519080825280601f01601f191660200182016040528015614514576020820181803683370190505b509050600360fc1b8160008151811061452f5761452f6153ba565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061455e5761455e6153ba565b60200101906001600160f81b031916908160001a9053506000614582846002615471565b61458d90600161574a565b90505b6001811115614605576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106145c1576145c16153ba565b1a60f81b8282815181106145d7576145d76153ba565b60200101906001600160f81b031916908160001a90535060049490941c936145fe81615b13565b9050614590565b508315612b4a5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401611213565b6000818152600183016020526040812054801561473d5760006146786001836158b7565b855490915060009061468c906001906158b7565b90508181146146f15760008660000182815481106146ac576146ac6153ba565b90600052602060002001549050808760000184815481106146cf576146cf6153ba565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061470257614702615b2a565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061103c565b600091505061103c565b600081815260018301602052604081205461478e5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561103c565b50600061103c565b60008183106147b2576000828152602084905260409020612b4a565b6000838152602083905260409020612b4a565b6001600160a01b03821661481b5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401611213565b61482481613dab565b156148705760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b6044820152606401611213565b61487c60008383613df9565b6001600160a01b03821660009081526006602052604081208054600192906148a590849061574a565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b03198116811461285857600080fd5b60006020828403121561492b57600080fd5b8135612b4a81614903565b80356001600160a01b038116811461357457600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516101e081016001600160401b03811182821017156149865761498661494d565b60405290565b604051601f8201601f191681016001600160401b03811182821017156149b4576149b461494d565b604052919050565b60006001600160401b038211156149d5576149d561494d565b5060051b60200190565b600082601f8301126149f057600080fd5b81356020614a05614a00836149bc565b61498c565b82815260059290921b84018101918181019086841115614a2457600080fd5b8286015b84811015614a3f5780358352918301918301614a28565b509695505050505050565b600080600060608486031215614a5f57600080fd5b614a6884614936565b9250614a7660208501614936565b915060408401356001600160401b03811115614a9157600080fd5b614a9d868287016149df565b9150509250925092565b600060208284031215614ab957600080fd5b5035919050565b60005b83811015614adb578181015183820152602001614ac3565b838111156110dc5750506000910152565b60008151808452614b04816020860160208601614ac0565b601f01601f19169290920160200192915050565b602081526000612b4a6020830184614aec565b6001600160a01b0391909116815260200190565b60008060408385031215614b5257600080fd5b614b5b83614936565b946020939093013593505050565b600080600060608486031215614b7e57600080fd5b614b8784614936565b9250614b9560208501614936565b9150604084013590509250925092565b60008060408385031215614bb857600080fd5b50508035926020909101359150565b6001600160a01b03929092168252602082015260400190565b60008083601f840112614bf257600080fd5b5081356001600160401b03811115614c0957600080fd5b6020830191508360208260051b850101111561145357600080fd5b60008060208385031215614c3757600080fd5b82356001600160401b03811115614c4d57600080fd5b614c5985828601614be0565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b81811015614c9d57835183529284019291840191600101614c81565b50909695505050505050565b600060208284031215614cbb57600080fd5b813560048110612b4a57600080fd5b634e487b7160e01b600052602160045260246000fd5b6020810160048310614cf457614cf4614cca565b91905290565b801515811461285857600080fd5b600060208284031215614d1a57600080fd5b8135612b4a81614cfa565b60008060408385031215614d3857600080fd5b82359150614d4860208401614936565b90509250929050565b600082601f830112614d6257600080fd5b81356020614d72614a00836149bc565b82815260059290921b84018101918181019086841115614d9157600080fd5b8286015b84811015614a3f57614da681614936565b8352918301918301614d95565b600080600060608486031215614dc857600080fd5b83356001600160401b0380821115614ddf57600080fd5b614deb87838801614d51565b94506020860135915080821115614e0157600080fd5b614e0d87838801614d51565b93506040860135915080821115614e2357600080fd5b50614a9d868287016149df565b60006001600160401b03831115614e4957614e4961494d565b614e5c601f8401601f191660200161498c565b9050828152838383011115614e7057600080fd5b828260208301376000602084830101529392505050565b600082601f830112614e9857600080fd5b612b4a83833560208501614e30565b600060208284031215614eb957600080fd5b81356001600160401b03811115614ecf57600080fd5b6127f484828501614e87565b6020810160068310614cf457614cf4614cca565b60008060208385031215614f0257600080fd5b82356001600160401b0380821115614f1957600080fd5b818501915085601f830112614f2d57600080fd5b813581811115614f3c57600080fd5b866020606083028501011115614f5157600080fd5b60209290920196919550909350505050565b600060208284031215614f7557600080fd5b612b4a82614936565b80356006811061357457600080fd5b600060208284031215614f9f57600080fd5b612b4a82614f7e565b6001600160a01b0392909216825261ffff16602082015260400190565b600080600060408486031215614fda57600080fd5b8335925060208401356001600160401b03811115614ff757600080fd5b61500386828701614be0565b9497909650939450505050565b6000806040838503121561502357600080fd5b61502c83614936565b9150602083013561503c81614cfa565b809150509250929050565b6000806000806080858703121561505d57600080fd5b61506685614936565b935061507460208601614936565b92506040850135915060608501356001600160401b0381111561509657600080fd5b8501601f810187136150a757600080fd5b6150b687823560208401614e30565b91505092959194509250565b602080825282518282018190526000919060409081850190868401855b8281101561511657815180516001600160a01b031685528601516001600160601b03168685015292840192908501906001016150df565b5091979650505050505050565b6000806000806040858703121561513957600080fd5b84356001600160401b038082111561515057600080fd5b61515c88838901614be0565b9096509450602087013591508082111561517557600080fd5b5061518287828801614be0565b95989497509550505050565b6000806000604084860312156151a357600080fd5b6151ac84614936565b925060208401356001600160401b03811115614ff757600080fd5b600080604083850312156151da57600080fd5b6151e383614936565b9150614d4860208401614936565b60006040828403121561520357600080fd5b50919050565b803561ffff8116811461357457600080fd5b6000806040838503121561522e57600080fd5b82356001600160401b038082111561524557600080fd5b908401906101e0828703121561525a57600080fd5b615262614963565b82358281111561527157600080fd5b61527d88828601614e87565b82525060208301358281111561529257600080fd5b61529e88828601614e87565b6020830152506040830135828111156152b657600080fd5b6152c288828601614e87565b6040830152506060830135828111156152da57600080fd5b6152e688828601614e87565b6060830152506080830135828111156152fe57600080fd5b61530a88828601614e87565b60808301525060a0838101359082015260c0808401359082015260e08084013590820152610100808401359082015261012080840135908201526101409150615354828401614936565b828201526101609150615368828401615209565b82820152610180915061537c828401614936565b828201526101a09150615390828401614936565b828201526101c091506153a4828401614f7e565b82820152809450505050614d4860208401614936565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b600052601160045260246000fd5b60006001820161541c5761541c6153f4565b5060010190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b600081600019048311821515161561548b5761548b6153f4565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826154b5576154b5615490565b500490565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b600181811c908216806154ee57607f821691505b60208210810361520357634e487b7160e01b600052602260045260246000fd5b601f8211156112c657600081815260208120601f850160051c810160208610156155355750805b601f850160051c820191505b8181101561555457828155600101615541565b505050505050565b81516001600160401b038111156155755761557561494d565b6155898161558384546154da565b8461550e565b602080601f8311600181146155be57600084156155a65750858301515b600019600386901b1c1916600185901b178555615554565b600085815260208120601f198616915b828110156155ed578886015182559484019460019091019084016155ce565b508582101561560b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060828403121561562d57600080fd5b604051606081018181106001600160401b038211171561564f5761564f61494d565b6040528235815261566260208401614936565b602082015261567360408401615209565b60408201529392505050565b60006020828403121561569157600080fd5b5051919050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252600f908201526e4e4f545f4c4f434b45525f524f4c4560881b604082015260600190565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b602080825260069082015265232927ad22a760d11b604082015260600190565b6000821982111561575d5761575d6153f4565b500190565b602080825260139082015272125394d551919250d251539517d05353d55395606a1b604082015260600190565b600083516157a1818460208801614ac0565b8351908301906157b5818360208801614ac0565b01949350505050565b6000602082840312156157d057600080fd5b8151612b4a81614cfa565b6040808252810184905260008560608301825b8781101561581c576001600160a01b0361580784614936565b168252602092830192909101906001016157ee565b5083810360208501528481526001600160fb1b0385111561583c57600080fd5b8460051b915081866020830137600091016020019081529695505050505050565b60006040828403121561586f57600080fd5b604051604081018181106001600160401b03821117156158915761589161494d565b60405261589d83614936565b81526158ab60208401615209565b60208201529392505050565b6000828210156158c9576158c96153f4565b500390565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008261595457615954615490565b500690565b60008154615966816154da565b6001828116801561597e5760018114615993576159c2565b60ff19841687528215158302870194506159c2565b8560005260208060002060005b858110156159b95781548a8201529084019082016159a0565b50505082870194505b5050505092915050565b60006159d88286615959565b84516159e8818360208901614ac0565b6159f481830186615959565b979650505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351615a7c816017850160208801614ac0565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615aad816028840160208801614ac0565b01602801949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090615aec90830184614aec565b9695505050505050565b600060208284031215615b0857600080fd5b8151612b4a81614903565b600081615b2257615b226153f4565b506000190190565b634e487b7160e01b600052603160045260246000fdfe61723a2f2f5f44396b4e3157724e576243713535425341475262544234625333763851415054596d42546853625833412f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6af9a8bb3cbd6b84fbccefa71ff73e26e798553c6914585a84886212a46a90279a2646970667358221220b683f77f5a93a62f86d2aead7f82e25cac9c01b2fa32a8c025bbd71d8a3e337864736f6c634300080f0033","deployedBytecode":"0x6080604052600436106104635760003560e01c80638da5cb5b11610242578063c87b56dd11610135578063c87b56dd14610d73578063cad96cca14610d93578063d539139314610dc0578063d547741f14610de2578063d5abeb0114610e02578063d79ff99d14610e18578063da74222814610e2b578063da82b22714610e4b578063dbbc853b14610e60578063dcbe353f14610e75578063dd46706414610e95578063dd89c6fa14610eb5578063de6d6d9614610eca578063e3b9a7e514610eea578063e757c17d14610f0a578063e8a3d48514610f20578063e985e9c514610f35578063ef60ceaf14610f55578063f2fde38b14610f75578063f362136714610f95578063f384702f14610fb7578063f74bbf5914610fd1578063f95df41414610ff1578063fe50b5871461101157600080fd5b80638da5cb5b14610b0057806391d1485414610b15578063938e3d7b14610b3557806395d89b4114610b5557806399e0dd7c14610b6a5780639b6860c814610b8a5780639e6b2c5b14610ba0578063a217fddf14610bb3578063a22cb46514610bc8578063a341793b14610be8578063a9852bfb14610bfd578063aaeaca4814610c1d578063af121f5414610c33578063b27c6f2d14610c54578063b45a3c0e14610c6a578063b6c693e514610c8a578063b88d4fde14610ca4578063ba4695fd14610cc4578063bf9b7a5714610cd9578063c0ac998314610cfa578063c0bb38ff14610d0f578063c29de63014610d2f578063c723955a14610d49578063c7db289314610d5e57600080fd5b8063464bd6401161035a578063464bd640146107d057806349561cb9146107ea5780634f972f5f1461080b57806350a5292f1461082b5780635136dcc71461085957806356c022bb14610879578063572b6c05146108995780635a9b0b89146108b95780635d36598f1461091c5780636057e0ec1461093c5780636198e3391461095d5780636352211e1461097d57806364ed29131461099d5780636f8b44b0146109bd57806370a08231146109dd578063714ad8e7146109fd578063715018a614610a115780637313cba914610a265780637885fdc714610a3b578063791a251914610a765780637d7eee4214610a965780637e98034214610ab6578063837fe14014610acb578063859610c614610ae057600080fd5b806301ffc9a714610468578063059fb6f71461049d5780630653aca5146104bf57806306fdde031461050e578063081812fc14610530578063095ea7b31461055d578063167446071461057d57806318160ddd146105925780631a056e71146105b157806323b872dd146105d1578063248a9ca3146105f15780632a55205a146106115780632bb684ad1461063f5780632c2330671461066c5780632d00b5871461068c5780632d8e85b0146106ba5780632f2ff15d146106da5780632fe388be146106fa5780633542aee21461071a5780633574a2dd1461073a57806336568abe1461075a5780633acf404d1461077a5780633c0e8f2c1461079057806342842e0e146107b0575b600080fd5b34801561047457600080fd5b50610488610483366004614919565b611031565b60405190151581526020015b60405180910390f35b3480156104a957600080fd5b506104bd6104b8366004614a4a565b611042565b005b3480156104cb57600080fd5b506104df6104da366004614aa7565b6110e2565b60408051825181526020808401516001600160a01b0316908201529181015161ffff1690820152606001610494565b34801561051a57600080fd5b50610523611169565b6040516104949190614b18565b34801561053c57600080fd5b5061055061054b366004614aa7565b611178565b6040516104949190614b2b565b34801561056957600080fd5b506104bd610578366004614b3f565b61119f565b34801561058957600080fd5b506104bd6112cb565b34801561059e57600080fd5b506012545b604051908152602001610494565b3480156105bd57600080fd5b506104bd6105cc366004614b3f565b6112e2565b3480156105dd57600080fd5b506104bd6105ec366004614b69565b611348565b3480156105fd57600080fd5b506105a361060c366004614aa7565b611380565b34801561061d57600080fd5b5061063161062c366004614ba5565b611395565b604051610494929190614bc7565b34801561064b57600080fd5b5061065f61065a366004614c24565b61145a565b6040516104949190614c65565b34801561067857600080fd5b506104bd610687366004614ca9565b611524565b34801561069857600080fd5b506002546106ad90600160b01b900460ff1681565b6040516104949190614ce0565b3480156106c657600080fd5b506104bd6106d5366004614d08565b611583565b3480156106e657600080fd5b506104bd6106f5366004614d25565b61159e565b34801561070657600080fd5b506104bd610715366004614db3565b6115ba565b34801561072657600080fd5b506104bd610735366004614b3f565b61171f565b34801561074657600080fd5b506104bd610755366004614ea7565b611727565b34801561076657600080fd5b506104bd610775366004614d25565b61173b565b34801561078657600080fd5b506105a360165481565b34801561079c57600080fd5b506104bd6107ab366004614aa7565b6117c5565b3480156107bc57600080fd5b506104bd6107cb366004614b69565b6117d2565b3480156107dc57600080fd5b506017546104889060ff1681565b3480156107f657600080fd5b5060025461048890600160b81b900460ff1681565b34801561081757600080fd5b506104bd610826366004614d08565b6117ed565b34801561083757600080fd5b5060025461084c90600160c01b900460ff1681565b6040516104949190614edb565b34801561086557600080fd5b506104bd610874366004614eef565b611808565b34801561088557600080fd5b50602254610550906001600160a01b031681565b3480156108a557600080fd5b506104886108b4366004614f63565b61186b565b3480156108c557600080fd5b506108ce61187f565b604080519a8b5260208b0199909952978901969096526060880194909452608087019290925260a0860152151560c085015260e0840152610100830152151561012082015261014001610494565b34801561092857600080fd5b506104bd610937366004614c24565b6119f0565b34801561094857600080fd5b5060025461048890600160a01b900460ff1681565b34801561096957600080fd5b506104bd610978366004614aa7565b611a93565b34801561098957600080fd5b50610550610998366004614aa7565b611aff565b3480156109a957600080fd5b506104bd6109b8366004614f8d565b611b34565b3480156109c957600080fd5b506104bd6109d8366004614aa7565b611bac565b3480156109e957600080fd5b506105a36109f8366004614f63565b611c22565b348015610a0957600080fd5b506001610488565b348015610a1d57600080fd5b506104bd611ca8565b348015610a3257600080fd5b50610523611cbc565b348015610a4757600080fd5b50601e54610a68906001600160a01b03811690600160a01b900461ffff1682565b604051610494929190614fa8565b348015610a8257600080fd5b506104bd610a91366004614aa7565b611d4e565b348015610aa257600080fd5b506104bd610ab1366004614aa7565b611d5b565b348015610ac257600080fd5b506105a3611d68565b348015610ad757600080fd5b506104bd611d74565b348015610aec57600080fd5b506104bd610afb366004614c24565b611dbb565b348015610b0c57600080fd5b50610550611e54565b348015610b2157600080fd5b50610488610b30366004614d25565b611e69565b348015610b4157600080fd5b506104bd610b50366004614ea7565b611e94565b348015610b6157600080fd5b50610523611ea8565b348015610b7657600080fd5b506104bd610b85366004614ea7565b611eb2565b348015610b9657600080fd5b506105a360195481565b6104bd610bae366004614fc5565b611ee9565b348015610bbf57600080fd5b506105a3600081565b348015610bd457600080fd5b506104bd610be3366004615010565b6120b4565b348015610bf457600080fd5b506105236120c6565b348015610c0957600080fd5b506104bd610c18366004614ea7565b6120df565b348015610c2957600080fd5b506105a360155481565b348015610c3f57600080fd5b5060025461048890600160a81b900460ff1681565b348015610c6057600080fd5b506105a3601a5481565b348015610c7657600080fd5b50610488610c85366004614aa7565b612116565b348015610c9657600080fd5b50601b546104889060ff1681565b348015610cb057600080fd5b506104bd610cbf366004615047565b612123565b348015610cd057600080fd5b506104bd61215c565b348015610ce557600080fd5b5060025461048890600160c81b900460ff1681565b348015610d0657600080fd5b50610523612173565b348015610d1b57600080fd5b506104bd610d2a366004614f63565b612182565b348015610d3b57600080fd5b50600c546104889060ff1681565b348015610d5557600080fd5b506104bd6121d6565b348015610d6a57600080fd5b50610523612235565b348015610d7f57600080fd5b50610523610d8e366004614aa7565b61229c565b348015610d9f57600080fd5b50610db3610dae366004614aa7565b6122a7565b60405161049491906150c2565b348015610dcc57600080fd5b506105a3600080516020615b7283398151915281565b348015610dee57600080fd5b506104bd610dfd366004614d25565b612362565b348015610e0e57600080fd5b506105a360105481565b6104bd610e26366004614b3f565b61237e565b348015610e3757600080fd5b506104bd610e46366004614f63565b612476565b348015610e5757600080fd5b506104bd6124a0565b348015610e6c57600080fd5b506105236124e6565b348015610e8157600080fd5b50600254610550906001600160a01b031681565b348015610ea157600080fd5b506104bd610eb0366004614aa7565b6124f5565b348015610ec157600080fd5b506104bd612559565b348015610ed657600080fd5b506104bd610ee5366004615123565b612576565b348015610ef657600080fd5b50610488610f0536600461518e565b6127ae565b348015610f1657600080fd5b506105a360145481565b348015610f2c57600080fd5b506105236127fc565b348015610f4157600080fd5b50610488610f503660046151c7565b61280b565b348015610f6157600080fd5b506104bd610f703660046151f1565b612839565b348015610f8157600080fd5b506104bd610f90366004614f63565b61285b565b348015610fa157600080fd5b506105a3600080516020615b9283398151915281565b348015610fc357600080fd5b506011546104889060ff1681565b348015610fdd57600080fd5b506104bd610fec366004614aa7565b6128d1565b348015610ffd57600080fd5b506104bd61100c366004614aa7565b6128de565b34801561101d57600080fd5b506104bd61102c36600461521b565b6128eb565b600061103c82612b02565b92915050565b60005b81518110156110dc57306001600160a01b03166323b872dd8585858581518110611071576110716153ba565b60200260200101516040518463ffffffff1660e01b8152600401611097939291906153d0565b600060405180830381600087803b1580156110b157600080fd5b505af11580156110c5573d6000803e3d6000fd5b5050505080806110d49061540a565b915050611045565b50505050565b6040805160608101825260008082526020820181905291810191909152600061110c602084612b3e565b6000818152601f60209081526040918290208251808401845290546001600160a01b03808216835261ffff600160a01b90920482168385019081528551606081018752968752925116928501929092525116908201529392505050565b6060611173612b51565b905090565b600061118382612b60565b506000908152600760205260409020546001600160a01b031690565b60006111aa82611aff565b9050806001600160a01b0316836001600160a01b03160361121c5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661122e612b85565b6001600160a01b0316148061124a575061124a81610f50612b85565b6112bc5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401611213565b6112c68383612b8f565b505050565b6112d3612bfd565b6011805460ff19166001179055565b6112fc600080516020615b72833981519152610b30612b85565b61133a5760405162461bcd60e51b815260206004820152600f60248201526e4e4f545f4d494e5445525f524f4c4560881b6044820152606401611213565b6113448282612c6c565b5050565b611359611353612b85565b82612cf5565b6113755760405162461bcd60e51b815260040161121390615423565b6112c6838383612d53565b6000908152601d602052604090206001015490565b6000828152601f602052604081205481906001600160a01b0316156113fa576000848152601f60205260409020546001600160a01b03811690612710906113e790600160a01b900461ffff1686615471565b6113f191906154a6565b91509150611453565b601e546001600160a01b0316158015906114205750601e54600160a01b900461ffff1615155b1561144c57601e546001600160a01b03811690612710906113e790600160a01b900461ffff1686615471565b5060009050805b9250929050565b60606000826001600160401b038111156114765761147661494d565b60405190808252806020026020018201604052801561149f578160200160208202803683370190505b50905060005b8381101561151c576114ce8585838181106114c2576114c26153ba565b90506020020135612116565b61150a578484828181106114e4576114e46153ba565b905060200201358282815181106114fd576114fd6153ba565b6020026020010181815250505b806115148161540a565b9150506114a5565b509392505050565b61152c612bfd565b600254600160b81b900460ff16156115565760405162461bcd60e51b8152600401611213906154ba565b6002805482919060ff60b01b1916600160b01b83600381111561157b5761157b614cca565b021790555050565b61158b612bfd565b601b805460ff1916911515919091179055565b6115a782611380565b6115b081612efa565b6112c68383612f0b565b81518351146116055760405162461bcd60e51b815260206004820152601760248201527608ca49e9abea89ebe988a9c8ea890be9a92a69a82a8869604b1b6044820152606401611213565b80518351146116535760405162461bcd60e51b815260206004820152601a60248201527908ca49e9abea89e968a9cbe988a9c8ea890be9a92a69a82a886960331b6044820152606401611213565b60005b81518110156110dc57306001600160a01b03166323b872dd858381518110611680576116806153ba565b602002602001015185848151811061169a5761169a6153ba565b60200260200101518585815181106116b4576116b46153ba565b60200260200101516040518463ffffffff1660e01b81526004016116da939291906153d0565b600060405180830381600087803b1580156116f457600080fd5b505af1158015611708573d6000803e3d6000fd5b5050505080806117179061540a565b915050611656565b61133a612bfd565b61172f612bfd565b6009611344828261555c565b611743612b85565b6001600160a01b0316816001600160a01b0316146117bb5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401611213565b6113448282612f92565b6117cd612bfd565b601a55565b6112c683838360405180602001604052806000815250612123565b6117f5612bfd565b6017805460ff1916911515919091179055565b611810612bfd565b6113448282808060200260200160405190810160405280939291908181526020016000905b82821015611861576118526060830286013681900381019061561b565b81526020019060010190611835565b5050505050613017565b6022546001600160a01b0391821691161490565b60008080808080808080808080611894612b85565b6001600160a01b03161461191057306370a082316118b0612b85565b6040518263ffffffff1660e01b81526004016118cc9190614b2b565b602060405180830381865afa1580156118e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190d919061567f565b90505b601054306001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611951573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611975919061567f565b8260145460155460186000611988612b85565b6001600160a01b03166001600160a01b0316815260200190815260200160002054601760009054906101000a900460ff16601954601a54601b60009054906101000a900460ff169a509a509a509a509a509a509a509a509a509a505090919293949596979899565b600260135403611a125760405162461bcd60e51b815260040161121390615698565b6002601355611a2f600080516020615b9283398151915233611e69565b611a4b5760405162461bcd60e51b8152600401611213906156cf565b60005b81811015611a8957611a77838383818110611a6b57611a6b6153ba565b905060200201356131bc565b80611a818161540a565b915050611a4e565b5050600160135550565b600260135403611ab55760405162461bcd60e51b815260040161121390615698565b6002601355611ad2600080516020615b9283398151915233611e69565b611aee5760405162461bcd60e51b8152600401611213906156cf565b611af7816131bc565b506001601355565b6000818152600560205260408120546001600160a01b03168061103c5760405162461bcd60e51b8152600401611213906156f8565b611b3c612bfd565b600254600160c81b900460ff1615611b875760405162461bcd60e51b815260206004820152600e60248201526d131250d15394d157d313d0d2d15160921b6044820152606401611213565b6002805482919060ff60c01b1916600160c01b83600581111561157b5761157b614cca565b611bb4612bfd565b60115460ff1615611bd75760405162461bcd60e51b81526004016112139061572a565b601254811015611c1d5760405162461bcd60e51b81526020600482015260116024820152704c4f5745525f5448414e5f535550504c5960781b6044820152606401611213565b601055565b60006001600160a01b038216611c8c5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401611213565b506001600160a01b031660009081526006602052604090205490565b611cb0612bfd565b611cba6000613223565b565b606060098054611ccb906154da565b80601f0160208091040260200160405190810160405280929190818152602001828054611cf7906154da565b8015611d445780601f10611d1957610100808354040283529160200191611d44565b820191906000526020600020905b815481529060010190602001808311611d2757829003601f168201915b5050505050905090565b611d56612bfd565b601955565b611d63612bfd565b601455565b6000611173602061327e565b611d7c612bfd565b600254600160a01b900460ff1615611da65760405162461bcd60e51b8152600401611213906154ba565b6002805460ff60a01b1916600160a01b179055565b600260135403611ddd5760405162461bcd60e51b815260040161121390615698565b6002601355611dfa600080516020615b9283398151915233611e69565b611e165760405162461bcd60e51b8152600401611213906156cf565b60005b81811015611a8957611e42838383818110611e3657611e366153ba565b90506020020135613288565b80611e4c8161540a565b915050611e19565b6000546201000090046001600160a01b031690565b6000918252601d602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611e9c612bfd565b600f611344828261555c565b60606111736132d2565b611eba612bfd565b600c5460ff1615611edd5760405162461bcd60e51b81526004016112139061572a565b600a611344828261555c565b600260135403611f0b5760405162461bcd60e51b815260040161121390615698565b600260135560175460ff16611f4f5760405162461bcd60e51b815260206004820152600a6024820152694e4f545f41435449564560b01b6044820152606401611213565b6000611f59612b85565b9050611fa4838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506016549150611f9f9050846132e1565b61331b565b611fde5760405162461bcd60e51b815260206004820152600b60248201526a2ba927a723afa82927a7a360a91b6044820152606401611213565b6015546001600160a01b03821660009081526018602052604090205461200590869061574a565b11156120445760405162461bcd60e51b815260206004820152600e60248201526d14149157d4d0531157d31253525560921b6044820152606401611213565b34846014546120539190615471565b11156120715760405162461bcd60e51b815260040161121390615762565b6001600160a01b0381166000908152601860205260408120805486929061209990849061574a565b909155506120a990508185612c6c565b505060016013555050565b6113446120bf612b85565b8383613331565b60025460609061117390600160c01b900460ff166133fb565b6120e7612bfd565b600c5460ff161561210a5760405162461bcd60e51b81526004016112139061572a565b600b611344828261555c565b600061103c601c83613579565b61213461212e612b85565b83612cf5565b6121505760405162461bcd60e51b815260040161121390615423565b6110dc8484848461359d565b612164612bfd565b600c805460ff19166001179055565b6060600a8054611ccb906154da565b61218a612bfd565b600254600160a01b900460ff16156121b45760405162461bcd60e51b8152600401611213906154ba565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6121de612bfd565b600254600160b81b900460ff16156122205760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401611213565b6002805460ff60b81b1916600160b81b179055565b6060604051806060016040528060318152602001615b416031913960025461227790600160c01b900460ff16600581111561227257612272614cca565b6135d0565b60405160200161228892919061578f565b604051602081830303815290604052905090565b606061103c826136d0565b604080516001808252818301909252606091816020015b60408051808201909152600080825260208201528152602001906001900390816122be575050601e5481519192506001600160a01b0316908290600090612307576123076153ba565b60209081029190910101516001600160a01b03919091169052601e548151600160a01b90910461ffff16908290600090612343576123436153ba565b6020908102919091018101516001600160601b03909216910152919050565b61236b82611380565b61237481612efa565b6112c68383612f92565b6002601354036123a05760405162461bcd60e51b815260040161121390615698565b6002601355601b5460ff166123f05760405162461bcd60e51b81526020600482015260166024820152755055424c49435f53414c455f4e4f545f41435449564560501b6044820152606401611213565b601a548111156124365760405162461bcd60e51b8152602060048201526011602482015270141550931250d7d4d0531157d312535255607a1b6044820152606401611213565b34816019546124459190615471565b11156124635760405162461bcd60e51b815260040161121390615762565b61246d8282612c6c565b50506001601355565b61247e612bfd565b602280546001600160a01b0319166001600160a01b0392909216919091179055565b6124a8612bfd565b6002805460ff60a81b1916600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b6060600b8054611ccb906154da565b6002601354036125175760405162461bcd60e51b815260040161121390615698565b6002601355612534600080516020615b9283398151915233611e69565b6125505760405162461bcd60e51b8152600401611213906156cf565b611af781613288565b612561612bfd565b6002805460ff60c81b1916600160c81b179055565b61257f336137ac565b6002546001600160a01b03166125cf5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401611213565b600254600160a81b900460ff16156126295760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401611213565b60005b8381101561276a576000858583818110612648576126486153ba565b905060200201602081019061265d9190614f63565b6001600160a01b0316036126a05761269b838383818110612680576126806153ba565b6002546001600160a01b031692602090910201359050613931565b612758565b8484828181106126b2576126b26153ba565b90506020020160208101906126c79190614f63565b6002546001600160a01b039182169163a9059cbb91168585858181106126ef576126ef6153ba565b905060200201356040518363ffffffff1660e01b8152600401612713929190614bc7565b6020604051808303816000875af1158015612732573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275691906157be565b505b806127628161540a565b91505061262c565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a5848484846040516127a094939291906157db565b60405180910390a150505050565b60006127f4838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506016549150611f9f9050876132e1565b949350505050565b6060600f8054611ccb906154da565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205460ff1690565b612841612bfd565b6128586128533683900383018361585d565b613a47565b50565b612863612bfd565b6001600160a01b0381166128c85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611213565b61285881613223565b6128d9612bfd565b601555565b6128e6612bfd565b601655565b600054610100900460ff161580801561290b5750600054600160ff909116105b8061292c575061291a30612aef565b15801561292c575060005460ff166001145b61298f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611213565b6000805460ff1916600117905580156129b2576000805461ff0019166101001790555b6129bd600083613af2565b6129c682613223565b6129d68361018001516002613afc565b6129e4836101c00151613b2d565b6129fb836000015184602001518560400151613b5d565b612a0d83606001518460800151613b8f565b612a1a8360a00151613bc0565b612a22613bf0565b612a2b82613c1f565b612a33613c4f565b612a458360c001518460e00151613c7e565b612a59836101000151846101200151613cc0565b612a6d836101400151846101600151613cf1565b612a7b836101a00151613d22565b612a83613d52565b80156112c6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6000612ad83361186b565b15612aea575060131936013560601c90565b503390565b6001600160a01b03163b151590565b3390565b60006301ffc9a760e01b6001600160e01b03198316148061103c5750506001600160e01b03191660009081526001602052604090205460ff1690565b6000612b4a8383613d81565b9392505050565b6060600d8054611ccb906154da565b612b6981613dab565b6128585760405162461bcd60e51b8152600401611213906156f8565b6000611173612acd565b600081815260076020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612bc482611aff565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b612c05612b85565b6001600160a01b0316612c16611e54565b6001600160a01b031614611cba5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611213565b60105481612c7960125490565b612c83919061574a565b1115612cc25760405162461bcd60e51b815260206004820152600e60248201526d455843454544535f535550504c5960901b6044820152606401611213565b60005b818110156112c657601254612cda8482613dc8565b612ce2613de2565b5080612ced8161540a565b915050612cc5565b600080612d0183611aff565b9050806001600160a01b0316846001600160a01b03161480612d285750612d28818561280b565b806127f45750836001600160a01b0316612d4184611178565b6001600160a01b031614949350505050565b826001600160a01b0316612d6682611aff565b6001600160a01b031614612dca5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401611213565b6001600160a01b038216612e2c5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401611213565b612e37838383613df9565b612e42600082612b8f565b6001600160a01b0383166000908152600660205260408120805460019290612e6b9084906158b7565b90915550506001600160a01b0382166000908152600660205260408120805460019290612e9990849061574a565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61285881612f06612b85565b613e04565b612f158282611e69565b611344576000828152601d602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612f4e612b85565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b612f9c8282611e69565b15611344576000828152601d602090815260408083206001600160a01b03851684529091529020805460ff19169055612fd3612b85565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b60005b8151811015611344576000828281518110613037576130376153ba565b60200260200101519050612710816040015161ffff161061306a5760405162461bcd60e51b8152600401611213906158ce565b60208101516001600160a01b03166130e45780516000908152601f6020908152604090912080546001600160b01b031916905581516130a99190613e68565b5080516040519081527fa2870857763bd9ae76c957f869f16b31c18dd3bb4c7b4d3a4496dc5c57c657f99060200160405180910390a16131a9565b6040805180820182526020808401516001600160a01b0390811683528484015161ffff90811683850190815286516000908152601f855295909520935184549551909116600160a01b026001600160b01b0319909516911617929092179055815161314f9190613e74565b50805160208083015160408085015181519485526001600160a01b039092169284019290925261ffff1682820152517f389b70fb0887f01e83784eb1c4c589f740eca53b00ed0f45e41db5d079719abb9181900360600190a15b50806131b48161540a565b91505061301a565b6131c7601c82613579565b6132005760405162461bcd60e51b815260206004820152600a6024820152691393d517d313d0d2d15160b21b6044820152606401611213565b600881901c6000908152601c602052604090208054600160ff84161b1916905550565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600061103c825490565b613293601c82613579565b156132b05760405162461bcd60e51b8152600401611213906154ba565b600881901c6000908152601c602052604090208054600160ff84161b17905550565b6060600e8054611ccb906154da565b6040516001600160601b0319606083901b166020820152600090603401604051602081830303815290604052805190602001209050919050565b6000826133288584613e80565b14949350505050565b816001600160a01b0316836001600160a01b03160361338e5760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606401611213565b6001600160a01b03838116600081815260086020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6060600682600581111561341157613411614cca565b60ff16111561341f57600080fd5b81600581111561343157613431614cca565b60000361345b57505060408051808201909152600781526604342455f4343360cc1b602082015290565b81600581111561346d5761346d614cca565b60010361349757505060408051808201909152600781526621a122afa2a1a960c91b602082015290565b8160058111156134a9576134a9614cca565b6002036134d457505060408051808201909152600881526721a122afa722a1a960c11b602082015290565b8160058111156134e6576134e6614cca565b60030361351457505060408051808201909152600b81526a4342455f4e4543525f485360a81b602082015290565b81600581111561352657613526614cca565b60040361354f57505060408051808201909152600681526521a122afa82960d11b602082015290565b50506040805180820190915260098152684342455f50525f485360b81b602082015290565b919050565b600881901c600090815260208390526040902054600160ff83161b16151592915050565b6135a8848484612d53565b6135b484848484613ec5565b6110dc5760405162461bcd60e51b8152600401611213906158f3565b6060816000036135f75750506040805180820190915260018152600360fc1b602082015290565b8160005b8115613621578061360b8161540a565b915061361a9050600a836154a6565b91506135fb565b6000816001600160401b0381111561363b5761363b61494d565b6040519080825280601f01601f191660200182016040528015613665576020820181803683370190505b5090505b84156127f45761367a6001836158b7565b9150613687600a86615945565b61369290603061574a565b60f81b8183815181106136a7576136a76153ba565b60200101906001600160f81b031916908160001a9053506136c9600a866154a6565b9450613669565b60606000600a80546136e1906154da565b90501161377857600980546136f5906154da565b80601f0160208091040260200160405190810160405280929190818152602001828054613721906154da565b801561376e5780601f106137435761010080835404028352916020019161376e565b820191906000526020600020905b81548152906001019060200180831161375157829003601f168201915b505050505061103c565b600a613783836135d0565b600b604051602001613797939291906159cc565b60405160208183030381529060405292915050565b6003600254600160b01b900460ff1660038111156137cc576137cc614cca565b0361380b5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401611213565b60028054600160b01b900460ff16600381111561382a5761382a614cca565b036138325750565b6001600254600160b01b900460ff16600381111561385257613852614cca565b036138ae576002546001600160a01b038281169116146128585760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401611213565b6000600254600160b01b900460ff1660038111156138ce576138ce614cca565b0361285857806001600160a01b03166138e5611e54565b6001600160a01b0316146128585760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401611213565b804710156139815760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611213565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146139ce576040519150601f19603f3d011682016040523d82523d6000602084013e6139d3565b606091505b50509050806112c65760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401611213565b612710816020015161ffff1610613a705760405162461bcd60e51b8152600401611213906158ce565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601e80546001600160b01b031916909217600160a01b9091021790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe4192613ae79291614fa8565b60405180910390a150565b6113448282612f0b565b600054610100900460ff16613b235760405162461bcd60e51b8152600401611213906159ff565b6113448282613fd4565b600054610100900460ff16613b545760405162461bcd60e51b8152600401611213906159ff565b61285881614058565b600054610100900460ff16613b845760405162461bcd60e51b8152600401611213906159ff565b6112c683838361409f565b600054610100900460ff16613bb65760405162461bcd60e51b8152600401611213906159ff565b611344828261411d565b600054610100900460ff16613be75760405162461bcd60e51b8152600401611213906159ff565b612858816141a8565b600054610100900460ff16613c175760405162461bcd60e51b8152600401611213906159ff565b611cba6141f4565b600054610100900460ff16613c465760405162461bcd60e51b8152600401611213906159ff565b6128588161422b565b600054610100900460ff16613c765760405162461bcd60e51b8152600401611213906159ff565b611cba61427a565b600054610100900460ff16613ca55760405162461bcd60e51b8152600401611213906159ff565b613cb563209680f760e11b6142ad565b601491909155601555565b600054610100900460ff16613ce75760405162461bcd60e51b8152600401611213906159ff565b611344828261432e565b600054610100900460ff16613d185760405162461bcd60e51b8152600401611213906159ff565b6113448282614370565b600054610100900460ff16613d495760405162461bcd60e51b8152600401611213906159ff565b61285881614400565b600054610100900460ff16613d795760405162461bcd60e51b8152600401611213906159ff565b611cba614427565b6000826000018281548110613d9857613d986153ba565b9060005260206000200154905092915050565b6000908152600560205260409020546001600160a01b0316151590565b61134482826040518060200160405280600081525061445e565b60128054906000613df28361540a565b9190505550565b6112c6838383614491565b613e0e8282611e69565b61134457613e26816001600160a01b031660146144b9565b613e318360206144b9565b604051602001613e42929190615a4a565b60408051601f198184030181529082905262461bcd60e51b825261121391600401614b18565b6000612b4a8383614654565b6000612b4a8383614747565b600081815b845181101561151c57613eb182868381518110613ea457613ea46153ba565b6020026020010151614796565b915080613ebd8161540a565b915050613e85565b6000613ed9846001600160a01b0316612aef565b15613fc957836001600160a01b031663150b7a02613ef5612b85565b8786866040518563ffffffff1660e01b8152600401613f179493929190615ab9565b6020604051808303816000875af1925050508015613f52575060408051601f3d908101601f19168201909252613f4f91810190615af6565b60015b613faf573d808015613f80576040519150601f19603f3d011682016040523d82523d6000602084013e613f85565b606091505b508051600003613fa75760405162461bcd60e51b8152600401611213906158f3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506127f4565b506001949350505050565b600054610100900460ff16613ffb5760405162461bcd60e51b8152600401611213906159ff565b61400b63ac2ba33360e01b6142ad565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b83600381111561404f5761404f614cca565b02179055505050565b600054610100900460ff1661407f5760405162461bcd60e51b8152600401611213906159ff565b61408f63b964efe960e01b6142ad565b611b87630c934a3560e31b6142ad565b600054610100900460ff166140c65760405162461bcd60e51b8152600401611213906159ff565b600d6140d2848261555c565b50600e6140df838261555c565b50600f6140ec828261555c565b506140fd633d96f4ff60e11b6142ad565b61410d6380ac58cd60e01b6142ad565b6112c6635b5e139f60e01b6142ad565b600054610100900460ff166141445760405162461bcd60e51b8152600401611213906159ff565b6009614150838261555c565b50600a61415d828261555c565b50604080518082019091526005815264173539b7b760d91b6020820152600b90614187908261555c565b50614198631f2f406b60e01b6142ad565b611344635b5e139f60e01b6142ad565b600054610100900460ff166141cf5760405162461bcd60e51b8152600401611213906159ff565b60108190556141e46330f487b560e11b6142ad565b6128586380ac58cd60e01b6142ad565b600054610100900460ff1661421b5760405162461bcd60e51b8152600401611213906159ff565b611cba631aa1577160e11b6142ad565b600054610100900460ff166142525760405162461bcd60e51b8152600401611213906159ff565b614262631a056e7160e01b6142ad565b612858600080516020615b7283398151915282613af2565b600054610100900460ff166142a15760405162461bcd60e51b8152600401611213906159ff565b611cba63714ad8e760e01b5b6001600160e01b031980821690036143065760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401611213565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b600054610100900460ff166143555760405162461bcd60e51b8152600401611213906159ff565b6143656317e0bac360e31b6142ad565b601991909155601a55565b600054610100900460ff166143975760405162461bcd60e51b8152600401611213906159ff565b6143a7633a47bf5160e11b6142ad565b6143b763152a902d60e11b6142ad565b6143c763c69dbd8f60e01b6142ad565b6143d763656cb66560e11b6142ad565b604080518082019091526001600160a01b038316815261ffff821660208201526112c681613a47565b600054610100900460ff1661247e5760405162461bcd60e51b8152600401611213906159ff565b600054610100900460ff1661444e5760405162461bcd60e51b8152600401611213906159ff565b611cba632a7c3e4960e01b6142ad565b61446883836147c5565b6144756000848484613ec5565b6112c65760405162461bcd60e51b8152600401611213906158f3565b61449c601c82613579565b156112c65760405162461bcd60e51b8152600401611213906154ba565b606060006144c8836002615471565b6144d390600261574a565b6001600160401b038111156144ea576144ea61494d565b6040519080825280601f01601f191660200182016040528015614514576020820181803683370190505b509050600360fc1b8160008151811061452f5761452f6153ba565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061455e5761455e6153ba565b60200101906001600160f81b031916908160001a9053506000614582846002615471565b61458d90600161574a565b90505b6001811115614605576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106145c1576145c16153ba565b1a60f81b8282815181106145d7576145d76153ba565b60200101906001600160f81b031916908160001a90535060049490941c936145fe81615b13565b9050614590565b508315612b4a5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401611213565b6000818152600183016020526040812054801561473d5760006146786001836158b7565b855490915060009061468c906001906158b7565b90508181146146f15760008660000182815481106146ac576146ac6153ba565b90600052602060002001549050808760000184815481106146cf576146cf6153ba565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061470257614702615b2a565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061103c565b600091505061103c565b600081815260018301602052604081205461478e5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561103c565b50600061103c565b60008183106147b2576000828152602084905260409020612b4a565b6000838152602083905260409020612b4a565b6001600160a01b03821661481b5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401611213565b61482481613dab565b156148705760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b6044820152606401611213565b61487c60008383613df9565b6001600160a01b03821660009081526006602052604081208054600192906148a590849061574a565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b03198116811461285857600080fd5b60006020828403121561492b57600080fd5b8135612b4a81614903565b80356001600160a01b038116811461357457600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516101e081016001600160401b03811182821017156149865761498661494d565b60405290565b604051601f8201601f191681016001600160401b03811182821017156149b4576149b461494d565b604052919050565b60006001600160401b038211156149d5576149d561494d565b5060051b60200190565b600082601f8301126149f057600080fd5b81356020614a05614a00836149bc565b61498c565b82815260059290921b84018101918181019086841115614a2457600080fd5b8286015b84811015614a3f5780358352918301918301614a28565b509695505050505050565b600080600060608486031215614a5f57600080fd5b614a6884614936565b9250614a7660208501614936565b915060408401356001600160401b03811115614a9157600080fd5b614a9d868287016149df565b9150509250925092565b600060208284031215614ab957600080fd5b5035919050565b60005b83811015614adb578181015183820152602001614ac3565b838111156110dc5750506000910152565b60008151808452614b04816020860160208601614ac0565b601f01601f19169290920160200192915050565b602081526000612b4a6020830184614aec565b6001600160a01b0391909116815260200190565b60008060408385031215614b5257600080fd5b614b5b83614936565b946020939093013593505050565b600080600060608486031215614b7e57600080fd5b614b8784614936565b9250614b9560208501614936565b9150604084013590509250925092565b60008060408385031215614bb857600080fd5b50508035926020909101359150565b6001600160a01b03929092168252602082015260400190565b60008083601f840112614bf257600080fd5b5081356001600160401b03811115614c0957600080fd5b6020830191508360208260051b850101111561145357600080fd5b60008060208385031215614c3757600080fd5b82356001600160401b03811115614c4d57600080fd5b614c5985828601614be0565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b81811015614c9d57835183529284019291840191600101614c81565b50909695505050505050565b600060208284031215614cbb57600080fd5b813560048110612b4a57600080fd5b634e487b7160e01b600052602160045260246000fd5b6020810160048310614cf457614cf4614cca565b91905290565b801515811461285857600080fd5b600060208284031215614d1a57600080fd5b8135612b4a81614cfa565b60008060408385031215614d3857600080fd5b82359150614d4860208401614936565b90509250929050565b600082601f830112614d6257600080fd5b81356020614d72614a00836149bc565b82815260059290921b84018101918181019086841115614d9157600080fd5b8286015b84811015614a3f57614da681614936565b8352918301918301614d95565b600080600060608486031215614dc857600080fd5b83356001600160401b0380821115614ddf57600080fd5b614deb87838801614d51565b94506020860135915080821115614e0157600080fd5b614e0d87838801614d51565b93506040860135915080821115614e2357600080fd5b50614a9d868287016149df565b60006001600160401b03831115614e4957614e4961494d565b614e5c601f8401601f191660200161498c565b9050828152838383011115614e7057600080fd5b828260208301376000602084830101529392505050565b600082601f830112614e9857600080fd5b612b4a83833560208501614e30565b600060208284031215614eb957600080fd5b81356001600160401b03811115614ecf57600080fd5b6127f484828501614e87565b6020810160068310614cf457614cf4614cca565b60008060208385031215614f0257600080fd5b82356001600160401b0380821115614f1957600080fd5b818501915085601f830112614f2d57600080fd5b813581811115614f3c57600080fd5b866020606083028501011115614f5157600080fd5b60209290920196919550909350505050565b600060208284031215614f7557600080fd5b612b4a82614936565b80356006811061357457600080fd5b600060208284031215614f9f57600080fd5b612b4a82614f7e565b6001600160a01b0392909216825261ffff16602082015260400190565b600080600060408486031215614fda57600080fd5b8335925060208401356001600160401b03811115614ff757600080fd5b61500386828701614be0565b9497909650939450505050565b6000806040838503121561502357600080fd5b61502c83614936565b9150602083013561503c81614cfa565b809150509250929050565b6000806000806080858703121561505d57600080fd5b61506685614936565b935061507460208601614936565b92506040850135915060608501356001600160401b0381111561509657600080fd5b8501601f810187136150a757600080fd5b6150b687823560208401614e30565b91505092959194509250565b602080825282518282018190526000919060409081850190868401855b8281101561511657815180516001600160a01b031685528601516001600160601b03168685015292840192908501906001016150df565b5091979650505050505050565b6000806000806040858703121561513957600080fd5b84356001600160401b038082111561515057600080fd5b61515c88838901614be0565b9096509450602087013591508082111561517557600080fd5b5061518287828801614be0565b95989497509550505050565b6000806000604084860312156151a357600080fd5b6151ac84614936565b925060208401356001600160401b03811115614ff757600080fd5b600080604083850312156151da57600080fd5b6151e383614936565b9150614d4860208401614936565b60006040828403121561520357600080fd5b50919050565b803561ffff8116811461357457600080fd5b6000806040838503121561522e57600080fd5b82356001600160401b038082111561524557600080fd5b908401906101e0828703121561525a57600080fd5b615262614963565b82358281111561527157600080fd5b61527d88828601614e87565b82525060208301358281111561529257600080fd5b61529e88828601614e87565b6020830152506040830135828111156152b657600080fd5b6152c288828601614e87565b6040830152506060830135828111156152da57600080fd5b6152e688828601614e87565b6060830152506080830135828111156152fe57600080fd5b61530a88828601614e87565b60808301525060a0838101359082015260c0808401359082015260e08084013590820152610100808401359082015261012080840135908201526101409150615354828401614936565b828201526101609150615368828401615209565b82820152610180915061537c828401614936565b828201526101a09150615390828401614936565b828201526101c091506153a4828401614f7e565b82820152809450505050614d4860208401614936565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b600052601160045260246000fd5b60006001820161541c5761541c6153f4565b5060010190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b600081600019048311821515161561548b5761548b6153f4565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826154b5576154b5615490565b500490565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b600181811c908216806154ee57607f821691505b60208210810361520357634e487b7160e01b600052602260045260246000fd5b601f8211156112c657600081815260208120601f850160051c810160208610156155355750805b601f850160051c820191505b8181101561555457828155600101615541565b505050505050565b81516001600160401b038111156155755761557561494d565b6155898161558384546154da565b8461550e565b602080601f8311600181146155be57600084156155a65750858301515b600019600386901b1c1916600185901b178555615554565b600085815260208120601f198616915b828110156155ed578886015182559484019460019091019084016155ce565b508582101561560b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060828403121561562d57600080fd5b604051606081018181106001600160401b038211171561564f5761564f61494d565b6040528235815261566260208401614936565b602082015261567360408401615209565b60408201529392505050565b60006020828403121561569157600080fd5b5051919050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252600f908201526e4e4f545f4c4f434b45525f524f4c4560881b604082015260600190565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b602080825260069082015265232927ad22a760d11b604082015260600190565b6000821982111561575d5761575d6153f4565b500190565b602080825260139082015272125394d551919250d251539517d05353d55395606a1b604082015260600190565b600083516157a1818460208801614ac0565b8351908301906157b5818360208801614ac0565b01949350505050565b6000602082840312156157d057600080fd5b8151612b4a81614cfa565b6040808252810184905260008560608301825b8781101561581c576001600160a01b0361580784614936565b168252602092830192909101906001016157ee565b5083810360208501528481526001600160fb1b0385111561583c57600080fd5b8460051b915081866020830137600091016020019081529695505050505050565b60006040828403121561586f57600080fd5b604051604081018181106001600160401b03821117156158915761589161494d565b60405261589d83614936565b81526158ab60208401615209565b60208201529392505050565b6000828210156158c9576158c96153f4565b500390565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008261595457615954615490565b500690565b60008154615966816154da565b6001828116801561597e5760018114615993576159c2565b60ff19841687528215158302870194506159c2565b8560005260208060002060005b858110156159b95781548a8201529084019082016159a0565b50505082870194505b5050505092915050565b60006159d88286615959565b84516159e8818360208901614ac0565b6159f481830186615959565b979650505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351615a7c816017850160208801614ac0565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615aad816028840160208801614ac0565b01602801949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090615aec90830184614aec565b9695505050505050565b600060208284031215615b0857600080fd5b8151612b4a81614903565b600081615b2257615b226153f4565b506000190190565b634e487b7160e01b600052603160045260246000fdfe61723a2f2f5f44396b4e3157724e576243713535425341475262544234625333763851415054596d42546853625833412f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6af9a8bb3cbd6b84fbccefa71ff73e26e798553c6914585a84886212a46a90279a2646970667358221220b683f77f5a93a62f86d2aead7f82e25cac9c01b2fa32a8c025bbd71d8a3e337864736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/presets/ERC721TieredSalesCollection":{"address":{"1":"0xc21AC86C664015e9Eb122313cb520720e67a532b","3":"0x1ee1fEd614B687D913fD9874FBC60CBfE15964d9","4":"0xFC84a2Fa55983D1dDE73191A4e667DddA15f9117","5":"0xf0bC1455b81Cd9eFa6C89eF3ee304345450530A8","25":"0xee3fcdF6e5D1d5c5900D9B8DC388D03801d633c9","56":"0x437f9E3A2EF9089Bf3C8A89599b40f62fA2Bb3F9","65":"0x1Fc79E01fe724Ef4A1f8995f1299B90565a6AD39","66":"0x0b83BaeDCEc970EB2F695Fd0Eb07Cd6a7F31E485","97":"0x0681a5288FEFb24B65369B3f91c9281dD9d17Eba","137":"0x9aC4204908C45A88Ef92B420552d206Cc0931CeC","250":"0x8043d592263311ccCaAeeC871Df6ad1e127A52E1","280":"0x163b990d02124777104736c2b6626aDA53A1Ad4d","4002":"0x8043d592263311ccCaAeeC871Df6ad1e127A52E1","9000":"0x1Fc79E01fe724Ef4A1f8995f1299B90565a6AD39","42161":"0x3F5db007aBDcB9cA84ec4f8187A3c6Da83c44f7E","43113":"0xb91057014bFB01df21e541335a78D930266f7869","43114":"0x3E368e34Ae2CD9F2617F397cE6B6310fE1cAEaed","421611":"0x52AF631599F413FdfDD8AEC5D72578B73708Dd3C","arbitrumOne":"0x3F5db007aBDcB9cA84ec4f8187A3c6Da83c44f7E","arbitrumTestnet":"0x52AF631599F413FdfDD8AEC5D72578B73708Dd3C","avalanche":"0x3E368e34Ae2CD9F2617F397cE6B6310fE1cAEaed","avalancheFujiTestnet":"0xb91057014bFB01df21e541335a78D930266f7869","bsc":"0x437f9E3A2EF9089Bf3C8A89599b40f62fA2Bb3F9","bscTestnet":"0x0681a5288FEFb24B65369B3f91c9281dD9d17Eba","cronos":"0xee3fcdF6e5D1d5c5900D9B8DC388D03801d633c9","evmosTestnet":"0x1Fc79E01fe724Ef4A1f8995f1299B90565a6AD39","ftmTestnet":"0x8043d592263311ccCaAeeC871Df6ad1e127A52E1","goerli":"0xf0bC1455b81Cd9eFa6C89eF3ee304345450530A8","mainnet":"0xc21AC86C664015e9Eb122313cb520720e67a532b","okcMainnet":"0x0b83BaeDCEc970EB2F695Fd0Eb07Cd6a7F31E485","okcTestnet":"0x1Fc79E01fe724Ef4A1f8995f1299B90565a6AD39","opera":"0x8043d592263311ccCaAeeC871Df6ad1e127A52E1","polygon":"0x9aC4204908C45A88Ef92B420552d206Cc0931CeC","rinkeby":"0xFC84a2Fa55983D1dDE73191A4e667DddA15f9117","ropsten":"0x1ee1fEd614B687D913fD9874FBC60CBfE15964d9","zksyncTestnet":"0x163b990d02124777104736c2b6626aDA53A1Ad4d"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721TieredSalesCollection","sourceName":"contracts/collections/ERC721/presets/ERC721TieredSalesCollection.sol","abi":[{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"string","name":"placeholderURI","type":"string"},{"internalType":"string","name":"tokenURIPrefix","type":"string"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct IERC721TieringExtension.Tier[]","name":"tiers","type":"tuple[]"},{"internalType":"address","name":"defaultRoyaltyAddress","type":"address"},{"internalType":"uint16","name":"defaultRoyaltyBps","type":"uint16"},{"internalType":"address","name":"proceedsRecipient","type":"address"},{"internalType":"address","name":"trustedForwarder","type":"address"},{"internalType":"enum LicenseVersion","name":"licenseVersion","type":"uint8"}],"internalType":"struct ERC721TieredSalesCollection.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"DefaultRoyaltySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"TokenRoyaltyRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"TokenRoyaltySet","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":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LOCKER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"tierId","type":"uint256"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct IERC721TieringExtension.Tier","name":"tier","type":"tuple"}],"name":"configureTiering","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tierIds","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct IERC721TieringExtension.Tier[]","name":"_tiers","type":"tuple[]"}],"name":"configureTiering","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultRoyalty","outputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"eligibleForTier","outputs":[{"internalType":"uint256","name":"maxMintable","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"filterUnlocked","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"freezeTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getRaribleV2Royalties","outputs":[{"components":[{"internalType":"address payable","name":"account","type":"address"},{"internalType":"uint96","name":"value","type":"uint96"}],"internalType":"struct LibPart.Part[]","name":"result","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenRoyaltiesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getTokenRoyaltyByIndex","outputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasRoleBasedLockableExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"string","name":"placeholderURI","type":"string"},{"internalType":"string","name":"tokenURIPrefix","type":"string"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct IERC721TieringExtension.Tier[]","name":"tiers","type":"tuple[]"},{"internalType":"address","name":"defaultRoyaltyAddress","type":"address"},{"internalType":"uint16","name":"defaultRoyaltyBps","type":"uint16"},{"internalType":"address","name":"proceedsRecipient","type":"address"},{"internalType":"address","name":"trustedForwarder","type":"address"},{"internalType":"enum LicenseVersion","name":"licenseVersion","type":"uint8"}],"internalType":"struct ERC721TieredSalesCollection.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","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":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersion","outputs":[{"internalType":"enum LicenseVersion","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersionLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"locked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintByTier","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onTierAllowlist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","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":[],"name":"placeholderURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"remainingForTier","outputs":[{"internalType":"uint256","name":"tierRemaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reservedMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyalty","name":"royalty","type":"tuple"}],"name":"setDefaultRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum LicenseVersion","name":"_licenseVersion","type":"uint8"}],"name":"setLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setPlaceholderURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig[]","name":"royaltyConfigs","type":"tuple[]"}],"name":"setTokenRoyalties","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURIPrefix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURISuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"trustedForwarder","type":"address"}],"name":"setTrustedForwarder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tierMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tiers","outputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIPrefix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURISuffix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReserved","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"walletMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"name":"walletMintedByTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405260006012553480156200001657600080fd5b506040516200713138038062007131833981016040819052620000399162000fd0565b8051602082015160046200005662000050620000bd565b620000d9565b6002805482919060ff60c01b1916600160c01b8360058111156200007e576200007e6200117f565b02179055506003905062000093838262001223565b506004620000a2828262001223565b5050600160135550620000b6813362000134565b506200139d565b6000620000d46200033860201b62002b381760201c565b905090565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620001555750600054600160ff909116105b8062000185575062000172306200037060201b62002b5a1760201c565b15801562000185575060005460ff166001145b620001ee5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000212576000805461ff0019166101001790555b6200021f6000836200037f565b6200022a82620000d9565b6101208301516200023d9060026200038f565b6101608301516200024e90620003c5565b82516020840151604085015162000267929190620003fd565b62000281836060015184608001516200043460201b60201c565b60a083015162000291906200046a565b6200029b6200049f565b620002a682620004d5565b620002b06200050a565b60c0830151620002c0906200053e565b620002db8360e001518461010001516200057360201b60201c565b610140830151620002ec90620005a9565b801562000333576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b601f546000906001600160a01b031633036200035b575060131936013560601c90565b620000d4620005de60201b62002b691760201c565b6001600160a01b03163b151590565b6200038b8282620005e2565b5050565b600054610100900460ff16620003b95760405162461bcd60e51b8152600401620001e590620012ef565b6200038b828262000688565b600054610100900460ff16620003ef5760405162461bcd60e51b8152600401620001e590620012ef565b620003fa8162000714565b50565b600054610100900460ff16620004275760405162461bcd60e51b8152600401620001e590620012ef565b6200033383838362000792565b600054610100900460ff166200045e5760405162461bcd60e51b8152600401620001e590620012ef565b6200038b82826200081f565b600054610100900460ff16620004945760405162461bcd60e51b8152600401620001e590620012ef565b620003fa81620008b7565b600054610100900460ff16620004c95760405162461bcd60e51b8152600401620001e590620012ef565b620004d36200090a565b565b600054610100900460ff16620004ff5760405162461bcd60e51b8152600401620001e590620012ef565b620003fa8162000946565b600054610100900460ff16620005345760405162461bcd60e51b8152600401620001e590620012ef565b620004d3620009ae565b600054610100900460ff16620005685760405162461bcd60e51b8152600401620001e590620012ef565b620003fa81620009ea565b600054610100900460ff166200059d5760405162461bcd60e51b8152600401620001e590620012ef565b6200038b828262000b17565b600054610100900460ff16620005d35760405162461bcd60e51b8152600401620001e590620012ef565b620003fa8162000bb4565b3390565b6000828152601a602090815260408083206001600160a01b038516845290915290205460ff166200038b576000828152601a602090815260408083206001600160a01b03851684529091529020805460ff1916600117905562000644620000bd565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600054610100900460ff16620006b25760405162461bcd60e51b8152600401620001e590620012ef565b620006c463ac2ba33360e01b62000c00565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b8360038111156200070b576200070b6200117f565b02179055505050565b600054610100900460ff166200073e5760405162461bcd60e51b8152600401620001e590620012ef565b6200075063b964efe960e01b62000c00565b62000762630c934a3560e31b62000c00565b6002805482919060ff60c01b1916600160c01b8360058111156200078a576200078a6200117f565b021790555050565b600054610100900460ff16620007bc5760405162461bcd60e51b8152600401620001e590620012ef565b600d620007ca848262001223565b50600e620007d9838262001223565b50600f620007e8828262001223565b50620007fb633d96f4ff60e11b62000c00565b6200080d6380ac58cd60e01b62000c00565b62000333635b5e139f60e01b62000c00565b600054610100900460ff16620008495760405162461bcd60e51b8152600401620001e590620012ef565b600962000857838262001223565b50600a62000866828262001223565b50604080518082019091526005815264173539b7b760d91b6020820152600b9062000892908262001223565b50620008a5631f2f406b60e01b62000c00565b6200038b635b5e139f60e01b62000c00565b600054610100900460ff16620008e15760405162461bcd60e51b8152600401620001e590620012ef565b6010819055620008f86330f487b560e11b62000c00565b620003fa6380ac58cd60e01b62000c00565b600054610100900460ff16620009345760405162461bcd60e51b8152600401620001e590620012ef565b620004d3631aa1577160e11b62000c00565b600054610100900460ff16620009705760405162461bcd60e51b8152600401620001e590620012ef565b62000982631a056e7160e01b62000c00565b620003fa7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6826200037f565b600054610100900460ff16620009d85760405162461bcd60e51b8152600401620001e590620012ef565b620004d363714ad8e760e01b62000c00565b600054610100900460ff1662000a145760405162461bcd60e51b8152600401620001e590620012ef565b62000a266308b4902960e41b62000c00565b60005b81518110156200038b5781818151811062000a485762000a486200133a565b602090810291909101810151600083815260148352604090819020825181559282015160018401558101516002830180546001600160a01b0319166001600160a01b03909216919091179055606081015160038301556080810151600483015560a0810151600583015560c0810151600683015560e00151600790910155815182908290811062000add5762000add6200133a565b602002602001015160c001516015600082825462000afc919062001366565b9091555081905062000b0e8162001381565b91505062000a29565b600054610100900460ff1662000b415760405162461bcd60e51b8152600401620001e590620012ef565b62000b53633a47bf5160e11b62000c00565b62000b6563152a902d60e11b62000c00565b62000b7763c69dbd8f60e01b62000c00565b62000b8963656cb66560e11b62000c00565b604080518082019091526001600160a01b038316815261ffff82166020820152620003338162000c84565b600054610100900460ff1662000bde5760405162461bcd60e51b8152600401620001e590620012ef565b601f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160e01b0319808216900362000c5c5760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e74657266616365206964000000006044820152606401620001e5565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b612710816020015161ffff161062000ccd5760405162461bcd60e51b815260206004820152600b60248201526a496e76616c69642062707360a81b6044820152606401620001e5565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601b8054600160a01b9092026001600160b01b03199092169092171790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe419262000d5f92916001600160a01b0392909216825261ffff16602082015260400190565b60405180910390a150565b634e487b7160e01b600052604160045260246000fd5b60405161010081016001600160401b038111828210171562000da65762000da662000d6a565b60405290565b60405161018081016001600160401b038111828210171562000da65762000da662000d6a565b604051601f8201601f191681016001600160401b038111828210171562000dfd5762000dfd62000d6a565b604052919050565b600082601f83011262000e1757600080fd5b81516001600160401b0381111562000e335762000e3362000d6a565b602062000e49601f8301601f1916820162000dd2565b828152858284870101111562000e5e57600080fd5b60005b8381101562000e7e57858101830151828201840152820162000e61565b8381111562000e905760008385840101525b5095945050505050565b80516001600160a01b038116811462000eb257600080fd5b919050565b600082601f83011262000ec957600080fd5b815160206001600160401b0382111562000ee75762000ee762000d6a565b62000ef7818360051b0162000dd2565b82815260089290921b8401810191818101908684111562000f1757600080fd5b8286015b8481101562000fa257610100818903121562000f375760008081fd5b62000f4162000d80565b815181528482015185820152604062000f5c81840162000e9a565b90820152606082810151908201526080808301519082015260a0808301519082015260c0808301519082015260e080830151908201528352918301916101000162000f1b565b509695505050505050565b805161ffff8116811462000eb257600080fd5b80516006811062000eb257600080fd5b60006020828403121562000fe357600080fd5b81516001600160401b038082111562000ffb57600080fd5b9083019061018082860312156200101157600080fd5b6200101b62000dac565b8251828111156200102b57600080fd5b620010398782860162000e05565b8252506020830151828111156200104f57600080fd5b6200105d8782860162000e05565b6020830152506040830151828111156200107657600080fd5b620010848782860162000e05565b6040830152506060830151828111156200109d57600080fd5b620010ab8782860162000e05565b606083015250608083015182811115620010c457600080fd5b620010d28782860162000e05565b60808301525060a083015160a082015260c083015182811115620010f557600080fd5b620011038782860162000eb7565b60c0830152506200111760e0840162000e9a565b60e082015261010091506200112e82840162000fad565b8282015261012091506200114482840162000e9a565b8282015261014091506200115a82840162000e9a565b8282015261016091506200117082840162000fc0565b91810191909152949350505050565b634e487b7160e01b600052602160045260246000fd5b600181811c90821680620011aa57607f821691505b602082108103620011cb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033357600081815260208120601f850160051c81016020861015620011fa5750805b601f850160051c820191505b818110156200121b5782815560010162001206565b505050505050565b81516001600160401b038111156200123f576200123f62000d6a565b620012578162001250845462001195565b84620011d1565b602080601f8311600181146200128f5760008415620012765750858301515b600019600386901b1c1916600185901b1785556200121b565b600085815260208120601f198616915b82811015620012c0578886015182559484019460019091019084016200129f565b5085821015620012df5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156200137c576200137c62001350565b500190565b60006001820162001396576200139662001350565b5060010190565b615d8480620013ad6000396000f3fe60806040526004361061040b5760003560e01c8063837fe14011610216578063c71b0e1c1161011f578063c71b0e1c14610d40578063c723955a14610d56578063c7db289314610d6b578063c87b56dd14610d80578063cad96cca14610da0578063d539139314610dcd578063d547741f14610def578063d5abeb0114610e0f578063d8b436fd14610e25578063da74222814610e45578063da82b22714610e65578063dbbc853b14610e7a578063dcbe353f14610e8f578063dd46706414610eaf578063dd89c6fa14610ecf578063de6d6d9614610ee4578063e8a3d48514610f04578063e985e9c514610f19578063ef60ceaf14610f39578063f2fde38b14610f59578063f362136714610f79578063f384702f14610f9b57600080fd5b8063837fe14014610ab9578063859610c614610ace5780638da5cb5b14610aee57806391d1485414610b03578063938e3d7b14610b235780639598144a14610b4357806395d89b4114610b7b57806399e0dd7c14610b90578063a217fddf14610bb0578063a22cb46514610bc5578063a341793b14610be5578063a65dbda414610bfa578063a9852bfb14610c1a578063af121f5414610c3a578063b45a3c0e14610c5b578063b88d4fde14610c7b578063ba4695fd14610c9b578063bd2c18f714610cb0578063bf9b7a5714610cd0578063c0ac998314610cf1578063c0bb38ff14610d06578063c29de63014610d2657600080fd5b806342842e0e1161031857806342842e0e146107fb57806349561cb91461081b57806350a5292f1461083c5780635136dcc71461086a57806353367f081461088a57806356c022bb146108b7578063572b6c05146108d75780635897f878146108f75780635d36598f146109175780635ea2c91b146109375780636057e0ec1461094a5780636198e3391461096b5780636352211e1461098b57806364ed2913146109ab57806368c7d37c146109cb5780636f8b44b0146109eb57806370a0823114610a0b578063714ad8e714610a2b578063715018a614610a3f5780637313cba914610a545780637885fdc714610a695780637e98034214610aa457600080fd5b806301ffc9a714610410578063039af9eb146104455780630653aca5146104f657806306fdde0314610545578063081812fc14610567578063095ea7b31461059f5780631123f2ef146105c1578063167446071461061257806318160ddd146106275780631a056e711461063c57806320f1bb301461065c57806323b872dd1461067c578063248a9ca31461069c5780632a55205a146106bc5780632bb684ad146106ea5780632c233067146107175780632cb9b2ac146107375780632d00b5871461074d5780632f2ff15d1461077b5780633542aee21461079b5780633574a2dd146107bb57806336568abe146107db575b600080fd5b34801561041c57600080fd5b5061043061042b366004614a65565b610fb5565b60405190151581526020015b60405180910390f35b34801561045157600080fd5b506104ad610460366004614a82565b60146020526000908152604090208054600182015460028301546003840154600485015460058601546006870154600790970154959694956001600160a01b039094169492939192909188565b6040805198895260208901979097526001600160a01b03909516958701959095526060860192909252608085015260a084015260c083019190915260e08201526101000161043c565b34801561050257600080fd5b50610516610511366004614a82565b610fc6565b60408051825181526020808401516001600160a01b0316908201529181015161ffff169082015260600161043c565b34801561055157600080fd5b5061055a61104b565b60405161043c9190614af3565b34801561057357600080fd5b50610587610582366004614a82565b61105a565b6040516001600160a01b03909116815260200161043c565b3480156105ab57600080fd5b506105bf6105ba366004614b26565b611081565b005b3480156105cd57600080fd5b506106046105dc366004614b52565b60009182526017602090815260408084206001600160a01b0393909316845291905290205490565b60405190815260200161043c565b34801561061e57600080fd5b506105bf6111ad565b34801561063357600080fd5b50601254610604565b34801561064857600080fd5b506105bf610657366004614b26565b6111c4565b34801561066857600080fd5b506105bf610677366004614b82565b61122a565b34801561068857600080fd5b506105bf610697366004614bbc565b611410565b3480156106a857600080fd5b506106046106b7366004614a82565b611448565b3480156106c857600080fd5b506106dc6106d7366004614bfd565b61145d565b60405161043c929190614c1f565b3480156106f657600080fd5b5061070a610705366004614c7c565b611522565b60405161043c9190614cbd565b34801561072357600080fd5b506105bf610732366004614d01565b6115ec565b34801561074357600080fd5b5061060460185481565b34801561075957600080fd5b5060025461076e90600160b01b900460ff1681565b60405161043c9190614d38565b34801561078757600080fd5b506105bf610796366004614b52565b61164b565b3480156107a757600080fd5b506105bf6107b6366004614b26565b611667565b3480156107c757600080fd5b506105bf6107d6366004614e5b565b61166f565b3480156107e757600080fd5b506105bf6107f6366004614b52565b611683565b34801561080757600080fd5b506105bf610816366004614bbc565b61170d565b34801561082757600080fd5b5060025461043090600160b81b900460ff1681565b34801561084857600080fd5b5060025461085d90600160c01b900460ff1681565b60405161043c9190614e8f565b34801561087657600080fd5b506105bf610885366004614ea3565b611728565b34801561089657600080fd5b506106046108a5366004614a82565b60166020526000908152604090205481565b3480156108c357600080fd5b50601f54610587906001600160a01b031681565b3480156108e357600080fd5b506104306108f2366004614f17565b61178b565b34801561090357600080fd5b50610604610912366004614a82565b61179f565b34801561092357600080fd5b506105bf610932366004614c7c565b61181c565b6105bf610945366004614f34565b6118bf565b34801561095657600080fd5b5060025461043090600160a01b900460ff1681565b34801561097757600080fd5b506105bf610986366004614a82565b611b8b565b34801561099757600080fd5b506105876109a6366004614a82565b611bf7565b3480156109b757600080fd5b506105bf6109c6366004614fa3565b611c2c565b3480156109d757600080fd5b506104306109e6366004614fbe565b611ca4565b3480156109f757600080fd5b506105bf610a06366004614a82565b611d46565b348015610a1757600080fd5b50610604610a26366004614f17565b611d5a565b348015610a3757600080fd5b506001610430565b348015610a4b57600080fd5b506105bf611de0565b348015610a6057600080fd5b5061055a611df4565b348015610a7557600080fd5b50601b54610a96906001600160a01b03811690600160a01b900461ffff1682565b60405161043c92919061500a565b348015610ab057600080fd5b50610604611e86565b348015610ac557600080fd5b506105bf611e92565b348015610ada57600080fd5b506105bf610ae9366004614c7c565b611ed9565b348015610afa57600080fd5b50610587611f72565b348015610b0f57600080fd5b50610430610b1e366004614b52565b611f87565b348015610b2f57600080fd5b506105bf610b3e366004614e5b565b611fb2565b348015610b4f57600080fd5b50610604610b5e366004614b52565b601760209081526000928352604080842090915290825290205481565b348015610b8757600080fd5b5061055a611fc6565b348015610b9c57600080fd5b506105bf610bab366004614e5b565b611fd0565b348015610bbc57600080fd5b50610604600081565b348015610bd157600080fd5b506105bf610be0366004615035565b612007565b348015610bf157600080fd5b5061055a612019565b348015610c0657600080fd5b506105bf610c1536600461515f565b612032565b348015610c2657600080fd5b506105bf610c35366004614e5b565b6121f2565b348015610c4657600080fd5b5060025461043090600160a81b900460ff1681565b348015610c6757600080fd5b50610430610c76366004614a82565b612229565b348015610c8757600080fd5b506105bf610c963660046152fe565b612236565b348015610ca757600080fd5b506105bf612275565b348015610cbc57600080fd5b50610604610ccb366004614fbe565b61228c565b348015610cdc57600080fd5b5060025461043090600160c81b900460ff1681565b348015610cfd57600080fd5b5061055a6124bd565b348015610d1257600080fd5b506105bf610d21366004614f17565b6124cc565b348015610d3257600080fd5b50600c546104309060ff1681565b348015610d4c57600080fd5b5061060460155481565b348015610d6257600080fd5b506105bf612520565b348015610d7757600080fd5b5061055a61257f565b348015610d8c57600080fd5b5061055a610d9b366004614a82565b6125e6565b348015610dac57600080fd5b50610dc0610dbb366004614a82565b6125f1565b60405161043c919061537d565b348015610dd957600080fd5b50610604600080516020615d0f83398151915281565b348015610dfb57600080fd5b506105bf610e0a366004614b52565b6126ac565b348015610e1b57600080fd5b5061060460105481565b348015610e3157600080fd5b506105bf610e403660046153de565b6126c8565b348015610e5157600080fd5b506105bf610e60366004614f17565b61272e565b348015610e7157600080fd5b506105bf612758565b348015610e8657600080fd5b5061055a61279e565b348015610e9b57600080fd5b50600254610587906001600160a01b031681565b348015610ebb57600080fd5b506105bf610eca366004614a82565b6127ad565b348015610edb57600080fd5b506105bf612811565b348015610ef057600080fd5b506105bf610eff366004615477565b61282e565b348015610f1057600080fd5b5061055a612a66565b348015610f2557600080fd5b50610430610f343660046154e2565b612a75565b348015610f4557600080fd5b506105bf610f54366004615510565b612aa3565b348015610f6557600080fd5b506105bf610f74366004614f17565b612ac2565b348015610f8557600080fd5b50610604600080516020615d2f83398151915281565b348015610fa757600080fd5b506011546104309060ff1681565b6000610fc082612b6d565b92915050565b6040805160608101825260008082526020820181905291810182905290610fee601d84612ba9565b6000818152601c60209081526040918290208251808401845290546001600160a01b03808216835261ffff600160a01b90920482168385019081528551606081018752968752925116928501929092525116908201529392505050565b6060611055612bbc565b905090565b600061106582612bcb565b506000908152600760205260409020546001600160a01b031690565b600061108c82611bf7565b9050806001600160a01b0316836001600160a01b0316036110fe5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b0316611110612bf0565b6001600160a01b0316148061112c575061112c81610f34612bf0565b61119e5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016110f5565b6111a88383612bfa565b505050565b6111b5612c68565b6011805460ff19166001179055565b6111de600080516020615d0f833981519152610b1e612bf0565b61121c5760405162461bcd60e51b815260206004820152600f60248201526e4e4f545f4d494e5445525f524f4c4560881b60448201526064016110f5565b6112268282612cd7565b5050565b611232612c68565b60008281526016602052604090205460e082013510156112885760405162461bcd60e51b81526020600482015260116024820152701313d5d15497d512105397d35253951151607a1b60448201526064016110f5565b600082815260146020526040902060060154156112f65760008281526016602052604090205460c082013510156112f65760405162461bcd60e51b81526020600482015260126024820152711313d5d7d49154d154959157d05353d5539560721b60448201526064016110f5565b6000828152601660205260409020541561136457600082815260146020526040902060040154608082013510156113645760405162461bcd60e51b81526020600482015260126024820152711313d5d7d3505617d4115497d5d05313115560721b60448201526064016110f5565b600082815260146020526040812060060154601580549192909161138990849061553e565b9091555050600082815260146020526040902081906113a88282615555565b9050508060c00135601560008282546113c191906155c6565b909155505060105460155411156112265760405162461bcd60e51b815260206004820152601360248201527213505617d4d55414131657d15610d151511151606a1b60448201526064016110f5565b61142161141b612bf0565b82612d60565b61143d5760405162461bcd60e51b81526004016110f5906155de565b6111a8838383612dbf565b6000908152601a602052604090206001015490565b6000828152601c602052604081205481906001600160a01b0316156114c2576000848152601c60205260409020546001600160a01b03811690612710906114af90600160a01b900461ffff168661562c565b6114b99190615661565b9150915061151b565b601b546001600160a01b0316158015906114e85750601b54600160a01b900461ffff1615155b1561151457601b546001600160a01b03811690612710906114af90600160a01b900461ffff168661562c565b5060009050805b9250929050565b60606000826001600160401b0381111561153e5761153e614d52565b604051908082528060200260200182016040528015611567578160200160208202803683370190505b50905060005b838110156115e45761159685858381811061158a5761158a615675565b90506020020135612229565b6115d2578484828181106115ac576115ac615675565b905060200201358282815181106115c5576115c5615675565b6020026020010181815250505b806115dc8161568b565b91505061156d565b509392505050565b6115f4612c68565b600254600160b81b900460ff161561161e5760405162461bcd60e51b81526004016110f5906156a4565b6002805482919060ff60b01b1916600160b01b83600381111561164357611643614d22565b021790555050565b61165482611448565b61165d81612f66565b6111a88383612f77565b61121c612c68565b611677612c68565b60096112268282615746565b61168b612bf0565b6001600160a01b0316816001600160a01b0316146117035760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016110f5565b6112268282612ffe565b6111a883838360405180602001604052806000815250612236565b611730612c68565b6112268282808060200260200160405190810160405280939291908181526020016000905b828210156117815761177260608302860136819003810190615805565b81526020019060010190611755565b5050505050613083565b601f546001600160a01b0391821691161490565b60006018546015546117b1919061553e565b6012546010546117c1919061553e565b6117cb919061553e565b600083815260146020526040902060060154909150156118175760008281526016602090815260408083205460149092529091206006015461180d919061553e565b610fc090826155c6565b919050565b60026013540361183e5760405162461bcd60e51b81526004016110f59061586b565b600260135561185b600080516020615d2f83398151915233611f87565b6118775760405162461bcd60e51b81526004016110f5906158a2565b60005b818110156118b5576118a383838381811061189757611897615675565b9050602002013561322a565b806118ad8161568b565b91505061187a565b5050600160135550565b6002601354036118e15760405162461bcd60e51b81526004016110f59061586b565b600260135560006118f0612bf0565b90506000611901878387878761228c565b9050808611156119415760405162461bcd60e51b815260206004820152600b60248201526a08ab0868a8a88a6be9a82b60ab1b60448201526064016110f5565b61194a8761179f565b8611156119695760405162461bcd60e51b81526004016110f5906158cb565b60008781526014602090815260408083206007015460169092529091205461199190886155c6565b11156119af5760405162461bcd60e51b81526004016110f5906158cb565b6000878152601460205260409020600201546001600160a01b0316611a365760008781526014602052604090206003015434906119ed90889061562c565b1115611a315760405162461bcd60e51b8152602060048201526013602482015272125394d551919250d251539517d05353d55395606a1b60448201526064016110f5565b611aea565b600087815260146020526040902060028101546003909101546001600160a01b03909116906323b872dd9084903090611a70908b9061562c565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015611ac4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae891906158f7565b505b60008781526017602090815260408083206001600160a01b038616845290915281208054889290611b1c9084906155c6565b909155505060008781526016602052604081208054889290611b3f9084906155c6565b909155505060008781526014602052604090206006015415611b73578560186000828254611b6d91906155c6565b90915550505b611b7d8287612cd7565b505060016013555050505050565b600260135403611bad5760405162461bcd60e51b81526004016110f59061586b565b6002601355611bca600080516020615d2f83398151915233611f87565b611be65760405162461bcd60e51b81526004016110f5906158a2565b611bef8161322a565b506001601355565b6000818152600560205260408120546001600160a01b031680610fc05760405162461bcd60e51b81526004016110f590615914565b611c34612c68565b600254600160c81b900460ff1615611c7f5760405162461bcd60e51b815260206004820152600e60248201526d131250d15394d157d313d0d2d15160921b60448201526064016110f5565b6002805482919060ff60c01b1916600160c01b83600581111561164357611643614d22565b6000611d3a83838080602002602001604051908101604052809392919081815260200183836020028082843760009201829052508b8152601460205260409020600501549250611d359150899050886040516001600160601b0319606084901b1660208201526034810182905260009060540160405160208183030381529060405280519060200120905092915050565b613291565b90505b95945050505050565b611d4e612c68565b611d57816132a7565b50565b60006001600160a01b038216611dc45760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016110f5565b506001600160a01b031660009081526006602052604090205490565b611de8612c68565b611df26000613319565b565b606060098054611e03906156c4565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2f906156c4565b8015611e7c5780601f10611e5157610100808354040283529160200191611e7c565b820191906000526020600020905b815481529060010190602001808311611e5f57829003601f168201915b5050505050905090565b6000611055601d613374565b611e9a612c68565b600254600160a01b900460ff1615611ec45760405162461bcd60e51b81526004016110f5906156a4565b6002805460ff60a01b1916600160a01b179055565b600260135403611efb5760405162461bcd60e51b81526004016110f59061586b565b6002601355611f18600080516020615d2f83398151915233611f87565b611f345760405162461bcd60e51b81526004016110f5906158a2565b60005b818110156118b557611f60838383818110611f5457611f54615675565b9050602002013561337e565b80611f6a8161568b565b915050611f37565b6000546201000090046001600160a01b031690565b6000918252601a602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611fba612c68565b600f6112268282615746565b60606110556133c8565b611fd8612c68565b600c5460ff1615611ffb5760405162461bcd60e51b81526004016110f590615946565b600a6112268282615746565b611226612012612bf0565b83836133d7565b60025460609061105590600160c01b900460ff166134a1565b600054610100900460ff16158080156120525750600054600160ff909116105b80612073575061206130612b5a565b158015612073575060005460ff166001145b6120d65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016110f5565b6000805460ff1916600117905580156120f9576000805461ff0019166101001790555b61210460008361361a565b61210d82613319565b61211d8361012001516002613624565b61212b836101600151613655565b612142836000015184602001518560400151613685565b612154836060015184608001516136b7565b6121618360a001516136e8565b612169613718565b61217282613747565b61217a613777565b6121878360c001516137a6565b61219a8360e001518461010001516137d6565b6121a8836101400151613807565b80156111a8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6121fa612c68565b600c5460ff161561221d5760405162461bcd60e51b81526004016110f590615946565b600b6112268282615746565b6000610fc0601983613837565b612247612241612bf0565b83612d60565b6122635760405162461bcd60e51b81526004016110f5906155de565b61226f8484848461385b565b50505050565b61227d612c68565b600c805460ff19166001179055565b6000858152601460205260408120600401546122d75760405162461bcd60e51b815260206004820152600a6024820152694e4f545f45584953545360b01b60448201526064016110f5565b6000868152601460205260409020544210156123235760405162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b60448201526064016110f5565b6000868152601460205260409020600101544211156123745760405162461bcd60e51b815260206004820152600d60248201526c1053149150511657d153911151609a1b60448201526064016110f5565b60008681526017602090815260408083206001600160a01b03891684528252808320548984526014909252909120600401546123b0919061553e565b60008781526014602052604090206005015490915015611d3d5760008681526017602090815260408083206001600160a01b0389168452909152902054841161242d5760405162461bcd60e51b815260206004820152600f60248201526e4d415845445f414c4c4f57414e434560881b60448201526064016110f5565b61243a8686868686611ca4565b6124785760405162461bcd60e51b815260206004820152600f60248201526e1393d517d0531313d5d31254d51151608a1b60448201526064016110f5565b60008681526017602090815260408083206001600160a01b03891684529091528120546124a5908661553e565b9050808211156124b3578091505b5095945050505050565b6060600a8054611e03906156c4565b6124d4612c68565b600254600160a01b900460ff16156124fe5760405162461bcd60e51b81526004016110f5906156a4565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b612528612c68565b600254600160b81b900460ff161561256a5760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b60448201526064016110f5565b6002805460ff60b81b1916600160b81b179055565b6060604051806060016040528060318152602001615cde603191396002546125c190600160c01b900460ff1660058111156125bc576125bc614d22565b61388e565b6040516020016125d2929190615966565b604051602081830303815290604052905090565b6060610fc08261398e565b604080516001808252818301909252606091816020015b6040805180820190915260008082526020820152815260200190600190039081612608575050601b5481519192506001600160a01b031690829060009061265157612651615675565b60209081029190910101516001600160a01b03919091169052601b548151600160a01b90910461ffff1690829060009061268d5761268d615675565b6020908102919091018101516001600160601b03909216910152919050565b6126b582611448565b6126be81612f66565b6111a88383612ffe565b6126d0612c68565b60005b83811015612727576127158585838181106126f0576126f0615675565b9050602002013584848481811061270957612709615675565b9050610100020161122a565b8061271f8161568b565b9150506126d3565b5050505050565b612736612c68565b601f80546001600160a01b0319166001600160a01b0392909216919091179055565b612760612c68565b6002805460ff60a81b1916600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b6060600b8054611e03906156c4565b6002601354036127cf5760405162461bcd60e51b81526004016110f59061586b565b60026013556127ec600080516020615d2f83398151915233611f87565b6128085760405162461bcd60e51b81526004016110f5906158a2565b611bef8161337e565b612819612c68565b6002805460ff60c81b1916600160c81b179055565b61283733613a6a565b6002546001600160a01b03166128875760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b60448201526064016110f5565b600254600160a81b900460ff16156128e15760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b454460448201526064016110f5565b60005b83811015612a2257600085858381811061290057612900615675565b90506020020160208101906129159190614f17565b6001600160a01b0316036129585761295383838381811061293857612938615675565b6002546001600160a01b031692602090910201359050613bef565b612a10565b84848281811061296a5761296a615675565b905060200201602081019061297f9190614f17565b6002546001600160a01b039182169163a9059cbb91168585858181106129a7576129a7615675565b905060200201356040518363ffffffff1660e01b81526004016129cb929190614c1f565b6020604051808303816000875af11580156129ea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0e91906158f7565b505b80612a1a8161568b565b9150506128e4565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a584848484604051612a589493929190615995565b60405180910390a150505050565b6060600f8054611e03906156c4565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205460ff1690565b612aab612c68565b611d57612abd36839003830183615a19565b613d05565b612aca612c68565b6001600160a01b038116612b2f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016110f5565b611d5781613319565b6000612b433361178b565b15612b55575060131936013560601c90565b503390565b6001600160a01b03163b151590565b3390565b60006301ffc9a760e01b6001600160e01b031983161480610fc05750506001600160e01b03191660009081526001602052604090205460ff1690565b6000612bb58383613db0565b9392505050565b6060600d8054611e03906156c4565b612bd481613dda565b611d575760405162461bcd60e51b81526004016110f590615914565b6000611055612b38565b600081815260076020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612c2f82611bf7565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b612c70612bf0565b6001600160a01b0316612c81611f72565b6001600160a01b031614611df25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016110f5565b60105481612ce460125490565b612cee91906155c6565b1115612d2d5760405162461bcd60e51b815260206004820152600e60248201526d455843454544535f535550504c5960901b60448201526064016110f5565b60005b818110156111a857601254612d458482613df7565b612d4d613e11565b5080612d588161568b565b915050612d30565b600080612d6c83611bf7565b9050806001600160a01b0316846001600160a01b03161480612d935750612d938185612a75565b80612db75750836001600160a01b0316612dac8461105a565b6001600160a01b0316145b949350505050565b826001600160a01b0316612dd282611bf7565b6001600160a01b031614612e365760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016110f5565b6001600160a01b038216612e985760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016110f5565b612ea3838383613e28565b612eae600082612bfa565b6001600160a01b0383166000908152600660205260408120805460019290612ed790849061553e565b90915550506001600160a01b0382166000908152600660205260408120805460019290612f059084906155c6565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b611d5781612f72612bf0565b613e33565b612f818282611f87565b611226576000828152601a602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612fba612bf0565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6130088282611f87565b15611226576000828152601a602090815260408083206001600160a01b03851684529091529020805460ff1916905561303f612bf0565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b60005b81518110156112265760008282815181106130a3576130a3615675565b60200260200101519050612710816040015161ffff16106130d65760405162461bcd60e51b81526004016110f590615a75565b60208101516001600160a01b031661314f5780516000908152601c6020526040902080546001600160b01b0319169055805161311490601d90613e97565b5080516040519081527fa2870857763bd9ae76c957f869f16b31c18dd3bb4c7b4d3a4496dc5c57c657f99060200160405180910390a1613217565b6040805180820182526020808401516001600160a01b0390811683528484015161ffff90811683850190815286516000908152601c90945294909220925183549451909216600160a01b026001600160b01b031990941691161791909117905580516131bd90601d90613ea3565b50805160208083015160408085015181519485526001600160a01b039092169284019290925261ffff1682820152517f389b70fb0887f01e83784eb1c4c589f740eca53b00ed0f45e41db5d079719abb9181900360600190a15b50806132228161568b565b915050613086565b613235601982613837565b61326e5760405162461bcd60e51b815260206004820152600a6024820152691393d517d313d0d2d15160b21b60448201526064016110f5565b600881901c60009081526019602052604090208054600160ff84161b1916905550565b60008261329e8584613eaf565b14949350505050565b6132af612c68565b6132b881613ef4565b6018546015546132c8919061553e565b6012546132d5908361553e565b1015611d575760405162461bcd60e51b81526020600482015260136024820152721313d5d15497d512105397d49154d154959151606a1b60448201526064016110f5565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6000610fc0825490565b613389601982613837565b156133a65760405162461bcd60e51b81526004016110f5906156a4565b600881901c60009081526019602052604090208054600160ff84161b17905550565b6060600e8054611e03906156c4565b816001600160a01b0316836001600160a01b0316036134345760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b60448201526064016110f5565b6001600160a01b03838116600081815260086020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b606060068260058111156134b7576134b7614d22565b60ff1611156134c557600080fd5b8160058111156134d7576134d7614d22565b60000361350157505060408051808201909152600781526604342455f4343360cc1b602082015290565b81600581111561351357613513614d22565b60010361353d57505060408051808201909152600781526621a122afa2a1a960c91b602082015290565b81600581111561354f5761354f614d22565b60020361357a57505060408051808201909152600881526721a122afa722a1a960c11b602082015290565b81600581111561358c5761358c614d22565b6003036135ba57505060408051808201909152600b81526a4342455f4e4543525f485360a81b602082015290565b8160058111156135cc576135cc614d22565b6004036135f557505060408051808201909152600681526521a122afa82960d11b602082015290565b50506040805180820190915260098152684342455f50525f485360b81b602082015290565b6112268282612f77565b600054610100900460ff1661364b5760405162461bcd60e51b81526004016110f590615a9a565b6112268282613f6a565b600054610100900460ff1661367c5760405162461bcd60e51b81526004016110f590615a9a565b611d5781613fee565b600054610100900460ff166136ac5760405162461bcd60e51b81526004016110f590615a9a565b6111a8838383614035565b600054610100900460ff166136de5760405162461bcd60e51b81526004016110f590615a9a565b61122682826140b3565b600054610100900460ff1661370f5760405162461bcd60e51b81526004016110f590615a9a565b611d578161413e565b600054610100900460ff1661373f5760405162461bcd60e51b81526004016110f590615a9a565b611df261418a565b600054610100900460ff1661376e5760405162461bcd60e51b81526004016110f590615a9a565b611d57816141c1565b600054610100900460ff1661379e5760405162461bcd60e51b81526004016110f590615a9a565b611df2614210565b600054610100900460ff166137cd5760405162461bcd60e51b81526004016110f590615a9a565b611d5781614247565b600054610100900460ff166137fd5760405162461bcd60e51b81526004016110f590615a9a565b6112268282614363565b600054610100900460ff1661382e5760405162461bcd60e51b81526004016110f590615a9a565b611d57816143f3565b600881901c600090815260208390526040902054600160ff83161b16151592915050565b613866848484612dbf565b6138728484848461441a565b61226f5760405162461bcd60e51b81526004016110f590615ae5565b6060816000036138b55750506040805180820190915260018152600360fc1b602082015290565b8160005b81156138df57806138c98161568b565b91506138d89050600a83615661565b91506138b9565b6000816001600160401b038111156138f9576138f9614d52565b6040519080825280601f01601f191660200182016040528015613923576020820181803683370190505b5090505b8415612db75761393860018361553e565b9150613945600a86615b37565b6139509060306155c6565b60f81b81838151811061396557613965615675565b60200101906001600160f81b031916908160001a905350613987600a86615661565b9450613927565b60606000600a805461399f906156c4565b905011613a3657600980546139b3906156c4565b80601f01602080910402602001604051908101604052809291908181526020018280546139df906156c4565b8015613a2c5780601f10613a0157610100808354040283529160200191613a2c565b820191906000526020600020905b815481529060010190602001808311613a0f57829003601f168201915b5050505050610fc0565b600a613a418361388e565b600b604051602001613a5593929190615bbe565b60405160208183030381529060405292915050565b6003600254600160b01b900460ff166003811115613a8a57613a8a614d22565b03613ac95760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b60448201526064016110f5565b60028054600160b01b900460ff166003811115613ae857613ae8614d22565b03613af05750565b6001600254600160b01b900460ff166003811115613b1057613b10614d22565b03613b6c576002546001600160a01b03828116911614611d575760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b60448201526064016110f5565b6000600254600160b01b900460ff166003811115613b8c57613b8c614d22565b03611d5757806001600160a01b0316613ba3611f72565b6001600160a01b031614611d575760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b60448201526064016110f5565b80471015613c3f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016110f5565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613c8c576040519150601f19603f3d011682016040523d82523d6000602084013e613c91565b606091505b50509050806111a85760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b60648201526084016110f5565b612710816020015161ffff1610613d2e5760405162461bcd60e51b81526004016110f590615a75565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601b80546001600160b01b031916909217600160a01b9091021790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe4192613da5929161500a565b60405180910390a150565b6000826000018281548110613dc757613dc7615675565b9060005260206000200154905092915050565b6000908152600560205260409020546001600160a01b0316151590565b611226828260405180602001604052806000815250614529565b60128054906000613e218361568b565b9190505550565b6111a883838361455c565b613e3d8282611f87565b61122657613e55816001600160a01b03166014614584565b613e60836020614584565b604051602001613e71929190615bf1565b60408051601f198184030181529082905262461bcd60e51b82526110f591600401614af3565b6000612bb5838361471f565b6000612bb58383614812565b600081815b84518110156115e457613ee082868381518110613ed357613ed3615675565b6020026020010151614861565b915080613eec8161568b565b915050613eb4565b613efc612c68565b60115460ff1615613f1f5760405162461bcd60e51b81526004016110f590615946565b601254811015613f655760405162461bcd60e51b81526020600482015260116024820152704c4f5745525f5448414e5f535550504c5960781b60448201526064016110f5565b601055565b600054610100900460ff16613f915760405162461bcd60e51b81526004016110f590615a9a565b613fa163ac2ba33360e01b614890565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b836003811115613fe557613fe5614d22565b02179055505050565b600054610100900460ff166140155760405162461bcd60e51b81526004016110f590615a9a565b61402563b964efe960e01b614890565b611c7f630c934a3560e31b614890565b600054610100900460ff1661405c5760405162461bcd60e51b81526004016110f590615a9a565b600d6140688482615746565b50600e6140758382615746565b50600f6140828282615746565b50614093633d96f4ff60e11b614890565b6140a36380ac58cd60e01b614890565b6111a8635b5e139f60e01b614890565b600054610100900460ff166140da5760405162461bcd60e51b81526004016110f590615a9a565b60096140e68382615746565b50600a6140f38282615746565b50604080518082019091526005815264173539b7b760d91b6020820152600b9061411d9082615746565b5061412e631f2f406b60e01b614890565b611226635b5e139f60e01b614890565b600054610100900460ff166141655760405162461bcd60e51b81526004016110f590615a9a565b601081905561417a6330f487b560e11b614890565b611d576380ac58cd60e01b614890565b600054610100900460ff166141b15760405162461bcd60e51b81526004016110f590615a9a565b611df2631aa1577160e11b614890565b600054610100900460ff166141e85760405162461bcd60e51b81526004016110f590615a9a565b6141f8631a056e7160e01b614890565b611d57600080516020615d0f8339815191528261361a565b600054610100900460ff166142375760405162461bcd60e51b81526004016110f590615a9a565b611df263714ad8e760e01b614890565b600054610100900460ff1661426e5760405162461bcd60e51b81526004016110f590615a9a565b61427e6308b4902960e41b614890565b60005b81518110156112265781818151811061429c5761429c615675565b602090810291909101810151600083815260148352604090819020825181559282015160018401558101516002830180546001600160a01b0319166001600160a01b03909216919091179055606081015160038301556080810151600483015560a0810151600583015560c0810151600683015560e00151600790910155815182908290811061432e5761432e615675565b602002602001015160c001516015600082825461434b91906155c6565b9091555081905061435b8161568b565b915050614281565b600054610100900460ff1661438a5760405162461bcd60e51b81526004016110f590615a9a565b61439a633a47bf5160e11b614890565b6143aa63152a902d60e11b614890565b6143ba63c69dbd8f60e01b614890565b6143ca63656cb66560e11b614890565b604080518082019091526001600160a01b038316815261ffff821660208201526111a881613d05565b600054610100900460ff166127365760405162461bcd60e51b81526004016110f590615a9a565b600061442e846001600160a01b0316612b5a565b1561451e57836001600160a01b031663150b7a0261444a612bf0565b8786866040518563ffffffff1660e01b815260040161446c9493929190615c60565b6020604051808303816000875af19250505080156144a7575060408051601f3d908101601f191682019092526144a491810190615c93565b60015b614504573d8080156144d5576040519150601f19603f3d011682016040523d82523d6000602084013e6144da565b606091505b5080516000036144fc5760405162461bcd60e51b81526004016110f590615ae5565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612db7565b506001949350505050565b6145338383614911565b614540600084848461441a565b6111a85760405162461bcd60e51b81526004016110f590615ae5565b614567601982613837565b156111a85760405162461bcd60e51b81526004016110f5906156a4565b6060600061459383600261562c565b61459e9060026155c6565b6001600160401b038111156145b5576145b5614d52565b6040519080825280601f01601f1916602001820160405280156145df576020820181803683370190505b509050600360fc1b816000815181106145fa576145fa615675565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061462957614629615675565b60200101906001600160f81b031916908160001a905350600061464d84600261562c565b6146589060016155c6565b90505b60018111156146d0576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061468c5761468c615675565b1a60f81b8282815181106146a2576146a2615675565b60200101906001600160f81b031916908160001a90535060049490941c936146c981615cb0565b905061465b565b508315612bb55760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016110f5565b6000818152600183016020526040812054801561480857600061474360018361553e565b85549091506000906147579060019061553e565b90508181146147bc57600086600001828154811061477757614777615675565b906000526020600020015490508087600001848154811061479a5761479a615675565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806147cd576147cd615cc7565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610fc0565b6000915050610fc0565b600081815260018301602052604081205461485957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610fc0565b506000610fc0565b600081831061487d576000828152602084905260409020612bb5565b6000838152602083905260409020612bb5565b6001600160e01b031980821690036148e95760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b60448201526064016110f5565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b6001600160a01b0382166149675760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016110f5565b61497081613dda565b156149bc5760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b60448201526064016110f5565b6149c860008383613e28565b6001600160a01b03821660009081526006602052604081208054600192906149f19084906155c6565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b031981168114611d5757600080fd5b600060208284031215614a7757600080fd5b8135612bb581614a4f565b600060208284031215614a9457600080fd5b5035919050565b60005b83811015614ab6578181015183820152602001614a9e565b8381111561226f5750506000910152565b60008151808452614adf816020860160208601614a9b565b601f01601f19169290920160200192915050565b602081526000612bb56020830184614ac7565b6001600160a01b0381168114611d5757600080fd5b803561181781614b06565b60008060408385031215614b3957600080fd5b8235614b4481614b06565b946020939093013593505050565b60008060408385031215614b6557600080fd5b823591506020830135614b7781614b06565b809150509250929050565b600080828403610120811215614b9757600080fd5b83359250610100601f1982011215614bae57600080fd5b506020830190509250929050565b600080600060608486031215614bd157600080fd5b8335614bdc81614b06565b92506020840135614bec81614b06565b929592945050506040919091013590565b60008060408385031215614c1057600080fd5b50508035926020909101359150565b6001600160a01b03929092168252602082015260400190565b60008083601f840112614c4a57600080fd5b5081356001600160401b03811115614c6157600080fd5b6020830191508360208260051b850101111561151b57600080fd5b60008060208385031215614c8f57600080fd5b82356001600160401b03811115614ca557600080fd5b614cb185828601614c38565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b81811015614cf557835183529284019291840191600101614cd9565b50909695505050505050565b600060208284031215614d1357600080fd5b813560048110612bb557600080fd5b634e487b7160e01b600052602160045260246000fd5b6020810160048310614d4c57614d4c614d22565b91905290565b634e487b7160e01b600052604160045260246000fd5b60405161010081016001600160401b0381118282101715614d8b57614d8b614d52565b60405290565b60405161018081016001600160401b0381118282101715614d8b57614d8b614d52565b604051601f8201601f191681016001600160401b0381118282101715614ddc57614ddc614d52565b604052919050565b60006001600160401b03831115614dfd57614dfd614d52565b614e10601f8401601f1916602001614db4565b9050828152838383011115614e2457600080fd5b828260208301376000602084830101529392505050565b600082601f830112614e4c57600080fd5b612bb583833560208501614de4565b600060208284031215614e6d57600080fd5b81356001600160401b03811115614e8357600080fd5b612db784828501614e3b565b6020810160068310614d4c57614d4c614d22565b60008060208385031215614eb657600080fd5b82356001600160401b0380821115614ecd57600080fd5b818501915085601f830112614ee157600080fd5b813581811115614ef057600080fd5b866020606083028501011115614f0557600080fd5b60209290920196919550909350505050565b600060208284031215614f2957600080fd5b8135612bb581614b06565b600080600080600060808688031215614f4c57600080fd5b85359450602086013593506040860135925060608601356001600160401b03811115614f7757600080fd5b614f8388828901614c38565b969995985093965092949392505050565b80356006811061181757600080fd5b600060208284031215614fb557600080fd5b612bb582614f94565b600080600080600060808688031215614fd657600080fd5b853594506020860135614fe881614b06565b93506040860135925060608601356001600160401b03811115614f7757600080fd5b6001600160a01b0392909216825261ffff16602082015260400190565b8015158114611d5757600080fd5b6000806040838503121561504857600080fd5b823561505381614b06565b91506020830135614b7781615027565b600082601f83011261507457600080fd5b813560206001600160401b0382111561508f5761508f614d52565b61509d818360051b01614db4565b82815260089290921b840181019181810190868411156150bc57600080fd5b8286015b848110156151425761010081890312156150da5760008081fd5b6150e2614d68565b8135815284820135858201526040808301356150fd81614b06565b90820152606082810135908201526080808301359082015260a0808301359082015260c0808301359082015260e08083013590820152835291830191610100016150c0565b509695505050505050565b803561ffff8116811461181757600080fd5b6000806040838503121561517257600080fd5b82356001600160401b038082111561518957600080fd5b90840190610180828703121561519e57600080fd5b6151a6614d91565b8235828111156151b557600080fd5b6151c188828601614e3b565b8252506020830135828111156151d657600080fd5b6151e288828601614e3b565b6020830152506040830135828111156151fa57600080fd5b61520688828601614e3b565b60408301525060608301358281111561521e57600080fd5b61522a88828601614e3b565b60608301525060808301358281111561524257600080fd5b61524e88828601614e3b565b60808301525060a083013560a082015260c08301358281111561527057600080fd5b61527c88828601615063565b60c08301525061528e60e08401614b1b565b60e082015261010091506152a382840161514d565b8282015261012091506152b7828401614b1b565b8282015261014091506152cb828401614b1b565b8282015261016091506152df828401614f94565b828201528094505050506152f560208401614b1b565b90509250929050565b6000806000806080858703121561531457600080fd5b843561531f81614b06565b9350602085013561532f81614b06565b92506040850135915060608501356001600160401b0381111561535157600080fd5b8501601f8101871361536257600080fd5b61537187823560208401614de4565b91505092959194509250565b602080825282518282018190526000919060409081850190868401855b828110156153d157815180516001600160a01b031685528601516001600160601b031686850152928401929085019060010161539a565b5091979650505050505050565b600080600080604085870312156153f457600080fd5b84356001600160401b038082111561540b57600080fd5b61541788838901614c38565b9096509450602087013591508082111561543057600080fd5b818701915087601f83011261544457600080fd5b81358181111561545357600080fd5b8860208260081b850101111561546857600080fd5b95989497505060200194505050565b6000806000806040858703121561548d57600080fd5b84356001600160401b03808211156154a457600080fd5b6154b088838901614c38565b909650945060208701359150808211156154c957600080fd5b506154d687828801614c38565b95989497509550505050565b600080604083850312156154f557600080fd5b823561550081614b06565b91506020830135614b7781614b06565b60006040828403121561552257600080fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008282101561555057615550615528565b500390565b813581556020820135600182015560028101604083013561557581614b06565b81546001600160a01b0319166001600160a01b0391909116179055606082013560038201556080820135600482015560a0820135600582015560c0820135600682015560e090910135600790910155565b600082198211156155d9576155d9615528565b500190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b600081600019048311821515161561564657615646615528565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826156705761567061564b565b500490565b634e487b7160e01b600052603260045260246000fd5b60006001820161569d5761569d615528565b5060010190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b600181811c908216806156d857607f821691505b60208210810361552257634e487b7160e01b600052602260045260246000fd5b601f8211156111a857600081815260208120601f850160051c8101602086101561571f5750805b601f850160051c820191505b8181101561573e5782815560010161572b565b505050505050565b81516001600160401b0381111561575f5761575f614d52565b6157738161576d84546156c4565b846156f8565b602080601f8311600181146157a857600084156157905750858301515b600019600386901b1c1916600185901b17855561573e565b600085815260208120601f198616915b828110156157d7578886015182559484019460019091019084016157b8565b50858210156157f55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060828403121561581757600080fd5b604051606081018181106001600160401b038211171561583957615839614d52565b60405282358152602083013561584e81614b06565b602082015261585f6040840161514d565b60408201529392505050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252600f908201526e4e4f545f4c4f434b45525f524f4c4560881b604082015260600190565b60208082526012908201527122ac21a2a2a229afa0a62627a1a0aa24a7a760711b604082015260600190565b60006020828403121561590957600080fd5b8151612bb581615027565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b602080825260069082015265232927ad22a760d11b604082015260600190565b60008351615978818460208801614a9b565b83519083019061598c818360208801614a9b565b01949350505050565b6040808252810184905260008560608301825b878110156159d85782356159bb81614b06565b6001600160a01b03168252602092830192909101906001016159a8565b5083810360208501528481526001600160fb1b038511156159f857600080fd5b8460051b915081866020830137600091016020019081529695505050505050565b600060408284031215615a2b57600080fd5b604051604081018181106001600160401b0382111715615a4d57615a4d614d52565b6040528235615a5b81614b06565b8152615a696020840161514d565b60208201529392505050565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600082615b4657615b4661564b565b500690565b60008154615b58816156c4565b60018281168015615b705760018114615b8557615bb4565b60ff1984168752821515830287019450615bb4565b8560005260208060002060005b85811015615bab5781548a820152908401908201615b92565b50505082870194505b5050505092915050565b6000615bca8286615b4b565b8451615bda818360208901614a9b565b615be681830186615b4b565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351615c23816017850160208801614a9b565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615c54816028840160208801614a9b565b01602801949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611d3a90830184614ac7565b600060208284031215615ca557600080fd5b8151612bb581614a4f565b600081615cbf57615cbf615528565b506000190190565b634e487b7160e01b600052603160045260246000fdfe61723a2f2f5f44396b4e3157724e576243713535425341475262544234625333763851415054596d42546853625833412f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6af9a8bb3cbd6b84fbccefa71ff73e26e798553c6914585a84886212a46a90279a2646970667358221220dcf6d9cdac278714df8259707064a39921911e895c4b948a1bb81be811e1db1364736f6c634300080f0033","deployedBytecode":"0x60806040526004361061040b5760003560e01c8063837fe14011610216578063c71b0e1c1161011f578063c71b0e1c14610d40578063c723955a14610d56578063c7db289314610d6b578063c87b56dd14610d80578063cad96cca14610da0578063d539139314610dcd578063d547741f14610def578063d5abeb0114610e0f578063d8b436fd14610e25578063da74222814610e45578063da82b22714610e65578063dbbc853b14610e7a578063dcbe353f14610e8f578063dd46706414610eaf578063dd89c6fa14610ecf578063de6d6d9614610ee4578063e8a3d48514610f04578063e985e9c514610f19578063ef60ceaf14610f39578063f2fde38b14610f59578063f362136714610f79578063f384702f14610f9b57600080fd5b8063837fe14014610ab9578063859610c614610ace5780638da5cb5b14610aee57806391d1485414610b03578063938e3d7b14610b235780639598144a14610b4357806395d89b4114610b7b57806399e0dd7c14610b90578063a217fddf14610bb0578063a22cb46514610bc5578063a341793b14610be5578063a65dbda414610bfa578063a9852bfb14610c1a578063af121f5414610c3a578063b45a3c0e14610c5b578063b88d4fde14610c7b578063ba4695fd14610c9b578063bd2c18f714610cb0578063bf9b7a5714610cd0578063c0ac998314610cf1578063c0bb38ff14610d06578063c29de63014610d2657600080fd5b806342842e0e1161031857806342842e0e146107fb57806349561cb91461081b57806350a5292f1461083c5780635136dcc71461086a57806353367f081461088a57806356c022bb146108b7578063572b6c05146108d75780635897f878146108f75780635d36598f146109175780635ea2c91b146109375780636057e0ec1461094a5780636198e3391461096b5780636352211e1461098b57806364ed2913146109ab57806368c7d37c146109cb5780636f8b44b0146109eb57806370a0823114610a0b578063714ad8e714610a2b578063715018a614610a3f5780637313cba914610a545780637885fdc714610a695780637e98034214610aa457600080fd5b806301ffc9a714610410578063039af9eb146104455780630653aca5146104f657806306fdde0314610545578063081812fc14610567578063095ea7b31461059f5780631123f2ef146105c1578063167446071461061257806318160ddd146106275780631a056e711461063c57806320f1bb301461065c57806323b872dd1461067c578063248a9ca31461069c5780632a55205a146106bc5780632bb684ad146106ea5780632c233067146107175780632cb9b2ac146107375780632d00b5871461074d5780632f2ff15d1461077b5780633542aee21461079b5780633574a2dd146107bb57806336568abe146107db575b600080fd5b34801561041c57600080fd5b5061043061042b366004614a65565b610fb5565b60405190151581526020015b60405180910390f35b34801561045157600080fd5b506104ad610460366004614a82565b60146020526000908152604090208054600182015460028301546003840154600485015460058601546006870154600790970154959694956001600160a01b039094169492939192909188565b6040805198895260208901979097526001600160a01b03909516958701959095526060860192909252608085015260a084015260c083019190915260e08201526101000161043c565b34801561050257600080fd5b50610516610511366004614a82565b610fc6565b60408051825181526020808401516001600160a01b0316908201529181015161ffff169082015260600161043c565b34801561055157600080fd5b5061055a61104b565b60405161043c9190614af3565b34801561057357600080fd5b50610587610582366004614a82565b61105a565b6040516001600160a01b03909116815260200161043c565b3480156105ab57600080fd5b506105bf6105ba366004614b26565b611081565b005b3480156105cd57600080fd5b506106046105dc366004614b52565b60009182526017602090815260408084206001600160a01b0393909316845291905290205490565b60405190815260200161043c565b34801561061e57600080fd5b506105bf6111ad565b34801561063357600080fd5b50601254610604565b34801561064857600080fd5b506105bf610657366004614b26565b6111c4565b34801561066857600080fd5b506105bf610677366004614b82565b61122a565b34801561068857600080fd5b506105bf610697366004614bbc565b611410565b3480156106a857600080fd5b506106046106b7366004614a82565b611448565b3480156106c857600080fd5b506106dc6106d7366004614bfd565b61145d565b60405161043c929190614c1f565b3480156106f657600080fd5b5061070a610705366004614c7c565b611522565b60405161043c9190614cbd565b34801561072357600080fd5b506105bf610732366004614d01565b6115ec565b34801561074357600080fd5b5061060460185481565b34801561075957600080fd5b5060025461076e90600160b01b900460ff1681565b60405161043c9190614d38565b34801561078757600080fd5b506105bf610796366004614b52565b61164b565b3480156107a757600080fd5b506105bf6107b6366004614b26565b611667565b3480156107c757600080fd5b506105bf6107d6366004614e5b565b61166f565b3480156107e757600080fd5b506105bf6107f6366004614b52565b611683565b34801561080757600080fd5b506105bf610816366004614bbc565b61170d565b34801561082757600080fd5b5060025461043090600160b81b900460ff1681565b34801561084857600080fd5b5060025461085d90600160c01b900460ff1681565b60405161043c9190614e8f565b34801561087657600080fd5b506105bf610885366004614ea3565b611728565b34801561089657600080fd5b506106046108a5366004614a82565b60166020526000908152604090205481565b3480156108c357600080fd5b50601f54610587906001600160a01b031681565b3480156108e357600080fd5b506104306108f2366004614f17565b61178b565b34801561090357600080fd5b50610604610912366004614a82565b61179f565b34801561092357600080fd5b506105bf610932366004614c7c565b61181c565b6105bf610945366004614f34565b6118bf565b34801561095657600080fd5b5060025461043090600160a01b900460ff1681565b34801561097757600080fd5b506105bf610986366004614a82565b611b8b565b34801561099757600080fd5b506105876109a6366004614a82565b611bf7565b3480156109b757600080fd5b506105bf6109c6366004614fa3565b611c2c565b3480156109d757600080fd5b506104306109e6366004614fbe565b611ca4565b3480156109f757600080fd5b506105bf610a06366004614a82565b611d46565b348015610a1757600080fd5b50610604610a26366004614f17565b611d5a565b348015610a3757600080fd5b506001610430565b348015610a4b57600080fd5b506105bf611de0565b348015610a6057600080fd5b5061055a611df4565b348015610a7557600080fd5b50601b54610a96906001600160a01b03811690600160a01b900461ffff1682565b60405161043c92919061500a565b348015610ab057600080fd5b50610604611e86565b348015610ac557600080fd5b506105bf611e92565b348015610ada57600080fd5b506105bf610ae9366004614c7c565b611ed9565b348015610afa57600080fd5b50610587611f72565b348015610b0f57600080fd5b50610430610b1e366004614b52565b611f87565b348015610b2f57600080fd5b506105bf610b3e366004614e5b565b611fb2565b348015610b4f57600080fd5b50610604610b5e366004614b52565b601760209081526000928352604080842090915290825290205481565b348015610b8757600080fd5b5061055a611fc6565b348015610b9c57600080fd5b506105bf610bab366004614e5b565b611fd0565b348015610bbc57600080fd5b50610604600081565b348015610bd157600080fd5b506105bf610be0366004615035565b612007565b348015610bf157600080fd5b5061055a612019565b348015610c0657600080fd5b506105bf610c1536600461515f565b612032565b348015610c2657600080fd5b506105bf610c35366004614e5b565b6121f2565b348015610c4657600080fd5b5060025461043090600160a81b900460ff1681565b348015610c6757600080fd5b50610430610c76366004614a82565b612229565b348015610c8757600080fd5b506105bf610c963660046152fe565b612236565b348015610ca757600080fd5b506105bf612275565b348015610cbc57600080fd5b50610604610ccb366004614fbe565b61228c565b348015610cdc57600080fd5b5060025461043090600160c81b900460ff1681565b348015610cfd57600080fd5b5061055a6124bd565b348015610d1257600080fd5b506105bf610d21366004614f17565b6124cc565b348015610d3257600080fd5b50600c546104309060ff1681565b348015610d4c57600080fd5b5061060460155481565b348015610d6257600080fd5b506105bf612520565b348015610d7757600080fd5b5061055a61257f565b348015610d8c57600080fd5b5061055a610d9b366004614a82565b6125e6565b348015610dac57600080fd5b50610dc0610dbb366004614a82565b6125f1565b60405161043c919061537d565b348015610dd957600080fd5b50610604600080516020615d0f83398151915281565b348015610dfb57600080fd5b506105bf610e0a366004614b52565b6126ac565b348015610e1b57600080fd5b5061060460105481565b348015610e3157600080fd5b506105bf610e403660046153de565b6126c8565b348015610e5157600080fd5b506105bf610e60366004614f17565b61272e565b348015610e7157600080fd5b506105bf612758565b348015610e8657600080fd5b5061055a61279e565b348015610e9b57600080fd5b50600254610587906001600160a01b031681565b348015610ebb57600080fd5b506105bf610eca366004614a82565b6127ad565b348015610edb57600080fd5b506105bf612811565b348015610ef057600080fd5b506105bf610eff366004615477565b61282e565b348015610f1057600080fd5b5061055a612a66565b348015610f2557600080fd5b50610430610f343660046154e2565b612a75565b348015610f4557600080fd5b506105bf610f54366004615510565b612aa3565b348015610f6557600080fd5b506105bf610f74366004614f17565b612ac2565b348015610f8557600080fd5b50610604600080516020615d2f83398151915281565b348015610fa757600080fd5b506011546104309060ff1681565b6000610fc082612b6d565b92915050565b6040805160608101825260008082526020820181905291810182905290610fee601d84612ba9565b6000818152601c60209081526040918290208251808401845290546001600160a01b03808216835261ffff600160a01b90920482168385019081528551606081018752968752925116928501929092525116908201529392505050565b6060611055612bbc565b905090565b600061106582612bcb565b506000908152600760205260409020546001600160a01b031690565b600061108c82611bf7565b9050806001600160a01b0316836001600160a01b0316036110fe5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b0316611110612bf0565b6001600160a01b0316148061112c575061112c81610f34612bf0565b61119e5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016110f5565b6111a88383612bfa565b505050565b6111b5612c68565b6011805460ff19166001179055565b6111de600080516020615d0f833981519152610b1e612bf0565b61121c5760405162461bcd60e51b815260206004820152600f60248201526e4e4f545f4d494e5445525f524f4c4560881b60448201526064016110f5565b6112268282612cd7565b5050565b611232612c68565b60008281526016602052604090205460e082013510156112885760405162461bcd60e51b81526020600482015260116024820152701313d5d15497d512105397d35253951151607a1b60448201526064016110f5565b600082815260146020526040902060060154156112f65760008281526016602052604090205460c082013510156112f65760405162461bcd60e51b81526020600482015260126024820152711313d5d7d49154d154959157d05353d5539560721b60448201526064016110f5565b6000828152601660205260409020541561136457600082815260146020526040902060040154608082013510156113645760405162461bcd60e51b81526020600482015260126024820152711313d5d7d3505617d4115497d5d05313115560721b60448201526064016110f5565b600082815260146020526040812060060154601580549192909161138990849061553e565b9091555050600082815260146020526040902081906113a88282615555565b9050508060c00135601560008282546113c191906155c6565b909155505060105460155411156112265760405162461bcd60e51b815260206004820152601360248201527213505617d4d55414131657d15610d151511151606a1b60448201526064016110f5565b61142161141b612bf0565b82612d60565b61143d5760405162461bcd60e51b81526004016110f5906155de565b6111a8838383612dbf565b6000908152601a602052604090206001015490565b6000828152601c602052604081205481906001600160a01b0316156114c2576000848152601c60205260409020546001600160a01b03811690612710906114af90600160a01b900461ffff168661562c565b6114b99190615661565b9150915061151b565b601b546001600160a01b0316158015906114e85750601b54600160a01b900461ffff1615155b1561151457601b546001600160a01b03811690612710906114af90600160a01b900461ffff168661562c565b5060009050805b9250929050565b60606000826001600160401b0381111561153e5761153e614d52565b604051908082528060200260200182016040528015611567578160200160208202803683370190505b50905060005b838110156115e45761159685858381811061158a5761158a615675565b90506020020135612229565b6115d2578484828181106115ac576115ac615675565b905060200201358282815181106115c5576115c5615675565b6020026020010181815250505b806115dc8161568b565b91505061156d565b509392505050565b6115f4612c68565b600254600160b81b900460ff161561161e5760405162461bcd60e51b81526004016110f5906156a4565b6002805482919060ff60b01b1916600160b01b83600381111561164357611643614d22565b021790555050565b61165482611448565b61165d81612f66565b6111a88383612f77565b61121c612c68565b611677612c68565b60096112268282615746565b61168b612bf0565b6001600160a01b0316816001600160a01b0316146117035760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016110f5565b6112268282612ffe565b6111a883838360405180602001604052806000815250612236565b611730612c68565b6112268282808060200260200160405190810160405280939291908181526020016000905b828210156117815761177260608302860136819003810190615805565b81526020019060010190611755565b5050505050613083565b601f546001600160a01b0391821691161490565b60006018546015546117b1919061553e565b6012546010546117c1919061553e565b6117cb919061553e565b600083815260146020526040902060060154909150156118175760008281526016602090815260408083205460149092529091206006015461180d919061553e565b610fc090826155c6565b919050565b60026013540361183e5760405162461bcd60e51b81526004016110f59061586b565b600260135561185b600080516020615d2f83398151915233611f87565b6118775760405162461bcd60e51b81526004016110f5906158a2565b60005b818110156118b5576118a383838381811061189757611897615675565b9050602002013561322a565b806118ad8161568b565b91505061187a565b5050600160135550565b6002601354036118e15760405162461bcd60e51b81526004016110f59061586b565b600260135560006118f0612bf0565b90506000611901878387878761228c565b9050808611156119415760405162461bcd60e51b815260206004820152600b60248201526a08ab0868a8a88a6be9a82b60ab1b60448201526064016110f5565b61194a8761179f565b8611156119695760405162461bcd60e51b81526004016110f5906158cb565b60008781526014602090815260408083206007015460169092529091205461199190886155c6565b11156119af5760405162461bcd60e51b81526004016110f5906158cb565b6000878152601460205260409020600201546001600160a01b0316611a365760008781526014602052604090206003015434906119ed90889061562c565b1115611a315760405162461bcd60e51b8152602060048201526013602482015272125394d551919250d251539517d05353d55395606a1b60448201526064016110f5565b611aea565b600087815260146020526040902060028101546003909101546001600160a01b03909116906323b872dd9084903090611a70908b9061562c565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015611ac4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae891906158f7565b505b60008781526017602090815260408083206001600160a01b038616845290915281208054889290611b1c9084906155c6565b909155505060008781526016602052604081208054889290611b3f9084906155c6565b909155505060008781526014602052604090206006015415611b73578560186000828254611b6d91906155c6565b90915550505b611b7d8287612cd7565b505060016013555050505050565b600260135403611bad5760405162461bcd60e51b81526004016110f59061586b565b6002601355611bca600080516020615d2f83398151915233611f87565b611be65760405162461bcd60e51b81526004016110f5906158a2565b611bef8161322a565b506001601355565b6000818152600560205260408120546001600160a01b031680610fc05760405162461bcd60e51b81526004016110f590615914565b611c34612c68565b600254600160c81b900460ff1615611c7f5760405162461bcd60e51b815260206004820152600e60248201526d131250d15394d157d313d0d2d15160921b60448201526064016110f5565b6002805482919060ff60c01b1916600160c01b83600581111561164357611643614d22565b6000611d3a83838080602002602001604051908101604052809392919081815260200183836020028082843760009201829052508b8152601460205260409020600501549250611d359150899050886040516001600160601b0319606084901b1660208201526034810182905260009060540160405160208183030381529060405280519060200120905092915050565b613291565b90505b95945050505050565b611d4e612c68565b611d57816132a7565b50565b60006001600160a01b038216611dc45760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016110f5565b506001600160a01b031660009081526006602052604090205490565b611de8612c68565b611df26000613319565b565b606060098054611e03906156c4565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2f906156c4565b8015611e7c5780601f10611e5157610100808354040283529160200191611e7c565b820191906000526020600020905b815481529060010190602001808311611e5f57829003601f168201915b5050505050905090565b6000611055601d613374565b611e9a612c68565b600254600160a01b900460ff1615611ec45760405162461bcd60e51b81526004016110f5906156a4565b6002805460ff60a01b1916600160a01b179055565b600260135403611efb5760405162461bcd60e51b81526004016110f59061586b565b6002601355611f18600080516020615d2f83398151915233611f87565b611f345760405162461bcd60e51b81526004016110f5906158a2565b60005b818110156118b557611f60838383818110611f5457611f54615675565b9050602002013561337e565b80611f6a8161568b565b915050611f37565b6000546201000090046001600160a01b031690565b6000918252601a602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611fba612c68565b600f6112268282615746565b60606110556133c8565b611fd8612c68565b600c5460ff1615611ffb5760405162461bcd60e51b81526004016110f590615946565b600a6112268282615746565b611226612012612bf0565b83836133d7565b60025460609061105590600160c01b900460ff166134a1565b600054610100900460ff16158080156120525750600054600160ff909116105b80612073575061206130612b5a565b158015612073575060005460ff166001145b6120d65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016110f5565b6000805460ff1916600117905580156120f9576000805461ff0019166101001790555b61210460008361361a565b61210d82613319565b61211d8361012001516002613624565b61212b836101600151613655565b612142836000015184602001518560400151613685565b612154836060015184608001516136b7565b6121618360a001516136e8565b612169613718565b61217282613747565b61217a613777565b6121878360c001516137a6565b61219a8360e001518461010001516137d6565b6121a8836101400151613807565b80156111a8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6121fa612c68565b600c5460ff161561221d5760405162461bcd60e51b81526004016110f590615946565b600b6112268282615746565b6000610fc0601983613837565b612247612241612bf0565b83612d60565b6122635760405162461bcd60e51b81526004016110f5906155de565b61226f8484848461385b565b50505050565b61227d612c68565b600c805460ff19166001179055565b6000858152601460205260408120600401546122d75760405162461bcd60e51b815260206004820152600a6024820152694e4f545f45584953545360b01b60448201526064016110f5565b6000868152601460205260409020544210156123235760405162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b60448201526064016110f5565b6000868152601460205260409020600101544211156123745760405162461bcd60e51b815260206004820152600d60248201526c1053149150511657d153911151609a1b60448201526064016110f5565b60008681526017602090815260408083206001600160a01b03891684528252808320548984526014909252909120600401546123b0919061553e565b60008781526014602052604090206005015490915015611d3d5760008681526017602090815260408083206001600160a01b0389168452909152902054841161242d5760405162461bcd60e51b815260206004820152600f60248201526e4d415845445f414c4c4f57414e434560881b60448201526064016110f5565b61243a8686868686611ca4565b6124785760405162461bcd60e51b815260206004820152600f60248201526e1393d517d0531313d5d31254d51151608a1b60448201526064016110f5565b60008681526017602090815260408083206001600160a01b03891684529091528120546124a5908661553e565b9050808211156124b3578091505b5095945050505050565b6060600a8054611e03906156c4565b6124d4612c68565b600254600160a01b900460ff16156124fe5760405162461bcd60e51b81526004016110f5906156a4565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b612528612c68565b600254600160b81b900460ff161561256a5760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b60448201526064016110f5565b6002805460ff60b81b1916600160b81b179055565b6060604051806060016040528060318152602001615cde603191396002546125c190600160c01b900460ff1660058111156125bc576125bc614d22565b61388e565b6040516020016125d2929190615966565b604051602081830303815290604052905090565b6060610fc08261398e565b604080516001808252818301909252606091816020015b6040805180820190915260008082526020820152815260200190600190039081612608575050601b5481519192506001600160a01b031690829060009061265157612651615675565b60209081029190910101516001600160a01b03919091169052601b548151600160a01b90910461ffff1690829060009061268d5761268d615675565b6020908102919091018101516001600160601b03909216910152919050565b6126b582611448565b6126be81612f66565b6111a88383612ffe565b6126d0612c68565b60005b83811015612727576127158585838181106126f0576126f0615675565b9050602002013584848481811061270957612709615675565b9050610100020161122a565b8061271f8161568b565b9150506126d3565b5050505050565b612736612c68565b601f80546001600160a01b0319166001600160a01b0392909216919091179055565b612760612c68565b6002805460ff60a81b1916600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b6060600b8054611e03906156c4565b6002601354036127cf5760405162461bcd60e51b81526004016110f59061586b565b60026013556127ec600080516020615d2f83398151915233611f87565b6128085760405162461bcd60e51b81526004016110f5906158a2565b611bef8161337e565b612819612c68565b6002805460ff60c81b1916600160c81b179055565b61283733613a6a565b6002546001600160a01b03166128875760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b60448201526064016110f5565b600254600160a81b900460ff16156128e15760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b454460448201526064016110f5565b60005b83811015612a2257600085858381811061290057612900615675565b90506020020160208101906129159190614f17565b6001600160a01b0316036129585761295383838381811061293857612938615675565b6002546001600160a01b031692602090910201359050613bef565b612a10565b84848281811061296a5761296a615675565b905060200201602081019061297f9190614f17565b6002546001600160a01b039182169163a9059cbb91168585858181106129a7576129a7615675565b905060200201356040518363ffffffff1660e01b81526004016129cb929190614c1f565b6020604051808303816000875af11580156129ea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0e91906158f7565b505b80612a1a8161568b565b9150506128e4565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a584848484604051612a589493929190615995565b60405180910390a150505050565b6060600f8054611e03906156c4565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205460ff1690565b612aab612c68565b611d57612abd36839003830183615a19565b613d05565b612aca612c68565b6001600160a01b038116612b2f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016110f5565b611d5781613319565b6000612b433361178b565b15612b55575060131936013560601c90565b503390565b6001600160a01b03163b151590565b3390565b60006301ffc9a760e01b6001600160e01b031983161480610fc05750506001600160e01b03191660009081526001602052604090205460ff1690565b6000612bb58383613db0565b9392505050565b6060600d8054611e03906156c4565b612bd481613dda565b611d575760405162461bcd60e51b81526004016110f590615914565b6000611055612b38565b600081815260076020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612c2f82611bf7565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b612c70612bf0565b6001600160a01b0316612c81611f72565b6001600160a01b031614611df25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016110f5565b60105481612ce460125490565b612cee91906155c6565b1115612d2d5760405162461bcd60e51b815260206004820152600e60248201526d455843454544535f535550504c5960901b60448201526064016110f5565b60005b818110156111a857601254612d458482613df7565b612d4d613e11565b5080612d588161568b565b915050612d30565b600080612d6c83611bf7565b9050806001600160a01b0316846001600160a01b03161480612d935750612d938185612a75565b80612db75750836001600160a01b0316612dac8461105a565b6001600160a01b0316145b949350505050565b826001600160a01b0316612dd282611bf7565b6001600160a01b031614612e365760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016110f5565b6001600160a01b038216612e985760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016110f5565b612ea3838383613e28565b612eae600082612bfa565b6001600160a01b0383166000908152600660205260408120805460019290612ed790849061553e565b90915550506001600160a01b0382166000908152600660205260408120805460019290612f059084906155c6565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b611d5781612f72612bf0565b613e33565b612f818282611f87565b611226576000828152601a602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612fba612bf0565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6130088282611f87565b15611226576000828152601a602090815260408083206001600160a01b03851684529091529020805460ff1916905561303f612bf0565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b60005b81518110156112265760008282815181106130a3576130a3615675565b60200260200101519050612710816040015161ffff16106130d65760405162461bcd60e51b81526004016110f590615a75565b60208101516001600160a01b031661314f5780516000908152601c6020526040902080546001600160b01b0319169055805161311490601d90613e97565b5080516040519081527fa2870857763bd9ae76c957f869f16b31c18dd3bb4c7b4d3a4496dc5c57c657f99060200160405180910390a1613217565b6040805180820182526020808401516001600160a01b0390811683528484015161ffff90811683850190815286516000908152601c90945294909220925183549451909216600160a01b026001600160b01b031990941691161791909117905580516131bd90601d90613ea3565b50805160208083015160408085015181519485526001600160a01b039092169284019290925261ffff1682820152517f389b70fb0887f01e83784eb1c4c589f740eca53b00ed0f45e41db5d079719abb9181900360600190a15b50806132228161568b565b915050613086565b613235601982613837565b61326e5760405162461bcd60e51b815260206004820152600a6024820152691393d517d313d0d2d15160b21b60448201526064016110f5565b600881901c60009081526019602052604090208054600160ff84161b1916905550565b60008261329e8584613eaf565b14949350505050565b6132af612c68565b6132b881613ef4565b6018546015546132c8919061553e565b6012546132d5908361553e565b1015611d575760405162461bcd60e51b81526020600482015260136024820152721313d5d15497d512105397d49154d154959151606a1b60448201526064016110f5565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6000610fc0825490565b613389601982613837565b156133a65760405162461bcd60e51b81526004016110f5906156a4565b600881901c60009081526019602052604090208054600160ff84161b17905550565b6060600e8054611e03906156c4565b816001600160a01b0316836001600160a01b0316036134345760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b60448201526064016110f5565b6001600160a01b03838116600081815260086020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b606060068260058111156134b7576134b7614d22565b60ff1611156134c557600080fd5b8160058111156134d7576134d7614d22565b60000361350157505060408051808201909152600781526604342455f4343360cc1b602082015290565b81600581111561351357613513614d22565b60010361353d57505060408051808201909152600781526621a122afa2a1a960c91b602082015290565b81600581111561354f5761354f614d22565b60020361357a57505060408051808201909152600881526721a122afa722a1a960c11b602082015290565b81600581111561358c5761358c614d22565b6003036135ba57505060408051808201909152600b81526a4342455f4e4543525f485360a81b602082015290565b8160058111156135cc576135cc614d22565b6004036135f557505060408051808201909152600681526521a122afa82960d11b602082015290565b50506040805180820190915260098152684342455f50525f485360b81b602082015290565b6112268282612f77565b600054610100900460ff1661364b5760405162461bcd60e51b81526004016110f590615a9a565b6112268282613f6a565b600054610100900460ff1661367c5760405162461bcd60e51b81526004016110f590615a9a565b611d5781613fee565b600054610100900460ff166136ac5760405162461bcd60e51b81526004016110f590615a9a565b6111a8838383614035565b600054610100900460ff166136de5760405162461bcd60e51b81526004016110f590615a9a565b61122682826140b3565b600054610100900460ff1661370f5760405162461bcd60e51b81526004016110f590615a9a565b611d578161413e565b600054610100900460ff1661373f5760405162461bcd60e51b81526004016110f590615a9a565b611df261418a565b600054610100900460ff1661376e5760405162461bcd60e51b81526004016110f590615a9a565b611d57816141c1565b600054610100900460ff1661379e5760405162461bcd60e51b81526004016110f590615a9a565b611df2614210565b600054610100900460ff166137cd5760405162461bcd60e51b81526004016110f590615a9a565b611d5781614247565b600054610100900460ff166137fd5760405162461bcd60e51b81526004016110f590615a9a565b6112268282614363565b600054610100900460ff1661382e5760405162461bcd60e51b81526004016110f590615a9a565b611d57816143f3565b600881901c600090815260208390526040902054600160ff83161b16151592915050565b613866848484612dbf565b6138728484848461441a565b61226f5760405162461bcd60e51b81526004016110f590615ae5565b6060816000036138b55750506040805180820190915260018152600360fc1b602082015290565b8160005b81156138df57806138c98161568b565b91506138d89050600a83615661565b91506138b9565b6000816001600160401b038111156138f9576138f9614d52565b6040519080825280601f01601f191660200182016040528015613923576020820181803683370190505b5090505b8415612db75761393860018361553e565b9150613945600a86615b37565b6139509060306155c6565b60f81b81838151811061396557613965615675565b60200101906001600160f81b031916908160001a905350613987600a86615661565b9450613927565b60606000600a805461399f906156c4565b905011613a3657600980546139b3906156c4565b80601f01602080910402602001604051908101604052809291908181526020018280546139df906156c4565b8015613a2c5780601f10613a0157610100808354040283529160200191613a2c565b820191906000526020600020905b815481529060010190602001808311613a0f57829003601f168201915b5050505050610fc0565b600a613a418361388e565b600b604051602001613a5593929190615bbe565b60405160208183030381529060405292915050565b6003600254600160b01b900460ff166003811115613a8a57613a8a614d22565b03613ac95760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b60448201526064016110f5565b60028054600160b01b900460ff166003811115613ae857613ae8614d22565b03613af05750565b6001600254600160b01b900460ff166003811115613b1057613b10614d22565b03613b6c576002546001600160a01b03828116911614611d575760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b60448201526064016110f5565b6000600254600160b01b900460ff166003811115613b8c57613b8c614d22565b03611d5757806001600160a01b0316613ba3611f72565b6001600160a01b031614611d575760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b60448201526064016110f5565b80471015613c3f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016110f5565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613c8c576040519150601f19603f3d011682016040523d82523d6000602084013e613c91565b606091505b50509050806111a85760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b60648201526084016110f5565b612710816020015161ffff1610613d2e5760405162461bcd60e51b81526004016110f590615a75565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601b80546001600160b01b031916909217600160a01b9091021790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe4192613da5929161500a565b60405180910390a150565b6000826000018281548110613dc757613dc7615675565b9060005260206000200154905092915050565b6000908152600560205260409020546001600160a01b0316151590565b611226828260405180602001604052806000815250614529565b60128054906000613e218361568b565b9190505550565b6111a883838361455c565b613e3d8282611f87565b61122657613e55816001600160a01b03166014614584565b613e60836020614584565b604051602001613e71929190615bf1565b60408051601f198184030181529082905262461bcd60e51b82526110f591600401614af3565b6000612bb5838361471f565b6000612bb58383614812565b600081815b84518110156115e457613ee082868381518110613ed357613ed3615675565b6020026020010151614861565b915080613eec8161568b565b915050613eb4565b613efc612c68565b60115460ff1615613f1f5760405162461bcd60e51b81526004016110f590615946565b601254811015613f655760405162461bcd60e51b81526020600482015260116024820152704c4f5745525f5448414e5f535550504c5960781b60448201526064016110f5565b601055565b600054610100900460ff16613f915760405162461bcd60e51b81526004016110f590615a9a565b613fa163ac2ba33360e01b614890565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b836003811115613fe557613fe5614d22565b02179055505050565b600054610100900460ff166140155760405162461bcd60e51b81526004016110f590615a9a565b61402563b964efe960e01b614890565b611c7f630c934a3560e31b614890565b600054610100900460ff1661405c5760405162461bcd60e51b81526004016110f590615a9a565b600d6140688482615746565b50600e6140758382615746565b50600f6140828282615746565b50614093633d96f4ff60e11b614890565b6140a36380ac58cd60e01b614890565b6111a8635b5e139f60e01b614890565b600054610100900460ff166140da5760405162461bcd60e51b81526004016110f590615a9a565b60096140e68382615746565b50600a6140f38282615746565b50604080518082019091526005815264173539b7b760d91b6020820152600b9061411d9082615746565b5061412e631f2f406b60e01b614890565b611226635b5e139f60e01b614890565b600054610100900460ff166141655760405162461bcd60e51b81526004016110f590615a9a565b601081905561417a6330f487b560e11b614890565b611d576380ac58cd60e01b614890565b600054610100900460ff166141b15760405162461bcd60e51b81526004016110f590615a9a565b611df2631aa1577160e11b614890565b600054610100900460ff166141e85760405162461bcd60e51b81526004016110f590615a9a565b6141f8631a056e7160e01b614890565b611d57600080516020615d0f8339815191528261361a565b600054610100900460ff166142375760405162461bcd60e51b81526004016110f590615a9a565b611df263714ad8e760e01b614890565b600054610100900460ff1661426e5760405162461bcd60e51b81526004016110f590615a9a565b61427e6308b4902960e41b614890565b60005b81518110156112265781818151811061429c5761429c615675565b602090810291909101810151600083815260148352604090819020825181559282015160018401558101516002830180546001600160a01b0319166001600160a01b03909216919091179055606081015160038301556080810151600483015560a0810151600583015560c0810151600683015560e00151600790910155815182908290811061432e5761432e615675565b602002602001015160c001516015600082825461434b91906155c6565b9091555081905061435b8161568b565b915050614281565b600054610100900460ff1661438a5760405162461bcd60e51b81526004016110f590615a9a565b61439a633a47bf5160e11b614890565b6143aa63152a902d60e11b614890565b6143ba63c69dbd8f60e01b614890565b6143ca63656cb66560e11b614890565b604080518082019091526001600160a01b038316815261ffff821660208201526111a881613d05565b600054610100900460ff166127365760405162461bcd60e51b81526004016110f590615a9a565b600061442e846001600160a01b0316612b5a565b1561451e57836001600160a01b031663150b7a0261444a612bf0565b8786866040518563ffffffff1660e01b815260040161446c9493929190615c60565b6020604051808303816000875af19250505080156144a7575060408051601f3d908101601f191682019092526144a491810190615c93565b60015b614504573d8080156144d5576040519150601f19603f3d011682016040523d82523d6000602084013e6144da565b606091505b5080516000036144fc5760405162461bcd60e51b81526004016110f590615ae5565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612db7565b506001949350505050565b6145338383614911565b614540600084848461441a565b6111a85760405162461bcd60e51b81526004016110f590615ae5565b614567601982613837565b156111a85760405162461bcd60e51b81526004016110f5906156a4565b6060600061459383600261562c565b61459e9060026155c6565b6001600160401b038111156145b5576145b5614d52565b6040519080825280601f01601f1916602001820160405280156145df576020820181803683370190505b509050600360fc1b816000815181106145fa576145fa615675565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061462957614629615675565b60200101906001600160f81b031916908160001a905350600061464d84600261562c565b6146589060016155c6565b90505b60018111156146d0576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061468c5761468c615675565b1a60f81b8282815181106146a2576146a2615675565b60200101906001600160f81b031916908160001a90535060049490941c936146c981615cb0565b905061465b565b508315612bb55760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016110f5565b6000818152600183016020526040812054801561480857600061474360018361553e565b85549091506000906147579060019061553e565b90508181146147bc57600086600001828154811061477757614777615675565b906000526020600020015490508087600001848154811061479a5761479a615675565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806147cd576147cd615cc7565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610fc0565b6000915050610fc0565b600081815260018301602052604081205461485957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610fc0565b506000610fc0565b600081831061487d576000828152602084905260409020612bb5565b6000838152602083905260409020612bb5565b6001600160e01b031980821690036148e95760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b60448201526064016110f5565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b6001600160a01b0382166149675760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016110f5565b61497081613dda565b156149bc5760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b60448201526064016110f5565b6149c860008383613e28565b6001600160a01b03821660009081526006602052604081208054600192906149f19084906155c6565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b031981168114611d5757600080fd5b600060208284031215614a7757600080fd5b8135612bb581614a4f565b600060208284031215614a9457600080fd5b5035919050565b60005b83811015614ab6578181015183820152602001614a9e565b8381111561226f5750506000910152565b60008151808452614adf816020860160208601614a9b565b601f01601f19169290920160200192915050565b602081526000612bb56020830184614ac7565b6001600160a01b0381168114611d5757600080fd5b803561181781614b06565b60008060408385031215614b3957600080fd5b8235614b4481614b06565b946020939093013593505050565b60008060408385031215614b6557600080fd5b823591506020830135614b7781614b06565b809150509250929050565b600080828403610120811215614b9757600080fd5b83359250610100601f1982011215614bae57600080fd5b506020830190509250929050565b600080600060608486031215614bd157600080fd5b8335614bdc81614b06565b92506020840135614bec81614b06565b929592945050506040919091013590565b60008060408385031215614c1057600080fd5b50508035926020909101359150565b6001600160a01b03929092168252602082015260400190565b60008083601f840112614c4a57600080fd5b5081356001600160401b03811115614c6157600080fd5b6020830191508360208260051b850101111561151b57600080fd5b60008060208385031215614c8f57600080fd5b82356001600160401b03811115614ca557600080fd5b614cb185828601614c38565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b81811015614cf557835183529284019291840191600101614cd9565b50909695505050505050565b600060208284031215614d1357600080fd5b813560048110612bb557600080fd5b634e487b7160e01b600052602160045260246000fd5b6020810160048310614d4c57614d4c614d22565b91905290565b634e487b7160e01b600052604160045260246000fd5b60405161010081016001600160401b0381118282101715614d8b57614d8b614d52565b60405290565b60405161018081016001600160401b0381118282101715614d8b57614d8b614d52565b604051601f8201601f191681016001600160401b0381118282101715614ddc57614ddc614d52565b604052919050565b60006001600160401b03831115614dfd57614dfd614d52565b614e10601f8401601f1916602001614db4565b9050828152838383011115614e2457600080fd5b828260208301376000602084830101529392505050565b600082601f830112614e4c57600080fd5b612bb583833560208501614de4565b600060208284031215614e6d57600080fd5b81356001600160401b03811115614e8357600080fd5b612db784828501614e3b565b6020810160068310614d4c57614d4c614d22565b60008060208385031215614eb657600080fd5b82356001600160401b0380821115614ecd57600080fd5b818501915085601f830112614ee157600080fd5b813581811115614ef057600080fd5b866020606083028501011115614f0557600080fd5b60209290920196919550909350505050565b600060208284031215614f2957600080fd5b8135612bb581614b06565b600080600080600060808688031215614f4c57600080fd5b85359450602086013593506040860135925060608601356001600160401b03811115614f7757600080fd5b614f8388828901614c38565b969995985093965092949392505050565b80356006811061181757600080fd5b600060208284031215614fb557600080fd5b612bb582614f94565b600080600080600060808688031215614fd657600080fd5b853594506020860135614fe881614b06565b93506040860135925060608601356001600160401b03811115614f7757600080fd5b6001600160a01b0392909216825261ffff16602082015260400190565b8015158114611d5757600080fd5b6000806040838503121561504857600080fd5b823561505381614b06565b91506020830135614b7781615027565b600082601f83011261507457600080fd5b813560206001600160401b0382111561508f5761508f614d52565b61509d818360051b01614db4565b82815260089290921b840181019181810190868411156150bc57600080fd5b8286015b848110156151425761010081890312156150da5760008081fd5b6150e2614d68565b8135815284820135858201526040808301356150fd81614b06565b90820152606082810135908201526080808301359082015260a0808301359082015260c0808301359082015260e08083013590820152835291830191610100016150c0565b509695505050505050565b803561ffff8116811461181757600080fd5b6000806040838503121561517257600080fd5b82356001600160401b038082111561518957600080fd5b90840190610180828703121561519e57600080fd5b6151a6614d91565b8235828111156151b557600080fd5b6151c188828601614e3b565b8252506020830135828111156151d657600080fd5b6151e288828601614e3b565b6020830152506040830135828111156151fa57600080fd5b61520688828601614e3b565b60408301525060608301358281111561521e57600080fd5b61522a88828601614e3b565b60608301525060808301358281111561524257600080fd5b61524e88828601614e3b565b60808301525060a083013560a082015260c08301358281111561527057600080fd5b61527c88828601615063565b60c08301525061528e60e08401614b1b565b60e082015261010091506152a382840161514d565b8282015261012091506152b7828401614b1b565b8282015261014091506152cb828401614b1b565b8282015261016091506152df828401614f94565b828201528094505050506152f560208401614b1b565b90509250929050565b6000806000806080858703121561531457600080fd5b843561531f81614b06565b9350602085013561532f81614b06565b92506040850135915060608501356001600160401b0381111561535157600080fd5b8501601f8101871361536257600080fd5b61537187823560208401614de4565b91505092959194509250565b602080825282518282018190526000919060409081850190868401855b828110156153d157815180516001600160a01b031685528601516001600160601b031686850152928401929085019060010161539a565b5091979650505050505050565b600080600080604085870312156153f457600080fd5b84356001600160401b038082111561540b57600080fd5b61541788838901614c38565b9096509450602087013591508082111561543057600080fd5b818701915087601f83011261544457600080fd5b81358181111561545357600080fd5b8860208260081b850101111561546857600080fd5b95989497505060200194505050565b6000806000806040858703121561548d57600080fd5b84356001600160401b03808211156154a457600080fd5b6154b088838901614c38565b909650945060208701359150808211156154c957600080fd5b506154d687828801614c38565b95989497509550505050565b600080604083850312156154f557600080fd5b823561550081614b06565b91506020830135614b7781614b06565b60006040828403121561552257600080fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008282101561555057615550615528565b500390565b813581556020820135600182015560028101604083013561557581614b06565b81546001600160a01b0319166001600160a01b0391909116179055606082013560038201556080820135600482015560a0820135600582015560c0820135600682015560e090910135600790910155565b600082198211156155d9576155d9615528565b500190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b600081600019048311821515161561564657615646615528565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826156705761567061564b565b500490565b634e487b7160e01b600052603260045260246000fd5b60006001820161569d5761569d615528565b5060010190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b600181811c908216806156d857607f821691505b60208210810361552257634e487b7160e01b600052602260045260246000fd5b601f8211156111a857600081815260208120601f850160051c8101602086101561571f5750805b601f850160051c820191505b8181101561573e5782815560010161572b565b505050505050565b81516001600160401b0381111561575f5761575f614d52565b6157738161576d84546156c4565b846156f8565b602080601f8311600181146157a857600084156157905750858301515b600019600386901b1c1916600185901b17855561573e565b600085815260208120601f198616915b828110156157d7578886015182559484019460019091019084016157b8565b50858210156157f55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060828403121561581757600080fd5b604051606081018181106001600160401b038211171561583957615839614d52565b60405282358152602083013561584e81614b06565b602082015261585f6040840161514d565b60408201529392505050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252600f908201526e4e4f545f4c4f434b45525f524f4c4560881b604082015260600190565b60208082526012908201527122ac21a2a2a229afa0a62627a1a0aa24a7a760711b604082015260600190565b60006020828403121561590957600080fd5b8151612bb581615027565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b602080825260069082015265232927ad22a760d11b604082015260600190565b60008351615978818460208801614a9b565b83519083019061598c818360208801614a9b565b01949350505050565b6040808252810184905260008560608301825b878110156159d85782356159bb81614b06565b6001600160a01b03168252602092830192909101906001016159a8565b5083810360208501528481526001600160fb1b038511156159f857600080fd5b8460051b915081866020830137600091016020019081529695505050505050565b600060408284031215615a2b57600080fd5b604051604081018181106001600160401b0382111715615a4d57615a4d614d52565b6040528235615a5b81614b06565b8152615a696020840161514d565b60208201529392505050565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600082615b4657615b4661564b565b500690565b60008154615b58816156c4565b60018281168015615b705760018114615b8557615bb4565b60ff1984168752821515830287019450615bb4565b8560005260208060002060005b85811015615bab5781548a820152908401908201615b92565b50505082870194505b5050505092915050565b6000615bca8286615b4b565b8451615bda818360208901614a9b565b615be681830186615b4b565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351615c23816017850160208801614a9b565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615c54816028840160208801614a9b565b01602801949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611d3a90830184614ac7565b600060208284031215615ca557600080fd5b8151612bb581614a4f565b600081615cbf57615cbf615528565b506000190190565b634e487b7160e01b600052603160045260246000fdfe61723a2f2f5f44396b4e3157724e576243713535425341475262544234625333763851415054596d42546853625833412f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6af9a8bb3cbd6b84fbccefa71ff73e26e798553c6914585a84886212a46a90279a2646970667358221220dcf6d9cdac278714df8259707064a39921911e895c4b948a1bb81be811e1db1364736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/ERC721ACollectionMetadataExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721ACollectionMetadataExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721ACollectionMetadataExtension.sol","abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/ERC721AFreeMintExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721AFreeMintExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721AFreeMintExtension.sol","abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintFree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/ERC721ALockableExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721ALockableExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721ALockableExtension.sol","abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"filterUnlocked","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"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":"tokenIds","type":"uint256[]"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"locked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/ERC721AMinterExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721AMinterExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721AMinterExtension.sol","abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/ERC721AOneOfOneMintExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721AOneOfOneMintExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721AOneOfOneMintExtension.sol","abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastFrozenTokenId","type":"uint256"}],"name":"freezeTokenURIs","outputs":[],"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":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastFrozenTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"string[]","name":"tokenURIs","type":"string[]"}],"name":"mintWithTokenURIsByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"string[]","name":"tokenURIs","type":"string[]"}],"name":"mintWithTokenURIsByRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"tokenURI","type":"string"}],"name":"setTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/ERC721AOwnerManagedExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721AOwnerManagedExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721AOwnerManagedExtension.sol","abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"managementPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeManagementPower","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/ERC721AOwnerMintExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721AOwnerMintExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721AOwnerMintExtension.sol","abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/ERC721APerTokenMetadataExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721APerTokenMetadataExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721APerTokenMetadataExtension.sol","abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":"_lastFrozenTokenId","type":"uint256"}],"name":"freezeTokenURIs","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastFrozenTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"tokenURI","type":"string"}],"name":"setTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/ERC721APrefixedMetadataExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721APrefixedMetadataExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721APrefixedMetadataExtension.sol","abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"freezeTokenURI","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"placeholderURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"string","name":"newValue","type":"string"}],"name":"setPlaceholderURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURIPrefix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURISuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIPrefix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURISuffix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/ERC721APreSaleExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721APreSaleExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721APreSaleExtension.sol","abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintPreSale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onPreSaleAllowList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","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":[],"name":"preSaleAllowlistMerkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleMaxMintPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSalePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"bytes32","name":"newRoot","type":"bytes32"}],"name":"setAllowlistMerkleRoot","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPreSaleMaxMintPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPreSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"isActive","type":"bool"}],"name":"togglePreSaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/ERC721APublicSaleExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721APublicSaleExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721APublicSaleExtension.sol","abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintPublicSale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleMaxMintPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSalePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPublicSaleMaxMintPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPublicSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"isActive","type":"bool"}],"name":"togglePublicSaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/ERC721ARoleBasedLockableExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721ARoleBasedLockableExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721ARoleBasedLockableExtension.sol","abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LOCKER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"filterUnlocked","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasRoleBasedLockableExtension","outputs":[{"internalType":"bool","name":"","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":"tokenIds","type":"uint256[]"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"locked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/ERC721ARoleBasedMintExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721ARoleBasedMintExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721ARoleBasedMintExtension.sol","abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/ERC721ATieringExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721ATieringExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721ATieringExtension.sol","abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":"tierId","type":"uint256"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct IERC721TieringExtension.Tier","name":"tier","type":"tuple"}],"name":"configureTiering","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tierIds","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct IERC721TieringExtension.Tier[]","name":"_tiers","type":"tuple[]"}],"name":"configureTiering","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"eligibleForTier","outputs":[{"internalType":"uint256","name":"maxMintable","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintByTier","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onTierAllowlist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","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":"tierId","type":"uint256"}],"name":"remainingForTier","outputs":[{"internalType":"uint256","name":"tierRemaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reservedMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tierMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tiers","outputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReserved","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"name":"walletMintedByTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/IERC721ALockableExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721ALockableExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721ALockableExtension.sol","abi":[{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"locked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/IERC721ARoleBasedLockableExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721ARoleBasedLockableExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721ARoleBasedLockableExtension.sol","abi":[{"inputs":[],"name":"hasRoleBasedLockableExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/presets/ERC721AOneOfOneCollection":{"address":{"1":"0x21e829BaFF29509e87E94D59d57d200B50Eaeb7F","3":"0x4461377e03cD75bc5B9b3D5514318b10b05B76d1","4":"0xCA330578E5339296BAc19371073F694AAf5aB9b6","5":"0x73fb9dDfA54EC7d0fecC22c88B8e9E98a2C1bF78","25":"0x00Dc371b553B7be2dF5D5E42e49b4F9236f588B7","56":"0xAd450761261B1C70C7583ff500D291E1A07EE495","66":"0xe69E05f4f2b86aA996d76b43A407a93d3Fa84345","97":"0xF5CB96fC0866235CbB17919c4b3416B2247e36A6","137":"0xB362BDF95d36c81afee71ef97f9da280295CBe76","250":"0x8fa6C988b115B46Ed2910C53992864754316305f","280":"0x89B67dC34F83e214ed4FF1e20af34170762B2252","4002":"0x8fa6C988b115B46Ed2910C53992864754316305f","9000":"0xee3fcdF6e5D1d5c5900D9B8DC388D03801d633c9","42161":"0x232A1C44b1E3353a1F25fFc537d1879A5d6e8ec7","43113":"0x453ebb329780CFB54CE183f63F21db28b3106762","43114":"0x933d6a003a024dB27926Ca44bF717658813BA570","421611":"0xedE905c334D4278194fF240a3B2009E05C09879A","arbitrumOne":"0x232A1C44b1E3353a1F25fFc537d1879A5d6e8ec7","arbitrumTestnet":"0xedE905c334D4278194fF240a3B2009E05C09879A","avalanche":"0x933d6a003a024dB27926Ca44bF717658813BA570","avalancheFujiTestnet":"0x453ebb329780CFB54CE183f63F21db28b3106762","bsc":"0xAd450761261B1C70C7583ff500D291E1A07EE495","bscTestnet":"0xF5CB96fC0866235CbB17919c4b3416B2247e36A6","cronos":"0x00Dc371b553B7be2dF5D5E42e49b4F9236f588B7","evmosTestnet":"0xee3fcdF6e5D1d5c5900D9B8DC388D03801d633c9","ftmTestnet":"0x8fa6C988b115B46Ed2910C53992864754316305f","goerli":"0x73fb9dDfA54EC7d0fecC22c88B8e9E98a2C1bF78","mainnet":"0x21e829BaFF29509e87E94D59d57d200B50Eaeb7F","okcMainnet":"0xe69E05f4f2b86aA996d76b43A407a93d3Fa84345","opera":"0x8fa6C988b115B46Ed2910C53992864754316305f","polygon":"0xB362BDF95d36c81afee71ef97f9da280295CBe76","rinkeby":"0xCA330578E5339296BAc19371073F694AAf5aB9b6","ropsten":"0x4461377e03cD75bc5B9b3D5514318b10b05B76d1","zksyncTestnet":"0x89B67dC34F83e214ed4FF1e20af34170762B2252"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721AOneOfOneCollection","sourceName":"contracts/collections/ERC721A/presets/ERC721AOneOfOneCollection.sol","abi":[{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"internalType":"address","name":"defaultRoyaltyAddress","type":"address"},{"internalType":"uint16","name":"defaultRoyaltyBps","type":"uint16"},{"internalType":"address","name":"trustedForwarder","type":"address"},{"internalType":"enum LicenseVersion","name":"licenseVersion","type":"uint8"}],"internalType":"struct ERC721AOneOfOneCollection.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"DefaultRoyaltySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"TokenRoyaltyRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"TokenRoyaltySet","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"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultRoyalty","outputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastFrozenTokenId","type":"uint256"}],"name":"freezeTokenURIs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getInfo","outputs":[{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"uint256","name":"_totalSupply","type":"uint256"},{"internalType":"uint256","name":"_senderBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getRaribleV2Royalties","outputs":[{"components":[{"internalType":"address payable","name":"account","type":"address"},{"internalType":"uint96","name":"value","type":"uint96"}],"internalType":"struct LibPart.Part[]","name":"result","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenRoyaltiesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getTokenRoyaltyByIndex","outputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"internalType":"address","name":"defaultRoyaltyAddress","type":"address"},{"internalType":"uint16","name":"defaultRoyaltyBps","type":"uint16"},{"internalType":"address","name":"trustedForwarder","type":"address"},{"internalType":"enum LicenseVersion","name":"licenseVersion","type":"uint8"}],"internalType":"struct ERC721AOneOfOneCollection.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","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":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastFrozenTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersion","outputs":[{"internalType":"enum LicenseVersion","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersionLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"string[]","name":"tokenURIs","type":"string[]"}],"name":"mintWithTokenURIsByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"string[]","name":"tokenURIs","type":"string[]"}],"name":"mintWithTokenURIsByRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyalty","name":"royalty","type":"tuple"}],"name":"setDefaultRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum LicenseVersion","name":"_licenseVersion","type":"uint8"}],"name":"setLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig[]","name":"royaltyConfigs","type":"tuple[]"}],"name":"setTokenRoyalties","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"tokenURI","type":"string"}],"name":"setTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"trustedForwarder","type":"address"}],"name":"setTrustedForwarder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b50604051620046f3380380620046f3833981016040819052620000349162000b9b565b805160208201516004620000516200004b620000b2565b620000ce565b6003805482919060ff1916600183600581111562000073576200007362000cb4565b02179055506006905062000088838262000d58565b50600762000097828262000d58565b5050600060045550620000ab813362000129565b5062000e6f565b6000620000c96200031860201b6200160a1760201c565b905090565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff16158080156200014a5750600054600160ff909116105b806200017a575062000167306200035060201b6200162c1760201c565b1580156200017a575060005460ff166001145b620001e35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000207576000805461ff0019166101001790555b620002146000836200035f565b620002407f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6836200035f565b6200024b82620000ce565b825160208401516040850151620002649291906200036f565b6200026e620003a6565b62000278620003dc565b6200028262000410565b606083015162000292906200044e565b620002ac83608001518460a001516200048660201b60201c565b60c0830151620002bc90620004bc565b60e0830151620002cc90620004f1565b801562000313576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6017546000906001600160a01b031633036200033b575060131936013560601c90565b620000c96200052660201b6200163b1760201c565b6001600160a01b03163b151590565b6200036b82826200052a565b5050565b600054610100900460ff16620003995760405162461bcd60e51b8152600401620001da9062000e24565b62000313838383620005d1565b600054610100900460ff16620003d05760405162461bcd60e51b8152600401620001da9062000e24565b620003da62000670565b565b600054610100900460ff16620004065760405162461bcd60e51b8152600401620001da9062000e24565b620003da620006ac565b600054610100900460ff166200043a5760405162461bcd60e51b8152600401620001da9062000e24565b62000444620003a6565b620003da620006e8565b600054610100900460ff16620004785760405162461bcd60e51b8152600401620001da9062000e24565b620004838162000724565b50565b600054610100900460ff16620004b05760405162461bcd60e51b8152600401620001da9062000e24565b6200036b828262000789565b600054610100900460ff16620004e65760405162461bcd60e51b8152600401620001da9062000e24565b620004838162000826565b600054610100900460ff166200051b5760405162461bcd60e51b8152600401620001da9062000e24565b620004838162000872565b3390565b60008281526001602090815260408083206001600160a01b038516845290915290205460ff166200036b5760008281526001602081815260408084206001600160a01b0386168552909152909120805460ff191690911790556200058d620000b2565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600054610100900460ff16620005fb5760405162461bcd60e51b8152600401620001da9062000e24565b600c62000609848262000d58565b50600d62000618838262000d58565b50600e62000627828262000d58565b506200063a633d96f4ff60e11b620008ea565b6200064c6380ac58cd60e01b620008ea565b6200065e63184371e560e31b620008ea565b62000313635b5e139f60e01b620008ea565b600054610100900460ff166200069a5760405162461bcd60e51b8152600401620001da9062000e24565b620003da632929b36760e11b620008ea565b600054610100900460ff16620006d65760405162461bcd60e51b8152600401620001da9062000e24565b620003da631aa1577160e11b620008ea565b600054610100900460ff16620007125760405162461bcd60e51b8152600401620001da9062000e24565b620003da630d169dbf60e31b620008ea565b600054610100900460ff166200074e5760405162461bcd60e51b8152600401620001da9062000e24565b600f819055620007656330f487b560e11b620008ea565b620007776380ac58cd60e01b620008ea565b6200048363184371e560e31b620008ea565b600054610100900460ff16620007b35760405162461bcd60e51b8152600401620001da9062000e24565b620007c5633a47bf5160e11b620008ea565b620007d763152a902d60e11b620008ea565b620007e963c69dbd8f60e01b620008ea565b620007fb63656cb66560e11b620008ea565b604080518082019091526001600160a01b038316815261ffff8216602082015262000313816200096b565b600054610100900460ff16620008505760405162461bcd60e51b8152600401620001da9062000e24565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166200089c5760405162461bcd60e51b8152600401620001da9062000e24565b620008ae63b964efe960e01b620008ea565b620008c0630c934a3560e31b620008ea565b6003805482919060ff19166001836005811115620008e257620008e262000cb4565b021790555050565b6001600160e01b03198082169003620009465760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e74657266616365206964000000006044820152606401620001da565b6001600160e01b0319166000908152600260205260409020805460ff19166001179055565b612710816020015161ffff1610620009b45760405162461bcd60e51b815260206004820152600b60248201526a496e76616c69642062707360a81b6044820152606401620001da565b60408051808201825282516001600160a01b03168082526020808501805161ffff169190930181905260138054600160a01b9092026001600160b01b03199092169092171790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe419262000a4692916001600160a01b0392909216825261ffff16602082015260400190565b60405180910390a150565b634e487b7160e01b600052604160045260246000fd5b60405161010081016001600160401b038111828210171562000a8d5762000a8d62000a51565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000abe5762000abe62000a51565b604052919050565b600082601f83011262000ad857600080fd5b81516001600160401b0381111562000af45762000af462000a51565b602062000b0a601f8301601f1916820162000a93565b828152858284870101111562000b1f57600080fd5b60005b8381101562000b3f57858101830151828201840152820162000b22565b8381111562000b515760008385840101525b5095945050505050565b80516001600160a01b038116811462000b7357600080fd5b919050565b805161ffff8116811462000b7357600080fd5b80516006811062000b7357600080fd5b60006020828403121562000bae57600080fd5b81516001600160401b038082111562000bc657600080fd5b90830190610100828603121562000bdc57600080fd5b62000be662000a67565b82518281111562000bf657600080fd5b62000c048782860162000ac6565b82525060208301518281111562000c1a57600080fd5b62000c288782860162000ac6565b60208301525060408301518281111562000c4157600080fd5b62000c4f8782860162000ac6565b6040830152506060830151606082015262000c6d6080840162000b5b565b608082015262000c8060a0840162000b78565b60a082015262000c9360c0840162000b5b565b60c082015262000ca660e0840162000b8b565b60e082015295945050505050565b634e487b7160e01b600052602160045260246000fd5b600181811c9082168062000cdf57607f821691505b60208210810362000d0057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200031357600081815260208120601f850160051c8101602086101562000d2f5750805b601f850160051c820191505b8181101562000d505782815560010162000d3b565b505050505050565b81516001600160401b0381111562000d745762000d7462000a51565b62000d8c8162000d85845462000cca565b8462000d06565b602080601f83116001811462000dc4576000841562000dab5750858301515b600019600386901b1c1916600185901b17855562000d50565b600085815260208120601f198616915b8281101562000df55788860151825594840194600190910190840162000dd4565b508582101562000e145787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6138748062000e7f6000396000f3fe608060405234801561001057600080fd5b50600436106102825760003560e01c80637885fdc7116101585780637885fdc7146105005780637e9803421461052e5780638da5cb5b146105365780638e28cf981461053e57806391d1485414610551578063938e3d7b1461056457806394bb53f81461057757806395d89b411461058a578063a217fddf14610592578063a22cb4651461059a578063a341793b146105ad578063b88d4fde146105b5578063b89df8e8146105c8578063bf9b7a57146105d1578063c7db2893146105e3578063c87b56dd146105eb578063cad96cca146105fe578063d53913931461061e578063d547741f14610633578063d5abeb0114610646578063da7422281461064f578063dd89c6fa14610662578063e8a3d4851461066a578063e985e9c514610672578063ef60ceaf146106ae578063f2fde38b146106c1578063f384702f146106d457600080fd5b806301ffc9a7146102875780630653aca5146102af57806306fdde03146102f1578063081812fc14610306578063095ea7b314610326578063162094c41461033b578063167446071461034e57806318160ddd1461035657806323b872dd1461036c578063248a9ca31461037f5780632a55205a146103925780632ee774bd146103c45780632f2ff15d146103d75780633542aee2146103ea57806336568abe146103fd57806342842e0e146104105780634473f20a1461042357806350a5292f146104365780635136dcc71461045057806356c022bb14610463578063572b6c05146104765780635a9b0b89146104895780636352211e146104ac57806364ed2913146104bf5780636f8b44b0146104d257806370a08231146104e5578063715018a6146104f8575b600080fd5b61029a610295366004612c0d565b6106e1565b60405190151581526020015b60405180910390f35b6102c26102bd366004612c2a565b6106f2565b60408051825181526020808401516001600160a01b0316908201529181015161ffff16908201526060016102a6565b6102f9610777565b6040516102a69190612c9b565b610319610314366004612c2a565b610786565b6040516102a69190612cae565b610339610334366004612cd9565b6107ca565b005b610339610349366004612de9565b61086a565b6103396108bf565b600554600454035b6040519081526020016102a6565b61033961037a366004612e2f565b6108d6565b61035e61038d366004612c2a565b610a5d565b6103a56103a0366004612e6b565b610a73565b604080516001600160a01b0390931683526020830191909152016102a6565b6103396103d2366004612e8d565b610b38565b6103396103e5366004612f6b565b610ba7565b6103396103f8366004612cd9565b610bc8565b61033961040b366004612f6b565b610bda565b61033961041e366004612e2f565b610c64565b610339610431366004612c2a565b610c7f565b6003546104439060ff1681565b6040516102a69190612fad565b61033961045e366004612fd5565b610ccf565b601754610319906001600160a01b031681565b61029a610484366004613049565b610d32565b610491610d46565b604080519384526020840192909252908201526060016102a6565b6103196104ba366004612c2a565b610e41565b6103396104cd366004613073565b610e4c565b6103396104e0366004612c2a565b610ec4565b61035e6104f3366004613049565b610f60565b610339610fae565b601354610520906001600160a01b03811690600160a01b900461ffff1682565b6040516102a692919061308e565b61035e610fc2565b610319610fce565b61033961054c366004612e8d565b610fe3565b61029a61055f366004612f6b565b61107c565b6103396105723660046130ab565b6110a7565b6103396105853660046130f1565b6110bb565b6102f9611260565b61035e600081565b6103396105a83660046131fd565b61126a565b6102f96112ff565b6103396105c3366004613239565b611311565b61035e60115481565b60035461029a90610100900460ff1681565b6102f961135b565b6102f96105f9366004612c2a565b6113bb565b61061161060c366004612c2a565b6113c6565b6040516102a691906132b4565b61035e6000805160206137ff83398151915281565b610339610641366004612f6b565b611481565b61035e600f5481565b61033961065d366004613049565b61149d565b6103396114c7565b6102f96114e0565b61029a610680366004613315565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205460ff1690565b6103396106bc36600461333f565b611572565b6103396106cf366004613049565b611594565b60105461029a9060ff1681565b60006106ec8261163f565b92915050565b604080516060810182526000808252602082018190529181018290529061071a601584611670565b6000818152601460209081526040918290208251808401845290546001600160a01b03808216835261ffff600160a01b90920482168385019081528551606081018752968752925116928501929092525116908201529392505050565b6060610781611683565b905090565b60006107918261168d565b6107ae576040516333d1c03960e21b815260040160405180910390fd5b506000908152600a60205260409020546001600160a01b031690565b60006107d582610e41565b9050336001600160a01b0382161461080e576107f18133610680565b61080e576040516367d9dca160e11b815260040160405180910390fd5b6000828152600a602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6108726116b5565b60115482116108b15760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b60448201526064015b60405180910390fd5b6108bb8282611724565b5050565b6108c76116b5565b6010805460ff19166001179055565b60006108e1826117a8565b9050836001600160a01b0316816001600160a01b0316146109145760405162a1148160e81b815260040160405180910390fd5b6000828152600a602052604090208054338082146001600160a01b03881690911417610961576109448633610680565b61096157604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03851661098857604051633a954ecd60e21b815260040160405180910390fd5b801561099357600082555b6001600160a01b038681166000908152600960205260408082208054600019019055918716815220805460010190556109d085600160e11b61180f565b600085815260086020526040812091909155600160e11b84169003610a2557600184016000818152600860205260408120549003610a23576004548114610a235760008181526008602052604090208490555b505b83856001600160a01b0316876001600160a01b031660008051602061381f83398151915260405160405180910390a45b505050505050565b6000908152600160208190526040909120015490565b60008281526014602052604081205481906001600160a01b031615610ad8576000848152601460205260409020546001600160a01b0381169061271090610ac590600160a01b900461ffff168661336d565b610acf91906133a2565b91509150610b31565b6013546001600160a01b031615801590610afe5750601354600160a01b900461ffff1615155b15610b2a576013546001600160a01b0381169061271090610ac590600160a01b900461ffff168661336d565b5060009050805b9250929050565b610b406116b5565b6000610b4b60045490565b9050610b578484611824565b60005b83811015610ba057610b8e610b6f82846133b6565b848381518110610b8157610b816133ce565b6020026020010151611724565b80610b98816133e4565b915050610b5a565b5050505050565b610bb082610a5d565b610bb981611888565b610bc38383611899565b505050565b610bd06116b5565b6108bb8282611824565b610be2611921565b6001600160a01b0316816001600160a01b031614610c5a5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016108a8565b6108bb828261192b565b610bc383838360405180602001604052806000815250611311565b610c876116b5565b6011548111610cca5760405162461bcd60e51b815260206004820152600f60248201526e43414e4e4f545f554e465245455a4560881b60448201526064016108a8565b601155565b610cd76116b5565b6108bb8282808060200260200160405190810160405280939291908181526020016000905b82821015610d2857610d19606083028601368190038101906133fd565b81526020019060010190610cfc565b50505050506119b0565b6017546001600160a01b0391821691161490565b600080808080610d54611921565b6001600160a01b031614610dd057306370a08231610d70611921565b6040518263ffffffff1660e01b8152600401610d8c9190612cae565b602060405180830381865afa158015610da9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcd9190613461565b90505b600f54306001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e359190613461565b90959094509092509050565b60006106ec826117a8565b610e546116b5565b600354610100900460ff1615610e9d5760405162461bcd60e51b815260206004820152600e60248201526d131250d15394d157d313d0d2d15160921b60448201526064016108a8565b6003805482919060ff19166001836005811115610ebc57610ebc612f97565b021790555050565b610ecc6116b5565b60105460ff1615610f115760405162461bcd60e51b815260206004820152600f60248201526e2120a9a2afaaa924afa32927ad22a760891b60448201526064016108a8565b60055460045403811015610f5b5760405162461bcd60e51b81526020600482015260116024820152704c4f5745525f5448414e5f535550504c5960781b60448201526064016108a8565b600f55565b60006001600160a01b038216610f89576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600960205260409020546001600160401b031690565b610fb66116b5565b610fc06000611b57565b565b60006107816015611bb2565b6000546201000090046001600160a01b031690565b610ffd6000805160206137ff83398151915261055f611921565b61103b5760405162461bcd60e51b815260206004820152600f60248201526e4e4f545f4d494e5445525f524f4c4560881b60448201526064016108a8565b600061104660045490565b90506110528484611824565b60005b83811015610ba05761106a610b6f82846133b6565b80611074816133e4565b915050611055565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6110af6116b5565b600e6108bb82826134f4565b600054610100900460ff16158080156110db5750600054600160ff909116105b806110fc57506110ea3061162c565b1580156110fc575060005460ff166001145b61115f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108a8565b6000805460ff191660011790558015611182576000805461ff0019166101001790555b61118d600083611bbc565b6111a56000805160206137ff83398151915283611bbc565b6111ae82611b57565b6111c5836000015184602001518560400151611bc6565b6111cd611bf8565b6111d5611c27565b6111dd611c56565b6111ea8360600151611c8d565b6111fc83608001518460a00151611cbd565b6112098360c00151611cee565b6112168360e00151611d1e565b8015610bc3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6060610781611d4e565b336001600160a01b038316036112935760405163b06307db60e01b815260040160405180910390fd5b336000818152600b602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6003546060906107819060ff16611d58565b61131c8484846108d6565b6001600160a01b0383163b156113555761133884848484611ed6565b611355576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b60606040518060600160405280603181526020016137ce603191396003546113969060ff16600581111561139157611391612f97565b611fc2565b6040516020016113a79291906135b3565b604051602081830303815290604052905090565b60606106ec826120c2565b604080516001808252818301909252606091816020015b60408051808201909152600080825260208201528152602001906001900390816113dd57505060135481519192506001600160a01b0316908290600090611426576114266133ce565b60209081029190910101516001600160a01b039190911690526013548151600160a01b90910461ffff16908290600090611462576114626133ce565b6020908102919091018101516001600160601b03909216910152919050565b61148a82610a5d565b61149381611888565b610bc3838361192b565b6114a56116b5565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6114cf6116b5565b6003805461ff001916610100179055565b6060600e80546114ef9061347a565b80601f016020809104026020016040519081016040528092919081815260200182805461151b9061347a565b80156115685780601f1061153d57610100808354040283529160200191611568565b820191906000526020600020905b81548152906001019060200180831161154b57829003601f168201915b5050505050905090565b61157a6116b5565b61159161158c368390038301836135e2565b6120cd565b50565b61159c6116b5565b6001600160a01b0381166116015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108a8565b61159181611b57565b600061161533610d32565b15611627575060131936013560601c90565b503390565b6001600160a01b03163b151590565b3390565b600061164a82612178565b806106ec5750506001600160e01b03191660009081526002602052604090205460ff1690565b600061167c83836121ad565b9392505050565b60606107816121d7565b6000600454821080156106ec575050600090815260086020526040902054600160e01b161590565b6116bd611921565b6001600160a01b03166116ce610fce565b6001600160a01b031614610fc05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108a8565b61172d8261168d565b6117905760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016108a8565b6000828152601260205260409020610bc382826134f4565b6000816004548110156117f65760008181526008602052604081205490600160e01b821690036117f4575b8060000361167c5750600019016000818152600860205260409020546117d3565b505b604051636f96cda160e11b815260040160405180910390fd5b4260a01b176001600160a01b03919091161790565b600f54816118356005546004540390565b61183f91906133b6565b111561187e5760405162461bcd60e51b815260206004820152600e60248201526d455843454544535f535550504c5960901b60448201526064016108a8565b6108bb82826121e6565b61159181611894611921565b612200565b6118a3828261107c565b6108bb5760008281526001602081815260408084206001600160a01b0386168552909152909120805460ff191690911790556118dd611921565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600061078161160a565b611935828261107c565b156108bb5760008281526001602090815260408083206001600160a01b03851684529091529020805460ff1916905561196c611921565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b60005b81518110156108bb5760008282815181106119d0576119d06133ce565b60200260200101519050612710816040015161ffff1610611a035760405162461bcd60e51b81526004016108a89061363c565b60208101516001600160a01b0316611a7c578051600090815260146020526040902080546001600160b01b03191690558051611a4190601590612264565b5080516040519081527fa2870857763bd9ae76c957f869f16b31c18dd3bb4c7b4d3a4496dc5c57c657f99060200160405180910390a1611b44565b6040805180820182526020808401516001600160a01b0390811683528484015161ffff90811683850190815286516000908152601490945294909220925183549451909216600160a01b026001600160b01b03199094169116179190911790558051611aea90601590612270565b50805160208083015160408085015181519485526001600160a01b039092169284019290925261ffff1682820152517f389b70fb0887f01e83784eb1c4c589f740eca53b00ed0f45e41db5d079719abb9181900360600190a15b5080611b4f816133e4565b9150506119b3565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b60006106ec825490565b6108bb8282611899565b600054610100900460ff16611bed5760405162461bcd60e51b81526004016108a890613661565b610bc383838361227c565b600054610100900460ff16611c1f5760405162461bcd60e51b81526004016108a890613661565b610fc061230a565b600054610100900460ff16611c4e5760405162461bcd60e51b81526004016108a890613661565b610fc0612341565b600054610100900460ff16611c7d5760405162461bcd60e51b81526004016108a890613661565b611c85611bf8565b610fc0612378565b600054610100900460ff16611cb45760405162461bcd60e51b81526004016108a890613661565b611591816123af565b600054610100900460ff16611ce45760405162461bcd60e51b81526004016108a890613661565b6108bb828261240b565b600054610100900460ff16611d155760405162461bcd60e51b81526004016108a890613661565b6115918161249b565b600054610100900460ff16611d455760405162461bcd60e51b81526004016108a890613661565b611591816124c2565b6060610781612509565b60606006826005811115611d6e57611d6e612f97565b60ff161115611d7c57600080fd5b816005811115611d8e57611d8e612f97565b600003611db857505060408051808201909152600781526604342455f4343360cc1b602082015290565b816005811115611dca57611dca612f97565b600103611df457505060408051808201909152600781526621a122afa2a1a960c91b602082015290565b816005811115611e0657611e06612f97565b600203611e3157505060408051808201909152600881526721a122afa722a1a960c11b602082015290565b816005811115611e4357611e43612f97565b600303611e7157505060408051808201909152600b81526a4342455f4e4543525f485360a81b602082015290565b816005811115611e8357611e83612f97565b600403611eac57505060408051808201909152600681526521a122afa82960d11b602082015290565b50506040805180820190915260098152684342455f50525f485360b81b602082015290565b919050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290611f0b9033908990889088906004016136ac565b6020604051808303816000875af1925050508015611f46575060408051601f3d908101601f19168201909252611f43918101906136e9565b60015b611fa4573d808015611f74576040519150601f19603f3d011682016040523d82523d6000602084013e611f79565b606091505b508051600003611f9c576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b606081600003611fe95750506040805180820190915260018152600360fc1b602082015290565b8160005b81156120135780611ffd816133e4565b915061200c9050600a836133a2565b9150611fed565b6000816001600160401b0381111561202d5761202d612d03565b6040519080825280601f01601f191660200182016040528015612057576020820181803683370190505b5090505b8415611fba5761206c600183613706565b9150612079600a8661371d565b6120849060306133b6565b60f81b818381518110612099576120996133ce565b60200101906001600160f81b031916908160001a9053506120bb600a866133a2565b945061205b565b60606106ec82612518565b612710816020015161ffff16106120f65760405162461bcd60e51b81526004016108a89061363c565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601380546001600160b01b031916909217600160a01b9091021790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe419261216d929161308e565b60405180910390a150565b60006001600160e01b03198216637965db0b60e01b14806106ec57506301ffc9a760e01b6001600160e01b03198316146106ec565b60008260000182815481106121c4576121c46133ce565b9060005260206000200154905092915050565b6060600c80546114ef9061347a565b6108bb828260405180602001604052806000815250612686565b61220a828261107c565b6108bb57612222816001600160a01b031660146126ec565b61222d8360206126ec565b60405160200161223e929190613731565b60408051601f198184030181529082905262461bcd60e51b82526108a891600401612c9b565b600061167c8383612887565b600061167c838361297a565b600054610100900460ff166122a35760405162461bcd60e51b81526004016108a890613661565b600c6122af84826134f4565b50600d6122bc83826134f4565b50600e6122c982826134f4565b506122da633d96f4ff60e11b6129c9565b6122ea6380ac58cd60e01b6129c9565b6122fa63184371e560e31b6129c9565b610bc3635b5e139f60e01b6129c9565b600054610100900460ff166123315760405162461bcd60e51b81526004016108a890613661565b610fc0632929b36760e11b6129c9565b600054610100900460ff166123685760405162461bcd60e51b81526004016108a890613661565b610fc0631aa1577160e11b6129c9565b600054610100900460ff1661239f5760405162461bcd60e51b81526004016108a890613661565b610fc0630d169dbf60e31b6129c9565b600054610100900460ff166123d65760405162461bcd60e51b81526004016108a890613661565b600f8190556123eb6330f487b560e11b6129c9565b6123fb6380ac58cd60e01b6129c9565b61159163184371e560e31b6129c9565b600054610100900460ff166124325760405162461bcd60e51b81526004016108a890613661565b612442633a47bf5160e11b6129c9565b61245263152a902d60e11b6129c9565b61246263c69dbd8f60e01b6129c9565b61247263656cb66560e11b6129c9565b604080518082019091526001600160a01b038316815261ffff82166020820152610bc3816120cd565b600054610100900460ff166114a55760405162461bcd60e51b81526004016108a890613661565b600054610100900460ff166124e95760405162461bcd60e51b81526004016108a890613661565b6124f963b964efe960e01b6129c9565b610e9d630c934a3560e31b6129c9565b6060600d80546114ef9061347a565b60606125238261168d565b6125895760405162461bcd60e51b815260206004820152603160248201527f45524337323155524953746f726167653a2055524920717565727920666f72206044820152703737b732bc34b9ba32b73a103a37b5b2b760791b60648201526084016108a8565b600082815260126020526040812080546125a29061347a565b80601f01602080910402602001604051908101604052809291908181526020018280546125ce9061347a565b801561261b5780601f106125f05761010080835404028352916020019161261b565b820191906000526020600020905b8154815290600101906020018083116125fe57829003601f168201915b50505050509050600061263960408051602081019091526000815290565b9050805160000361264b575092915050565b81511561267d5780826040516020016126659291906135b3565b60405160208183030381529060405292505050919050565b611fba84612a47565b6126908383612ad7565b6001600160a01b0383163b15610bc3576004548281035b6126ba6000868380600101945086611ed6565b6126d7576040516368d2bf6b60e11b815260040160405180910390fd5b8181106126a7578160045414610ba057600080fd5b606060006126fb83600261336d565b6127069060026133b6565b6001600160401b0381111561271d5761271d612d03565b6040519080825280601f01601f191660200182016040528015612747576020820181803683370190505b509050600360fc1b81600081518110612762576127626133ce565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612791576127916133ce565b60200101906001600160f81b031916908160001a90535060006127b584600261336d565b6127c09060016133b6565b90505b6001811115612838576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106127f4576127f46133ce565b1a60f81b82828151811061280a5761280a6133ce565b60200101906001600160f81b031916908160001a90535060049490941c93612831816137a0565b90506127c3565b50831561167c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016108a8565b600081815260018301602052604081205480156129705760006128ab600183613706565b85549091506000906128bf90600190613706565b90508181146129245760008660000182815481106128df576128df6133ce565b9060005260206000200154905080876000018481548110612902576129026133ce565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612935576129356137b7565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506106ec565b60009150506106ec565b60008181526001830160205260408120546129c1575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556106ec565b5060006106ec565b6001600160e01b03198082169003612a225760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b60448201526064016108a8565b6001600160e01b0319166000908152600260205260409020805460ff19166001179055565b6060612a528261168d565b612a6f57604051630a14c4b560e41b815260040160405180910390fd5b6000612a8660408051602081019091526000815290565b90508051600003612aa6576040518060200160405280600081525061167c565b80612ab084612bbf565b604051602001612ac19291906135b3565b6040516020818303038152906040529392505050565b6004546000829003612afc5760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b038316600090815260096020526040902080546001600160401b018402019055612b33836001841460e11b61180f565b6000828152600860205260408120919091556001600160a01b03841690838301908390839060008051602061381f8339815191528180a4600183015b818114612b95578083600060008051602061381f833981519152600080a4600101612b6f565b5081600003612bb657604051622e076360e81b815260040160405180910390fd5b60045550505050565b604080516080019081905280825b600183039250600a81066030018353600a900480612bcd5750819003601f19909101908152919050565b6001600160e01b03198116811461159157600080fd5b600060208284031215612c1f57600080fd5b813561167c81612bf7565b600060208284031215612c3c57600080fd5b5035919050565b60005b83811015612c5e578181015183820152602001612c46565b838111156113555750506000910152565b60008151808452612c87816020860160208601612c43565b601f01601f19169290920160200192915050565b60208152600061167c6020830184612c6f565b6001600160a01b0391909116815260200190565b80356001600160a01b0381168114611ed157600080fd5b60008060408385031215612cec57600080fd5b612cf583612cc2565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60405161010081016001600160401b0381118282101715612d3c57612d3c612d03565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612d6a57612d6a612d03565b604052919050565b60006001600160401b03831115612d8b57612d8b612d03565b612d9e601f8401601f1916602001612d42565b9050828152838383011115612db257600080fd5b828260208301376000602084830101529392505050565b600082601f830112612dda57600080fd5b61167c83833560208501612d72565b60008060408385031215612dfc57600080fd5b8235915060208301356001600160401b03811115612e1957600080fd5b612e2585828601612dc9565b9150509250929050565b600080600060608486031215612e4457600080fd5b612e4d84612cc2565b9250612e5b60208501612cc2565b9150604084013590509250925092565b60008060408385031215612e7e57600080fd5b50508035926020909101359150565b600080600060608486031215612ea257600080fd5b612eab84612cc2565b9250602080850135925060408501356001600160401b0380821115612ecf57600080fd5b818701915087601f830112612ee357600080fd5b813581811115612ef557612ef5612d03565b8060051b612f04858201612d42565b918252838101850191858101908b841115612f1e57600080fd5b86860192505b83831015612f5a57823585811115612f3c5760008081fd5b612f4a8d89838a0101612dc9565b8352509186019190860190612f24565b809750505050505050509250925092565b60008060408385031215612f7e57600080fd5b82359150612f8e60208401612cc2565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b6020810160068310612fcf57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060208385031215612fe857600080fd5b82356001600160401b0380821115612fff57600080fd5b818501915085601f83011261301357600080fd5b81358181111561302257600080fd5b86602060608302850101111561303757600080fd5b60209290920196919550909350505050565b60006020828403121561305b57600080fd5b61167c82612cc2565b803560068110611ed157600080fd5b60006020828403121561308557600080fd5b61167c82613064565b6001600160a01b0392909216825261ffff16602082015260400190565b6000602082840312156130bd57600080fd5b81356001600160401b038111156130d357600080fd5b611fba84828501612dc9565b803561ffff81168114611ed157600080fd5b6000806040838503121561310457600080fd5b82356001600160401b038082111561311b57600080fd5b90840190610100828703121561313057600080fd5b613138612d19565b82358281111561314757600080fd5b61315388828601612dc9565b82525060208301358281111561316857600080fd5b61317488828601612dc9565b60208301525060408301358281111561318c57600080fd5b61319888828601612dc9565b604083015250606083013560608201526131b460808401612cc2565b60808201526131c560a084016130df565b60a08201526131d660c08401612cc2565b60c08201526131e760e08401613064565b60e08201529350612f8e91505060208401612cc2565b6000806040838503121561321057600080fd5b61321983612cc2565b91506020830135801515811461322e57600080fd5b809150509250929050565b6000806000806080858703121561324f57600080fd5b61325885612cc2565b935061326660208601612cc2565b92506040850135915060608501356001600160401b0381111561328857600080fd5b8501601f8101871361329957600080fd5b6132a887823560208401612d72565b91505092959194509250565b602080825282518282018190526000919060409081850190868401855b8281101561330857815180516001600160a01b031685528601516001600160601b03168685015292840192908501906001016132d1565b5091979650505050505050565b6000806040838503121561332857600080fd5b61333183612cc2565b9150612f8e60208401612cc2565b60006040828403121561335157600080fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561338757613387613357565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826133b1576133b161338c565b500490565b600082198211156133c9576133c9613357565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600182016133f6576133f6613357565b5060010190565b60006060828403121561340f57600080fd5b604051606081018181106001600160401b038211171561343157613431612d03565b6040528235815261344460208401612cc2565b6020820152613455604084016130df565b60408201529392505050565b60006020828403121561347357600080fd5b5051919050565b600181811c9082168061348e57607f821691505b60208210810361335157634e487b7160e01b600052602260045260246000fd5b601f821115610bc357600081815260208120601f850160051c810160208610156134d55750805b601f850160051c820191505b81811015610a55578281556001016134e1565b81516001600160401b0381111561350d5761350d612d03565b6135218161351b845461347a565b846134ae565b602080601f831160018114613556576000841561353e5750858301515b600019600386901b1c1916600185901b178555610a55565b600085815260208120601f198616915b8281101561358557888601518255948401946001909101908401613566565b50858210156135a35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600083516135c5818460208801612c43565b8351908301906135d9818360208801612c43565b01949350505050565b6000604082840312156135f457600080fd5b604051604081018181106001600160401b038211171561361657613616612d03565b60405261362283612cc2565b8152613630602084016130df565b60208201529392505050565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136df90830184612c6f565b9695505050505050565b6000602082840312156136fb57600080fd5b815161167c81612bf7565b60008282101561371857613718613357565b500390565b60008261372c5761372c61338c565b500690565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613763816017850160208801612c43565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613794816028840160208801612c43565b01602801949350505050565b6000816137af576137af613357565b506000190190565b634e487b7160e01b600052603160045260246000fdfe61723a2f2f5f44396b4e3157724e576243713535425341475262544234625333763851415054596d42546853625833412f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212201ee0c4a2e468336b570314601f89641efa56f7221308e2a5089a49f53793a85e64736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106102825760003560e01c80637885fdc7116101585780637885fdc7146105005780637e9803421461052e5780638da5cb5b146105365780638e28cf981461053e57806391d1485414610551578063938e3d7b1461056457806394bb53f81461057757806395d89b411461058a578063a217fddf14610592578063a22cb4651461059a578063a341793b146105ad578063b88d4fde146105b5578063b89df8e8146105c8578063bf9b7a57146105d1578063c7db2893146105e3578063c87b56dd146105eb578063cad96cca146105fe578063d53913931461061e578063d547741f14610633578063d5abeb0114610646578063da7422281461064f578063dd89c6fa14610662578063e8a3d4851461066a578063e985e9c514610672578063ef60ceaf146106ae578063f2fde38b146106c1578063f384702f146106d457600080fd5b806301ffc9a7146102875780630653aca5146102af57806306fdde03146102f1578063081812fc14610306578063095ea7b314610326578063162094c41461033b578063167446071461034e57806318160ddd1461035657806323b872dd1461036c578063248a9ca31461037f5780632a55205a146103925780632ee774bd146103c45780632f2ff15d146103d75780633542aee2146103ea57806336568abe146103fd57806342842e0e146104105780634473f20a1461042357806350a5292f146104365780635136dcc71461045057806356c022bb14610463578063572b6c05146104765780635a9b0b89146104895780636352211e146104ac57806364ed2913146104bf5780636f8b44b0146104d257806370a08231146104e5578063715018a6146104f8575b600080fd5b61029a610295366004612c0d565b6106e1565b60405190151581526020015b60405180910390f35b6102c26102bd366004612c2a565b6106f2565b60408051825181526020808401516001600160a01b0316908201529181015161ffff16908201526060016102a6565b6102f9610777565b6040516102a69190612c9b565b610319610314366004612c2a565b610786565b6040516102a69190612cae565b610339610334366004612cd9565b6107ca565b005b610339610349366004612de9565b61086a565b6103396108bf565b600554600454035b6040519081526020016102a6565b61033961037a366004612e2f565b6108d6565b61035e61038d366004612c2a565b610a5d565b6103a56103a0366004612e6b565b610a73565b604080516001600160a01b0390931683526020830191909152016102a6565b6103396103d2366004612e8d565b610b38565b6103396103e5366004612f6b565b610ba7565b6103396103f8366004612cd9565b610bc8565b61033961040b366004612f6b565b610bda565b61033961041e366004612e2f565b610c64565b610339610431366004612c2a565b610c7f565b6003546104439060ff1681565b6040516102a69190612fad565b61033961045e366004612fd5565b610ccf565b601754610319906001600160a01b031681565b61029a610484366004613049565b610d32565b610491610d46565b604080519384526020840192909252908201526060016102a6565b6103196104ba366004612c2a565b610e41565b6103396104cd366004613073565b610e4c565b6103396104e0366004612c2a565b610ec4565b61035e6104f3366004613049565b610f60565b610339610fae565b601354610520906001600160a01b03811690600160a01b900461ffff1682565b6040516102a692919061308e565b61035e610fc2565b610319610fce565b61033961054c366004612e8d565b610fe3565b61029a61055f366004612f6b565b61107c565b6103396105723660046130ab565b6110a7565b6103396105853660046130f1565b6110bb565b6102f9611260565b61035e600081565b6103396105a83660046131fd565b61126a565b6102f96112ff565b6103396105c3366004613239565b611311565b61035e60115481565b60035461029a90610100900460ff1681565b6102f961135b565b6102f96105f9366004612c2a565b6113bb565b61061161060c366004612c2a565b6113c6565b6040516102a691906132b4565b61035e6000805160206137ff83398151915281565b610339610641366004612f6b565b611481565b61035e600f5481565b61033961065d366004613049565b61149d565b6103396114c7565b6102f96114e0565b61029a610680366004613315565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205460ff1690565b6103396106bc36600461333f565b611572565b6103396106cf366004613049565b611594565b60105461029a9060ff1681565b60006106ec8261163f565b92915050565b604080516060810182526000808252602082018190529181018290529061071a601584611670565b6000818152601460209081526040918290208251808401845290546001600160a01b03808216835261ffff600160a01b90920482168385019081528551606081018752968752925116928501929092525116908201529392505050565b6060610781611683565b905090565b60006107918261168d565b6107ae576040516333d1c03960e21b815260040160405180910390fd5b506000908152600a60205260409020546001600160a01b031690565b60006107d582610e41565b9050336001600160a01b0382161461080e576107f18133610680565b61080e576040516367d9dca160e11b815260040160405180910390fd5b6000828152600a602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6108726116b5565b60115482116108b15760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b60448201526064015b60405180910390fd5b6108bb8282611724565b5050565b6108c76116b5565b6010805460ff19166001179055565b60006108e1826117a8565b9050836001600160a01b0316816001600160a01b0316146109145760405162a1148160e81b815260040160405180910390fd5b6000828152600a602052604090208054338082146001600160a01b03881690911417610961576109448633610680565b61096157604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03851661098857604051633a954ecd60e21b815260040160405180910390fd5b801561099357600082555b6001600160a01b038681166000908152600960205260408082208054600019019055918716815220805460010190556109d085600160e11b61180f565b600085815260086020526040812091909155600160e11b84169003610a2557600184016000818152600860205260408120549003610a23576004548114610a235760008181526008602052604090208490555b505b83856001600160a01b0316876001600160a01b031660008051602061381f83398151915260405160405180910390a45b505050505050565b6000908152600160208190526040909120015490565b60008281526014602052604081205481906001600160a01b031615610ad8576000848152601460205260409020546001600160a01b0381169061271090610ac590600160a01b900461ffff168661336d565b610acf91906133a2565b91509150610b31565b6013546001600160a01b031615801590610afe5750601354600160a01b900461ffff1615155b15610b2a576013546001600160a01b0381169061271090610ac590600160a01b900461ffff168661336d565b5060009050805b9250929050565b610b406116b5565b6000610b4b60045490565b9050610b578484611824565b60005b83811015610ba057610b8e610b6f82846133b6565b848381518110610b8157610b816133ce565b6020026020010151611724565b80610b98816133e4565b915050610b5a565b5050505050565b610bb082610a5d565b610bb981611888565b610bc38383611899565b505050565b610bd06116b5565b6108bb8282611824565b610be2611921565b6001600160a01b0316816001600160a01b031614610c5a5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016108a8565b6108bb828261192b565b610bc383838360405180602001604052806000815250611311565b610c876116b5565b6011548111610cca5760405162461bcd60e51b815260206004820152600f60248201526e43414e4e4f545f554e465245455a4560881b60448201526064016108a8565b601155565b610cd76116b5565b6108bb8282808060200260200160405190810160405280939291908181526020016000905b82821015610d2857610d19606083028601368190038101906133fd565b81526020019060010190610cfc565b50505050506119b0565b6017546001600160a01b0391821691161490565b600080808080610d54611921565b6001600160a01b031614610dd057306370a08231610d70611921565b6040518263ffffffff1660e01b8152600401610d8c9190612cae565b602060405180830381865afa158015610da9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcd9190613461565b90505b600f54306001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e359190613461565b90959094509092509050565b60006106ec826117a8565b610e546116b5565b600354610100900460ff1615610e9d5760405162461bcd60e51b815260206004820152600e60248201526d131250d15394d157d313d0d2d15160921b60448201526064016108a8565b6003805482919060ff19166001836005811115610ebc57610ebc612f97565b021790555050565b610ecc6116b5565b60105460ff1615610f115760405162461bcd60e51b815260206004820152600f60248201526e2120a9a2afaaa924afa32927ad22a760891b60448201526064016108a8565b60055460045403811015610f5b5760405162461bcd60e51b81526020600482015260116024820152704c4f5745525f5448414e5f535550504c5960781b60448201526064016108a8565b600f55565b60006001600160a01b038216610f89576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600960205260409020546001600160401b031690565b610fb66116b5565b610fc06000611b57565b565b60006107816015611bb2565b6000546201000090046001600160a01b031690565b610ffd6000805160206137ff83398151915261055f611921565b61103b5760405162461bcd60e51b815260206004820152600f60248201526e4e4f545f4d494e5445525f524f4c4560881b60448201526064016108a8565b600061104660045490565b90506110528484611824565b60005b83811015610ba05761106a610b6f82846133b6565b80611074816133e4565b915050611055565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6110af6116b5565b600e6108bb82826134f4565b600054610100900460ff16158080156110db5750600054600160ff909116105b806110fc57506110ea3061162c565b1580156110fc575060005460ff166001145b61115f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108a8565b6000805460ff191660011790558015611182576000805461ff0019166101001790555b61118d600083611bbc565b6111a56000805160206137ff83398151915283611bbc565b6111ae82611b57565b6111c5836000015184602001518560400151611bc6565b6111cd611bf8565b6111d5611c27565b6111dd611c56565b6111ea8360600151611c8d565b6111fc83608001518460a00151611cbd565b6112098360c00151611cee565b6112168360e00151611d1e565b8015610bc3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6060610781611d4e565b336001600160a01b038316036112935760405163b06307db60e01b815260040160405180910390fd5b336000818152600b602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6003546060906107819060ff16611d58565b61131c8484846108d6565b6001600160a01b0383163b156113555761133884848484611ed6565b611355576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b60606040518060600160405280603181526020016137ce603191396003546113969060ff16600581111561139157611391612f97565b611fc2565b6040516020016113a79291906135b3565b604051602081830303815290604052905090565b60606106ec826120c2565b604080516001808252818301909252606091816020015b60408051808201909152600080825260208201528152602001906001900390816113dd57505060135481519192506001600160a01b0316908290600090611426576114266133ce565b60209081029190910101516001600160a01b039190911690526013548151600160a01b90910461ffff16908290600090611462576114626133ce565b6020908102919091018101516001600160601b03909216910152919050565b61148a82610a5d565b61149381611888565b610bc3838361192b565b6114a56116b5565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6114cf6116b5565b6003805461ff001916610100179055565b6060600e80546114ef9061347a565b80601f016020809104026020016040519081016040528092919081815260200182805461151b9061347a565b80156115685780601f1061153d57610100808354040283529160200191611568565b820191906000526020600020905b81548152906001019060200180831161154b57829003601f168201915b5050505050905090565b61157a6116b5565b61159161158c368390038301836135e2565b6120cd565b50565b61159c6116b5565b6001600160a01b0381166116015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108a8565b61159181611b57565b600061161533610d32565b15611627575060131936013560601c90565b503390565b6001600160a01b03163b151590565b3390565b600061164a82612178565b806106ec5750506001600160e01b03191660009081526002602052604090205460ff1690565b600061167c83836121ad565b9392505050565b60606107816121d7565b6000600454821080156106ec575050600090815260086020526040902054600160e01b161590565b6116bd611921565b6001600160a01b03166116ce610fce565b6001600160a01b031614610fc05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108a8565b61172d8261168d565b6117905760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016108a8565b6000828152601260205260409020610bc382826134f4565b6000816004548110156117f65760008181526008602052604081205490600160e01b821690036117f4575b8060000361167c5750600019016000818152600860205260409020546117d3565b505b604051636f96cda160e11b815260040160405180910390fd5b4260a01b176001600160a01b03919091161790565b600f54816118356005546004540390565b61183f91906133b6565b111561187e5760405162461bcd60e51b815260206004820152600e60248201526d455843454544535f535550504c5960901b60448201526064016108a8565b6108bb82826121e6565b61159181611894611921565b612200565b6118a3828261107c565b6108bb5760008281526001602081815260408084206001600160a01b0386168552909152909120805460ff191690911790556118dd611921565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600061078161160a565b611935828261107c565b156108bb5760008281526001602090815260408083206001600160a01b03851684529091529020805460ff1916905561196c611921565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b60005b81518110156108bb5760008282815181106119d0576119d06133ce565b60200260200101519050612710816040015161ffff1610611a035760405162461bcd60e51b81526004016108a89061363c565b60208101516001600160a01b0316611a7c578051600090815260146020526040902080546001600160b01b03191690558051611a4190601590612264565b5080516040519081527fa2870857763bd9ae76c957f869f16b31c18dd3bb4c7b4d3a4496dc5c57c657f99060200160405180910390a1611b44565b6040805180820182526020808401516001600160a01b0390811683528484015161ffff90811683850190815286516000908152601490945294909220925183549451909216600160a01b026001600160b01b03199094169116179190911790558051611aea90601590612270565b50805160208083015160408085015181519485526001600160a01b039092169284019290925261ffff1682820152517f389b70fb0887f01e83784eb1c4c589f740eca53b00ed0f45e41db5d079719abb9181900360600190a15b5080611b4f816133e4565b9150506119b3565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b60006106ec825490565b6108bb8282611899565b600054610100900460ff16611bed5760405162461bcd60e51b81526004016108a890613661565b610bc383838361227c565b600054610100900460ff16611c1f5760405162461bcd60e51b81526004016108a890613661565b610fc061230a565b600054610100900460ff16611c4e5760405162461bcd60e51b81526004016108a890613661565b610fc0612341565b600054610100900460ff16611c7d5760405162461bcd60e51b81526004016108a890613661565b611c85611bf8565b610fc0612378565b600054610100900460ff16611cb45760405162461bcd60e51b81526004016108a890613661565b611591816123af565b600054610100900460ff16611ce45760405162461bcd60e51b81526004016108a890613661565b6108bb828261240b565b600054610100900460ff16611d155760405162461bcd60e51b81526004016108a890613661565b6115918161249b565b600054610100900460ff16611d455760405162461bcd60e51b81526004016108a890613661565b611591816124c2565b6060610781612509565b60606006826005811115611d6e57611d6e612f97565b60ff161115611d7c57600080fd5b816005811115611d8e57611d8e612f97565b600003611db857505060408051808201909152600781526604342455f4343360cc1b602082015290565b816005811115611dca57611dca612f97565b600103611df457505060408051808201909152600781526621a122afa2a1a960c91b602082015290565b816005811115611e0657611e06612f97565b600203611e3157505060408051808201909152600881526721a122afa722a1a960c11b602082015290565b816005811115611e4357611e43612f97565b600303611e7157505060408051808201909152600b81526a4342455f4e4543525f485360a81b602082015290565b816005811115611e8357611e83612f97565b600403611eac57505060408051808201909152600681526521a122afa82960d11b602082015290565b50506040805180820190915260098152684342455f50525f485360b81b602082015290565b919050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290611f0b9033908990889088906004016136ac565b6020604051808303816000875af1925050508015611f46575060408051601f3d908101601f19168201909252611f43918101906136e9565b60015b611fa4573d808015611f74576040519150601f19603f3d011682016040523d82523d6000602084013e611f79565b606091505b508051600003611f9c576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b606081600003611fe95750506040805180820190915260018152600360fc1b602082015290565b8160005b81156120135780611ffd816133e4565b915061200c9050600a836133a2565b9150611fed565b6000816001600160401b0381111561202d5761202d612d03565b6040519080825280601f01601f191660200182016040528015612057576020820181803683370190505b5090505b8415611fba5761206c600183613706565b9150612079600a8661371d565b6120849060306133b6565b60f81b818381518110612099576120996133ce565b60200101906001600160f81b031916908160001a9053506120bb600a866133a2565b945061205b565b60606106ec82612518565b612710816020015161ffff16106120f65760405162461bcd60e51b81526004016108a89061363c565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601380546001600160b01b031916909217600160a01b9091021790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe419261216d929161308e565b60405180910390a150565b60006001600160e01b03198216637965db0b60e01b14806106ec57506301ffc9a760e01b6001600160e01b03198316146106ec565b60008260000182815481106121c4576121c46133ce565b9060005260206000200154905092915050565b6060600c80546114ef9061347a565b6108bb828260405180602001604052806000815250612686565b61220a828261107c565b6108bb57612222816001600160a01b031660146126ec565b61222d8360206126ec565b60405160200161223e929190613731565b60408051601f198184030181529082905262461bcd60e51b82526108a891600401612c9b565b600061167c8383612887565b600061167c838361297a565b600054610100900460ff166122a35760405162461bcd60e51b81526004016108a890613661565b600c6122af84826134f4565b50600d6122bc83826134f4565b50600e6122c982826134f4565b506122da633d96f4ff60e11b6129c9565b6122ea6380ac58cd60e01b6129c9565b6122fa63184371e560e31b6129c9565b610bc3635b5e139f60e01b6129c9565b600054610100900460ff166123315760405162461bcd60e51b81526004016108a890613661565b610fc0632929b36760e11b6129c9565b600054610100900460ff166123685760405162461bcd60e51b81526004016108a890613661565b610fc0631aa1577160e11b6129c9565b600054610100900460ff1661239f5760405162461bcd60e51b81526004016108a890613661565b610fc0630d169dbf60e31b6129c9565b600054610100900460ff166123d65760405162461bcd60e51b81526004016108a890613661565b600f8190556123eb6330f487b560e11b6129c9565b6123fb6380ac58cd60e01b6129c9565b61159163184371e560e31b6129c9565b600054610100900460ff166124325760405162461bcd60e51b81526004016108a890613661565b612442633a47bf5160e11b6129c9565b61245263152a902d60e11b6129c9565b61246263c69dbd8f60e01b6129c9565b61247263656cb66560e11b6129c9565b604080518082019091526001600160a01b038316815261ffff82166020820152610bc3816120cd565b600054610100900460ff166114a55760405162461bcd60e51b81526004016108a890613661565b600054610100900460ff166124e95760405162461bcd60e51b81526004016108a890613661565b6124f963b964efe960e01b6129c9565b610e9d630c934a3560e31b6129c9565b6060600d80546114ef9061347a565b60606125238261168d565b6125895760405162461bcd60e51b815260206004820152603160248201527f45524337323155524953746f726167653a2055524920717565727920666f72206044820152703737b732bc34b9ba32b73a103a37b5b2b760791b60648201526084016108a8565b600082815260126020526040812080546125a29061347a565b80601f01602080910402602001604051908101604052809291908181526020018280546125ce9061347a565b801561261b5780601f106125f05761010080835404028352916020019161261b565b820191906000526020600020905b8154815290600101906020018083116125fe57829003601f168201915b50505050509050600061263960408051602081019091526000815290565b9050805160000361264b575092915050565b81511561267d5780826040516020016126659291906135b3565b60405160208183030381529060405292505050919050565b611fba84612a47565b6126908383612ad7565b6001600160a01b0383163b15610bc3576004548281035b6126ba6000868380600101945086611ed6565b6126d7576040516368d2bf6b60e11b815260040160405180910390fd5b8181106126a7578160045414610ba057600080fd5b606060006126fb83600261336d565b6127069060026133b6565b6001600160401b0381111561271d5761271d612d03565b6040519080825280601f01601f191660200182016040528015612747576020820181803683370190505b509050600360fc1b81600081518110612762576127626133ce565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612791576127916133ce565b60200101906001600160f81b031916908160001a90535060006127b584600261336d565b6127c09060016133b6565b90505b6001811115612838576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106127f4576127f46133ce565b1a60f81b82828151811061280a5761280a6133ce565b60200101906001600160f81b031916908160001a90535060049490941c93612831816137a0565b90506127c3565b50831561167c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016108a8565b600081815260018301602052604081205480156129705760006128ab600183613706565b85549091506000906128bf90600190613706565b90508181146129245760008660000182815481106128df576128df6133ce565b9060005260206000200154905080876000018481548110612902576129026133ce565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612935576129356137b7565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506106ec565b60009150506106ec565b60008181526001830160205260408120546129c1575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556106ec565b5060006106ec565b6001600160e01b03198082169003612a225760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b60448201526064016108a8565b6001600160e01b0319166000908152600260205260409020805460ff19166001179055565b6060612a528261168d565b612a6f57604051630a14c4b560e41b815260040160405180910390fd5b6000612a8660408051602081019091526000815290565b90508051600003612aa6576040518060200160405280600081525061167c565b80612ab084612bbf565b604051602001612ac19291906135b3565b6040516020818303038152906040529392505050565b6004546000829003612afc5760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b038316600090815260096020526040902080546001600160401b018402019055612b33836001841460e11b61180f565b6000828152600860205260408120919091556001600160a01b03841690838301908390839060008051602061381f8339815191528180a4600183015b818114612b95578083600060008051602061381f833981519152600080a4600101612b6f565b5081600003612bb657604051622e076360e81b815260040160405180910390fd5b60045550505050565b604080516080019081905280825b600183039250600a81066030018353600a900480612bcd5750819003601f19909101908152919050565b6001600160e01b03198116811461159157600080fd5b600060208284031215612c1f57600080fd5b813561167c81612bf7565b600060208284031215612c3c57600080fd5b5035919050565b60005b83811015612c5e578181015183820152602001612c46565b838111156113555750506000910152565b60008151808452612c87816020860160208601612c43565b601f01601f19169290920160200192915050565b60208152600061167c6020830184612c6f565b6001600160a01b0391909116815260200190565b80356001600160a01b0381168114611ed157600080fd5b60008060408385031215612cec57600080fd5b612cf583612cc2565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60405161010081016001600160401b0381118282101715612d3c57612d3c612d03565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612d6a57612d6a612d03565b604052919050565b60006001600160401b03831115612d8b57612d8b612d03565b612d9e601f8401601f1916602001612d42565b9050828152838383011115612db257600080fd5b828260208301376000602084830101529392505050565b600082601f830112612dda57600080fd5b61167c83833560208501612d72565b60008060408385031215612dfc57600080fd5b8235915060208301356001600160401b03811115612e1957600080fd5b612e2585828601612dc9565b9150509250929050565b600080600060608486031215612e4457600080fd5b612e4d84612cc2565b9250612e5b60208501612cc2565b9150604084013590509250925092565b60008060408385031215612e7e57600080fd5b50508035926020909101359150565b600080600060608486031215612ea257600080fd5b612eab84612cc2565b9250602080850135925060408501356001600160401b0380821115612ecf57600080fd5b818701915087601f830112612ee357600080fd5b813581811115612ef557612ef5612d03565b8060051b612f04858201612d42565b918252838101850191858101908b841115612f1e57600080fd5b86860192505b83831015612f5a57823585811115612f3c5760008081fd5b612f4a8d89838a0101612dc9565b8352509186019190860190612f24565b809750505050505050509250925092565b60008060408385031215612f7e57600080fd5b82359150612f8e60208401612cc2565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b6020810160068310612fcf57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060208385031215612fe857600080fd5b82356001600160401b0380821115612fff57600080fd5b818501915085601f83011261301357600080fd5b81358181111561302257600080fd5b86602060608302850101111561303757600080fd5b60209290920196919550909350505050565b60006020828403121561305b57600080fd5b61167c82612cc2565b803560068110611ed157600080fd5b60006020828403121561308557600080fd5b61167c82613064565b6001600160a01b0392909216825261ffff16602082015260400190565b6000602082840312156130bd57600080fd5b81356001600160401b038111156130d357600080fd5b611fba84828501612dc9565b803561ffff81168114611ed157600080fd5b6000806040838503121561310457600080fd5b82356001600160401b038082111561311b57600080fd5b90840190610100828703121561313057600080fd5b613138612d19565b82358281111561314757600080fd5b61315388828601612dc9565b82525060208301358281111561316857600080fd5b61317488828601612dc9565b60208301525060408301358281111561318c57600080fd5b61319888828601612dc9565b604083015250606083013560608201526131b460808401612cc2565b60808201526131c560a084016130df565b60a08201526131d660c08401612cc2565b60c08201526131e760e08401613064565b60e08201529350612f8e91505060208401612cc2565b6000806040838503121561321057600080fd5b61321983612cc2565b91506020830135801515811461322e57600080fd5b809150509250929050565b6000806000806080858703121561324f57600080fd5b61325885612cc2565b935061326660208601612cc2565b92506040850135915060608501356001600160401b0381111561328857600080fd5b8501601f8101871361329957600080fd5b6132a887823560208401612d72565b91505092959194509250565b602080825282518282018190526000919060409081850190868401855b8281101561330857815180516001600160a01b031685528601516001600160601b03168685015292840192908501906001016132d1565b5091979650505050505050565b6000806040838503121561332857600080fd5b61333183612cc2565b9150612f8e60208401612cc2565b60006040828403121561335157600080fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561338757613387613357565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826133b1576133b161338c565b500490565b600082198211156133c9576133c9613357565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600182016133f6576133f6613357565b5060010190565b60006060828403121561340f57600080fd5b604051606081018181106001600160401b038211171561343157613431612d03565b6040528235815261344460208401612cc2565b6020820152613455604084016130df565b60408201529392505050565b60006020828403121561347357600080fd5b5051919050565b600181811c9082168061348e57607f821691505b60208210810361335157634e487b7160e01b600052602260045260246000fd5b601f821115610bc357600081815260208120601f850160051c810160208610156134d55750805b601f850160051c820191505b81811015610a55578281556001016134e1565b81516001600160401b0381111561350d5761350d612d03565b6135218161351b845461347a565b846134ae565b602080601f831160018114613556576000841561353e5750858301515b600019600386901b1c1916600185901b178555610a55565b600085815260208120601f198616915b8281101561358557888601518255948401946001909101908401613566565b50858210156135a35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600083516135c5818460208801612c43565b8351908301906135d9818360208801612c43565b01949350505050565b6000604082840312156135f457600080fd5b604051604081018181106001600160401b038211171561361657613616612d03565b60405261362283612cc2565b8152613630602084016130df565b60208201529392505050565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136df90830184612c6f565b9695505050505050565b6000602082840312156136fb57600080fd5b815161167c81612bf7565b60008282101561371857613718613357565b500390565b60008261372c5761372c61338c565b500690565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613763816017850160208801612c43565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613794816028840160208801612c43565b01602801949350505050565b6000816137af576137af613357565b506000190190565b634e487b7160e01b600052603160045260246000fdfe61723a2f2f5f44396b4e3157724e576243713535425341475262544234625333763851415054596d42546853625833412f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212201ee0c4a2e468336b570314601f89641efa56f7221308e2a5089a49f53793a85e64736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/presets/ERC721ASimpleSalesCollection":{"address":{"1":"0xFADbF74931C8a1eD22e80b390524A83717161eAe","3":"0x4597efD61417c940aF99a73127c89187B63539F5","4":"0x15269eBCEa27d47Da7363C8Cc3FC34ddf589Aa8b","5":"0x355d2D09CF839D2CBBcdDf29198Fb3460ef0A3F5","25":"0x871075393948FdA247fAE1bc396543c2Ffa36F79","56":"0x99cfc48d63e4914A0f94d46B0FCF30bD8775067E","66":"0xB19105DfCC8CF80240e86aC7F2CFa9264D6167a8","97":"0x41fe70fC286f7E3e842DE6142a79C89fdCE3bace","137":"0x894479F8FaD3d61B7a1E3859329F813033BB605f","250":"0xC97b52877Aa14987198eA8cABaa678B566baadF1","280":"0xBc2695D48DB3cAA68afb993ada3A02F596193bc5","4002":"0xC97b52877Aa14987198eA8cABaa678B566baadF1","9000":"0x26aaa1F0Be85042402C97766EAC22357AeCCEbc6","42161":"0x76067992fE097Af6186Cf1157d5AF2e9d7429BFC","43113":"0x7cd170485d3540b87f5e4675c1068a60cc81CB89","43114":"0x8fa6C988b115B46Ed2910C53992864754316305f","421611":"0x40BD4F6B9D5d4CAF28909dC679146101099C5895","arbitrumOne":"0x76067992fE097Af6186Cf1157d5AF2e9d7429BFC","arbitrumTestnet":"0x40BD4F6B9D5d4CAF28909dC679146101099C5895","avalanche":"0x8fa6C988b115B46Ed2910C53992864754316305f","avalancheFujiTestnet":"0x7cd170485d3540b87f5e4675c1068a60cc81CB89","bsc":"0x99cfc48d63e4914A0f94d46B0FCF30bD8775067E","bscTestnet":"0x41fe70fC286f7E3e842DE6142a79C89fdCE3bace","cronos":"0x871075393948FdA247fAE1bc396543c2Ffa36F79","evmosTestnet":"0x26aaa1F0Be85042402C97766EAC22357AeCCEbc6","ftmTestnet":"0xC97b52877Aa14987198eA8cABaa678B566baadF1","goerli":"0x355d2D09CF839D2CBBcdDf29198Fb3460ef0A3F5","mainnet":"0xFADbF74931C8a1eD22e80b390524A83717161eAe","okcMainnet":"0xB19105DfCC8CF80240e86aC7F2CFa9264D6167a8","opera":"0xC97b52877Aa14987198eA8cABaa678B566baadF1","polygon":"0x894479F8FaD3d61B7a1E3859329F813033BB605f","rinkeby":"0x15269eBCEa27d47Da7363C8Cc3FC34ddf589Aa8b","ropsten":"0x4597efD61417c940aF99a73127c89187B63539F5","zksyncTestnet":"0xBc2695D48DB3cAA68afb993ada3A02F596193bc5"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721ASimpleSalesCollection","sourceName":"contracts/collections/ERC721A/presets/ERC721ASimpleSalesCollection.sol","abi":[{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"string","name":"placeholderURI","type":"string"},{"internalType":"string","name":"tokenURIPrefix","type":"string"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"internalType":"uint256","name":"preSalePrice","type":"uint256"},{"internalType":"uint256","name":"preSaleMaxMintPerWallet","type":"uint256"},{"internalType":"uint256","name":"publicSalePrice","type":"uint256"},{"internalType":"uint256","name":"publicSaleMaxMintPerTx","type":"uint256"},{"internalType":"address","name":"defaultRoyaltyAddress","type":"address"},{"internalType":"uint16","name":"defaultRoyaltyBps","type":"uint16"},{"internalType":"address","name":"proceedsRecipient","type":"address"},{"internalType":"address","name":"trustedForwarder","type":"address"},{"internalType":"enum LicenseVersion","name":"licenseVersion","type":"uint8"}],"internalType":"struct ERC721ASimpleSalesCollection.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"DefaultRoyaltySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"TokenRoyaltyRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"TokenRoyaltySet","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":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LOCKER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultRoyalty","outputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"filterUnlocked","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"freezeTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getRaribleV2Royalties","outputs":[{"components":[{"internalType":"address payable","name":"account","type":"address"},{"internalType":"uint96","name":"value","type":"uint96"}],"internalType":"struct LibPart.Part[]","name":"result","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenRoyaltiesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getTokenRoyaltyByIndex","outputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasRoleBasedLockableExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"string","name":"placeholderURI","type":"string"},{"internalType":"string","name":"tokenURIPrefix","type":"string"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"internalType":"uint256","name":"preSalePrice","type":"uint256"},{"internalType":"uint256","name":"preSaleMaxMintPerWallet","type":"uint256"},{"internalType":"uint256","name":"publicSalePrice","type":"uint256"},{"internalType":"uint256","name":"publicSaleMaxMintPerTx","type":"uint256"},{"internalType":"address","name":"defaultRoyaltyAddress","type":"address"},{"internalType":"uint16","name":"defaultRoyaltyBps","type":"uint16"},{"internalType":"address","name":"proceedsRecipient","type":"address"},{"internalType":"address","name":"trustedForwarder","type":"address"},{"internalType":"enum LicenseVersion","name":"licenseVersion","type":"uint8"}],"internalType":"struct ERC721ASimpleSalesCollection.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","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":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersion","outputs":[{"internalType":"enum LicenseVersion","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersionLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"locked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintPreSale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintPublicSale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onPreSaleAllowList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","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":[],"name":"placeholderURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleAllowlistMerkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleMaxMintPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSalePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleMaxMintPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSalePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"bytes32","name":"newRoot","type":"bytes32"}],"name":"setAllowlistMerkleRoot","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyalty","name":"royalty","type":"tuple"}],"name":"setDefaultRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum LicenseVersion","name":"_licenseVersion","type":"uint8"}],"name":"setLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setPlaceholderURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPreSaleMaxMintPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPreSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPublicSaleMaxMintPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPublicSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig[]","name":"royaltyConfigs","type":"tuple[]"}],"name":"setTokenRoyalties","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURIPrefix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURISuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"trustedForwarder","type":"address"}],"name":"setTrustedForwarder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"isActive","type":"bool"}],"name":"togglePreSaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isActive","type":"bool"}],"name":"togglePublicSaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIPrefix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURISuffix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b506040516200646138038062006461833981016040819052620000349162000e5c565b805160208201516004620000516200004b620000bd565b620000d9565b6002805482919060ff60c01b1916600160c01b83600581111562000079576200007962001011565b0217905550600590506200008e8382620010b5565b5060066200009d8282620010b5565b50600060035550506001601455620000b6813362000134565b50620011cc565b6000620000d46200035f60201b620027de1760201c565b905090565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620001555750600054600160ff909116105b8062000185575062000172306200039760201b620028001760201c565b15801562000185575060005460ff166001145b620001ee5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000212576000805461ff0019166101001790555b6200021f600083620003a6565b6200022a82620000d9565b6101808301516200023d906002620003b6565b6101c08301516200024e90620003ec565b8251602084015160408501516200026792919062000424565b62000281836060015184608001516200045b60201b60201c565b60a0830151620002919062000491565b6200029b620004c6565b620002a682620004fc565b620002b062000531565b620002ca8360c001518460e001516200056560201b60201c565b620002e6836101000151846101200151620005ac60201b60201c565b62000302836101400151846101600151620005e260201b60201c565b6101a0830151620003139062000618565b80156200035a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6023546000906001600160a01b0316330362000382575060131936013560601c90565b620000d46200064d60201b6200280f1760201c565b6001600160a01b03163b151590565b620003b2828262000651565b5050565b600054610100900460ff16620003e05760405162461bcd60e51b8152600401620001e59062001181565b620003b28282620006f7565b600054610100900460ff16620004165760405162461bcd60e51b8152600401620001e59062001181565b620004218162000783565b50565b600054610100900460ff166200044e5760405162461bcd60e51b8152600401620001e59062001181565b6200035a83838362000801565b600054610100900460ff16620004855760405162461bcd60e51b8152600401620001e59062001181565b620003b28282620008a0565b600054610100900460ff16620004bb5760405162461bcd60e51b8152600401620001e59062001181565b620004218162000938565b600054610100900460ff16620004f05760405162461bcd60e51b8152600401620001e59062001181565b620004fa6200099d565b565b600054610100900460ff16620005265760405162461bcd60e51b8152600401620001e59062001181565b6200042181620009d9565b600054610100900460ff166200055b5760405162461bcd60e51b8152600401620001e59062001181565b620004fa62000a41565b600054610100900460ff166200058f5760405162461bcd60e51b8152600401620001e59062001181565b620005a163209680f760e11b62000a78565b601591909155601655565b600054610100900460ff16620005d65760405162461bcd60e51b8152600401620001e59062001181565b620003b2828262000afc565b600054610100900460ff166200060c5760405162461bcd60e51b8152600401620001e59062001181565b620003b2828262000b43565b600054610100900460ff16620006425760405162461bcd60e51b8152600401620001e59062001181565b620004218162000be0565b3390565b6000828152601e602090815260408083206001600160a01b038516845290915290205460ff16620003b2576000828152601e602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620006b3620000bd565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600054610100900460ff16620007215760405162461bcd60e51b8152600401620001e59062001181565b6200073363ac2ba33360e01b62000a78565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b8360038111156200077a576200077a62001011565b02179055505050565b600054610100900460ff16620007ad5760405162461bcd60e51b8152600401620001e59062001181565b620007bf63b964efe960e01b62000a78565b620007d1630c934a3560e31b62000a78565b6002805482919060ff60c01b1916600160c01b836005811115620007f957620007f962001011565b021790555050565b600054610100900460ff166200082b5760405162461bcd60e51b8152600401620001e59062001181565b600b620008398482620010b5565b50600c620008488382620010b5565b50600d620008578282620010b5565b506200086a633d96f4ff60e11b62000a78565b6200087c6380ac58cd60e01b62000a78565b6200088e63184371e560e31b62000a78565b6200035a635b5e139f60e01b62000a78565b600054610100900460ff16620008ca5760405162461bcd60e51b8152600401620001e59062001181565b600e620008d88382620010b5565b50600f620008e78282620010b5565b50604080518082019091526005815264173539b7b760d91b6020820152601090620009139082620010b5565b5062000926631f2f406b60e01b62000a78565b620003b2635b5e139f60e01b62000a78565b600054610100900460ff16620009625760405162461bcd60e51b8152600401620001e59062001181565b6012819055620009796330f487b560e11b62000a78565b6200098b6380ac58cd60e01b62000a78565b6200042163184371e560e31b62000a78565b600054610100900460ff16620009c75760405162461bcd60e51b8152600401620001e59062001181565b620004fa631aa1577160e11b62000a78565b600054610100900460ff1662000a035760405162461bcd60e51b8152600401620001e59062001181565b62000a15631a056e7160e01b62000a78565b620004217f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a682620003a6565b600054610100900460ff1662000a6b5760405162461bcd60e51b8152600401620001e59062001181565b620004fa63714ad8e760e01b5b6001600160e01b0319808216900362000ad45760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e74657266616365206964000000006044820152606401620001e5565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b600054610100900460ff1662000b265760405162461bcd60e51b8152600401620001e59062001181565b62000b386317e0bac360e31b62000a78565b601a91909155601b55565b600054610100900460ff1662000b6d5760405162461bcd60e51b8152600401620001e59062001181565b62000b7f633a47bf5160e11b62000a78565b62000b9163152a902d60e11b62000a78565b62000ba363c69dbd8f60e01b62000a78565b62000bb563656cb66560e11b62000a78565b604080518082019091526001600160a01b038316815261ffff821660208201526200035a8162000c2c565b600054610100900460ff1662000c0a5760405162461bcd60e51b8152600401620001e59062001181565b602380546001600160a01b0319166001600160a01b0392909216919091179055565b612710816020015161ffff161062000c755760405162461bcd60e51b815260206004820152600b60248201526a496e76616c69642062707360a81b6044820152606401620001e5565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601f8054600160a01b9092026001600160b01b03199092169092171790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe419262000d0792916001600160a01b0392909216825261ffff16602082015260400190565b60405180910390a150565b634e487b7160e01b600052604160045260246000fd5b6040516101e081016001600160401b038111828210171562000d4e5762000d4e62000d12565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000d7f5762000d7f62000d12565b604052919050565b600082601f83011262000d9957600080fd5b81516001600160401b0381111562000db55762000db562000d12565b602062000dcb601f8301601f1916820162000d54565b828152858284870101111562000de057600080fd5b60005b8381101562000e0057858101830151828201840152820162000de3565b8381111562000e125760008385840101525b5095945050505050565b80516001600160a01b038116811462000e3457600080fd5b919050565b805161ffff8116811462000e3457600080fd5b80516006811062000e3457600080fd5b60006020828403121562000e6f57600080fd5b81516001600160401b038082111562000e8757600080fd5b908301906101e0828603121562000e9d57600080fd5b62000ea762000d28565b82518281111562000eb757600080fd5b62000ec58782860162000d87565b82525060208301518281111562000edb57600080fd5b62000ee98782860162000d87565b60208301525060408301518281111562000f0257600080fd5b62000f108782860162000d87565b60408301525060608301518281111562000f2957600080fd5b62000f378782860162000d87565b60608301525060808301518281111562000f5057600080fd5b62000f5e8782860162000d87565b60808301525060a0838101519082015260c0808401519082015260e0808401519082015261010080840151908201526101208084015190820152610140915062000faa82840162000e1c565b82820152610160915062000fc082840162000e39565b82820152610180915062000fd682840162000e1c565b828201526101a0915062000fec82840162000e1c565b828201526101c091506200100282840162000e4c565b91810191909152949350505050565b634e487b7160e01b600052602160045260246000fd5b600181811c908216806200103c57607f821691505b6020821081036200105d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035a57600081815260208120601f850160051c810160208610156200108c5750805b601f850160051c820191505b81811015620010ad5782815560010162001098565b505050505050565b81516001600160401b03811115620010d157620010d162000d12565b620010e981620010e2845462001027565b8462001063565b602080601f831160018114620011215760008415620011085750858301515b600019600386901b1c1916600185901b178555620010ad565b600085815260208120601f198616915b82811015620011525788860151825594840194600190910190840162001131565b5085821015620011715787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b61528580620011dc6000396000f3fe6080604052600436106104425760003560e01c806391d1485411610237578063c87b56dd11610135578063c87b56dd14610cbe578063cad96cca14610cde578063d539139314610d0b578063d547741f14610d2d578063d5abeb0114610d4d578063d79ff99d14610d63578063da74222814610d76578063da82b22714610d96578063dbbc853b14610dab578063dcbe353f14610dc0578063dd46706414610de0578063dd89c6fa14610e00578063de6d6d9614610e15578063e3b9a7e514610e35578063e757c17d14610e55578063e8a3d48514610e6b578063e985e9c514610e80578063ef60ceaf14610ec9578063f2fde38b14610ee9578063f362136714610f09578063f384702f14610f2b578063f74bbf5914610f45578063f95df41414610f65578063fe50b58714610f8557600080fd5b806391d1485414610a60578063938e3d7b14610a8057806395d89b4114610aa057806399e0dd7c14610ab55780639b6860c814610ad55780639e6b2c5b14610aeb578063a217fddf14610afe578063a22cb46514610b13578063a341793b14610b33578063a9852bfb14610b48578063aaeaca4814610b68578063af121f5414610b7e578063b27c6f2d14610b9f578063b45a3c0e14610bb5578063b6c693e514610bd5578063b88d4fde14610bef578063ba4695fd14610c0f578063bf9b7a5714610c24578063c0ac998314610c45578063c0bb38ff14610c5a578063c29de63014610c7a578063c723955a14610c94578063c7db289314610ca957600080fd5b806349561cb91161034457806349561cb9146107985780634f972f5f146107b957806350a5292f146107d95780635136dcc71461080757806356c022bb14610827578063572b6c05146108475780635d36598f146108675780636057e0ec146108875780636198e339146108a85780636352211e146108c857806364ed2913146108e85780636f8b44b01461090857806370a0823114610928578063714ad8e714610948578063715018a61461095c5780637313cba9146109715780637885fdc714610986578063791a2519146109c15780637d7eee42146109e15780637e98034214610a01578063837fe14014610a16578063859610c614610a2b5780638da5cb5b14610a4b57600080fd5b806301ffc9a7146104475780630653aca51461047c57806306fdde03146104cb578063081812fc146104ed578063095ea7b314610525578063167446071461054757806318160ddd1461055c5780631a056e711461057f57806323b872dd1461059f578063248a9ca3146105bf5780632a55205a146105df5780632bb684ad1461060d5780632c2330671461063a5780632d00b5871461065a5780632d8e85b0146106885780632f2ff15d146106a85780633542aee2146106c85780633574a2dd146106e857806336568abe146107085780633acf404d146107285780633c0e8f2c1461073e57806342842e0e1461075e578063464bd6401461077e575b600080fd5b34801561045357600080fd5b5061046761046236600461426c565b610fa5565b60405190151581526020015b60405180910390f35b34801561048857600080fd5b5061049c610497366004614289565b610fb6565b60408051825181526020808401516001600160a01b0316908201529181015161ffff1690820152606001610473565b3480156104d757600080fd5b506104e0611039565b60405161047391906142fa565b3480156104f957600080fd5b5061050d610508366004614289565b611048565b6040516001600160a01b039091168152602001610473565b34801561053157600080fd5b50610545610540366004614324565b61108c565b005b34801561055357600080fd5b5061054561112c565b34801561056857600080fd5b50600454600354035b604051908152602001610473565b34801561058b57600080fd5b5061054561059a366004614324565b611143565b3480156105ab57600080fd5b506105456105ba36600461434e565b6111ae565b3480156105cb57600080fd5b506105716105da366004614289565b611342565b3480156105eb57600080fd5b506105ff6105fa36600461438a565b611357565b6040516104739291906143ac565b34801561061957600080fd5b5061062d610628366004614409565b61141a565b604051610473919061444a565b34801561064657600080fd5b5061054561065536600461448e565b6114e4565b34801561066657600080fd5b5060025461067b90600160b01b900460ff1681565b60405161047391906144c5565b34801561069457600080fd5b506105456106a33660046144ed565b611543565b3480156106b457600080fd5b506105456106c336600461450a565b61155e565b3480156106d457600080fd5b506105456106e3366004614324565b61157f565b3480156106f457600080fd5b5061054561070336600461460a565b611587565b34801561071457600080fd5b5061054561072336600461450a565b61159b565b34801561073457600080fd5b5061057160175481565b34801561074a57600080fd5b50610545610759366004614289565b611625565b34801561076a57600080fd5b5061054561077936600461434e565b611632565b34801561078a57600080fd5b506018546104679060ff1681565b3480156107a457600080fd5b5060025461046790600160b81b900460ff1681565b3480156107c557600080fd5b506105456107d43660046144ed565b61164d565b3480156107e557600080fd5b506002546107fa90600160c01b900460ff1681565b604051610473919061463e565b34801561081357600080fd5b50610545610822366004614652565b611668565b34801561083357600080fd5b5060235461050d906001600160a01b031681565b34801561085357600080fd5b506104676108623660046146c6565b6116cb565b34801561087357600080fd5b50610545610882366004614409565b6116df565b34801561089357600080fd5b5060025461046790600160a01b900460ff1681565b3480156108b457600080fd5b506105456108c3366004614289565b611782565b3480156108d457600080fd5b5061050d6108e3366004614289565b6117ee565b3480156108f457600080fd5b506105456109033660046146f0565b6117f9565b34801561091457600080fd5b50610545610923366004614289565b611871565b34801561093457600080fd5b506105716109433660046146c6565b61190d565b34801561095457600080fd5b506001610467565b34801561096857600080fd5b5061054561195b565b34801561097d57600080fd5b506104e061196f565b34801561099257600080fd5b50601f546109b3906001600160a01b03811690600160a01b900461ffff1682565b60405161047392919061470b565b3480156109cd57600080fd5b506105456109dc366004614289565b611a01565b3480156109ed57600080fd5b506105456109fc366004614289565b611a0e565b348015610a0d57600080fd5b50610571611a1b565b348015610a2257600080fd5b50610545611a27565b348015610a3757600080fd5b50610545610a46366004614409565b611a6e565b348015610a5757600080fd5b5061050d611b07565b348015610a6c57600080fd5b50610467610a7b36600461450a565b611b1c565b348015610a8c57600080fd5b50610545610a9b36600461460a565b611b47565b348015610aac57600080fd5b506104e0611b5b565b348015610ac157600080fd5b50610545610ad036600461460a565b611b65565b348015610ae157600080fd5b50610571601a5481565b610545610af9366004614728565b611b9c565b348015610b0a57600080fd5b50610571600081565b348015610b1f57600080fd5b50610545610b2e366004614773565b611d67565b348015610b3f57600080fd5b506104e0611dfc565b348015610b5457600080fd5b50610545610b6336600461460a565b611e15565b348015610b7457600080fd5b5061057160165481565b348015610b8a57600080fd5b5060025461046790600160a81b900460ff1681565b348015610bab57600080fd5b50610571601b5481565b348015610bc157600080fd5b50610467610bd0366004614289565b611e4c565b348015610be157600080fd5b50601c546104679060ff1681565b348015610bfb57600080fd5b50610545610c0a3660046147aa565b611e59565b348015610c1b57600080fd5b50610545611ea3565b348015610c3057600080fd5b5060025461046790600160c81b900460ff1681565b348015610c5157600080fd5b506104e0611eba565b348015610c6657600080fd5b50610545610c753660046146c6565b611ec9565b348015610c8657600080fd5b506011546104679060ff1681565b348015610ca057600080fd5b50610545611f1d565b348015610cb557600080fd5b506104e0611f7c565b348015610cca57600080fd5b506104e0610cd9366004614289565b611fe3565b348015610cea57600080fd5b50610cfe610cf9366004614289565b611fee565b6040516104739190614825565b348015610d1757600080fd5b506105716000805160206151f083398151915281565b348015610d3957600080fd5b50610545610d4836600461450a565b6120a9565b348015610d5957600080fd5b5061057160125481565b610545610d71366004614324565b6120c5565b348015610d8257600080fd5b50610545610d913660046146c6565b6121bd565b348015610da257600080fd5b506105456121e7565b348015610db757600080fd5b506104e061222d565b348015610dcc57600080fd5b5060025461050d906001600160a01b031681565b348015610dec57600080fd5b50610545610dfb366004614289565b61223c565b348015610e0c57600080fd5b506105456122a0565b348015610e2157600080fd5b50610545610e30366004614886565b6122bd565b348015610e4157600080fd5b50610467610e503660046148f1565b6124f5565b348015610e6157600080fd5b5061057160155481565b348015610e7757600080fd5b506104e0612543565b348015610e8c57600080fd5b50610467610e9b36600461492a565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205460ff1690565b348015610ed557600080fd5b50610545610ee4366004614954565b612552565b348015610ef557600080fd5b50610545610f043660046146c6565b612574565b348015610f1557600080fd5b5061057160008051602061523083398151915281565b348015610f3757600080fd5b506013546104679060ff1681565b348015610f5157600080fd5b50610545610f60366004614289565b6125ea565b348015610f7157600080fd5b50610545610f80366004614289565b6125f7565b348015610f9157600080fd5b50610545610fa036600461497e565b612604565b6000610fb082612813565b92915050565b6040805160608101825260008082526020820181905291810182905290610fde60218461284f565b600081815260208080526040918290208251808401845290546001600160a01b03808216835261ffff600160a01b90920482168385019081528551606081018752968752925116928501929092525116908201529392505050565b6060611043612862565b905090565b600061105382612871565b611070576040516333d1c03960e21b815260040160405180910390fd5b506000908152600960205260409020546001600160a01b031690565b6000611097826117ee565b9050336001600160a01b038216146110d0576110b38133610e9b565b6110d0576040516367d9dca160e11b815260040160405180910390fd5b60008281526009602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b611134612899565b6013805460ff19166001179055565b61115d6000805160206151f0833981519152610a7b612908565b6111a05760405162461bcd60e51b815260206004820152600f60248201526e4e4f545f4d494e5445525f524f4c4560881b60448201526064015b60405180910390fd5b6111aa8282612912565b5050565b60006111b982612976565b9050836001600160a01b0316816001600160a01b0316146111ec5760405162a1148160e81b815260040160405180910390fd5b60008281526009602052604090208054338082146001600160a01b038816909114176112395761121c8633610e9b565b61123957604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03851661126057604051633a954ecd60e21b815260040160405180910390fd5b61126d86868660016129dd565b801561127857600082555b6001600160a01b038681166000908152600860205260408082208054600019019055918716815220805460010190556112b585600160e11b6129e9565b600085815260076020526040812091909155600160e11b8416900361130a576001840160008181526007602052604081205490036113085760035481146113085760008181526007602052604090208490555b505b83856001600160a01b0316876001600160a01b031660008051602061521083398151915260405160405180910390a45b505050505050565b6000908152601e602052604090206001015490565b600082815260208052604081205481906001600160a01b0316156113ba5760008481526020805260409020546001600160a01b03811690612710906113a790600160a01b900461ffff1686614b33565b6113b19190614b68565b91509150611413565b601f546001600160a01b0316158015906113e05750601f54600160a01b900461ffff1615155b1561140c57601f546001600160a01b03811690612710906113a790600160a01b900461ffff1686614b33565b5060009050805b9250929050565b60606000826001600160401b0381111561143657611436614536565b60405190808252806020026020018201604052801561145f578160200160208202803683370190505b50905060005b838110156114dc5761148e85858381811061148257611482614b7c565b90506020020135611e4c565b6114ca578484828181106114a4576114a4614b7c565b905060200201358282815181106114bd576114bd614b7c565b6020026020010181815250505b806114d481614b92565b915050611465565b509392505050565b6114ec612899565b600254600160b81b900460ff16156115165760405162461bcd60e51b815260040161119790614bab565b6002805482919060ff60b01b1916600160b01b83600381111561153b5761153b6144af565b021790555050565b61154b612899565b601c805460ff1916911515919091179055565b61156782611342565b611570816129fe565b61157a8383612a0f565b505050565b6111a0612899565b61158f612899565b600e6111aa8282614c45565b6115a3612908565b6001600160a01b0316816001600160a01b03161461161b5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401611197565b6111aa8282612a96565b61162d612899565b601b55565b61157a83838360405180602001604052806000815250611e59565b611655612899565b6018805460ff1916911515919091179055565b611670612899565b6111aa8282808060200260200160405190810160405280939291908181526020016000905b828210156116c1576116b260608302860136819003810190614d04565b81526020019060010190611695565b5050505050612b1b565b6023546001600160a01b0391821691161490565b6002601454036117015760405162461bcd60e51b815260040161119790614d68565b600260145561171e60008051602061523083398151915233611b1c565b61173a5760405162461bcd60e51b815260040161119790614d9f565b60005b818110156117785761176683838381811061175a5761175a614b7c565b90506020020135612cbf565b8061177081614b92565b91505061173d565b5050600160145550565b6002601454036117a45760405162461bcd60e51b815260040161119790614d68565b60026014556117c160008051602061523083398151915233611b1c565b6117dd5760405162461bcd60e51b815260040161119790614dd1565b6117e681612cbf565b506001601455565b6000610fb082612976565b611801612899565b600254600160c81b900460ff161561184c5760405162461bcd60e51b815260206004820152600e60248201526d131250d15394d157d313d0d2d15160921b6044820152606401611197565b6002805482919060ff60c01b1916600160c01b83600581111561153b5761153b6144af565b611879612899565b60135460ff16156118be5760405162461bcd60e51b815260206004820152600f60248201526e2120a9a2afaaa924afa32927ad22a760891b6044820152606401611197565b600454600354038110156119085760405162461bcd60e51b81526020600482015260116024820152704c4f5745525f5448414e5f535550504c5960781b6044820152606401611197565b601255565b60006001600160a01b038216611936576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600860205260409020546001600160401b031690565b611963612899565b61196d6000612d26565b565b6060600e805461197e90614bcb565b80601f01602080910402602001604051908101604052809291908181526020018280546119aa90614bcb565b80156119f75780601f106119cc576101008083540402835291602001916119f7565b820191906000526020600020905b8154815290600101906020018083116119da57829003601f168201915b5050505050905090565b611a09612899565b601a55565b611a16612899565b601555565b60006110436021612d81565b611a2f612899565b600254600160a01b900460ff1615611a595760405162461bcd60e51b815260040161119790614bab565b6002805460ff60a01b1916600160a01b179055565b600260145403611a905760405162461bcd60e51b815260040161119790614d68565b6002601455611aad60008051602061523083398151915233611b1c565b611ac95760405162461bcd60e51b815260040161119790614d9f565b60005b8181101561177857611af5838383818110611ae957611ae9614b7c565b90506020020135612d8b565b80611aff81614b92565b915050611acc565b6000546201000090046001600160a01b031690565b6000918252601e602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611b4f612899565b600d6111aa8282614c45565b6060611043612dd5565b611b6d612899565b60115460ff1615611b905760405162461bcd60e51b815260040161119790614dfa565b600f6111aa8282614c45565b600260145403611bbe5760405162461bcd60e51b815260040161119790614d68565b600260145560185460ff16611c025760405162461bcd60e51b815260206004820152600a6024820152694e4f545f41435449564560b01b6044820152606401611197565b6000611c0c612908565b9050611c57838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506017549150611c52905084612de4565b612e1e565b611c915760405162461bcd60e51b815260206004820152600b60248201526a2ba927a723afa82927a7a360a91b6044820152606401611197565b6016546001600160a01b038216600090815260196020526040902054611cb8908690614e1a565b1115611cf75760405162461bcd60e51b815260206004820152600e60248201526d14149157d4d0531157d31253525560921b6044820152606401611197565b3484601554611d069190614b33565b1115611d245760405162461bcd60e51b815260040161119790614e32565b6001600160a01b03811660009081526019602052604081208054869290611d4c908490614e1a565b90915550611d5c90508185612912565b505060016014555050565b336001600160a01b03831603611d905760405163b06307db60e01b815260040160405180910390fd5b336000818152600a602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60025460609061104390600160c01b900460ff16612e34565b611e1d612899565b60115460ff1615611e405760405162461bcd60e51b815260040161119790614dfa565b60106111aa8282614c45565b6000610fb0601d83612fb2565b611e648484846111ae565b6001600160a01b0383163b15611e9d57611e8084848484612fd6565b611e9d576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b611eab612899565b6011805460ff19166001179055565b6060600f805461197e90614bcb565b611ed1612899565b600254600160a01b900460ff1615611efb5760405162461bcd60e51b815260040161119790614bab565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b611f25612899565b600254600160b81b900460ff1615611f675760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401611197565b6002805460ff60b81b1916600160b81b179055565b60606040518060600160405280603181526020016151bf60319139600254611fbe90600160c01b900460ff166005811115611fb957611fb96144af565b6130c1565b604051602001611fcf929190614e5f565b604051602081830303815290604052905090565b6060610fb0826131c1565b604080516001808252818301909252606091816020015b6040805180820190915260008082526020820152815260200190600190039081612005575050601f5481519192506001600160a01b031690829060009061204e5761204e614b7c565b60209081029190910101516001600160a01b03919091169052601f548151600160a01b90910461ffff1690829060009061208a5761208a614b7c565b6020908102919091018101516001600160601b03909216910152919050565b6120b282611342565b6120bb816129fe565b61157a8383612a96565b6002601454036120e75760405162461bcd60e51b815260040161119790614d68565b6002601455601c5460ff166121375760405162461bcd60e51b81526020600482015260166024820152755055424c49435f53414c455f4e4f545f41435449564560501b6044820152606401611197565b601b5481111561217d5760405162461bcd60e51b8152602060048201526011602482015270141550931250d7d4d0531157d312535255607a1b6044820152606401611197565b3481601a5461218c9190614b33565b11156121aa5760405162461bcd60e51b815260040161119790614e32565b6121b48282612912565b50506001601455565b6121c5612899565b602380546001600160a01b0319166001600160a01b0392909216919091179055565b6121ef612899565b6002805460ff60a81b1916600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b60606010805461197e90614bcb565b60026014540361225e5760405162461bcd60e51b815260040161119790614d68565b600260145561227b60008051602061523083398151915233611b1c565b6122975760405162461bcd60e51b815260040161119790614dd1565b6117e681612d8b565b6122a8612899565b6002805460ff60c81b1916600160c81b179055565b6122c63361329d565b6002546001600160a01b03166123165760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401611197565b600254600160a81b900460ff16156123705760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401611197565b60005b838110156124b157600085858381811061238f5761238f614b7c565b90506020020160208101906123a491906146c6565b6001600160a01b0316036123e7576123e28383838181106123c7576123c7614b7c565b6002546001600160a01b031692602090910201359050613422565b61249f565b8484828181106123f9576123f9614b7c565b905060200201602081019061240e91906146c6565b6002546001600160a01b039182169163a9059cbb911685858581811061243657612436614b7c565b905060200201356040518363ffffffff1660e01b815260040161245a9291906143ac565b6020604051808303816000875af1158015612479573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249d9190614e8e565b505b806124a981614b92565b915050612373565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a5848484846040516124e79493929190614eab565b60405180910390a150505050565b600061253b838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506017549150611c52905087612de4565b949350505050565b6060600d805461197e90614bcb565b61255a612899565b61257161256c36839003830183614f2d565b613538565b50565b61257c612899565b6001600160a01b0381166125e15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611197565b61257181612d26565b6125f2612899565b601655565b6125ff612899565b601755565b600054610100900460ff16158080156126245750600054600160ff909116105b80612645575061263330612800565b158015612645575060005460ff166001145b6126a85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611197565b6000805460ff1916600117905580156126cb576000805461ff0019166101001790555b6126d66000836135e3565b6126df82612d26565b6126ef83610180015160026135ed565b6126fd836101c0015161361e565b61271483600001518460200151856040015161364e565b61272683606001518460800151613680565b6127338360a001516136b1565b61273b6136e1565b61274482613710565b61274c613740565b61275e8360c001518460e0015161376f565b6127728361010001518461012001516137b1565b6127868361014001518461016001516137e2565b612794836101a00151613813565b801561157a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60006127e9336116cb565b156127fb575060131936013560601c90565b503390565b6001600160a01b03163b151590565b3390565b60006301ffc9a760e01b6001600160e01b031983161480610fb05750506001600160e01b03191660009081526001602052604090205460ff1690565b600061285b8383613843565b9392505050565b6060600b805461197e90614bcb565b600060035482108015610fb0575050600090815260076020526040902054600160e01b161590565b6128a1612908565b6001600160a01b03166128b2611b07565b6001600160a01b03161461196d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611197565b60006110436127de565b601254816129236004546003540390565b61292d9190614e1a565b111561296c5760405162461bcd60e51b815260206004820152600e60248201526d455843454544535f535550504c5960901b6044820152606401611197565b6111aa828261386d565b6000816003548110156129c45760008181526007602052604081205490600160e01b821690036129c2575b8060000361285b5750600019016000818152600760205260409020546129a1565b505b604051636f96cda160e11b815260040160405180910390fd5b611e9d84848484613887565b4260a01b176001600160a01b03919091161790565b61257181612a0a612908565b6138b4565b612a198282611b1c565b6111aa576000828152601e602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612a52612908565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b612aa08282611b1c565b156111aa576000828152601e602090815260408083206001600160a01b03851684529091529020805460ff19169055612ad7612908565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b60005b81518110156111aa576000828281518110612b3b57612b3b614b7c565b60200260200101519050612710816040015161ffff1610612b6e5760405162461bcd60e51b815260040161119790614f87565b60208101516001600160a01b0316612be65780516000908152602080526040902080546001600160b01b03191690558051612bab90602190613918565b5080516040519081527fa2870857763bd9ae76c957f869f16b31c18dd3bb4c7b4d3a4496dc5c57c657f99060200160405180910390a1612cac565b6040805180820182526020808401516001600160a01b0390811683528484015161ffff9081168385019081528651600090815293805294909220925183549451909216600160a01b026001600160b01b03199094169116179190911790558051612c5290602190613924565b50805160208083015160408085015181519485526001600160a01b039092169284019290925261ffff1682820152517f389b70fb0887f01e83784eb1c4c589f740eca53b00ed0f45e41db5d079719abb9181900360600190a15b5080612cb781614b92565b915050612b1e565b612cca601d82612fb2565b612d035760405162461bcd60e51b815260206004820152600a6024820152691393d517d313d0d2d15160b21b6044820152606401611197565b600881901c6000908152601d602052604090208054600160ff84161b1916905550565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6000610fb0825490565b612d96601d82612fb2565b15612db35760405162461bcd60e51b815260040161119790614bab565b600881901c6000908152601d602052604090208054600160ff84161b17905550565b6060600c805461197e90614bcb565b6040516001600160601b0319606083901b166020820152600090603401604051602081830303815290604052805190602001209050919050565b600082612e2b8584613930565b14949350505050565b60606006826005811115612e4a57612e4a6144af565b60ff161115612e5857600080fd5b816005811115612e6a57612e6a6144af565b600003612e9457505060408051808201909152600781526604342455f4343360cc1b602082015290565b816005811115612ea657612ea66144af565b600103612ed057505060408051808201909152600781526621a122afa2a1a960c91b602082015290565b816005811115612ee257612ee26144af565b600203612f0d57505060408051808201909152600881526721a122afa722a1a960c11b602082015290565b816005811115612f1f57612f1f6144af565b600303612f4d57505060408051808201909152600b81526a4342455f4e4543525f485360a81b602082015290565b816005811115612f5f57612f5f6144af565b600403612f8857505060408051808201909152600681526521a122afa82960d11b602082015290565b50506040805180820190915260098152684342455f50525f485360b81b602082015290565b919050565b600881901c600090815260208390526040902054600160ff83161b16151592915050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a029061300b903390899088908890600401614fac565b6020604051808303816000875af1925050508015613046575060408051601f3d908101601f1916820190925261304391810190614fe9565b60015b6130a4573d808015613074576040519150601f19603f3d011682016040523d82523d6000602084013e613079565b606091505b50805160000361309c576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b6060816000036130e85750506040805180820190915260018152600360fc1b602082015290565b8160005b811561311257806130fc81614b92565b915061310b9050600a83614b68565b91506130ec565b6000816001600160401b0381111561312c5761312c614536565b6040519080825280601f01601f191660200182016040528015613156576020820181803683370190505b5090505b841561253b5761316b600183615006565b9150613178600a8661501d565b613183906030614e1a565b60f81b81838151811061319857613198614b7c565b60200101906001600160f81b031916908160001a9053506131ba600a86614b68565b945061315a565b60606000600f80546131d290614bcb565b90501161326957600e80546131e690614bcb565b80601f016020809104026020016040519081016040528092919081815260200182805461321290614bcb565b801561325f5780601f106132345761010080835404028352916020019161325f565b820191906000526020600020905b81548152906001019060200180831161324257829003601f168201915b5050505050610fb0565b600f613274836130c1565b6010604051602001613288939291906150a4565b60405160208183030381529060405292915050565b6003600254600160b01b900460ff1660038111156132bd576132bd6144af565b036132fc5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401611197565b60028054600160b01b900460ff16600381111561331b5761331b6144af565b036133235750565b6001600254600160b01b900460ff166003811115613343576133436144af565b0361339f576002546001600160a01b038281169116146125715760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401611197565b6000600254600160b01b900460ff1660038111156133bf576133bf6144af565b0361257157806001600160a01b03166133d6611b07565b6001600160a01b0316146125715760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401611197565b804710156134725760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611197565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146134bf576040519150601f19603f3d011682016040523d82523d6000602084013e6134c4565b606091505b505090508061157a5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401611197565b612710816020015161ffff16106135615760405162461bcd60e51b815260040161119790614f87565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601f80546001600160b01b031916909217600160a01b9091021790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe41926135d8929161470b565b60405180910390a150565b6111aa8282612a0f565b600054610100900460ff166136145760405162461bcd60e51b8152600401611197906150d7565b6111aa8282613975565b600054610100900460ff166136455760405162461bcd60e51b8152600401611197906150d7565b612571816139f9565b600054610100900460ff166136755760405162461bcd60e51b8152600401611197906150d7565b61157a838383613a40565b600054610100900460ff166136a75760405162461bcd60e51b8152600401611197906150d7565b6111aa8282613ace565b600054610100900460ff166136d85760405162461bcd60e51b8152600401611197906150d7565b61257181613b59565b600054610100900460ff166137085760405162461bcd60e51b8152600401611197906150d7565b61196d613bb5565b600054610100900460ff166137375760405162461bcd60e51b8152600401611197906150d7565b61257181613bec565b600054610100900460ff166137675760405162461bcd60e51b8152600401611197906150d7565b61196d613c3b565b600054610100900460ff166137965760405162461bcd60e51b8152600401611197906150d7565b6137a663209680f760e11b613c6e565b601591909155601655565b600054610100900460ff166137d85760405162461bcd60e51b8152600401611197906150d7565b6111aa8282613cef565b600054610100900460ff166138095760405162461bcd60e51b8152600401611197906150d7565b6111aa8282613d31565b600054610100900460ff1661383a5760405162461bcd60e51b8152600401611197906150d7565b61257181613dc1565b600082600001828154811061385a5761385a614b7c565b9060005260206000200154905092915050565b6111aa828260405180602001604052806000815250613de8565b613892601d83612fb2565b156138af5760405162461bcd60e51b815260040161119790614bab565b611e9d565b6138be8282611b1c565b6111aa576138d6816001600160a01b03166014613e55565b6138e1836020613e55565b6040516020016138f2929190615122565b60408051601f198184030181529082905262461bcd60e51b8252611197916004016142fa565b600061285b8383613ff0565b600061285b83836140e3565b600081815b84518110156114dc576139618286838151811061395457613954614b7c565b6020026020010151614132565b91508061396d81614b92565b915050613935565b600054610100900460ff1661399c5760405162461bcd60e51b8152600401611197906150d7565b6139ac63ac2ba33360e01b613c6e565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b8360038111156139f0576139f06144af565b02179055505050565b600054610100900460ff16613a205760405162461bcd60e51b8152600401611197906150d7565b613a3063b964efe960e01b613c6e565b61184c630c934a3560e31b613c6e565b600054610100900460ff16613a675760405162461bcd60e51b8152600401611197906150d7565b600b613a738482614c45565b50600c613a808382614c45565b50600d613a8d8282614c45565b50613a9e633d96f4ff60e11b613c6e565b613aae6380ac58cd60e01b613c6e565b613abe63184371e560e31b613c6e565b61157a635b5e139f60e01b613c6e565b600054610100900460ff16613af55760405162461bcd60e51b8152600401611197906150d7565b600e613b018382614c45565b50600f613b0e8282614c45565b50604080518082019091526005815264173539b7b760d91b6020820152601090613b389082614c45565b50613b49631f2f406b60e01b613c6e565b6111aa635b5e139f60e01b613c6e565b600054610100900460ff16613b805760405162461bcd60e51b8152600401611197906150d7565b6012819055613b956330f487b560e11b613c6e565b613ba56380ac58cd60e01b613c6e565b61257163184371e560e31b613c6e565b600054610100900460ff16613bdc5760405162461bcd60e51b8152600401611197906150d7565b61196d631aa1577160e11b613c6e565b600054610100900460ff16613c135760405162461bcd60e51b8152600401611197906150d7565b613c23631a056e7160e01b613c6e565b6125716000805160206151f0833981519152826135e3565b600054610100900460ff16613c625760405162461bcd60e51b8152600401611197906150d7565b61196d63714ad8e760e01b5b6001600160e01b03198082169003613cc75760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401611197565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b600054610100900460ff16613d165760405162461bcd60e51b8152600401611197906150d7565b613d266317e0bac360e31b613c6e565b601a91909155601b55565b600054610100900460ff16613d585760405162461bcd60e51b8152600401611197906150d7565b613d68633a47bf5160e11b613c6e565b613d7863152a902d60e11b613c6e565b613d8863c69dbd8f60e01b613c6e565b613d9863656cb66560e11b613c6e565b604080518082019091526001600160a01b038316815261ffff8216602082015261157a81613538565b600054610100900460ff166121c55760405162461bcd60e51b8152600401611197906150d7565b613df28383614161565b6001600160a01b0383163b1561157a576003548281035b613e1c6000868380600101945086612fd6565b613e39576040516368d2bf6b60e11b815260040160405180910390fd5b818110613e09578160035414613e4e57600080fd5b5050505050565b60606000613e64836002614b33565b613e6f906002614e1a565b6001600160401b03811115613e8657613e86614536565b6040519080825280601f01601f191660200182016040528015613eb0576020820181803683370190505b509050600360fc1b81600081518110613ecb57613ecb614b7c565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613efa57613efa614b7c565b60200101906001600160f81b031916908160001a9053506000613f1e846002614b33565b613f29906001614e1a565b90505b6001811115613fa1576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613f5d57613f5d614b7c565b1a60f81b828281518110613f7357613f73614b7c565b60200101906001600160f81b031916908160001a90535060049490941c93613f9a81615191565b9050613f2c565b50831561285b5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401611197565b600081815260018301602052604081205480156140d9576000614014600183615006565b855490915060009061402890600190615006565b905081811461408d57600086600001828154811061404857614048614b7c565b906000526020600020015490508087600001848154811061406b5761406b614b7c565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061409e5761409e6151a8565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610fb0565b6000915050610fb0565b600081815260018301602052604081205461412a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610fb0565b506000610fb0565b600081831061414e57600082815260208490526040902061285b565b600083815260208390526040902061285b565b60035460008290036141865760405163b562e8dd60e01b815260040160405180910390fd5b61419360008483856129dd565b6001600160a01b038316600090815260086020526040902080546001600160401b0184020190556141ca836001841460e11b6129e9565b6000828152600760205260408120919091556001600160a01b0384169083830190839083906000805160206152108339815191528180a4600183015b81811461422c5780836000600080516020615210833981519152600080a4600101614206565b508160000361424d57604051622e076360e81b815260040160405180910390fd5b60035550505050565b6001600160e01b03198116811461257157600080fd5b60006020828403121561427e57600080fd5b813561285b81614256565b60006020828403121561429b57600080fd5b5035919050565b60005b838110156142bd5781810151838201526020016142a5565b83811115611e9d5750506000910152565b600081518084526142e68160208601602086016142a2565b601f01601f19169290920160200192915050565b60208152600061285b60208301846142ce565b80356001600160a01b0381168114612fad57600080fd5b6000806040838503121561433757600080fd5b6143408361430d565b946020939093013593505050565b60008060006060848603121561436357600080fd5b61436c8461430d565b925061437a6020850161430d565b9150604084013590509250925092565b6000806040838503121561439d57600080fd5b50508035926020909101359150565b6001600160a01b03929092168252602082015260400190565b60008083601f8401126143d757600080fd5b5081356001600160401b038111156143ee57600080fd5b6020830191508360208260051b850101111561141357600080fd5b6000806020838503121561441c57600080fd5b82356001600160401b0381111561443257600080fd5b61443e858286016143c5565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b8181101561448257835183529284019291840191600101614466565b50909695505050505050565b6000602082840312156144a057600080fd5b81356004811061285b57600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106144d9576144d96144af565b91905290565b801515811461257157600080fd5b6000602082840312156144ff57600080fd5b813561285b816144df565b6000806040838503121561451d57600080fd5b8235915061452d6020840161430d565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6040516101e081016001600160401b038111828210171561456f5761456f614536565b60405290565b60006001600160401b038084111561458f5761458f614536565b604051601f8501601f19908116603f011681019082821181831017156145b7576145b7614536565b816040528093508581528686860111156145d057600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126145fb57600080fd5b61285b83833560208501614575565b60006020828403121561461c57600080fd5b81356001600160401b0381111561463257600080fd5b61253b848285016145ea565b60208101600683106144d9576144d96144af565b6000806020838503121561466557600080fd5b82356001600160401b038082111561467c57600080fd5b818501915085601f83011261469057600080fd5b81358181111561469f57600080fd5b8660206060830285010111156146b457600080fd5b60209290920196919550909350505050565b6000602082840312156146d857600080fd5b61285b8261430d565b803560068110612fad57600080fd5b60006020828403121561470257600080fd5b61285b826146e1565b6001600160a01b0392909216825261ffff16602082015260400190565b60008060006040848603121561473d57600080fd5b8335925060208401356001600160401b0381111561475a57600080fd5b614766868287016143c5565b9497909650939450505050565b6000806040838503121561478657600080fd5b61478f8361430d565b9150602083013561479f816144df565b809150509250929050565b600080600080608085870312156147c057600080fd5b6147c98561430d565b93506147d76020860161430d565b92506040850135915060608501356001600160401b038111156147f957600080fd5b8501601f8101871361480a57600080fd5b61481987823560208401614575565b91505092959194509250565b602080825282518282018190526000919060409081850190868401855b8281101561487957815180516001600160a01b031685528601516001600160601b0316868501529284019290850190600101614842565b5091979650505050505050565b6000806000806040858703121561489c57600080fd5b84356001600160401b03808211156148b357600080fd5b6148bf888389016143c5565b909650945060208701359150808211156148d857600080fd5b506148e5878288016143c5565b95989497509550505050565b60008060006040848603121561490657600080fd5b61490f8461430d565b925060208401356001600160401b0381111561475a57600080fd5b6000806040838503121561493d57600080fd5b6149468361430d565b915061452d6020840161430d565b60006040828403121561496657600080fd5b50919050565b803561ffff81168114612fad57600080fd5b6000806040838503121561499157600080fd5b82356001600160401b03808211156149a857600080fd5b908401906101e082870312156149bd57600080fd5b6149c561454c565b8235828111156149d457600080fd5b6149e0888286016145ea565b8252506020830135828111156149f557600080fd5b614a01888286016145ea565b602083015250604083013582811115614a1957600080fd5b614a25888286016145ea565b604083015250606083013582811115614a3d57600080fd5b614a49888286016145ea565b606083015250608083013582811115614a6157600080fd5b614a6d888286016145ea565b60808301525060a0838101359082015260c0808401359082015260e08084013590820152610100808401359082015261012080840135908201526101409150614ab782840161430d565b828201526101609150614acb82840161496c565b828201526101809150614adf82840161430d565b828201526101a09150614af382840161430d565b828201526101c09150614b078284016146e1565b8282015280945050505061452d6020840161430d565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615614b4d57614b4d614b1d565b500290565b634e487b7160e01b600052601260045260246000fd5b600082614b7757614b77614b52565b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201614ba457614ba4614b1d565b5060010190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b600181811c90821680614bdf57607f821691505b60208210810361496657634e487b7160e01b600052602260045260246000fd5b601f82111561157a57600081815260208120601f850160051c81016020861015614c265750805b601f850160051c820191505b8181101561133a57828155600101614c32565b81516001600160401b03811115614c5e57614c5e614536565b614c7281614c6c8454614bcb565b84614bff565b602080601f831160018114614ca75760008415614c8f5750858301515b600019600386901b1c1916600185901b17855561133a565b600085815260208120601f198616915b82811015614cd657888601518255948401946001909101908401614cb7565b5085821015614cf45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060608284031215614d1657600080fd5b604051606081018181106001600160401b0382111715614d3857614d38614536565b60405282358152614d4b6020840161430d565b6020820152614d5c6040840161496c565b60408201529392505050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601890820152775354414b41424c455f4e4f545f4c4f434b45525f524f4c4560401b604082015260600190565b6020808252600f908201526e4e4f545f4c4f434b45525f524f4c4560881b604082015260600190565b602080825260069082015265232927ad22a760d11b604082015260600190565b60008219821115614e2d57614e2d614b1d565b500190565b602080825260139082015272125394d551919250d251539517d05353d55395606a1b604082015260600190565b60008351614e718184602088016142a2565b835190830190614e858183602088016142a2565b01949350505050565b600060208284031215614ea057600080fd5b815161285b816144df565b6040808252810184905260008560608301825b87811015614eec576001600160a01b03614ed78461430d565b16825260209283019290910190600101614ebe565b5083810360208501528481526001600160fb1b03851115614f0c57600080fd5b8460051b915081866020830137600091016020019081529695505050505050565b600060408284031215614f3f57600080fd5b604051604081018181106001600160401b0382111715614f6157614f61614536565b604052614f6d8361430d565b8152614f7b6020840161496c565b60208201529392505050565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090614fdf908301846142ce565b9695505050505050565b600060208284031215614ffb57600080fd5b815161285b81614256565b60008282101561501857615018614b1d565b500390565b60008261502c5761502c614b52565b500690565b6000815461503e81614bcb565b60018281168015615056576001811461506b5761509a565b60ff198416875282151583028701945061509a565b8560005260208060002060005b858110156150915781548a820152908401908201615078565b50505082870194505b5050505092915050565b60006150b08286615031565b84516150c08183602089016142a2565b6150cc81830186615031565b979650505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516151548160178501602088016142a2565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516151858160288401602088016142a2565b01602801949350505050565b6000816151a0576151a0614b1d565b506000190190565b634e487b7160e01b600052603160045260246000fdfe61723a2f2f5f44396b4e3157724e576243713535425341475262544234625333763851415054596d42546853625833412f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efaf9a8bb3cbd6b84fbccefa71ff73e26e798553c6914585a84886212a46a90279a264697066735822122005e70b51fb70415a646012f3b00e6697760f8c7194e31f8120298fc6d65fece964736f6c634300080f0033","deployedBytecode":"0x6080604052600436106104425760003560e01c806391d1485411610237578063c87b56dd11610135578063c87b56dd14610cbe578063cad96cca14610cde578063d539139314610d0b578063d547741f14610d2d578063d5abeb0114610d4d578063d79ff99d14610d63578063da74222814610d76578063da82b22714610d96578063dbbc853b14610dab578063dcbe353f14610dc0578063dd46706414610de0578063dd89c6fa14610e00578063de6d6d9614610e15578063e3b9a7e514610e35578063e757c17d14610e55578063e8a3d48514610e6b578063e985e9c514610e80578063ef60ceaf14610ec9578063f2fde38b14610ee9578063f362136714610f09578063f384702f14610f2b578063f74bbf5914610f45578063f95df41414610f65578063fe50b58714610f8557600080fd5b806391d1485414610a60578063938e3d7b14610a8057806395d89b4114610aa057806399e0dd7c14610ab55780639b6860c814610ad55780639e6b2c5b14610aeb578063a217fddf14610afe578063a22cb46514610b13578063a341793b14610b33578063a9852bfb14610b48578063aaeaca4814610b68578063af121f5414610b7e578063b27c6f2d14610b9f578063b45a3c0e14610bb5578063b6c693e514610bd5578063b88d4fde14610bef578063ba4695fd14610c0f578063bf9b7a5714610c24578063c0ac998314610c45578063c0bb38ff14610c5a578063c29de63014610c7a578063c723955a14610c94578063c7db289314610ca957600080fd5b806349561cb91161034457806349561cb9146107985780634f972f5f146107b957806350a5292f146107d95780635136dcc71461080757806356c022bb14610827578063572b6c05146108475780635d36598f146108675780636057e0ec146108875780636198e339146108a85780636352211e146108c857806364ed2913146108e85780636f8b44b01461090857806370a0823114610928578063714ad8e714610948578063715018a61461095c5780637313cba9146109715780637885fdc714610986578063791a2519146109c15780637d7eee42146109e15780637e98034214610a01578063837fe14014610a16578063859610c614610a2b5780638da5cb5b14610a4b57600080fd5b806301ffc9a7146104475780630653aca51461047c57806306fdde03146104cb578063081812fc146104ed578063095ea7b314610525578063167446071461054757806318160ddd1461055c5780631a056e711461057f57806323b872dd1461059f578063248a9ca3146105bf5780632a55205a146105df5780632bb684ad1461060d5780632c2330671461063a5780632d00b5871461065a5780632d8e85b0146106885780632f2ff15d146106a85780633542aee2146106c85780633574a2dd146106e857806336568abe146107085780633acf404d146107285780633c0e8f2c1461073e57806342842e0e1461075e578063464bd6401461077e575b600080fd5b34801561045357600080fd5b5061046761046236600461426c565b610fa5565b60405190151581526020015b60405180910390f35b34801561048857600080fd5b5061049c610497366004614289565b610fb6565b60408051825181526020808401516001600160a01b0316908201529181015161ffff1690820152606001610473565b3480156104d757600080fd5b506104e0611039565b60405161047391906142fa565b3480156104f957600080fd5b5061050d610508366004614289565b611048565b6040516001600160a01b039091168152602001610473565b34801561053157600080fd5b50610545610540366004614324565b61108c565b005b34801561055357600080fd5b5061054561112c565b34801561056857600080fd5b50600454600354035b604051908152602001610473565b34801561058b57600080fd5b5061054561059a366004614324565b611143565b3480156105ab57600080fd5b506105456105ba36600461434e565b6111ae565b3480156105cb57600080fd5b506105716105da366004614289565b611342565b3480156105eb57600080fd5b506105ff6105fa36600461438a565b611357565b6040516104739291906143ac565b34801561061957600080fd5b5061062d610628366004614409565b61141a565b604051610473919061444a565b34801561064657600080fd5b5061054561065536600461448e565b6114e4565b34801561066657600080fd5b5060025461067b90600160b01b900460ff1681565b60405161047391906144c5565b34801561069457600080fd5b506105456106a33660046144ed565b611543565b3480156106b457600080fd5b506105456106c336600461450a565b61155e565b3480156106d457600080fd5b506105456106e3366004614324565b61157f565b3480156106f457600080fd5b5061054561070336600461460a565b611587565b34801561071457600080fd5b5061054561072336600461450a565b61159b565b34801561073457600080fd5b5061057160175481565b34801561074a57600080fd5b50610545610759366004614289565b611625565b34801561076a57600080fd5b5061054561077936600461434e565b611632565b34801561078a57600080fd5b506018546104679060ff1681565b3480156107a457600080fd5b5060025461046790600160b81b900460ff1681565b3480156107c557600080fd5b506105456107d43660046144ed565b61164d565b3480156107e557600080fd5b506002546107fa90600160c01b900460ff1681565b604051610473919061463e565b34801561081357600080fd5b50610545610822366004614652565b611668565b34801561083357600080fd5b5060235461050d906001600160a01b031681565b34801561085357600080fd5b506104676108623660046146c6565b6116cb565b34801561087357600080fd5b50610545610882366004614409565b6116df565b34801561089357600080fd5b5060025461046790600160a01b900460ff1681565b3480156108b457600080fd5b506105456108c3366004614289565b611782565b3480156108d457600080fd5b5061050d6108e3366004614289565b6117ee565b3480156108f457600080fd5b506105456109033660046146f0565b6117f9565b34801561091457600080fd5b50610545610923366004614289565b611871565b34801561093457600080fd5b506105716109433660046146c6565b61190d565b34801561095457600080fd5b506001610467565b34801561096857600080fd5b5061054561195b565b34801561097d57600080fd5b506104e061196f565b34801561099257600080fd5b50601f546109b3906001600160a01b03811690600160a01b900461ffff1682565b60405161047392919061470b565b3480156109cd57600080fd5b506105456109dc366004614289565b611a01565b3480156109ed57600080fd5b506105456109fc366004614289565b611a0e565b348015610a0d57600080fd5b50610571611a1b565b348015610a2257600080fd5b50610545611a27565b348015610a3757600080fd5b50610545610a46366004614409565b611a6e565b348015610a5757600080fd5b5061050d611b07565b348015610a6c57600080fd5b50610467610a7b36600461450a565b611b1c565b348015610a8c57600080fd5b50610545610a9b36600461460a565b611b47565b348015610aac57600080fd5b506104e0611b5b565b348015610ac157600080fd5b50610545610ad036600461460a565b611b65565b348015610ae157600080fd5b50610571601a5481565b610545610af9366004614728565b611b9c565b348015610b0a57600080fd5b50610571600081565b348015610b1f57600080fd5b50610545610b2e366004614773565b611d67565b348015610b3f57600080fd5b506104e0611dfc565b348015610b5457600080fd5b50610545610b6336600461460a565b611e15565b348015610b7457600080fd5b5061057160165481565b348015610b8a57600080fd5b5060025461046790600160a81b900460ff1681565b348015610bab57600080fd5b50610571601b5481565b348015610bc157600080fd5b50610467610bd0366004614289565b611e4c565b348015610be157600080fd5b50601c546104679060ff1681565b348015610bfb57600080fd5b50610545610c0a3660046147aa565b611e59565b348015610c1b57600080fd5b50610545611ea3565b348015610c3057600080fd5b5060025461046790600160c81b900460ff1681565b348015610c5157600080fd5b506104e0611eba565b348015610c6657600080fd5b50610545610c753660046146c6565b611ec9565b348015610c8657600080fd5b506011546104679060ff1681565b348015610ca057600080fd5b50610545611f1d565b348015610cb557600080fd5b506104e0611f7c565b348015610cca57600080fd5b506104e0610cd9366004614289565b611fe3565b348015610cea57600080fd5b50610cfe610cf9366004614289565b611fee565b6040516104739190614825565b348015610d1757600080fd5b506105716000805160206151f083398151915281565b348015610d3957600080fd5b50610545610d4836600461450a565b6120a9565b348015610d5957600080fd5b5061057160125481565b610545610d71366004614324565b6120c5565b348015610d8257600080fd5b50610545610d913660046146c6565b6121bd565b348015610da257600080fd5b506105456121e7565b348015610db757600080fd5b506104e061222d565b348015610dcc57600080fd5b5060025461050d906001600160a01b031681565b348015610dec57600080fd5b50610545610dfb366004614289565b61223c565b348015610e0c57600080fd5b506105456122a0565b348015610e2157600080fd5b50610545610e30366004614886565b6122bd565b348015610e4157600080fd5b50610467610e503660046148f1565b6124f5565b348015610e6157600080fd5b5061057160155481565b348015610e7757600080fd5b506104e0612543565b348015610e8c57600080fd5b50610467610e9b36600461492a565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205460ff1690565b348015610ed557600080fd5b50610545610ee4366004614954565b612552565b348015610ef557600080fd5b50610545610f043660046146c6565b612574565b348015610f1557600080fd5b5061057160008051602061523083398151915281565b348015610f3757600080fd5b506013546104679060ff1681565b348015610f5157600080fd5b50610545610f60366004614289565b6125ea565b348015610f7157600080fd5b50610545610f80366004614289565b6125f7565b348015610f9157600080fd5b50610545610fa036600461497e565b612604565b6000610fb082612813565b92915050565b6040805160608101825260008082526020820181905291810182905290610fde60218461284f565b600081815260208080526040918290208251808401845290546001600160a01b03808216835261ffff600160a01b90920482168385019081528551606081018752968752925116928501929092525116908201529392505050565b6060611043612862565b905090565b600061105382612871565b611070576040516333d1c03960e21b815260040160405180910390fd5b506000908152600960205260409020546001600160a01b031690565b6000611097826117ee565b9050336001600160a01b038216146110d0576110b38133610e9b565b6110d0576040516367d9dca160e11b815260040160405180910390fd5b60008281526009602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b611134612899565b6013805460ff19166001179055565b61115d6000805160206151f0833981519152610a7b612908565b6111a05760405162461bcd60e51b815260206004820152600f60248201526e4e4f545f4d494e5445525f524f4c4560881b60448201526064015b60405180910390fd5b6111aa8282612912565b5050565b60006111b982612976565b9050836001600160a01b0316816001600160a01b0316146111ec5760405162a1148160e81b815260040160405180910390fd5b60008281526009602052604090208054338082146001600160a01b038816909114176112395761121c8633610e9b565b61123957604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03851661126057604051633a954ecd60e21b815260040160405180910390fd5b61126d86868660016129dd565b801561127857600082555b6001600160a01b038681166000908152600860205260408082208054600019019055918716815220805460010190556112b585600160e11b6129e9565b600085815260076020526040812091909155600160e11b8416900361130a576001840160008181526007602052604081205490036113085760035481146113085760008181526007602052604090208490555b505b83856001600160a01b0316876001600160a01b031660008051602061521083398151915260405160405180910390a45b505050505050565b6000908152601e602052604090206001015490565b600082815260208052604081205481906001600160a01b0316156113ba5760008481526020805260409020546001600160a01b03811690612710906113a790600160a01b900461ffff1686614b33565b6113b19190614b68565b91509150611413565b601f546001600160a01b0316158015906113e05750601f54600160a01b900461ffff1615155b1561140c57601f546001600160a01b03811690612710906113a790600160a01b900461ffff1686614b33565b5060009050805b9250929050565b60606000826001600160401b0381111561143657611436614536565b60405190808252806020026020018201604052801561145f578160200160208202803683370190505b50905060005b838110156114dc5761148e85858381811061148257611482614b7c565b90506020020135611e4c565b6114ca578484828181106114a4576114a4614b7c565b905060200201358282815181106114bd576114bd614b7c565b6020026020010181815250505b806114d481614b92565b915050611465565b509392505050565b6114ec612899565b600254600160b81b900460ff16156115165760405162461bcd60e51b815260040161119790614bab565b6002805482919060ff60b01b1916600160b01b83600381111561153b5761153b6144af565b021790555050565b61154b612899565b601c805460ff1916911515919091179055565b61156782611342565b611570816129fe565b61157a8383612a0f565b505050565b6111a0612899565b61158f612899565b600e6111aa8282614c45565b6115a3612908565b6001600160a01b0316816001600160a01b03161461161b5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401611197565b6111aa8282612a96565b61162d612899565b601b55565b61157a83838360405180602001604052806000815250611e59565b611655612899565b6018805460ff1916911515919091179055565b611670612899565b6111aa8282808060200260200160405190810160405280939291908181526020016000905b828210156116c1576116b260608302860136819003810190614d04565b81526020019060010190611695565b5050505050612b1b565b6023546001600160a01b0391821691161490565b6002601454036117015760405162461bcd60e51b815260040161119790614d68565b600260145561171e60008051602061523083398151915233611b1c565b61173a5760405162461bcd60e51b815260040161119790614d9f565b60005b818110156117785761176683838381811061175a5761175a614b7c565b90506020020135612cbf565b8061177081614b92565b91505061173d565b5050600160145550565b6002601454036117a45760405162461bcd60e51b815260040161119790614d68565b60026014556117c160008051602061523083398151915233611b1c565b6117dd5760405162461bcd60e51b815260040161119790614dd1565b6117e681612cbf565b506001601455565b6000610fb082612976565b611801612899565b600254600160c81b900460ff161561184c5760405162461bcd60e51b815260206004820152600e60248201526d131250d15394d157d313d0d2d15160921b6044820152606401611197565b6002805482919060ff60c01b1916600160c01b83600581111561153b5761153b6144af565b611879612899565b60135460ff16156118be5760405162461bcd60e51b815260206004820152600f60248201526e2120a9a2afaaa924afa32927ad22a760891b6044820152606401611197565b600454600354038110156119085760405162461bcd60e51b81526020600482015260116024820152704c4f5745525f5448414e5f535550504c5960781b6044820152606401611197565b601255565b60006001600160a01b038216611936576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600860205260409020546001600160401b031690565b611963612899565b61196d6000612d26565b565b6060600e805461197e90614bcb565b80601f01602080910402602001604051908101604052809291908181526020018280546119aa90614bcb565b80156119f75780601f106119cc576101008083540402835291602001916119f7565b820191906000526020600020905b8154815290600101906020018083116119da57829003601f168201915b5050505050905090565b611a09612899565b601a55565b611a16612899565b601555565b60006110436021612d81565b611a2f612899565b600254600160a01b900460ff1615611a595760405162461bcd60e51b815260040161119790614bab565b6002805460ff60a01b1916600160a01b179055565b600260145403611a905760405162461bcd60e51b815260040161119790614d68565b6002601455611aad60008051602061523083398151915233611b1c565b611ac95760405162461bcd60e51b815260040161119790614d9f565b60005b8181101561177857611af5838383818110611ae957611ae9614b7c565b90506020020135612d8b565b80611aff81614b92565b915050611acc565b6000546201000090046001600160a01b031690565b6000918252601e602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611b4f612899565b600d6111aa8282614c45565b6060611043612dd5565b611b6d612899565b60115460ff1615611b905760405162461bcd60e51b815260040161119790614dfa565b600f6111aa8282614c45565b600260145403611bbe5760405162461bcd60e51b815260040161119790614d68565b600260145560185460ff16611c025760405162461bcd60e51b815260206004820152600a6024820152694e4f545f41435449564560b01b6044820152606401611197565b6000611c0c612908565b9050611c57838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506017549150611c52905084612de4565b612e1e565b611c915760405162461bcd60e51b815260206004820152600b60248201526a2ba927a723afa82927a7a360a91b6044820152606401611197565b6016546001600160a01b038216600090815260196020526040902054611cb8908690614e1a565b1115611cf75760405162461bcd60e51b815260206004820152600e60248201526d14149157d4d0531157d31253525560921b6044820152606401611197565b3484601554611d069190614b33565b1115611d245760405162461bcd60e51b815260040161119790614e32565b6001600160a01b03811660009081526019602052604081208054869290611d4c908490614e1a565b90915550611d5c90508185612912565b505060016014555050565b336001600160a01b03831603611d905760405163b06307db60e01b815260040160405180910390fd5b336000818152600a602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60025460609061104390600160c01b900460ff16612e34565b611e1d612899565b60115460ff1615611e405760405162461bcd60e51b815260040161119790614dfa565b60106111aa8282614c45565b6000610fb0601d83612fb2565b611e648484846111ae565b6001600160a01b0383163b15611e9d57611e8084848484612fd6565b611e9d576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b611eab612899565b6011805460ff19166001179055565b6060600f805461197e90614bcb565b611ed1612899565b600254600160a01b900460ff1615611efb5760405162461bcd60e51b815260040161119790614bab565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b611f25612899565b600254600160b81b900460ff1615611f675760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401611197565b6002805460ff60b81b1916600160b81b179055565b60606040518060600160405280603181526020016151bf60319139600254611fbe90600160c01b900460ff166005811115611fb957611fb96144af565b6130c1565b604051602001611fcf929190614e5f565b604051602081830303815290604052905090565b6060610fb0826131c1565b604080516001808252818301909252606091816020015b6040805180820190915260008082526020820152815260200190600190039081612005575050601f5481519192506001600160a01b031690829060009061204e5761204e614b7c565b60209081029190910101516001600160a01b03919091169052601f548151600160a01b90910461ffff1690829060009061208a5761208a614b7c565b6020908102919091018101516001600160601b03909216910152919050565b6120b282611342565b6120bb816129fe565b61157a8383612a96565b6002601454036120e75760405162461bcd60e51b815260040161119790614d68565b6002601455601c5460ff166121375760405162461bcd60e51b81526020600482015260166024820152755055424c49435f53414c455f4e4f545f41435449564560501b6044820152606401611197565b601b5481111561217d5760405162461bcd60e51b8152602060048201526011602482015270141550931250d7d4d0531157d312535255607a1b6044820152606401611197565b3481601a5461218c9190614b33565b11156121aa5760405162461bcd60e51b815260040161119790614e32565b6121b48282612912565b50506001601455565b6121c5612899565b602380546001600160a01b0319166001600160a01b0392909216919091179055565b6121ef612899565b6002805460ff60a81b1916600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b60606010805461197e90614bcb565b60026014540361225e5760405162461bcd60e51b815260040161119790614d68565b600260145561227b60008051602061523083398151915233611b1c565b6122975760405162461bcd60e51b815260040161119790614dd1565b6117e681612d8b565b6122a8612899565b6002805460ff60c81b1916600160c81b179055565b6122c63361329d565b6002546001600160a01b03166123165760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401611197565b600254600160a81b900460ff16156123705760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401611197565b60005b838110156124b157600085858381811061238f5761238f614b7c565b90506020020160208101906123a491906146c6565b6001600160a01b0316036123e7576123e28383838181106123c7576123c7614b7c565b6002546001600160a01b031692602090910201359050613422565b61249f565b8484828181106123f9576123f9614b7c565b905060200201602081019061240e91906146c6565b6002546001600160a01b039182169163a9059cbb911685858581811061243657612436614b7c565b905060200201356040518363ffffffff1660e01b815260040161245a9291906143ac565b6020604051808303816000875af1158015612479573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249d9190614e8e565b505b806124a981614b92565b915050612373565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a5848484846040516124e79493929190614eab565b60405180910390a150505050565b600061253b838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506017549150611c52905087612de4565b949350505050565b6060600d805461197e90614bcb565b61255a612899565b61257161256c36839003830183614f2d565b613538565b50565b61257c612899565b6001600160a01b0381166125e15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611197565b61257181612d26565b6125f2612899565b601655565b6125ff612899565b601755565b600054610100900460ff16158080156126245750600054600160ff909116105b80612645575061263330612800565b158015612645575060005460ff166001145b6126a85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611197565b6000805460ff1916600117905580156126cb576000805461ff0019166101001790555b6126d66000836135e3565b6126df82612d26565b6126ef83610180015160026135ed565b6126fd836101c0015161361e565b61271483600001518460200151856040015161364e565b61272683606001518460800151613680565b6127338360a001516136b1565b61273b6136e1565b61274482613710565b61274c613740565b61275e8360c001518460e0015161376f565b6127728361010001518461012001516137b1565b6127868361014001518461016001516137e2565b612794836101a00151613813565b801561157a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60006127e9336116cb565b156127fb575060131936013560601c90565b503390565b6001600160a01b03163b151590565b3390565b60006301ffc9a760e01b6001600160e01b031983161480610fb05750506001600160e01b03191660009081526001602052604090205460ff1690565b600061285b8383613843565b9392505050565b6060600b805461197e90614bcb565b600060035482108015610fb0575050600090815260076020526040902054600160e01b161590565b6128a1612908565b6001600160a01b03166128b2611b07565b6001600160a01b03161461196d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611197565b60006110436127de565b601254816129236004546003540390565b61292d9190614e1a565b111561296c5760405162461bcd60e51b815260206004820152600e60248201526d455843454544535f535550504c5960901b6044820152606401611197565b6111aa828261386d565b6000816003548110156129c45760008181526007602052604081205490600160e01b821690036129c2575b8060000361285b5750600019016000818152600760205260409020546129a1565b505b604051636f96cda160e11b815260040160405180910390fd5b611e9d84848484613887565b4260a01b176001600160a01b03919091161790565b61257181612a0a612908565b6138b4565b612a198282611b1c565b6111aa576000828152601e602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612a52612908565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b612aa08282611b1c565b156111aa576000828152601e602090815260408083206001600160a01b03851684529091529020805460ff19169055612ad7612908565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b60005b81518110156111aa576000828281518110612b3b57612b3b614b7c565b60200260200101519050612710816040015161ffff1610612b6e5760405162461bcd60e51b815260040161119790614f87565b60208101516001600160a01b0316612be65780516000908152602080526040902080546001600160b01b03191690558051612bab90602190613918565b5080516040519081527fa2870857763bd9ae76c957f869f16b31c18dd3bb4c7b4d3a4496dc5c57c657f99060200160405180910390a1612cac565b6040805180820182526020808401516001600160a01b0390811683528484015161ffff9081168385019081528651600090815293805294909220925183549451909216600160a01b026001600160b01b03199094169116179190911790558051612c5290602190613924565b50805160208083015160408085015181519485526001600160a01b039092169284019290925261ffff1682820152517f389b70fb0887f01e83784eb1c4c589f740eca53b00ed0f45e41db5d079719abb9181900360600190a15b5080612cb781614b92565b915050612b1e565b612cca601d82612fb2565b612d035760405162461bcd60e51b815260206004820152600a6024820152691393d517d313d0d2d15160b21b6044820152606401611197565b600881901c6000908152601d602052604090208054600160ff84161b1916905550565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6000610fb0825490565b612d96601d82612fb2565b15612db35760405162461bcd60e51b815260040161119790614bab565b600881901c6000908152601d602052604090208054600160ff84161b17905550565b6060600c805461197e90614bcb565b6040516001600160601b0319606083901b166020820152600090603401604051602081830303815290604052805190602001209050919050565b600082612e2b8584613930565b14949350505050565b60606006826005811115612e4a57612e4a6144af565b60ff161115612e5857600080fd5b816005811115612e6a57612e6a6144af565b600003612e9457505060408051808201909152600781526604342455f4343360cc1b602082015290565b816005811115612ea657612ea66144af565b600103612ed057505060408051808201909152600781526621a122afa2a1a960c91b602082015290565b816005811115612ee257612ee26144af565b600203612f0d57505060408051808201909152600881526721a122afa722a1a960c11b602082015290565b816005811115612f1f57612f1f6144af565b600303612f4d57505060408051808201909152600b81526a4342455f4e4543525f485360a81b602082015290565b816005811115612f5f57612f5f6144af565b600403612f8857505060408051808201909152600681526521a122afa82960d11b602082015290565b50506040805180820190915260098152684342455f50525f485360b81b602082015290565b919050565b600881901c600090815260208390526040902054600160ff83161b16151592915050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a029061300b903390899088908890600401614fac565b6020604051808303816000875af1925050508015613046575060408051601f3d908101601f1916820190925261304391810190614fe9565b60015b6130a4573d808015613074576040519150601f19603f3d011682016040523d82523d6000602084013e613079565b606091505b50805160000361309c576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b6060816000036130e85750506040805180820190915260018152600360fc1b602082015290565b8160005b811561311257806130fc81614b92565b915061310b9050600a83614b68565b91506130ec565b6000816001600160401b0381111561312c5761312c614536565b6040519080825280601f01601f191660200182016040528015613156576020820181803683370190505b5090505b841561253b5761316b600183615006565b9150613178600a8661501d565b613183906030614e1a565b60f81b81838151811061319857613198614b7c565b60200101906001600160f81b031916908160001a9053506131ba600a86614b68565b945061315a565b60606000600f80546131d290614bcb565b90501161326957600e80546131e690614bcb565b80601f016020809104026020016040519081016040528092919081815260200182805461321290614bcb565b801561325f5780601f106132345761010080835404028352916020019161325f565b820191906000526020600020905b81548152906001019060200180831161324257829003601f168201915b5050505050610fb0565b600f613274836130c1565b6010604051602001613288939291906150a4565b60405160208183030381529060405292915050565b6003600254600160b01b900460ff1660038111156132bd576132bd6144af565b036132fc5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401611197565b60028054600160b01b900460ff16600381111561331b5761331b6144af565b036133235750565b6001600254600160b01b900460ff166003811115613343576133436144af565b0361339f576002546001600160a01b038281169116146125715760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401611197565b6000600254600160b01b900460ff1660038111156133bf576133bf6144af565b0361257157806001600160a01b03166133d6611b07565b6001600160a01b0316146125715760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401611197565b804710156134725760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611197565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146134bf576040519150601f19603f3d011682016040523d82523d6000602084013e6134c4565b606091505b505090508061157a5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401611197565b612710816020015161ffff16106135615760405162461bcd60e51b815260040161119790614f87565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601f80546001600160b01b031916909217600160a01b9091021790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe41926135d8929161470b565b60405180910390a150565b6111aa8282612a0f565b600054610100900460ff166136145760405162461bcd60e51b8152600401611197906150d7565b6111aa8282613975565b600054610100900460ff166136455760405162461bcd60e51b8152600401611197906150d7565b612571816139f9565b600054610100900460ff166136755760405162461bcd60e51b8152600401611197906150d7565b61157a838383613a40565b600054610100900460ff166136a75760405162461bcd60e51b8152600401611197906150d7565b6111aa8282613ace565b600054610100900460ff166136d85760405162461bcd60e51b8152600401611197906150d7565b61257181613b59565b600054610100900460ff166137085760405162461bcd60e51b8152600401611197906150d7565b61196d613bb5565b600054610100900460ff166137375760405162461bcd60e51b8152600401611197906150d7565b61257181613bec565b600054610100900460ff166137675760405162461bcd60e51b8152600401611197906150d7565b61196d613c3b565b600054610100900460ff166137965760405162461bcd60e51b8152600401611197906150d7565b6137a663209680f760e11b613c6e565b601591909155601655565b600054610100900460ff166137d85760405162461bcd60e51b8152600401611197906150d7565b6111aa8282613cef565b600054610100900460ff166138095760405162461bcd60e51b8152600401611197906150d7565b6111aa8282613d31565b600054610100900460ff1661383a5760405162461bcd60e51b8152600401611197906150d7565b61257181613dc1565b600082600001828154811061385a5761385a614b7c565b9060005260206000200154905092915050565b6111aa828260405180602001604052806000815250613de8565b613892601d83612fb2565b156138af5760405162461bcd60e51b815260040161119790614bab565b611e9d565b6138be8282611b1c565b6111aa576138d6816001600160a01b03166014613e55565b6138e1836020613e55565b6040516020016138f2929190615122565b60408051601f198184030181529082905262461bcd60e51b8252611197916004016142fa565b600061285b8383613ff0565b600061285b83836140e3565b600081815b84518110156114dc576139618286838151811061395457613954614b7c565b6020026020010151614132565b91508061396d81614b92565b915050613935565b600054610100900460ff1661399c5760405162461bcd60e51b8152600401611197906150d7565b6139ac63ac2ba33360e01b613c6e565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b8360038111156139f0576139f06144af565b02179055505050565b600054610100900460ff16613a205760405162461bcd60e51b8152600401611197906150d7565b613a3063b964efe960e01b613c6e565b61184c630c934a3560e31b613c6e565b600054610100900460ff16613a675760405162461bcd60e51b8152600401611197906150d7565b600b613a738482614c45565b50600c613a808382614c45565b50600d613a8d8282614c45565b50613a9e633d96f4ff60e11b613c6e565b613aae6380ac58cd60e01b613c6e565b613abe63184371e560e31b613c6e565b61157a635b5e139f60e01b613c6e565b600054610100900460ff16613af55760405162461bcd60e51b8152600401611197906150d7565b600e613b018382614c45565b50600f613b0e8282614c45565b50604080518082019091526005815264173539b7b760d91b6020820152601090613b389082614c45565b50613b49631f2f406b60e01b613c6e565b6111aa635b5e139f60e01b613c6e565b600054610100900460ff16613b805760405162461bcd60e51b8152600401611197906150d7565b6012819055613b956330f487b560e11b613c6e565b613ba56380ac58cd60e01b613c6e565b61257163184371e560e31b613c6e565b600054610100900460ff16613bdc5760405162461bcd60e51b8152600401611197906150d7565b61196d631aa1577160e11b613c6e565b600054610100900460ff16613c135760405162461bcd60e51b8152600401611197906150d7565b613c23631a056e7160e01b613c6e565b6125716000805160206151f0833981519152826135e3565b600054610100900460ff16613c625760405162461bcd60e51b8152600401611197906150d7565b61196d63714ad8e760e01b5b6001600160e01b03198082169003613cc75760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401611197565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b600054610100900460ff16613d165760405162461bcd60e51b8152600401611197906150d7565b613d266317e0bac360e31b613c6e565b601a91909155601b55565b600054610100900460ff16613d585760405162461bcd60e51b8152600401611197906150d7565b613d68633a47bf5160e11b613c6e565b613d7863152a902d60e11b613c6e565b613d8863c69dbd8f60e01b613c6e565b613d9863656cb66560e11b613c6e565b604080518082019091526001600160a01b038316815261ffff8216602082015261157a81613538565b600054610100900460ff166121c55760405162461bcd60e51b8152600401611197906150d7565b613df28383614161565b6001600160a01b0383163b1561157a576003548281035b613e1c6000868380600101945086612fd6565b613e39576040516368d2bf6b60e11b815260040160405180910390fd5b818110613e09578160035414613e4e57600080fd5b5050505050565b60606000613e64836002614b33565b613e6f906002614e1a565b6001600160401b03811115613e8657613e86614536565b6040519080825280601f01601f191660200182016040528015613eb0576020820181803683370190505b509050600360fc1b81600081518110613ecb57613ecb614b7c565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613efa57613efa614b7c565b60200101906001600160f81b031916908160001a9053506000613f1e846002614b33565b613f29906001614e1a565b90505b6001811115613fa1576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613f5d57613f5d614b7c565b1a60f81b828281518110613f7357613f73614b7c565b60200101906001600160f81b031916908160001a90535060049490941c93613f9a81615191565b9050613f2c565b50831561285b5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401611197565b600081815260018301602052604081205480156140d9576000614014600183615006565b855490915060009061402890600190615006565b905081811461408d57600086600001828154811061404857614048614b7c565b906000526020600020015490508087600001848154811061406b5761406b614b7c565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061409e5761409e6151a8565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610fb0565b6000915050610fb0565b600081815260018301602052604081205461412a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610fb0565b506000610fb0565b600081831061414e57600082815260208490526040902061285b565b600083815260208390526040902061285b565b60035460008290036141865760405163b562e8dd60e01b815260040160405180910390fd5b61419360008483856129dd565b6001600160a01b038316600090815260086020526040902080546001600160401b0184020190556141ca836001841460e11b6129e9565b6000828152600760205260408120919091556001600160a01b0384169083830190839083906000805160206152108339815191528180a4600183015b81811461422c5780836000600080516020615210833981519152600080a4600101614206565b508160000361424d57604051622e076360e81b815260040160405180910390fd5b60035550505050565b6001600160e01b03198116811461257157600080fd5b60006020828403121561427e57600080fd5b813561285b81614256565b60006020828403121561429b57600080fd5b5035919050565b60005b838110156142bd5781810151838201526020016142a5565b83811115611e9d5750506000910152565b600081518084526142e68160208601602086016142a2565b601f01601f19169290920160200192915050565b60208152600061285b60208301846142ce565b80356001600160a01b0381168114612fad57600080fd5b6000806040838503121561433757600080fd5b6143408361430d565b946020939093013593505050565b60008060006060848603121561436357600080fd5b61436c8461430d565b925061437a6020850161430d565b9150604084013590509250925092565b6000806040838503121561439d57600080fd5b50508035926020909101359150565b6001600160a01b03929092168252602082015260400190565b60008083601f8401126143d757600080fd5b5081356001600160401b038111156143ee57600080fd5b6020830191508360208260051b850101111561141357600080fd5b6000806020838503121561441c57600080fd5b82356001600160401b0381111561443257600080fd5b61443e858286016143c5565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b8181101561448257835183529284019291840191600101614466565b50909695505050505050565b6000602082840312156144a057600080fd5b81356004811061285b57600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106144d9576144d96144af565b91905290565b801515811461257157600080fd5b6000602082840312156144ff57600080fd5b813561285b816144df565b6000806040838503121561451d57600080fd5b8235915061452d6020840161430d565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6040516101e081016001600160401b038111828210171561456f5761456f614536565b60405290565b60006001600160401b038084111561458f5761458f614536565b604051601f8501601f19908116603f011681019082821181831017156145b7576145b7614536565b816040528093508581528686860111156145d057600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126145fb57600080fd5b61285b83833560208501614575565b60006020828403121561461c57600080fd5b81356001600160401b0381111561463257600080fd5b61253b848285016145ea565b60208101600683106144d9576144d96144af565b6000806020838503121561466557600080fd5b82356001600160401b038082111561467c57600080fd5b818501915085601f83011261469057600080fd5b81358181111561469f57600080fd5b8660206060830285010111156146b457600080fd5b60209290920196919550909350505050565b6000602082840312156146d857600080fd5b61285b8261430d565b803560068110612fad57600080fd5b60006020828403121561470257600080fd5b61285b826146e1565b6001600160a01b0392909216825261ffff16602082015260400190565b60008060006040848603121561473d57600080fd5b8335925060208401356001600160401b0381111561475a57600080fd5b614766868287016143c5565b9497909650939450505050565b6000806040838503121561478657600080fd5b61478f8361430d565b9150602083013561479f816144df565b809150509250929050565b600080600080608085870312156147c057600080fd5b6147c98561430d565b93506147d76020860161430d565b92506040850135915060608501356001600160401b038111156147f957600080fd5b8501601f8101871361480a57600080fd5b61481987823560208401614575565b91505092959194509250565b602080825282518282018190526000919060409081850190868401855b8281101561487957815180516001600160a01b031685528601516001600160601b0316868501529284019290850190600101614842565b5091979650505050505050565b6000806000806040858703121561489c57600080fd5b84356001600160401b03808211156148b357600080fd5b6148bf888389016143c5565b909650945060208701359150808211156148d857600080fd5b506148e5878288016143c5565b95989497509550505050565b60008060006040848603121561490657600080fd5b61490f8461430d565b925060208401356001600160401b0381111561475a57600080fd5b6000806040838503121561493d57600080fd5b6149468361430d565b915061452d6020840161430d565b60006040828403121561496657600080fd5b50919050565b803561ffff81168114612fad57600080fd5b6000806040838503121561499157600080fd5b82356001600160401b03808211156149a857600080fd5b908401906101e082870312156149bd57600080fd5b6149c561454c565b8235828111156149d457600080fd5b6149e0888286016145ea565b8252506020830135828111156149f557600080fd5b614a01888286016145ea565b602083015250604083013582811115614a1957600080fd5b614a25888286016145ea565b604083015250606083013582811115614a3d57600080fd5b614a49888286016145ea565b606083015250608083013582811115614a6157600080fd5b614a6d888286016145ea565b60808301525060a0838101359082015260c0808401359082015260e08084013590820152610100808401359082015261012080840135908201526101409150614ab782840161430d565b828201526101609150614acb82840161496c565b828201526101809150614adf82840161430d565b828201526101a09150614af382840161430d565b828201526101c09150614b078284016146e1565b8282015280945050505061452d6020840161430d565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615614b4d57614b4d614b1d565b500290565b634e487b7160e01b600052601260045260246000fd5b600082614b7757614b77614b52565b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201614ba457614ba4614b1d565b5060010190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b600181811c90821680614bdf57607f821691505b60208210810361496657634e487b7160e01b600052602260045260246000fd5b601f82111561157a57600081815260208120601f850160051c81016020861015614c265750805b601f850160051c820191505b8181101561133a57828155600101614c32565b81516001600160401b03811115614c5e57614c5e614536565b614c7281614c6c8454614bcb565b84614bff565b602080601f831160018114614ca75760008415614c8f5750858301515b600019600386901b1c1916600185901b17855561133a565b600085815260208120601f198616915b82811015614cd657888601518255948401946001909101908401614cb7565b5085821015614cf45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060608284031215614d1657600080fd5b604051606081018181106001600160401b0382111715614d3857614d38614536565b60405282358152614d4b6020840161430d565b6020820152614d5c6040840161496c565b60408201529392505050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601890820152775354414b41424c455f4e4f545f4c4f434b45525f524f4c4560401b604082015260600190565b6020808252600f908201526e4e4f545f4c4f434b45525f524f4c4560881b604082015260600190565b602080825260069082015265232927ad22a760d11b604082015260600190565b60008219821115614e2d57614e2d614b1d565b500190565b602080825260139082015272125394d551919250d251539517d05353d55395606a1b604082015260600190565b60008351614e718184602088016142a2565b835190830190614e858183602088016142a2565b01949350505050565b600060208284031215614ea057600080fd5b815161285b816144df565b6040808252810184905260008560608301825b87811015614eec576001600160a01b03614ed78461430d565b16825260209283019290910190600101614ebe565b5083810360208501528481526001600160fb1b03851115614f0c57600080fd5b8460051b915081866020830137600091016020019081529695505050505050565b600060408284031215614f3f57600080fd5b604051604081018181106001600160401b0382111715614f6157614f61614536565b604052614f6d8361430d565b8152614f7b6020840161496c565b60208201529392505050565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090614fdf908301846142ce565b9695505050505050565b600060208284031215614ffb57600080fd5b815161285b81614256565b60008282101561501857615018614b1d565b500390565b60008261502c5761502c614b52565b500690565b6000815461503e81614bcb565b60018281168015615056576001811461506b5761509a565b60ff198416875282151583028701945061509a565b8560005260208060002060005b858110156150915781548a820152908401908201615078565b50505082870194505b5050505092915050565b60006150b08286615031565b84516150c08183602089016142a2565b6150cc81830186615031565b979650505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516151548160178501602088016142a2565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516151858160288401602088016142a2565b01602801949350505050565b6000816151a0576151a0614b1d565b506000190190565b634e487b7160e01b600052603160045260246000fdfe61723a2f2f5f44396b4e3157724e576243713535425341475262544234625333763851415054596d42546853625833412f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efaf9a8bb3cbd6b84fbccefa71ff73e26e798553c6914585a84886212a46a90279a264697066735822122005e70b51fb70415a646012f3b00e6697760f8c7194e31f8120298fc6d65fece964736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/presets/ERC721ATieredSalesCollection":{"address":{"1":"0x03EcE0a5f417eC136a78F8177De4699762389d2d","3":"0x74c654a0e916bbd1083C4E5409169c2595F64A32","4":"0x967bc91a7F2d88f44d8D69F46d7117e088a0f053","5":"0xe9832698308707D18dE429Aaf6260355196CEFB7","25":"0x4F40fe9Ee1EAB15D38b6D8056b415BbEe1e4CCbF","56":"0xee3fcdF6e5D1d5c5900D9B8DC388D03801d633c9","66":"0xc65C4e0C5f81E7016F75f38387b5D13e8775f729","97":"0x9329dc0e42c1f45661AAd2EeB1538c5dA9187448","137":"0xc420196aC560340a29A384546C0275b6A30CbF42","250":"0xBB0AA646E8D63d920a7Ab1C96Ba082cbF075DcDA","280":"0x1D6a9E244771547d1b27695cfb98157fA72fa320","4002":"0xBB0AA646E8D63d920a7Ab1C96Ba082cbF075DcDA","9000":"0x99cfc48d63e4914A0f94d46B0FCF30bD8775067E","42161":"0x8b5De228363f3f7D3821bee7977527cc8898aa0e","43113":"0xe916B8aD209F43b06be7b4596C87deb6f7911bD0","43114":"0xb91057014bFB01df21e541335a78D930266f7869","421611":"0xa6a7986065BA0aFAf13Fa9155BCFC4C2d0E80a0a","arbitrumOne":"0x8b5De228363f3f7D3821bee7977527cc8898aa0e","arbitrumTestnet":"0xa6a7986065BA0aFAf13Fa9155BCFC4C2d0E80a0a","avalanche":"0xb91057014bFB01df21e541335a78D930266f7869","avalancheFujiTestnet":"0xe916B8aD209F43b06be7b4596C87deb6f7911bD0","bsc":"0xee3fcdF6e5D1d5c5900D9B8DC388D03801d633c9","bscTestnet":"0x9329dc0e42c1f45661AAd2EeB1538c5dA9187448","cronos":"0x4F40fe9Ee1EAB15D38b6D8056b415BbEe1e4CCbF","evmosTestnet":"0x99cfc48d63e4914A0f94d46B0FCF30bD8775067E","ftmTestnet":"0xBB0AA646E8D63d920a7Ab1C96Ba082cbF075DcDA","goerli":"0xe9832698308707D18dE429Aaf6260355196CEFB7","mainnet":"0x03EcE0a5f417eC136a78F8177De4699762389d2d","okcMainnet":"0xc65C4e0C5f81E7016F75f38387b5D13e8775f729","opera":"0xBB0AA646E8D63d920a7Ab1C96Ba082cbF075DcDA","polygon":"0xc420196aC560340a29A384546C0275b6A30CbF42","rinkeby":"0x967bc91a7F2d88f44d8D69F46d7117e088a0f053","ropsten":"0x74c654a0e916bbd1083C4E5409169c2595F64A32","zksyncTestnet":"0x1D6a9E244771547d1b27695cfb98157fA72fa320"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721ATieredSalesCollection","sourceName":"contracts/collections/ERC721A/presets/ERC721ATieredSalesCollection.sol","abi":[{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"string","name":"placeholderURI","type":"string"},{"internalType":"string","name":"tokenURIPrefix","type":"string"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct IERC721TieringExtension.Tier[]","name":"tiers","type":"tuple[]"},{"internalType":"address","name":"defaultRoyaltyAddress","type":"address"},{"internalType":"uint16","name":"defaultRoyaltyBps","type":"uint16"},{"internalType":"address","name":"proceedsRecipient","type":"address"},{"internalType":"address","name":"trustedForwarder","type":"address"},{"internalType":"enum LicenseVersion","name":"licenseVersion","type":"uint8"}],"internalType":"struct ERC721ATieredSalesCollection.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"DefaultRoyaltySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"TokenRoyaltyRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"TokenRoyaltySet","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":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LOCKER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"tierId","type":"uint256"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct IERC721TieringExtension.Tier","name":"tier","type":"tuple"}],"name":"configureTiering","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tierIds","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct IERC721TieringExtension.Tier[]","name":"_tiers","type":"tuple[]"}],"name":"configureTiering","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultRoyalty","outputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"eligibleForTier","outputs":[{"internalType":"uint256","name":"maxMintable","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"filterUnlocked","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"freezeTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getRaribleV2Royalties","outputs":[{"components":[{"internalType":"address payable","name":"account","type":"address"},{"internalType":"uint96","name":"value","type":"uint96"}],"internalType":"struct LibPart.Part[]","name":"result","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenRoyaltiesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getTokenRoyaltyByIndex","outputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasRoleBasedLockableExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"string","name":"placeholderURI","type":"string"},{"internalType":"string","name":"tokenURIPrefix","type":"string"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct IERC721TieringExtension.Tier[]","name":"tiers","type":"tuple[]"},{"internalType":"address","name":"defaultRoyaltyAddress","type":"address"},{"internalType":"uint16","name":"defaultRoyaltyBps","type":"uint16"},{"internalType":"address","name":"proceedsRecipient","type":"address"},{"internalType":"address","name":"trustedForwarder","type":"address"},{"internalType":"enum LicenseVersion","name":"licenseVersion","type":"uint8"}],"internalType":"struct ERC721ATieredSalesCollection.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","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":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersion","outputs":[{"internalType":"enum LicenseVersion","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersionLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"locked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintByTier","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onTierAllowlist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","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":[],"name":"placeholderURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"remainingForTier","outputs":[{"internalType":"uint256","name":"tierRemaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reservedMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyalty","name":"royalty","type":"tuple"}],"name":"setDefaultRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum LicenseVersion","name":"_licenseVersion","type":"uint8"}],"name":"setLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setPlaceholderURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig[]","name":"royaltyConfigs","type":"tuple[]"}],"name":"setTokenRoyalties","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURIPrefix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURISuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"trustedForwarder","type":"address"}],"name":"setTrustedForwarder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tierMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tiers","outputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIPrefix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURISuffix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReserved","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"name":"walletMintedByTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162006e7c38038062006e7c833981016040819052620000349162000ff4565b805160208201516004620000516200004b620000bd565b620000d9565b6002805482919060ff60c01b1916600160c01b836005811115620000795762000079620011a3565b0217905550600590506200008e838262001247565b5060066200009d828262001247565b50600060035550506001601455620000b6813362000134565b50620013c1565b6000620000d46200033860201b62002c1b1760201c565b905090565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620001555750600054600160ff909116105b8062000185575062000172306200037060201b62002c3d1760201c565b15801562000185575060005460ff166001145b620001ee5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000212576000805461ff0019166101001790555b6200021f6000836200037f565b6200022a82620000d9565b6101208301516200023d9060026200038f565b6101608301516200024e90620003c5565b82516020840151604085015162000267929190620003fd565b62000281836060015184608001516200043460201b60201c565b60a083015162000291906200046a565b6200029b6200049f565b620002a682620004d5565b620002b06200050a565b60c0830151620002c0906200053e565b620002db8360e001518461010001516200057360201b60201c565b610140830151620002ec90620005a9565b801562000333576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6020546000906001600160a01b031633036200035b575060131936013560601c90565b620000d4620005de60201b62002c4c1760201c565b6001600160a01b03163b151590565b6200038b8282620005e2565b5050565b600054610100900460ff16620003b95760405162461bcd60e51b8152600401620001e59062001313565b6200038b828262000688565b600054610100900460ff16620003ef5760405162461bcd60e51b8152600401620001e59062001313565b620003fa8162000714565b50565b600054610100900460ff16620004275760405162461bcd60e51b8152600401620001e59062001313565b6200033383838362000792565b600054610100900460ff166200045e5760405162461bcd60e51b8152600401620001e59062001313565b6200038b828262000831565b600054610100900460ff16620004945760405162461bcd60e51b8152600401620001e59062001313565b620003fa81620008c9565b600054610100900460ff16620004c95760405162461bcd60e51b8152600401620001e59062001313565b620004d36200092e565b565b600054610100900460ff16620004ff5760405162461bcd60e51b8152600401620001e59062001313565b620003fa816200096a565b600054610100900460ff16620005345760405162461bcd60e51b8152600401620001e59062001313565b620004d3620009d2565b600054610100900460ff16620005685760405162461bcd60e51b8152600401620001e59062001313565b620003fa8162000a0e565b600054610100900460ff166200059d5760405162461bcd60e51b8152600401620001e59062001313565b6200038b828262000b3b565b600054610100900460ff16620005d35760405162461bcd60e51b8152600401620001e59062001313565b620003fa8162000bd8565b3390565b6000828152601b602090815260408083206001600160a01b038516845290915290205460ff166200038b576000828152601b602090815260408083206001600160a01b03851684529091529020805460ff1916600117905562000644620000bd565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600054610100900460ff16620006b25760405162461bcd60e51b8152600401620001e59062001313565b620006c463ac2ba33360e01b62000c24565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b8360038111156200070b576200070b620011a3565b02179055505050565b600054610100900460ff166200073e5760405162461bcd60e51b8152600401620001e59062001313565b6200075063b964efe960e01b62000c24565b62000762630c934a3560e31b62000c24565b6002805482919060ff60c01b1916600160c01b8360058111156200078a576200078a620011a3565b021790555050565b600054610100900460ff16620007bc5760405162461bcd60e51b8152600401620001e59062001313565b600b620007ca848262001247565b50600c620007d9838262001247565b50600d620007e8828262001247565b50620007fb633d96f4ff60e11b62000c24565b6200080d6380ac58cd60e01b62000c24565b6200081f63184371e560e31b62000c24565b62000333635b5e139f60e01b62000c24565b600054610100900460ff166200085b5760405162461bcd60e51b8152600401620001e59062001313565b600e62000869838262001247565b50600f62000878828262001247565b50604080518082019091526005815264173539b7b760d91b6020820152601090620008a4908262001247565b50620008b7631f2f406b60e01b62000c24565b6200038b635b5e139f60e01b62000c24565b600054610100900460ff16620008f35760405162461bcd60e51b8152600401620001e59062001313565b60128190556200090a6330f487b560e11b62000c24565b6200091c6380ac58cd60e01b62000c24565b620003fa63184371e560e31b62000c24565b600054610100900460ff16620009585760405162461bcd60e51b8152600401620001e59062001313565b620004d3631aa1577160e11b62000c24565b600054610100900460ff16620009945760405162461bcd60e51b8152600401620001e59062001313565b620009a6631a056e7160e01b62000c24565b620003fa7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6826200037f565b600054610100900460ff16620009fc5760405162461bcd60e51b8152600401620001e59062001313565b620004d363714ad8e760e01b62000c24565b600054610100900460ff1662000a385760405162461bcd60e51b8152600401620001e59062001313565b62000a4a6308b4902960e41b62000c24565b60005b81518110156200038b5781818151811062000a6c5762000a6c6200135e565b602090810291909101810151600083815260158352604090819020825181559282015160018401558101516002830180546001600160a01b0319166001600160a01b03909216919091179055606081015160038301556080810151600483015560a0810151600583015560c0810151600683015560e00151600790910155815182908290811062000b015762000b016200135e565b602002602001015160c001516016600082825462000b2091906200138a565b9091555081905062000b3281620013a5565b91505062000a4d565b600054610100900460ff1662000b655760405162461bcd60e51b8152600401620001e59062001313565b62000b77633a47bf5160e11b62000c24565b62000b8963152a902d60e11b62000c24565b62000b9b63c69dbd8f60e01b62000c24565b62000bad63656cb66560e11b62000c24565b604080518082019091526001600160a01b038316815261ffff82166020820152620003338162000ca8565b600054610100900460ff1662000c025760405162461bcd60e51b8152600401620001e59062001313565b602080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160e01b0319808216900362000c805760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e74657266616365206964000000006044820152606401620001e5565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b612710816020015161ffff161062000cf15760405162461bcd60e51b815260206004820152600b60248201526a496e76616c69642062707360a81b6044820152606401620001e5565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601c8054600160a01b9092026001600160b01b03199092169092171790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe419262000d8392916001600160a01b0392909216825261ffff16602082015260400190565b60405180910390a150565b634e487b7160e01b600052604160045260246000fd5b60405161010081016001600160401b038111828210171562000dca5762000dca62000d8e565b60405290565b60405161018081016001600160401b038111828210171562000dca5762000dca62000d8e565b604051601f8201601f191681016001600160401b038111828210171562000e215762000e2162000d8e565b604052919050565b600082601f83011262000e3b57600080fd5b81516001600160401b0381111562000e575762000e5762000d8e565b602062000e6d601f8301601f1916820162000df6565b828152858284870101111562000e8257600080fd5b60005b8381101562000ea257858101830151828201840152820162000e85565b8381111562000eb45760008385840101525b5095945050505050565b80516001600160a01b038116811462000ed657600080fd5b919050565b600082601f83011262000eed57600080fd5b815160206001600160401b0382111562000f0b5762000f0b62000d8e565b62000f1b818360051b0162000df6565b82815260089290921b8401810191818101908684111562000f3b57600080fd5b8286015b8481101562000fc657610100818903121562000f5b5760008081fd5b62000f6562000da4565b815181528482015185820152604062000f8081840162000ebe565b90820152606082810151908201526080808301519082015260a0808301519082015260c0808301519082015260e080830151908201528352918301916101000162000f3f565b509695505050505050565b805161ffff8116811462000ed657600080fd5b80516006811062000ed657600080fd5b6000602082840312156200100757600080fd5b81516001600160401b03808211156200101f57600080fd5b9083019061018082860312156200103557600080fd5b6200103f62000dd0565b8251828111156200104f57600080fd5b6200105d8782860162000e29565b8252506020830151828111156200107357600080fd5b620010818782860162000e29565b6020830152506040830151828111156200109a57600080fd5b620010a88782860162000e29565b604083015250606083015182811115620010c157600080fd5b620010cf8782860162000e29565b606083015250608083015182811115620010e857600080fd5b620010f68782860162000e29565b60808301525060a083015160a082015260c0830151828111156200111957600080fd5b620011278782860162000edb565b60c0830152506200113b60e0840162000ebe565b60e082015261010091506200115282840162000fd1565b8282015261012091506200116882840162000ebe565b8282015261014091506200117e82840162000ebe565b8282015261016091506200119482840162000fe4565b91810191909152949350505050565b634e487b7160e01b600052602160045260246000fd5b600181811c90821680620011ce57607f821691505b602082108103620011ef57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033357600081815260208120601f850160051c810160208610156200121e5750805b601f850160051c820191505b818110156200123f578281556001016200122a565b505050505050565b81516001600160401b0381111562001263576200126362000d8e565b6200127b81620012748454620011b9565b84620011f5565b602080601f831160018114620012b357600084156200129a5750858301515b600019600386901b1c1916600185901b1785556200123f565b600085815260208120601f198616915b82811015620012e457888601518255948401946001909101908401620012c3565b5085821015620013035787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115620013a057620013a062001374565b500190565b600060018201620013ba57620013ba62001374565b5060010190565b615aab80620013d16000396000f3fe6080604052600436106104005760003560e01c80637e98034211610216578063c71b0e1c1161011f578063c71b0e1c14610d01578063c723955a14610d17578063c7db289314610d2c578063c87b56dd14610d41578063cad96cca14610d61578063d539139314610d8e578063d547741f14610db0578063d5abeb0114610dd0578063d8b436fd14610de6578063da74222814610e06578063da82b22714610e26578063dbbc853b14610e3b578063dcbe353f14610e50578063dd46706414610e70578063dd89c6fa14610e90578063de6d6d9614610ea5578063e8a3d48514610ec5578063e985e9c514610eda578063ef60ceaf14610f23578063f2fde38b14610f43578063f362136714610f63578063f384702f14610f8557600080fd5b80637e98034214610a9d578063837fe14014610ab2578063859610c614610ac75780638da5cb5b14610ae757806391d1485414610afc578063938e3d7b14610b1c57806395d89b4114610b3c57806399e0dd7c14610b51578063a217fddf14610b71578063a22cb46514610b86578063a341793b14610ba6578063a65dbda414610bbb578063a9852bfb14610bdb578063af121f5414610bfb578063b45a3c0e14610c1c578063b88d4fde14610c3c578063ba4695fd14610c5c578063bd2c18f714610c71578063bf9b7a5714610c91578063c0ac998314610cb2578063c0bb38ff14610cc7578063c29de63014610ce757600080fd5b806336568abe1161031857806336568abe146107d457806342842e0e146107f457806349561cb91461081457806350a5292f146108355780635136dcc71461086357806353367f081461088357806356c022bb146108b0578063572b6c05146108d05780635897f878146108f05780635d36598f146109105780635ea2c91b146109305780636057e0ec146109435780636198e339146109645780636352211e1461098457806364ed2913146109a457806368c7d37c146109c45780636f8b44b0146109e457806370a0823114610a04578063714ad8e714610a24578063715018a614610a385780637313cba914610a4d5780637885fdc714610a6257600080fd5b806301ffc9a714610405578063039af9eb1461043a5780630653aca5146104eb57806306fdde031461053a578063081812fc1461055c578063095ea7b3146105945780631123f2ef146105b6578063167446071461060757806318160ddd1461061c5780631a056e711461063557806320f1bb301461065557806323b872dd14610675578063248a9ca3146106955780632a55205a146106b55780632bb684ad146106e35780632c233067146107105780632cb9b2ac146107305780632d00b587146107465780632f2ff15d146107745780633542aee2146107945780633574a2dd146107b4575b600080fd5b34801561041157600080fd5b50610425610420366004614814565b610f9f565b60405190151581526020015b60405180910390f35b34801561044657600080fd5b506104a2610455366004614831565b60156020526000908152604090208054600182015460028301546003840154600485015460058601546006870154600790970154959694956001600160a01b039094169492939192909188565b6040805198895260208901979097526001600160a01b03909516958701959095526060860192909252608085015260a084015260c083019190915260e082015261010001610431565b3480156104f757600080fd5b5061050b610506366004614831565b610fb0565b60408051825181526020808401516001600160a01b0316908201529181015161ffff1690820152606001610431565b34801561054657600080fd5b5061054f611035565b60405161043191906148a2565b34801561056857600080fd5b5061057c610577366004614831565b611044565b6040516001600160a01b039091168152602001610431565b3480156105a057600080fd5b506105b46105af3660046148d5565b611088565b005b3480156105c257600080fd5b506105f96105d1366004614901565b60009182526018602090815260408084206001600160a01b0393909316845291905290205490565b604051908152602001610431565b34801561061357600080fd5b506105b4611128565b34801561062857600080fd5b50600454600354036105f9565b34801561064157600080fd5b506105b46106503660046148d5565b61113f565b34801561066157600080fd5b506105b4610670366004614931565b6111aa565b34801561068157600080fd5b506105b461069036600461496b565b611390565b3480156106a157600080fd5b506105f96106b0366004614831565b611524565b3480156106c157600080fd5b506106d56106d03660046149ac565b611539565b6040516104319291906149ce565b3480156106ef57600080fd5b506107036106fe366004614a2b565b6115fe565b6040516104319190614a6c565b34801561071c57600080fd5b506105b461072b366004614ab0565b6116c8565b34801561073c57600080fd5b506105f960195481565b34801561075257600080fd5b5060025461076790600160b01b900460ff1681565b6040516104319190614ae7565b34801561078057600080fd5b506105b461078f366004614901565b611727565b3480156107a057600080fd5b506105b46107af3660046148d5565b611748565b3480156107c057600080fd5b506105b46107cf366004614c0a565b611750565b3480156107e057600080fd5b506105b46107ef366004614901565b611764565b34801561080057600080fd5b506105b461080f36600461496b565b6117ee565b34801561082057600080fd5b5060025461042590600160b81b900460ff1681565b34801561084157600080fd5b5060025461085690600160c01b900460ff1681565b6040516104319190614c3e565b34801561086f57600080fd5b506105b461087e366004614c52565b611809565b34801561088f57600080fd5b506105f961089e366004614831565b60176020526000908152604090205481565b3480156108bc57600080fd5b5060205461057c906001600160a01b031681565b3480156108dc57600080fd5b506104256108eb366004614cc6565b61186c565b3480156108fc57600080fd5b506105f961090b366004614831565b611880565b34801561091c57600080fd5b506105b461092b366004614a2b565b611901565b6105b461093e366004614ce3565b6119a4565b34801561094f57600080fd5b5060025461042590600160a01b900460ff1681565b34801561097057600080fd5b506105b461097f366004614831565b611c70565b34801561099057600080fd5b5061057c61099f366004614831565b611cdc565b3480156109b057600080fd5b506105b46109bf366004614d52565b611ce7565b3480156109d057600080fd5b506104256109df366004614d6d565b611d5f565b3480156109f057600080fd5b506105b46109ff366004614831565b611e01565b348015610a1057600080fd5b506105f9610a1f366004614cc6565b611e15565b348015610a3057600080fd5b506001610425565b348015610a4457600080fd5b506105b4611e63565b348015610a5957600080fd5b5061054f611e77565b348015610a6e57600080fd5b50601c54610a8f906001600160a01b03811690600160a01b900461ffff1682565b604051610431929190614db9565b348015610aa957600080fd5b506105f9611f09565b348015610abe57600080fd5b506105b4611f15565b348015610ad357600080fd5b506105b4610ae2366004614a2b565b611f5c565b348015610af357600080fd5b5061057c611ff5565b348015610b0857600080fd5b50610425610b17366004614901565b61200a565b348015610b2857600080fd5b506105b4610b37366004614c0a565b612035565b348015610b4857600080fd5b5061054f612049565b348015610b5d57600080fd5b506105b4610b6c366004614c0a565b612053565b348015610b7d57600080fd5b506105f9600081565b348015610b9257600080fd5b506105b4610ba1366004614de4565b61208a565b348015610bb257600080fd5b5061054f61211f565b348015610bc757600080fd5b506105b4610bd6366004614f0e565b612138565b348015610be757600080fd5b506105b4610bf6366004614c0a565b6122f8565b348015610c0757600080fd5b5060025461042590600160a81b900460ff1681565b348015610c2857600080fd5b50610425610c37366004614831565b61232f565b348015610c4857600080fd5b506105b4610c573660046150ad565b61233c565b348015610c6857600080fd5b506105b4612386565b348015610c7d57600080fd5b506105f9610c8c366004614d6d565b61239d565b348015610c9d57600080fd5b5060025461042590600160c81b900460ff1681565b348015610cbe57600080fd5b5061054f6125ce565b348015610cd357600080fd5b506105b4610ce2366004614cc6565b6125dd565b348015610cf357600080fd5b506011546104259060ff1681565b348015610d0d57600080fd5b506105f960165481565b348015610d2357600080fd5b506105b4612631565b348015610d3857600080fd5b5061054f612690565b348015610d4d57600080fd5b5061054f610d5c366004614831565b6126f7565b348015610d6d57600080fd5b50610d81610d7c366004614831565b612702565b604051610431919061512c565b348015610d9a57600080fd5b506105f9600080516020615a1683398151915281565b348015610dbc57600080fd5b506105b4610dcb366004614901565b6127bd565b348015610ddc57600080fd5b506105f960125481565b348015610df257600080fd5b506105b4610e0136600461518d565b6127d9565b348015610e1257600080fd5b506105b4610e21366004614cc6565b61283f565b348015610e3257600080fd5b506105b4612869565b348015610e4757600080fd5b5061054f6128af565b348015610e5c57600080fd5b5060025461057c906001600160a01b031681565b348015610e7c57600080fd5b506105b4610e8b366004614831565b6128be565b348015610e9c57600080fd5b506105b4612922565b348015610eb157600080fd5b506105b4610ec0366004615226565b61293f565b348015610ed157600080fd5b5061054f612b77565b348015610ee657600080fd5b50610425610ef5366004615291565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205460ff1690565b348015610f2f57600080fd5b506105b4610f3e3660046152bf565b612b86565b348015610f4f57600080fd5b506105b4610f5e366004614cc6565b612ba5565b348015610f6f57600080fd5b506105f9600080516020615a5683398151915281565b348015610f9157600080fd5b506013546104259060ff1681565b6000610faa82612c50565b92915050565b6040805160608101825260008082526020820181905291810182905290610fd8601e84612c8c565b6000818152601d60209081526040918290208251808401845290546001600160a01b03808216835261ffff600160a01b90920482168385019081528551606081018752968752925116928501929092525116908201529392505050565b606061103f612c9f565b905090565b600061104f82612cae565b61106c576040516333d1c03960e21b815260040160405180910390fd5b506000908152600960205260409020546001600160a01b031690565b600061109382611cdc565b9050336001600160a01b038216146110cc576110af8133610ef5565b6110cc576040516367d9dca160e11b815260040160405180910390fd5b60008281526009602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b611130612cd6565b6013805460ff19166001179055565b611159600080516020615a16833981519152610b17612d45565b61119c5760405162461bcd60e51b815260206004820152600f60248201526e4e4f545f4d494e5445525f524f4c4560881b60448201526064015b60405180910390fd5b6111a68282612d4f565b5050565b6111b2612cd6565b60008281526017602052604090205460e082013510156112085760405162461bcd60e51b81526020600482015260116024820152701313d5d15497d512105397d35253951151607a1b6044820152606401611193565b600082815260156020526040902060060154156112765760008281526017602052604090205460c082013510156112765760405162461bcd60e51b81526020600482015260126024820152711313d5d7d49154d154959157d05353d5539560721b6044820152606401611193565b600082815260176020526040902054156112e457600082815260156020526040902060040154608082013510156112e45760405162461bcd60e51b81526020600482015260126024820152711313d5d7d3505617d4115497d5d05313115560721b6044820152606401611193565b60008281526015602052604081206006015460168054919290916113099084906152ed565b9091555050600082815260156020526040902081906113288282615304565b9050508060c00135601660008282546113419190615375565b909155505060125460165411156111a65760405162461bcd60e51b815260206004820152601360248201527213505617d4d55414131657d15610d151511151606a1b6044820152606401611193565b600061139b82612db3565b9050836001600160a01b0316816001600160a01b0316146113ce5760405162a1148160e81b815260040160405180910390fd5b60008281526009602052604090208054338082146001600160a01b0388169091141761141b576113fe8633610ef5565b61141b57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03851661144257604051633a954ecd60e21b815260040160405180910390fd5b61144f8686866001612e1a565b801561145a57600082555b6001600160a01b0386811660009081526008602052604080822080546000190190559187168152208054600101905561149785600160e11b612e26565b600085815260076020526040812091909155600160e11b841690036114ec576001840160008181526007602052604081205490036114ea5760035481146114ea5760008181526007602052604090208490555b505b83856001600160a01b0316876001600160a01b0316600080516020615a3683398151915260405160405180910390a45b505050505050565b6000908152601b602052604090206001015490565b6000828152601d602052604081205481906001600160a01b03161561159e576000848152601d60205260409020546001600160a01b038116906127109061158b90600160a01b900461ffff168661538d565b61159591906153c2565b915091506115f7565b601c546001600160a01b0316158015906115c45750601c54600160a01b900461ffff1615155b156115f057601c546001600160a01b038116906127109061158b90600160a01b900461ffff168661538d565b5060009050805b9250929050565b60606000826001600160401b0381111561161a5761161a614b01565b604051908082528060200260200182016040528015611643578160200160208202803683370190505b50905060005b838110156116c057611672858583818110611666576116666153d6565b9050602002013561232f565b6116ae57848482818110611688576116886153d6565b905060200201358282815181106116a1576116a16153d6565b6020026020010181815250505b806116b8816153ec565b915050611649565b509392505050565b6116d0612cd6565b600254600160b81b900460ff16156116fa5760405162461bcd60e51b815260040161119390615405565b6002805482919060ff60b01b1916600160b01b83600381111561171f5761171f614ad1565b021790555050565b61173082611524565b61173981612e3b565b6117438383612e4c565b505050565b61119c612cd6565b611758612cd6565b600e6111a6828261549f565b61176c612d45565b6001600160a01b0316816001600160a01b0316146117e45760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401611193565b6111a68282612ed3565b6117438383836040518060200160405280600081525061233c565b611811612cd6565b6111a68282808060200260200160405190810160405280939291908181526020016000905b82821015611862576118536060830286013681900381019061555e565b81526020019060010190611836565b5050505050612f58565b6020546001600160a01b0391821691161490565b600060195460165461189291906152ed565b600454600354036012546118a691906152ed565b6118b091906152ed565b600083815260156020526040902060060154909150156118fc576000828152601760209081526040808320546015909252909120600601546118f291906152ed565b610faa9082615375565b919050565b6002601454036119235760405162461bcd60e51b8152600401611193906155c4565b6002601455611940600080516020615a568339815191523361200a565b61195c5760405162461bcd60e51b8152600401611193906155fb565b60005b8181101561199a5761198883838381811061197c5761197c6153d6565b905060200201356130ff565b80611992816153ec565b91505061195f565b5050600160145550565b6002601454036119c65760405162461bcd60e51b8152600401611193906155c4565b600260145560006119d5612d45565b905060006119e6878387878761239d565b905080861115611a265760405162461bcd60e51b815260206004820152600b60248201526a08ab0868a8a88a6be9a82b60ab1b6044820152606401611193565b611a2f87611880565b861115611a4e5760405162461bcd60e51b81526004016111939061562d565b600087815260156020908152604080832060070154601790925290912054611a769088615375565b1115611a945760405162461bcd60e51b81526004016111939061562d565b6000878152601560205260409020600201546001600160a01b0316611b1b576000878152601560205260409020600301543490611ad290889061538d565b1115611b165760405162461bcd60e51b8152602060048201526013602482015272125394d551919250d251539517d05353d55395606a1b6044820152606401611193565b611bcf565b600087815260156020526040902060028101546003909101546001600160a01b03909116906323b872dd9084903090611b55908b9061538d565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015611ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcd9190615659565b505b60008781526018602090815260408083206001600160a01b038616845290915281208054889290611c01908490615375565b909155505060008781526017602052604081208054889290611c24908490615375565b909155505060008781526015602052604090206006015415611c58578560196000828254611c529190615375565b90915550505b611c628287612d4f565b505060016014555050505050565b600260145403611c925760405162461bcd60e51b8152600401611193906155c4565b6002601455611caf600080516020615a568339815191523361200a565b611ccb5760405162461bcd60e51b815260040161119390615676565b611cd4816130ff565b506001601455565b6000610faa82612db3565b611cef612cd6565b600254600160c81b900460ff1615611d3a5760405162461bcd60e51b815260206004820152600e60248201526d131250d15394d157d313d0d2d15160921b6044820152606401611193565b6002805482919060ff60c01b1916600160c01b83600581111561171f5761171f614ad1565b6000611df583838080602002602001604051908101604052809392919081815260200183836020028082843760009201829052508b8152601560205260409020600501549250611df09150899050886040516001600160601b0319606084901b1660208201526034810182905260009060540160405160208183030381529060405280519060200120905092915050565b613166565b90505b95945050505050565b611e09612cd6565b611e128161317c565b50565b60006001600160a01b038216611e3e576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600860205260409020546001600160401b031690565b611e6b612cd6565b611e7560006131f2565b565b6060600e8054611e8690615425565b80601f0160208091040260200160405190810160405280929190818152602001828054611eb290615425565b8015611eff5780601f10611ed457610100808354040283529160200191611eff565b820191906000526020600020905b815481529060010190602001808311611ee257829003601f168201915b5050505050905090565b600061103f601e61324d565b611f1d612cd6565b600254600160a01b900460ff1615611f475760405162461bcd60e51b815260040161119390615405565b6002805460ff60a01b1916600160a01b179055565b600260145403611f7e5760405162461bcd60e51b8152600401611193906155c4565b6002601455611f9b600080516020615a568339815191523361200a565b611fb75760405162461bcd60e51b8152600401611193906155fb565b60005b8181101561199a57611fe3838383818110611fd757611fd76153d6565b90506020020135613257565b80611fed816153ec565b915050611fba565b6000546201000090046001600160a01b031690565b6000918252601b602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61203d612cd6565b600d6111a6828261549f565b606061103f6132a1565b61205b612cd6565b60115460ff161561207e5760405162461bcd60e51b81526004016111939061569f565b600f6111a6828261549f565b336001600160a01b038316036120b35760405163b06307db60e01b815260040160405180910390fd5b336000818152600a602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60025460609061103f90600160c01b900460ff166132b0565b600054610100900460ff16158080156121585750600054600160ff909116105b80612179575061216730612c3d565b158015612179575060005460ff166001145b6121dc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611193565b6000805460ff1916600117905580156121ff576000805461ff0019166101001790555b61220a600083613429565b612213826131f2565b6122238361012001516002613433565b612231836101600151613464565b612248836000015184602001518560400151613494565b61225a836060015184608001516134c6565b6122678360a001516134f7565b61226f613527565b61227882613556565b612280613586565b61228d8360c001516135b5565b6122a08360e001518461010001516135e5565b6122ae836101400151613616565b8015611743576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b612300612cd6565b60115460ff16156123235760405162461bcd60e51b81526004016111939061569f565b60106111a6828261549f565b6000610faa601a83613646565b612347848484611390565b6001600160a01b0383163b15612380576123638484848461366a565b612380576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b61238e612cd6565b6011805460ff19166001179055565b6000858152601560205260408120600401546123e85760405162461bcd60e51b815260206004820152600a6024820152694e4f545f45584953545360b01b6044820152606401611193565b6000868152601560205260409020544210156124345760405162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b6044820152606401611193565b6000868152601560205260409020600101544211156124855760405162461bcd60e51b815260206004820152600d60248201526c1053149150511657d153911151609a1b6044820152606401611193565b60008681526018602090815260408083206001600160a01b03891684528252808320548984526015909252909120600401546124c191906152ed565b60008781526015602052604090206005015490915015611df85760008681526018602090815260408083206001600160a01b0389168452909152902054841161253e5760405162461bcd60e51b815260206004820152600f60248201526e4d415845445f414c4c4f57414e434560881b6044820152606401611193565b61254b8686868686611d5f565b6125895760405162461bcd60e51b815260206004820152600f60248201526e1393d517d0531313d5d31254d51151608a1b6044820152606401611193565b60008681526018602090815260408083206001600160a01b03891684529091528120546125b690866152ed565b9050808211156125c4578091505b5095945050505050565b6060600f8054611e8690615425565b6125e5612cd6565b600254600160a01b900460ff161561260f5760405162461bcd60e51b815260040161119390615405565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b612639612cd6565b600254600160b81b900460ff161561267b5760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401611193565b6002805460ff60b81b1916600160b81b179055565b60606040518060600160405280603181526020016159e5603191396002546126d290600160c01b900460ff1660058111156126cd576126cd614ad1565b613756565b6040516020016126e39291906156bf565b604051602081830303815290604052905090565b6060610faa82613856565b604080516001808252818301909252606091816020015b6040805180820190915260008082526020820152815260200190600190039081612719575050601c5481519192506001600160a01b0316908290600090612762576127626153d6565b60209081029190910101516001600160a01b03919091169052601c548151600160a01b90910461ffff1690829060009061279e5761279e6153d6565b6020908102919091018101516001600160601b03909216910152919050565b6127c682611524565b6127cf81612e3b565b6117438383612ed3565b6127e1612cd6565b60005b8381101561283857612826858583818110612801576128016153d6565b9050602002013584848481811061281a5761281a6153d6565b905061010002016111aa565b80612830816153ec565b9150506127e4565b5050505050565b612847612cd6565b602080546001600160a01b0319166001600160a01b0392909216919091179055565b612871612cd6565b6002805460ff60a81b1916600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b606060108054611e8690615425565b6002601454036128e05760405162461bcd60e51b8152600401611193906155c4565b60026014556128fd600080516020615a568339815191523361200a565b6129195760405162461bcd60e51b815260040161119390615676565b611cd481613257565b61292a612cd6565b6002805460ff60c81b1916600160c81b179055565b61294833613932565b6002546001600160a01b03166129985760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401611193565b600254600160a81b900460ff16156129f25760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401611193565b60005b83811015612b33576000858583818110612a1157612a116153d6565b9050602002016020810190612a269190614cc6565b6001600160a01b031603612a6957612a64838383818110612a4957612a496153d6565b6002546001600160a01b031692602090910201359050613ab7565b612b21565b848482818110612a7b57612a7b6153d6565b9050602002016020810190612a909190614cc6565b6002546001600160a01b039182169163a9059cbb9116858585818110612ab857612ab86153d6565b905060200201356040518363ffffffff1660e01b8152600401612adc9291906149ce565b6020604051808303816000875af1158015612afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1f9190615659565b505b80612b2b816153ec565b9150506129f5565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a584848484604051612b6994939291906156ee565b60405180910390a150505050565b6060600d8054611e8690615425565b612b8e612cd6565b611e12612ba036839003830183615772565b613bcd565b612bad612cd6565b6001600160a01b038116612c125760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611193565b611e12816131f2565b6000612c263361186c565b15612c38575060131936013560601c90565b503390565b6001600160a01b03163b151590565b3390565b60006301ffc9a760e01b6001600160e01b031983161480610faa5750506001600160e01b03191660009081526001602052604090205460ff1690565b6000612c988383613c78565b9392505050565b6060600b8054611e8690615425565b600060035482108015610faa575050600090815260076020526040902054600160e01b161590565b612cde612d45565b6001600160a01b0316612cef611ff5565b6001600160a01b031614611e755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611193565b600061103f612c1b565b60125481612d606004546003540390565b612d6a9190615375565b1115612da95760405162461bcd60e51b815260206004820152600e60248201526d455843454544535f535550504c5960901b6044820152606401611193565b6111a68282613ca2565b600081600354811015612e015760008181526007602052604081205490600160e01b82169003612dff575b80600003612c98575060001901600081815260076020526040902054612dde565b505b604051636f96cda160e11b815260040160405180910390fd5b61238084848484613cbc565b4260a01b176001600160a01b03919091161790565b611e1281612e47612d45565b613ce9565b612e56828261200a565b6111a6576000828152601b602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612e8f612d45565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b612edd828261200a565b156111a6576000828152601b602090815260408083206001600160a01b03851684529091529020805460ff19169055612f14612d45565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b60005b81518110156111a6576000828281518110612f7857612f786153d6565b60200260200101519050612710816040015161ffff1610612fab5760405162461bcd60e51b8152600401611193906157ce565b60208101516001600160a01b03166130245780516000908152601d6020526040902080546001600160b01b03191690558051612fe990601e90613d4d565b5080516040519081527fa2870857763bd9ae76c957f869f16b31c18dd3bb4c7b4d3a4496dc5c57c657f99060200160405180910390a16130ec565b6040805180820182526020808401516001600160a01b0390811683528484015161ffff90811683850190815286516000908152601d90945294909220925183549451909216600160a01b026001600160b01b0319909416911617919091179055805161309290601e90613d59565b50805160208083015160408085015181519485526001600160a01b039092169284019290925261ffff1682820152517f389b70fb0887f01e83784eb1c4c589f740eca53b00ed0f45e41db5d079719abb9181900360600190a15b50806130f7816153ec565b915050612f5b565b61310a601a82613646565b6131435760405162461bcd60e51b815260206004820152600a6024820152691393d517d313d0d2d15160b21b6044820152606401611193565b600881901c6000908152601a602052604090208054600160ff84161b1916905550565b6000826131738584613d65565b14949350505050565b613184612cd6565b61318d81613daa565b60195460165461319d91906152ed565b600454600354036131ae90836152ed565b1015611e125760405162461bcd60e51b81526020600482015260136024820152721313d5d15497d512105397d49154d154959151606a1b6044820152606401611193565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6000610faa825490565b613262601a82613646565b1561327f5760405162461bcd60e51b815260040161119390615405565b600881901c6000908152601a602052604090208054600160ff84161b17905550565b6060600c8054611e8690615425565b606060068260058111156132c6576132c6614ad1565b60ff1611156132d457600080fd5b8160058111156132e6576132e6614ad1565b60000361331057505060408051808201909152600781526604342455f4343360cc1b602082015290565b81600581111561332257613322614ad1565b60010361334c57505060408051808201909152600781526621a122afa2a1a960c91b602082015290565b81600581111561335e5761335e614ad1565b60020361338957505060408051808201909152600881526721a122afa722a1a960c11b602082015290565b81600581111561339b5761339b614ad1565b6003036133c957505060408051808201909152600b81526a4342455f4e4543525f485360a81b602082015290565b8160058111156133db576133db614ad1565b60040361340457505060408051808201909152600681526521a122afa82960d11b602082015290565b50506040805180820190915260098152684342455f50525f485360b81b602082015290565b6111a68282612e4c565b600054610100900460ff1661345a5760405162461bcd60e51b8152600401611193906157f3565b6111a68282613e46565b600054610100900460ff1661348b5760405162461bcd60e51b8152600401611193906157f3565b611e1281613eca565b600054610100900460ff166134bb5760405162461bcd60e51b8152600401611193906157f3565b611743838383613f11565b600054610100900460ff166134ed5760405162461bcd60e51b8152600401611193906157f3565b6111a68282613f9f565b600054610100900460ff1661351e5760405162461bcd60e51b8152600401611193906157f3565b611e128161402a565b600054610100900460ff1661354e5760405162461bcd60e51b8152600401611193906157f3565b611e75614086565b600054610100900460ff1661357d5760405162461bcd60e51b8152600401611193906157f3565b611e12816140bd565b600054610100900460ff166135ad5760405162461bcd60e51b8152600401611193906157f3565b611e7561410c565b600054610100900460ff166135dc5760405162461bcd60e51b8152600401611193906157f3565b611e1281614143565b600054610100900460ff1661360c5760405162461bcd60e51b8152600401611193906157f3565b6111a6828261425f565b600054610100900460ff1661363d5760405162461bcd60e51b8152600401611193906157f3565b611e12816142ef565b600881901c600090815260208390526040902054600160ff83161b16151592915050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a029061369f90339089908890889060040161583e565b6020604051808303816000875af19250505080156136da575060408051601f3d908101601f191682019092526136d791810190615871565b60015b613738573d808015613708576040519150601f19603f3d011682016040523d82523d6000602084013e61370d565b606091505b508051600003613730576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b60608160000361377d5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156137a75780613791816153ec565b91506137a09050600a836153c2565b9150613781565b6000816001600160401b038111156137c1576137c1614b01565b6040519080825280601f01601f1916602001820160405280156137eb576020820181803683370190505b5090505b841561374e576138006001836152ed565b915061380d600a8661588e565b613818906030615375565b60f81b81838151811061382d5761382d6153d6565b60200101906001600160f81b031916908160001a90535061384f600a866153c2565b94506137ef565b60606000600f805461386790615425565b9050116138fe57600e805461387b90615425565b80601f01602080910402602001604051908101604052809291908181526020018280546138a790615425565b80156138f45780601f106138c9576101008083540402835291602001916138f4565b820191906000526020600020905b8154815290600101906020018083116138d757829003601f168201915b5050505050610faa565b600f61390983613756565b601060405160200161391d93929190615915565b60405160208183030381529060405292915050565b6003600254600160b01b900460ff16600381111561395257613952614ad1565b036139915760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401611193565b60028054600160b01b900460ff1660038111156139b0576139b0614ad1565b036139b85750565b6001600254600160b01b900460ff1660038111156139d8576139d8614ad1565b03613a34576002546001600160a01b03828116911614611e125760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401611193565b6000600254600160b01b900460ff166003811115613a5457613a54614ad1565b03611e1257806001600160a01b0316613a6b611ff5565b6001600160a01b031614611e125760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401611193565b80471015613b075760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611193565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613b54576040519150601f19603f3d011682016040523d82523d6000602084013e613b59565b606091505b50509050806117435760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401611193565b612710816020015161ffff1610613bf65760405162461bcd60e51b8152600401611193906157ce565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601c80546001600160b01b031916909217600160a01b9091021790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe4192613c6d9291614db9565b60405180910390a150565b6000826000018281548110613c8f57613c8f6153d6565b9060005260206000200154905092915050565b6111a6828260405180602001604052806000815250614316565b613cc7601a83613646565b15613ce45760405162461bcd60e51b815260040161119390615405565b612380565b613cf3828261200a565b6111a657613d0b816001600160a01b0316601461437c565b613d1683602061437c565b604051602001613d27929190615948565b60408051601f198184030181529082905262461bcd60e51b8252611193916004016148a2565b6000612c988383614517565b6000612c98838361460a565b600081815b84518110156116c057613d9682868381518110613d8957613d896153d6565b6020026020010151614659565b915080613da2816153ec565b915050613d6a565b613db2612cd6565b60135460ff1615613df75760405162461bcd60e51b815260206004820152600f60248201526e2120a9a2afaaa924afa32927ad22a760891b6044820152606401611193565b60045460035403811015613e415760405162461bcd60e51b81526020600482015260116024820152704c4f5745525f5448414e5f535550504c5960781b6044820152606401611193565b601255565b600054610100900460ff16613e6d5760405162461bcd60e51b8152600401611193906157f3565b613e7d63ac2ba33360e01b614688565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b836003811115613ec157613ec1614ad1565b02179055505050565b600054610100900460ff16613ef15760405162461bcd60e51b8152600401611193906157f3565b613f0163b964efe960e01b614688565b611d3a630c934a3560e31b614688565b600054610100900460ff16613f385760405162461bcd60e51b8152600401611193906157f3565b600b613f44848261549f565b50600c613f51838261549f565b50600d613f5e828261549f565b50613f6f633d96f4ff60e11b614688565b613f7f6380ac58cd60e01b614688565b613f8f63184371e560e31b614688565b611743635b5e139f60e01b614688565b600054610100900460ff16613fc65760405162461bcd60e51b8152600401611193906157f3565b600e613fd2838261549f565b50600f613fdf828261549f565b50604080518082019091526005815264173539b7b760d91b6020820152601090614009908261549f565b5061401a631f2f406b60e01b614688565b6111a6635b5e139f60e01b614688565b600054610100900460ff166140515760405162461bcd60e51b8152600401611193906157f3565b60128190556140666330f487b560e11b614688565b6140766380ac58cd60e01b614688565b611e1263184371e560e31b614688565b600054610100900460ff166140ad5760405162461bcd60e51b8152600401611193906157f3565b611e75631aa1577160e11b614688565b600054610100900460ff166140e45760405162461bcd60e51b8152600401611193906157f3565b6140f4631a056e7160e01b614688565b611e12600080516020615a1683398151915282613429565b600054610100900460ff166141335760405162461bcd60e51b8152600401611193906157f3565b611e7563714ad8e760e01b614688565b600054610100900460ff1661416a5760405162461bcd60e51b8152600401611193906157f3565b61417a6308b4902960e41b614688565b60005b81518110156111a657818181518110614198576141986153d6565b602090810291909101810151600083815260158352604090819020825181559282015160018401558101516002830180546001600160a01b0319166001600160a01b03909216919091179055606081015160038301556080810151600483015560a0810151600583015560c0810151600683015560e00151600790910155815182908290811061422a5761422a6153d6565b602002602001015160c00151601660008282546142479190615375565b90915550819050614257816153ec565b91505061417d565b600054610100900460ff166142865760405162461bcd60e51b8152600401611193906157f3565b614296633a47bf5160e11b614688565b6142a663152a902d60e11b614688565b6142b663c69dbd8f60e01b614688565b6142c663656cb66560e11b614688565b604080518082019091526001600160a01b038316815261ffff8216602082015261174381613bcd565b600054610100900460ff166128475760405162461bcd60e51b8152600401611193906157f3565b6143208383614709565b6001600160a01b0383163b15611743576003548281035b61434a600086838060010194508661366a565b614367576040516368d2bf6b60e11b815260040160405180910390fd5b81811061433757816003541461283857600080fd5b6060600061438b83600261538d565b614396906002615375565b6001600160401b038111156143ad576143ad614b01565b6040519080825280601f01601f1916602001820160405280156143d7576020820181803683370190505b509050600360fc1b816000815181106143f2576143f26153d6565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110614421576144216153d6565b60200101906001600160f81b031916908160001a905350600061444584600261538d565b614450906001615375565b90505b60018111156144c8576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110614484576144846153d6565b1a60f81b82828151811061449a5761449a6153d6565b60200101906001600160f81b031916908160001a90535060049490941c936144c1816159b7565b9050614453565b508315612c985760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401611193565b6000818152600183016020526040812054801561460057600061453b6001836152ed565b855490915060009061454f906001906152ed565b90508181146145b457600086600001828154811061456f5761456f6153d6565b9060005260206000200154905080876000018481548110614592576145926153d6565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806145c5576145c56159ce565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610faa565b6000915050610faa565b600081815260018301602052604081205461465157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610faa565b506000610faa565b6000818310614675576000828152602084905260409020612c98565b6000838152602083905260409020612c98565b6001600160e01b031980821690036146e15760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401611193565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b600354600082900361472e5760405163b562e8dd60e01b815260040160405180910390fd5b61473b6000848385612e1a565b6001600160a01b038316600090815260086020526040902080546001600160401b018402019055614772836001841460e11b612e26565b6000828152600760205260408120919091556001600160a01b038416908383019083908390600080516020615a368339815191528180a4600183015b8181146147d45780836000600080516020615a36833981519152600080a46001016147ae565b50816000036147f557604051622e076360e81b815260040160405180910390fd5b60035550505050565b6001600160e01b031981168114611e1257600080fd5b60006020828403121561482657600080fd5b8135612c98816147fe565b60006020828403121561484357600080fd5b5035919050565b60005b8381101561486557818101518382015260200161484d565b838111156123805750506000910152565b6000815180845261488e81602086016020860161484a565b601f01601f19169290920160200192915050565b602081526000612c986020830184614876565b6001600160a01b0381168114611e1257600080fd5b80356118fc816148b5565b600080604083850312156148e857600080fd5b82356148f3816148b5565b946020939093013593505050565b6000806040838503121561491457600080fd5b823591506020830135614926816148b5565b809150509250929050565b60008082840361012081121561494657600080fd5b83359250610100601f198201121561495d57600080fd5b506020830190509250929050565b60008060006060848603121561498057600080fd5b833561498b816148b5565b9250602084013561499b816148b5565b929592945050506040919091013590565b600080604083850312156149bf57600080fd5b50508035926020909101359150565b6001600160a01b03929092168252602082015260400190565b60008083601f8401126149f957600080fd5b5081356001600160401b03811115614a1057600080fd5b6020830191508360208260051b85010111156115f757600080fd5b60008060208385031215614a3e57600080fd5b82356001600160401b03811115614a5457600080fd5b614a60858286016149e7565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b81811015614aa457835183529284019291840191600101614a88565b50909695505050505050565b600060208284031215614ac257600080fd5b813560048110612c9857600080fd5b634e487b7160e01b600052602160045260246000fd5b6020810160048310614afb57614afb614ad1565b91905290565b634e487b7160e01b600052604160045260246000fd5b60405161010081016001600160401b0381118282101715614b3a57614b3a614b01565b60405290565b60405161018081016001600160401b0381118282101715614b3a57614b3a614b01565b604051601f8201601f191681016001600160401b0381118282101715614b8b57614b8b614b01565b604052919050565b60006001600160401b03831115614bac57614bac614b01565b614bbf601f8401601f1916602001614b63565b9050828152838383011115614bd357600080fd5b828260208301376000602084830101529392505050565b600082601f830112614bfb57600080fd5b612c9883833560208501614b93565b600060208284031215614c1c57600080fd5b81356001600160401b03811115614c3257600080fd5b61374e84828501614bea565b6020810160068310614afb57614afb614ad1565b60008060208385031215614c6557600080fd5b82356001600160401b0380821115614c7c57600080fd5b818501915085601f830112614c9057600080fd5b813581811115614c9f57600080fd5b866020606083028501011115614cb457600080fd5b60209290920196919550909350505050565b600060208284031215614cd857600080fd5b8135612c98816148b5565b600080600080600060808688031215614cfb57600080fd5b85359450602086013593506040860135925060608601356001600160401b03811115614d2657600080fd5b614d32888289016149e7565b969995985093965092949392505050565b8035600681106118fc57600080fd5b600060208284031215614d6457600080fd5b612c9882614d43565b600080600080600060808688031215614d8557600080fd5b853594506020860135614d97816148b5565b93506040860135925060608601356001600160401b03811115614d2657600080fd5b6001600160a01b0392909216825261ffff16602082015260400190565b8015158114611e1257600080fd5b60008060408385031215614df757600080fd5b8235614e02816148b5565b9150602083013561492681614dd6565b600082601f830112614e2357600080fd5b813560206001600160401b03821115614e3e57614e3e614b01565b614e4c818360051b01614b63565b82815260089290921b84018101918181019086841115614e6b57600080fd5b8286015b84811015614ef1576101008189031215614e895760008081fd5b614e91614b17565b813581528482013585820152604080830135614eac816148b5565b90820152606082810135908201526080808301359082015260a0808301359082015260c0808301359082015260e0808301359082015283529183019161010001614e6f565b509695505050505050565b803561ffff811681146118fc57600080fd5b60008060408385031215614f2157600080fd5b82356001600160401b0380821115614f3857600080fd5b908401906101808287031215614f4d57600080fd5b614f55614b40565b823582811115614f6457600080fd5b614f7088828601614bea565b825250602083013582811115614f8557600080fd5b614f9188828601614bea565b602083015250604083013582811115614fa957600080fd5b614fb588828601614bea565b604083015250606083013582811115614fcd57600080fd5b614fd988828601614bea565b606083015250608083013582811115614ff157600080fd5b614ffd88828601614bea565b60808301525060a083013560a082015260c08301358281111561501f57600080fd5b61502b88828601614e12565b60c08301525061503d60e084016148ca565b60e08201526101009150615052828401614efc565b8282015261012091506150668284016148ca565b82820152610140915061507a8284016148ca565b82820152610160915061508e828401614d43565b828201528094505050506150a4602084016148ca565b90509250929050565b600080600080608085870312156150c357600080fd5b84356150ce816148b5565b935060208501356150de816148b5565b92506040850135915060608501356001600160401b0381111561510057600080fd5b8501601f8101871361511157600080fd5b61512087823560208401614b93565b91505092959194509250565b602080825282518282018190526000919060409081850190868401855b8281101561518057815180516001600160a01b031685528601516001600160601b0316868501529284019290850190600101615149565b5091979650505050505050565b600080600080604085870312156151a357600080fd5b84356001600160401b03808211156151ba57600080fd5b6151c6888389016149e7565b909650945060208701359150808211156151df57600080fd5b818701915087601f8301126151f357600080fd5b81358181111561520257600080fd5b8860208260081b850101111561521757600080fd5b95989497505060200194505050565b6000806000806040858703121561523c57600080fd5b84356001600160401b038082111561525357600080fd5b61525f888389016149e7565b9096509450602087013591508082111561527857600080fd5b50615285878288016149e7565b95989497509550505050565b600080604083850312156152a457600080fd5b82356152af816148b5565b91506020830135614926816148b5565b6000604082840312156152d157600080fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156152ff576152ff6152d7565b500390565b8135815560208201356001820155600281016040830135615324816148b5565b81546001600160a01b0319166001600160a01b0391909116179055606082013560038201556080820135600482015560a0820135600582015560c0820135600682015560e090910135600790910155565b60008219821115615388576153886152d7565b500190565b60008160001904831182151516156153a7576153a76152d7565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826153d1576153d16153ac565b500490565b634e487b7160e01b600052603260045260246000fd5b6000600182016153fe576153fe6152d7565b5060010190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b600181811c9082168061543957607f821691505b6020821081036152d157634e487b7160e01b600052602260045260246000fd5b601f82111561174357600081815260208120601f850160051c810160208610156154805750805b601f850160051c820191505b8181101561151c5782815560010161548c565b81516001600160401b038111156154b8576154b8614b01565b6154cc816154c68454615425565b84615459565b602080601f83116001811461550157600084156154e95750858301515b600019600386901b1c1916600185901b17855561151c565b600085815260208120601f198616915b8281101561553057888601518255948401946001909101908401615511565b508582101561554e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060828403121561557057600080fd5b604051606081018181106001600160401b038211171561559257615592614b01565b6040528235815260208301356155a7816148b5565b60208201526155b860408401614efc565b60408201529392505050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601890820152775354414b41424c455f4e4f545f4c4f434b45525f524f4c4560401b604082015260600190565b60208082526012908201527122ac21a2a2a229afa0a62627a1a0aa24a7a760711b604082015260600190565b60006020828403121561566b57600080fd5b8151612c9881614dd6565b6020808252600f908201526e4e4f545f4c4f434b45525f524f4c4560881b604082015260600190565b602080825260069082015265232927ad22a760d11b604082015260600190565b600083516156d181846020880161484a565b8351908301906156e581836020880161484a565b01949350505050565b6040808252810184905260008560608301825b87811015615731578235615714816148b5565b6001600160a01b0316825260209283019290910190600101615701565b5083810360208501528481526001600160fb1b0385111561575157600080fd5b8460051b915081866020830137600091016020019081529695505050505050565b60006040828403121561578457600080fd5b604051604081018181106001600160401b03821117156157a6576157a6614b01565b60405282356157b4816148b5565b81526157c260208401614efc565b60208201529392505050565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611df590830184614876565b60006020828403121561588357600080fd5b8151612c98816147fe565b60008261589d5761589d6153ac565b500690565b600081546158af81615425565b600182811680156158c757600181146158dc5761590b565b60ff198416875282151583028701945061590b565b8560005260208060002060005b858110156159025781548a8201529084019082016158e9565b50505082870194505b5050505092915050565b600061592182866158a2565b845161593181836020890161484a565b61593d818301866158a2565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b81526000835161597a81601785016020880161484a565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516159ab81602884016020880161484a565b01602801949350505050565b6000816159c6576159c66152d7565b506000190190565b634e487b7160e01b600052603160045260246000fdfe61723a2f2f5f44396b4e3157724e576243713535425341475262544234625333763851415054596d42546853625833412f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efaf9a8bb3cbd6b84fbccefa71ff73e26e798553c6914585a84886212a46a90279a264697066735822122012569abe56bae4f7a3cd5d57159e755fc4872e2c63edee2e4ab24bf748bc2c6664736f6c634300080f0033","deployedBytecode":"0x6080604052600436106104005760003560e01c80637e98034211610216578063c71b0e1c1161011f578063c71b0e1c14610d01578063c723955a14610d17578063c7db289314610d2c578063c87b56dd14610d41578063cad96cca14610d61578063d539139314610d8e578063d547741f14610db0578063d5abeb0114610dd0578063d8b436fd14610de6578063da74222814610e06578063da82b22714610e26578063dbbc853b14610e3b578063dcbe353f14610e50578063dd46706414610e70578063dd89c6fa14610e90578063de6d6d9614610ea5578063e8a3d48514610ec5578063e985e9c514610eda578063ef60ceaf14610f23578063f2fde38b14610f43578063f362136714610f63578063f384702f14610f8557600080fd5b80637e98034214610a9d578063837fe14014610ab2578063859610c614610ac75780638da5cb5b14610ae757806391d1485414610afc578063938e3d7b14610b1c57806395d89b4114610b3c57806399e0dd7c14610b51578063a217fddf14610b71578063a22cb46514610b86578063a341793b14610ba6578063a65dbda414610bbb578063a9852bfb14610bdb578063af121f5414610bfb578063b45a3c0e14610c1c578063b88d4fde14610c3c578063ba4695fd14610c5c578063bd2c18f714610c71578063bf9b7a5714610c91578063c0ac998314610cb2578063c0bb38ff14610cc7578063c29de63014610ce757600080fd5b806336568abe1161031857806336568abe146107d457806342842e0e146107f457806349561cb91461081457806350a5292f146108355780635136dcc71461086357806353367f081461088357806356c022bb146108b0578063572b6c05146108d05780635897f878146108f05780635d36598f146109105780635ea2c91b146109305780636057e0ec146109435780636198e339146109645780636352211e1461098457806364ed2913146109a457806368c7d37c146109c45780636f8b44b0146109e457806370a0823114610a04578063714ad8e714610a24578063715018a614610a385780637313cba914610a4d5780637885fdc714610a6257600080fd5b806301ffc9a714610405578063039af9eb1461043a5780630653aca5146104eb57806306fdde031461053a578063081812fc1461055c578063095ea7b3146105945780631123f2ef146105b6578063167446071461060757806318160ddd1461061c5780631a056e711461063557806320f1bb301461065557806323b872dd14610675578063248a9ca3146106955780632a55205a146106b55780632bb684ad146106e35780632c233067146107105780632cb9b2ac146107305780632d00b587146107465780632f2ff15d146107745780633542aee2146107945780633574a2dd146107b4575b600080fd5b34801561041157600080fd5b50610425610420366004614814565b610f9f565b60405190151581526020015b60405180910390f35b34801561044657600080fd5b506104a2610455366004614831565b60156020526000908152604090208054600182015460028301546003840154600485015460058601546006870154600790970154959694956001600160a01b039094169492939192909188565b6040805198895260208901979097526001600160a01b03909516958701959095526060860192909252608085015260a084015260c083019190915260e082015261010001610431565b3480156104f757600080fd5b5061050b610506366004614831565b610fb0565b60408051825181526020808401516001600160a01b0316908201529181015161ffff1690820152606001610431565b34801561054657600080fd5b5061054f611035565b60405161043191906148a2565b34801561056857600080fd5b5061057c610577366004614831565b611044565b6040516001600160a01b039091168152602001610431565b3480156105a057600080fd5b506105b46105af3660046148d5565b611088565b005b3480156105c257600080fd5b506105f96105d1366004614901565b60009182526018602090815260408084206001600160a01b0393909316845291905290205490565b604051908152602001610431565b34801561061357600080fd5b506105b4611128565b34801561062857600080fd5b50600454600354036105f9565b34801561064157600080fd5b506105b46106503660046148d5565b61113f565b34801561066157600080fd5b506105b4610670366004614931565b6111aa565b34801561068157600080fd5b506105b461069036600461496b565b611390565b3480156106a157600080fd5b506105f96106b0366004614831565b611524565b3480156106c157600080fd5b506106d56106d03660046149ac565b611539565b6040516104319291906149ce565b3480156106ef57600080fd5b506107036106fe366004614a2b565b6115fe565b6040516104319190614a6c565b34801561071c57600080fd5b506105b461072b366004614ab0565b6116c8565b34801561073c57600080fd5b506105f960195481565b34801561075257600080fd5b5060025461076790600160b01b900460ff1681565b6040516104319190614ae7565b34801561078057600080fd5b506105b461078f366004614901565b611727565b3480156107a057600080fd5b506105b46107af3660046148d5565b611748565b3480156107c057600080fd5b506105b46107cf366004614c0a565b611750565b3480156107e057600080fd5b506105b46107ef366004614901565b611764565b34801561080057600080fd5b506105b461080f36600461496b565b6117ee565b34801561082057600080fd5b5060025461042590600160b81b900460ff1681565b34801561084157600080fd5b5060025461085690600160c01b900460ff1681565b6040516104319190614c3e565b34801561086f57600080fd5b506105b461087e366004614c52565b611809565b34801561088f57600080fd5b506105f961089e366004614831565b60176020526000908152604090205481565b3480156108bc57600080fd5b5060205461057c906001600160a01b031681565b3480156108dc57600080fd5b506104256108eb366004614cc6565b61186c565b3480156108fc57600080fd5b506105f961090b366004614831565b611880565b34801561091c57600080fd5b506105b461092b366004614a2b565b611901565b6105b461093e366004614ce3565b6119a4565b34801561094f57600080fd5b5060025461042590600160a01b900460ff1681565b34801561097057600080fd5b506105b461097f366004614831565b611c70565b34801561099057600080fd5b5061057c61099f366004614831565b611cdc565b3480156109b057600080fd5b506105b46109bf366004614d52565b611ce7565b3480156109d057600080fd5b506104256109df366004614d6d565b611d5f565b3480156109f057600080fd5b506105b46109ff366004614831565b611e01565b348015610a1057600080fd5b506105f9610a1f366004614cc6565b611e15565b348015610a3057600080fd5b506001610425565b348015610a4457600080fd5b506105b4611e63565b348015610a5957600080fd5b5061054f611e77565b348015610a6e57600080fd5b50601c54610a8f906001600160a01b03811690600160a01b900461ffff1682565b604051610431929190614db9565b348015610aa957600080fd5b506105f9611f09565b348015610abe57600080fd5b506105b4611f15565b348015610ad357600080fd5b506105b4610ae2366004614a2b565b611f5c565b348015610af357600080fd5b5061057c611ff5565b348015610b0857600080fd5b50610425610b17366004614901565b61200a565b348015610b2857600080fd5b506105b4610b37366004614c0a565b612035565b348015610b4857600080fd5b5061054f612049565b348015610b5d57600080fd5b506105b4610b6c366004614c0a565b612053565b348015610b7d57600080fd5b506105f9600081565b348015610b9257600080fd5b506105b4610ba1366004614de4565b61208a565b348015610bb257600080fd5b5061054f61211f565b348015610bc757600080fd5b506105b4610bd6366004614f0e565b612138565b348015610be757600080fd5b506105b4610bf6366004614c0a565b6122f8565b348015610c0757600080fd5b5060025461042590600160a81b900460ff1681565b348015610c2857600080fd5b50610425610c37366004614831565b61232f565b348015610c4857600080fd5b506105b4610c573660046150ad565b61233c565b348015610c6857600080fd5b506105b4612386565b348015610c7d57600080fd5b506105f9610c8c366004614d6d565b61239d565b348015610c9d57600080fd5b5060025461042590600160c81b900460ff1681565b348015610cbe57600080fd5b5061054f6125ce565b348015610cd357600080fd5b506105b4610ce2366004614cc6565b6125dd565b348015610cf357600080fd5b506011546104259060ff1681565b348015610d0d57600080fd5b506105f960165481565b348015610d2357600080fd5b506105b4612631565b348015610d3857600080fd5b5061054f612690565b348015610d4d57600080fd5b5061054f610d5c366004614831565b6126f7565b348015610d6d57600080fd5b50610d81610d7c366004614831565b612702565b604051610431919061512c565b348015610d9a57600080fd5b506105f9600080516020615a1683398151915281565b348015610dbc57600080fd5b506105b4610dcb366004614901565b6127bd565b348015610ddc57600080fd5b506105f960125481565b348015610df257600080fd5b506105b4610e0136600461518d565b6127d9565b348015610e1257600080fd5b506105b4610e21366004614cc6565b61283f565b348015610e3257600080fd5b506105b4612869565b348015610e4757600080fd5b5061054f6128af565b348015610e5c57600080fd5b5060025461057c906001600160a01b031681565b348015610e7c57600080fd5b506105b4610e8b366004614831565b6128be565b348015610e9c57600080fd5b506105b4612922565b348015610eb157600080fd5b506105b4610ec0366004615226565b61293f565b348015610ed157600080fd5b5061054f612b77565b348015610ee657600080fd5b50610425610ef5366004615291565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205460ff1690565b348015610f2f57600080fd5b506105b4610f3e3660046152bf565b612b86565b348015610f4f57600080fd5b506105b4610f5e366004614cc6565b612ba5565b348015610f6f57600080fd5b506105f9600080516020615a5683398151915281565b348015610f9157600080fd5b506013546104259060ff1681565b6000610faa82612c50565b92915050565b6040805160608101825260008082526020820181905291810182905290610fd8601e84612c8c565b6000818152601d60209081526040918290208251808401845290546001600160a01b03808216835261ffff600160a01b90920482168385019081528551606081018752968752925116928501929092525116908201529392505050565b606061103f612c9f565b905090565b600061104f82612cae565b61106c576040516333d1c03960e21b815260040160405180910390fd5b506000908152600960205260409020546001600160a01b031690565b600061109382611cdc565b9050336001600160a01b038216146110cc576110af8133610ef5565b6110cc576040516367d9dca160e11b815260040160405180910390fd5b60008281526009602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b611130612cd6565b6013805460ff19166001179055565b611159600080516020615a16833981519152610b17612d45565b61119c5760405162461bcd60e51b815260206004820152600f60248201526e4e4f545f4d494e5445525f524f4c4560881b60448201526064015b60405180910390fd5b6111a68282612d4f565b5050565b6111b2612cd6565b60008281526017602052604090205460e082013510156112085760405162461bcd60e51b81526020600482015260116024820152701313d5d15497d512105397d35253951151607a1b6044820152606401611193565b600082815260156020526040902060060154156112765760008281526017602052604090205460c082013510156112765760405162461bcd60e51b81526020600482015260126024820152711313d5d7d49154d154959157d05353d5539560721b6044820152606401611193565b600082815260176020526040902054156112e457600082815260156020526040902060040154608082013510156112e45760405162461bcd60e51b81526020600482015260126024820152711313d5d7d3505617d4115497d5d05313115560721b6044820152606401611193565b60008281526015602052604081206006015460168054919290916113099084906152ed565b9091555050600082815260156020526040902081906113288282615304565b9050508060c00135601660008282546113419190615375565b909155505060125460165411156111a65760405162461bcd60e51b815260206004820152601360248201527213505617d4d55414131657d15610d151511151606a1b6044820152606401611193565b600061139b82612db3565b9050836001600160a01b0316816001600160a01b0316146113ce5760405162a1148160e81b815260040160405180910390fd5b60008281526009602052604090208054338082146001600160a01b0388169091141761141b576113fe8633610ef5565b61141b57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03851661144257604051633a954ecd60e21b815260040160405180910390fd5b61144f8686866001612e1a565b801561145a57600082555b6001600160a01b0386811660009081526008602052604080822080546000190190559187168152208054600101905561149785600160e11b612e26565b600085815260076020526040812091909155600160e11b841690036114ec576001840160008181526007602052604081205490036114ea5760035481146114ea5760008181526007602052604090208490555b505b83856001600160a01b0316876001600160a01b0316600080516020615a3683398151915260405160405180910390a45b505050505050565b6000908152601b602052604090206001015490565b6000828152601d602052604081205481906001600160a01b03161561159e576000848152601d60205260409020546001600160a01b038116906127109061158b90600160a01b900461ffff168661538d565b61159591906153c2565b915091506115f7565b601c546001600160a01b0316158015906115c45750601c54600160a01b900461ffff1615155b156115f057601c546001600160a01b038116906127109061158b90600160a01b900461ffff168661538d565b5060009050805b9250929050565b60606000826001600160401b0381111561161a5761161a614b01565b604051908082528060200260200182016040528015611643578160200160208202803683370190505b50905060005b838110156116c057611672858583818110611666576116666153d6565b9050602002013561232f565b6116ae57848482818110611688576116886153d6565b905060200201358282815181106116a1576116a16153d6565b6020026020010181815250505b806116b8816153ec565b915050611649565b509392505050565b6116d0612cd6565b600254600160b81b900460ff16156116fa5760405162461bcd60e51b815260040161119390615405565b6002805482919060ff60b01b1916600160b01b83600381111561171f5761171f614ad1565b021790555050565b61173082611524565b61173981612e3b565b6117438383612e4c565b505050565b61119c612cd6565b611758612cd6565b600e6111a6828261549f565b61176c612d45565b6001600160a01b0316816001600160a01b0316146117e45760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401611193565b6111a68282612ed3565b6117438383836040518060200160405280600081525061233c565b611811612cd6565b6111a68282808060200260200160405190810160405280939291908181526020016000905b82821015611862576118536060830286013681900381019061555e565b81526020019060010190611836565b5050505050612f58565b6020546001600160a01b0391821691161490565b600060195460165461189291906152ed565b600454600354036012546118a691906152ed565b6118b091906152ed565b600083815260156020526040902060060154909150156118fc576000828152601760209081526040808320546015909252909120600601546118f291906152ed565b610faa9082615375565b919050565b6002601454036119235760405162461bcd60e51b8152600401611193906155c4565b6002601455611940600080516020615a568339815191523361200a565b61195c5760405162461bcd60e51b8152600401611193906155fb565b60005b8181101561199a5761198883838381811061197c5761197c6153d6565b905060200201356130ff565b80611992816153ec565b91505061195f565b5050600160145550565b6002601454036119c65760405162461bcd60e51b8152600401611193906155c4565b600260145560006119d5612d45565b905060006119e6878387878761239d565b905080861115611a265760405162461bcd60e51b815260206004820152600b60248201526a08ab0868a8a88a6be9a82b60ab1b6044820152606401611193565b611a2f87611880565b861115611a4e5760405162461bcd60e51b81526004016111939061562d565b600087815260156020908152604080832060070154601790925290912054611a769088615375565b1115611a945760405162461bcd60e51b81526004016111939061562d565b6000878152601560205260409020600201546001600160a01b0316611b1b576000878152601560205260409020600301543490611ad290889061538d565b1115611b165760405162461bcd60e51b8152602060048201526013602482015272125394d551919250d251539517d05353d55395606a1b6044820152606401611193565b611bcf565b600087815260156020526040902060028101546003909101546001600160a01b03909116906323b872dd9084903090611b55908b9061538d565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015611ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcd9190615659565b505b60008781526018602090815260408083206001600160a01b038616845290915281208054889290611c01908490615375565b909155505060008781526017602052604081208054889290611c24908490615375565b909155505060008781526015602052604090206006015415611c58578560196000828254611c529190615375565b90915550505b611c628287612d4f565b505060016014555050505050565b600260145403611c925760405162461bcd60e51b8152600401611193906155c4565b6002601455611caf600080516020615a568339815191523361200a565b611ccb5760405162461bcd60e51b815260040161119390615676565b611cd4816130ff565b506001601455565b6000610faa82612db3565b611cef612cd6565b600254600160c81b900460ff1615611d3a5760405162461bcd60e51b815260206004820152600e60248201526d131250d15394d157d313d0d2d15160921b6044820152606401611193565b6002805482919060ff60c01b1916600160c01b83600581111561171f5761171f614ad1565b6000611df583838080602002602001604051908101604052809392919081815260200183836020028082843760009201829052508b8152601560205260409020600501549250611df09150899050886040516001600160601b0319606084901b1660208201526034810182905260009060540160405160208183030381529060405280519060200120905092915050565b613166565b90505b95945050505050565b611e09612cd6565b611e128161317c565b50565b60006001600160a01b038216611e3e576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600860205260409020546001600160401b031690565b611e6b612cd6565b611e7560006131f2565b565b6060600e8054611e8690615425565b80601f0160208091040260200160405190810160405280929190818152602001828054611eb290615425565b8015611eff5780601f10611ed457610100808354040283529160200191611eff565b820191906000526020600020905b815481529060010190602001808311611ee257829003601f168201915b5050505050905090565b600061103f601e61324d565b611f1d612cd6565b600254600160a01b900460ff1615611f475760405162461bcd60e51b815260040161119390615405565b6002805460ff60a01b1916600160a01b179055565b600260145403611f7e5760405162461bcd60e51b8152600401611193906155c4565b6002601455611f9b600080516020615a568339815191523361200a565b611fb75760405162461bcd60e51b8152600401611193906155fb565b60005b8181101561199a57611fe3838383818110611fd757611fd76153d6565b90506020020135613257565b80611fed816153ec565b915050611fba565b6000546201000090046001600160a01b031690565b6000918252601b602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61203d612cd6565b600d6111a6828261549f565b606061103f6132a1565b61205b612cd6565b60115460ff161561207e5760405162461bcd60e51b81526004016111939061569f565b600f6111a6828261549f565b336001600160a01b038316036120b35760405163b06307db60e01b815260040160405180910390fd5b336000818152600a602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60025460609061103f90600160c01b900460ff166132b0565b600054610100900460ff16158080156121585750600054600160ff909116105b80612179575061216730612c3d565b158015612179575060005460ff166001145b6121dc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611193565b6000805460ff1916600117905580156121ff576000805461ff0019166101001790555b61220a600083613429565b612213826131f2565b6122238361012001516002613433565b612231836101600151613464565b612248836000015184602001518560400151613494565b61225a836060015184608001516134c6565b6122678360a001516134f7565b61226f613527565b61227882613556565b612280613586565b61228d8360c001516135b5565b6122a08360e001518461010001516135e5565b6122ae836101400151613616565b8015611743576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b612300612cd6565b60115460ff16156123235760405162461bcd60e51b81526004016111939061569f565b60106111a6828261549f565b6000610faa601a83613646565b612347848484611390565b6001600160a01b0383163b15612380576123638484848461366a565b612380576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b61238e612cd6565b6011805460ff19166001179055565b6000858152601560205260408120600401546123e85760405162461bcd60e51b815260206004820152600a6024820152694e4f545f45584953545360b01b6044820152606401611193565b6000868152601560205260409020544210156124345760405162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b6044820152606401611193565b6000868152601560205260409020600101544211156124855760405162461bcd60e51b815260206004820152600d60248201526c1053149150511657d153911151609a1b6044820152606401611193565b60008681526018602090815260408083206001600160a01b03891684528252808320548984526015909252909120600401546124c191906152ed565b60008781526015602052604090206005015490915015611df85760008681526018602090815260408083206001600160a01b0389168452909152902054841161253e5760405162461bcd60e51b815260206004820152600f60248201526e4d415845445f414c4c4f57414e434560881b6044820152606401611193565b61254b8686868686611d5f565b6125895760405162461bcd60e51b815260206004820152600f60248201526e1393d517d0531313d5d31254d51151608a1b6044820152606401611193565b60008681526018602090815260408083206001600160a01b03891684529091528120546125b690866152ed565b9050808211156125c4578091505b5095945050505050565b6060600f8054611e8690615425565b6125e5612cd6565b600254600160a01b900460ff161561260f5760405162461bcd60e51b815260040161119390615405565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b612639612cd6565b600254600160b81b900460ff161561267b5760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401611193565b6002805460ff60b81b1916600160b81b179055565b60606040518060600160405280603181526020016159e5603191396002546126d290600160c01b900460ff1660058111156126cd576126cd614ad1565b613756565b6040516020016126e39291906156bf565b604051602081830303815290604052905090565b6060610faa82613856565b604080516001808252818301909252606091816020015b6040805180820190915260008082526020820152815260200190600190039081612719575050601c5481519192506001600160a01b0316908290600090612762576127626153d6565b60209081029190910101516001600160a01b03919091169052601c548151600160a01b90910461ffff1690829060009061279e5761279e6153d6565b6020908102919091018101516001600160601b03909216910152919050565b6127c682611524565b6127cf81612e3b565b6117438383612ed3565b6127e1612cd6565b60005b8381101561283857612826858583818110612801576128016153d6565b9050602002013584848481811061281a5761281a6153d6565b905061010002016111aa565b80612830816153ec565b9150506127e4565b5050505050565b612847612cd6565b602080546001600160a01b0319166001600160a01b0392909216919091179055565b612871612cd6565b6002805460ff60a81b1916600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b606060108054611e8690615425565b6002601454036128e05760405162461bcd60e51b8152600401611193906155c4565b60026014556128fd600080516020615a568339815191523361200a565b6129195760405162461bcd60e51b815260040161119390615676565b611cd481613257565b61292a612cd6565b6002805460ff60c81b1916600160c81b179055565b61294833613932565b6002546001600160a01b03166129985760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401611193565b600254600160a81b900460ff16156129f25760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401611193565b60005b83811015612b33576000858583818110612a1157612a116153d6565b9050602002016020810190612a269190614cc6565b6001600160a01b031603612a6957612a64838383818110612a4957612a496153d6565b6002546001600160a01b031692602090910201359050613ab7565b612b21565b848482818110612a7b57612a7b6153d6565b9050602002016020810190612a909190614cc6565b6002546001600160a01b039182169163a9059cbb9116858585818110612ab857612ab86153d6565b905060200201356040518363ffffffff1660e01b8152600401612adc9291906149ce565b6020604051808303816000875af1158015612afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1f9190615659565b505b80612b2b816153ec565b9150506129f5565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a584848484604051612b6994939291906156ee565b60405180910390a150505050565b6060600d8054611e8690615425565b612b8e612cd6565b611e12612ba036839003830183615772565b613bcd565b612bad612cd6565b6001600160a01b038116612c125760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611193565b611e12816131f2565b6000612c263361186c565b15612c38575060131936013560601c90565b503390565b6001600160a01b03163b151590565b3390565b60006301ffc9a760e01b6001600160e01b031983161480610faa5750506001600160e01b03191660009081526001602052604090205460ff1690565b6000612c988383613c78565b9392505050565b6060600b8054611e8690615425565b600060035482108015610faa575050600090815260076020526040902054600160e01b161590565b612cde612d45565b6001600160a01b0316612cef611ff5565b6001600160a01b031614611e755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611193565b600061103f612c1b565b60125481612d606004546003540390565b612d6a9190615375565b1115612da95760405162461bcd60e51b815260206004820152600e60248201526d455843454544535f535550504c5960901b6044820152606401611193565b6111a68282613ca2565b600081600354811015612e015760008181526007602052604081205490600160e01b82169003612dff575b80600003612c98575060001901600081815260076020526040902054612dde565b505b604051636f96cda160e11b815260040160405180910390fd5b61238084848484613cbc565b4260a01b176001600160a01b03919091161790565b611e1281612e47612d45565b613ce9565b612e56828261200a565b6111a6576000828152601b602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612e8f612d45565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b612edd828261200a565b156111a6576000828152601b602090815260408083206001600160a01b03851684529091529020805460ff19169055612f14612d45565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b60005b81518110156111a6576000828281518110612f7857612f786153d6565b60200260200101519050612710816040015161ffff1610612fab5760405162461bcd60e51b8152600401611193906157ce565b60208101516001600160a01b03166130245780516000908152601d6020526040902080546001600160b01b03191690558051612fe990601e90613d4d565b5080516040519081527fa2870857763bd9ae76c957f869f16b31c18dd3bb4c7b4d3a4496dc5c57c657f99060200160405180910390a16130ec565b6040805180820182526020808401516001600160a01b0390811683528484015161ffff90811683850190815286516000908152601d90945294909220925183549451909216600160a01b026001600160b01b0319909416911617919091179055805161309290601e90613d59565b50805160208083015160408085015181519485526001600160a01b039092169284019290925261ffff1682820152517f389b70fb0887f01e83784eb1c4c589f740eca53b00ed0f45e41db5d079719abb9181900360600190a15b50806130f7816153ec565b915050612f5b565b61310a601a82613646565b6131435760405162461bcd60e51b815260206004820152600a6024820152691393d517d313d0d2d15160b21b6044820152606401611193565b600881901c6000908152601a602052604090208054600160ff84161b1916905550565b6000826131738584613d65565b14949350505050565b613184612cd6565b61318d81613daa565b60195460165461319d91906152ed565b600454600354036131ae90836152ed565b1015611e125760405162461bcd60e51b81526020600482015260136024820152721313d5d15497d512105397d49154d154959151606a1b6044820152606401611193565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6000610faa825490565b613262601a82613646565b1561327f5760405162461bcd60e51b815260040161119390615405565b600881901c6000908152601a602052604090208054600160ff84161b17905550565b6060600c8054611e8690615425565b606060068260058111156132c6576132c6614ad1565b60ff1611156132d457600080fd5b8160058111156132e6576132e6614ad1565b60000361331057505060408051808201909152600781526604342455f4343360cc1b602082015290565b81600581111561332257613322614ad1565b60010361334c57505060408051808201909152600781526621a122afa2a1a960c91b602082015290565b81600581111561335e5761335e614ad1565b60020361338957505060408051808201909152600881526721a122afa722a1a960c11b602082015290565b81600581111561339b5761339b614ad1565b6003036133c957505060408051808201909152600b81526a4342455f4e4543525f485360a81b602082015290565b8160058111156133db576133db614ad1565b60040361340457505060408051808201909152600681526521a122afa82960d11b602082015290565b50506040805180820190915260098152684342455f50525f485360b81b602082015290565b6111a68282612e4c565b600054610100900460ff1661345a5760405162461bcd60e51b8152600401611193906157f3565b6111a68282613e46565b600054610100900460ff1661348b5760405162461bcd60e51b8152600401611193906157f3565b611e1281613eca565b600054610100900460ff166134bb5760405162461bcd60e51b8152600401611193906157f3565b611743838383613f11565b600054610100900460ff166134ed5760405162461bcd60e51b8152600401611193906157f3565b6111a68282613f9f565b600054610100900460ff1661351e5760405162461bcd60e51b8152600401611193906157f3565b611e128161402a565b600054610100900460ff1661354e5760405162461bcd60e51b8152600401611193906157f3565b611e75614086565b600054610100900460ff1661357d5760405162461bcd60e51b8152600401611193906157f3565b611e12816140bd565b600054610100900460ff166135ad5760405162461bcd60e51b8152600401611193906157f3565b611e7561410c565b600054610100900460ff166135dc5760405162461bcd60e51b8152600401611193906157f3565b611e1281614143565b600054610100900460ff1661360c5760405162461bcd60e51b8152600401611193906157f3565b6111a6828261425f565b600054610100900460ff1661363d5760405162461bcd60e51b8152600401611193906157f3565b611e12816142ef565b600881901c600090815260208390526040902054600160ff83161b16151592915050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a029061369f90339089908890889060040161583e565b6020604051808303816000875af19250505080156136da575060408051601f3d908101601f191682019092526136d791810190615871565b60015b613738573d808015613708576040519150601f19603f3d011682016040523d82523d6000602084013e61370d565b606091505b508051600003613730576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b60608160000361377d5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156137a75780613791816153ec565b91506137a09050600a836153c2565b9150613781565b6000816001600160401b038111156137c1576137c1614b01565b6040519080825280601f01601f1916602001820160405280156137eb576020820181803683370190505b5090505b841561374e576138006001836152ed565b915061380d600a8661588e565b613818906030615375565b60f81b81838151811061382d5761382d6153d6565b60200101906001600160f81b031916908160001a90535061384f600a866153c2565b94506137ef565b60606000600f805461386790615425565b9050116138fe57600e805461387b90615425565b80601f01602080910402602001604051908101604052809291908181526020018280546138a790615425565b80156138f45780601f106138c9576101008083540402835291602001916138f4565b820191906000526020600020905b8154815290600101906020018083116138d757829003601f168201915b5050505050610faa565b600f61390983613756565b601060405160200161391d93929190615915565b60405160208183030381529060405292915050565b6003600254600160b01b900460ff16600381111561395257613952614ad1565b036139915760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401611193565b60028054600160b01b900460ff1660038111156139b0576139b0614ad1565b036139b85750565b6001600254600160b01b900460ff1660038111156139d8576139d8614ad1565b03613a34576002546001600160a01b03828116911614611e125760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401611193565b6000600254600160b01b900460ff166003811115613a5457613a54614ad1565b03611e1257806001600160a01b0316613a6b611ff5565b6001600160a01b031614611e125760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401611193565b80471015613b075760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611193565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613b54576040519150601f19603f3d011682016040523d82523d6000602084013e613b59565b606091505b50509050806117435760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401611193565b612710816020015161ffff1610613bf65760405162461bcd60e51b8152600401611193906157ce565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601c80546001600160b01b031916909217600160a01b9091021790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe4192613c6d9291614db9565b60405180910390a150565b6000826000018281548110613c8f57613c8f6153d6565b9060005260206000200154905092915050565b6111a6828260405180602001604052806000815250614316565b613cc7601a83613646565b15613ce45760405162461bcd60e51b815260040161119390615405565b612380565b613cf3828261200a565b6111a657613d0b816001600160a01b0316601461437c565b613d1683602061437c565b604051602001613d27929190615948565b60408051601f198184030181529082905262461bcd60e51b8252611193916004016148a2565b6000612c988383614517565b6000612c98838361460a565b600081815b84518110156116c057613d9682868381518110613d8957613d896153d6565b6020026020010151614659565b915080613da2816153ec565b915050613d6a565b613db2612cd6565b60135460ff1615613df75760405162461bcd60e51b815260206004820152600f60248201526e2120a9a2afaaa924afa32927ad22a760891b6044820152606401611193565b60045460035403811015613e415760405162461bcd60e51b81526020600482015260116024820152704c4f5745525f5448414e5f535550504c5960781b6044820152606401611193565b601255565b600054610100900460ff16613e6d5760405162461bcd60e51b8152600401611193906157f3565b613e7d63ac2ba33360e01b614688565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b836003811115613ec157613ec1614ad1565b02179055505050565b600054610100900460ff16613ef15760405162461bcd60e51b8152600401611193906157f3565b613f0163b964efe960e01b614688565b611d3a630c934a3560e31b614688565b600054610100900460ff16613f385760405162461bcd60e51b8152600401611193906157f3565b600b613f44848261549f565b50600c613f51838261549f565b50600d613f5e828261549f565b50613f6f633d96f4ff60e11b614688565b613f7f6380ac58cd60e01b614688565b613f8f63184371e560e31b614688565b611743635b5e139f60e01b614688565b600054610100900460ff16613fc65760405162461bcd60e51b8152600401611193906157f3565b600e613fd2838261549f565b50600f613fdf828261549f565b50604080518082019091526005815264173539b7b760d91b6020820152601090614009908261549f565b5061401a631f2f406b60e01b614688565b6111a6635b5e139f60e01b614688565b600054610100900460ff166140515760405162461bcd60e51b8152600401611193906157f3565b60128190556140666330f487b560e11b614688565b6140766380ac58cd60e01b614688565b611e1263184371e560e31b614688565b600054610100900460ff166140ad5760405162461bcd60e51b8152600401611193906157f3565b611e75631aa1577160e11b614688565b600054610100900460ff166140e45760405162461bcd60e51b8152600401611193906157f3565b6140f4631a056e7160e01b614688565b611e12600080516020615a1683398151915282613429565b600054610100900460ff166141335760405162461bcd60e51b8152600401611193906157f3565b611e7563714ad8e760e01b614688565b600054610100900460ff1661416a5760405162461bcd60e51b8152600401611193906157f3565b61417a6308b4902960e41b614688565b60005b81518110156111a657818181518110614198576141986153d6565b602090810291909101810151600083815260158352604090819020825181559282015160018401558101516002830180546001600160a01b0319166001600160a01b03909216919091179055606081015160038301556080810151600483015560a0810151600583015560c0810151600683015560e00151600790910155815182908290811061422a5761422a6153d6565b602002602001015160c00151601660008282546142479190615375565b90915550819050614257816153ec565b91505061417d565b600054610100900460ff166142865760405162461bcd60e51b8152600401611193906157f3565b614296633a47bf5160e11b614688565b6142a663152a902d60e11b614688565b6142b663c69dbd8f60e01b614688565b6142c663656cb66560e11b614688565b604080518082019091526001600160a01b038316815261ffff8216602082015261174381613bcd565b600054610100900460ff166128475760405162461bcd60e51b8152600401611193906157f3565b6143208383614709565b6001600160a01b0383163b15611743576003548281035b61434a600086838060010194508661366a565b614367576040516368d2bf6b60e11b815260040160405180910390fd5b81811061433757816003541461283857600080fd5b6060600061438b83600261538d565b614396906002615375565b6001600160401b038111156143ad576143ad614b01565b6040519080825280601f01601f1916602001820160405280156143d7576020820181803683370190505b509050600360fc1b816000815181106143f2576143f26153d6565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110614421576144216153d6565b60200101906001600160f81b031916908160001a905350600061444584600261538d565b614450906001615375565b90505b60018111156144c8576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110614484576144846153d6565b1a60f81b82828151811061449a5761449a6153d6565b60200101906001600160f81b031916908160001a90535060049490941c936144c1816159b7565b9050614453565b508315612c985760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401611193565b6000818152600183016020526040812054801561460057600061453b6001836152ed565b855490915060009061454f906001906152ed565b90508181146145b457600086600001828154811061456f5761456f6153d6565b9060005260206000200154905080876000018481548110614592576145926153d6565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806145c5576145c56159ce565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610faa565b6000915050610faa565b600081815260018301602052604081205461465157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610faa565b506000610faa565b6000818310614675576000828152602084905260409020612c98565b6000838152602083905260409020612c98565b6001600160e01b031980821690036146e15760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401611193565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b600354600082900361472e5760405163b562e8dd60e01b815260040160405180910390fd5b61473b6000848385612e1a565b6001600160a01b038316600090815260086020526040902080546001600160401b018402019055614772836001841460e11b612e26565b6000828152600760205260408120919091556001600160a01b038416908383019083908390600080516020615a368339815191528180a4600183015b8181146147d45780836000600080516020615a36833981519152600080a46001016147ae565b50816000036147f557604051622e076360e81b815260040160405180910390fd5b60035550505050565b6001600160e01b031981168114611e1257600080fd5b60006020828403121561482657600080fd5b8135612c98816147fe565b60006020828403121561484357600080fd5b5035919050565b60005b8381101561486557818101518382015260200161484d565b838111156123805750506000910152565b6000815180845261488e81602086016020860161484a565b601f01601f19169290920160200192915050565b602081526000612c986020830184614876565b6001600160a01b0381168114611e1257600080fd5b80356118fc816148b5565b600080604083850312156148e857600080fd5b82356148f3816148b5565b946020939093013593505050565b6000806040838503121561491457600080fd5b823591506020830135614926816148b5565b809150509250929050565b60008082840361012081121561494657600080fd5b83359250610100601f198201121561495d57600080fd5b506020830190509250929050565b60008060006060848603121561498057600080fd5b833561498b816148b5565b9250602084013561499b816148b5565b929592945050506040919091013590565b600080604083850312156149bf57600080fd5b50508035926020909101359150565b6001600160a01b03929092168252602082015260400190565b60008083601f8401126149f957600080fd5b5081356001600160401b03811115614a1057600080fd5b6020830191508360208260051b85010111156115f757600080fd5b60008060208385031215614a3e57600080fd5b82356001600160401b03811115614a5457600080fd5b614a60858286016149e7565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b81811015614aa457835183529284019291840191600101614a88565b50909695505050505050565b600060208284031215614ac257600080fd5b813560048110612c9857600080fd5b634e487b7160e01b600052602160045260246000fd5b6020810160048310614afb57614afb614ad1565b91905290565b634e487b7160e01b600052604160045260246000fd5b60405161010081016001600160401b0381118282101715614b3a57614b3a614b01565b60405290565b60405161018081016001600160401b0381118282101715614b3a57614b3a614b01565b604051601f8201601f191681016001600160401b0381118282101715614b8b57614b8b614b01565b604052919050565b60006001600160401b03831115614bac57614bac614b01565b614bbf601f8401601f1916602001614b63565b9050828152838383011115614bd357600080fd5b828260208301376000602084830101529392505050565b600082601f830112614bfb57600080fd5b612c9883833560208501614b93565b600060208284031215614c1c57600080fd5b81356001600160401b03811115614c3257600080fd5b61374e84828501614bea565b6020810160068310614afb57614afb614ad1565b60008060208385031215614c6557600080fd5b82356001600160401b0380821115614c7c57600080fd5b818501915085601f830112614c9057600080fd5b813581811115614c9f57600080fd5b866020606083028501011115614cb457600080fd5b60209290920196919550909350505050565b600060208284031215614cd857600080fd5b8135612c98816148b5565b600080600080600060808688031215614cfb57600080fd5b85359450602086013593506040860135925060608601356001600160401b03811115614d2657600080fd5b614d32888289016149e7565b969995985093965092949392505050565b8035600681106118fc57600080fd5b600060208284031215614d6457600080fd5b612c9882614d43565b600080600080600060808688031215614d8557600080fd5b853594506020860135614d97816148b5565b93506040860135925060608601356001600160401b03811115614d2657600080fd5b6001600160a01b0392909216825261ffff16602082015260400190565b8015158114611e1257600080fd5b60008060408385031215614df757600080fd5b8235614e02816148b5565b9150602083013561492681614dd6565b600082601f830112614e2357600080fd5b813560206001600160401b03821115614e3e57614e3e614b01565b614e4c818360051b01614b63565b82815260089290921b84018101918181019086841115614e6b57600080fd5b8286015b84811015614ef1576101008189031215614e895760008081fd5b614e91614b17565b813581528482013585820152604080830135614eac816148b5565b90820152606082810135908201526080808301359082015260a0808301359082015260c0808301359082015260e0808301359082015283529183019161010001614e6f565b509695505050505050565b803561ffff811681146118fc57600080fd5b60008060408385031215614f2157600080fd5b82356001600160401b0380821115614f3857600080fd5b908401906101808287031215614f4d57600080fd5b614f55614b40565b823582811115614f6457600080fd5b614f7088828601614bea565b825250602083013582811115614f8557600080fd5b614f9188828601614bea565b602083015250604083013582811115614fa957600080fd5b614fb588828601614bea565b604083015250606083013582811115614fcd57600080fd5b614fd988828601614bea565b606083015250608083013582811115614ff157600080fd5b614ffd88828601614bea565b60808301525060a083013560a082015260c08301358281111561501f57600080fd5b61502b88828601614e12565b60c08301525061503d60e084016148ca565b60e08201526101009150615052828401614efc565b8282015261012091506150668284016148ca565b82820152610140915061507a8284016148ca565b82820152610160915061508e828401614d43565b828201528094505050506150a4602084016148ca565b90509250929050565b600080600080608085870312156150c357600080fd5b84356150ce816148b5565b935060208501356150de816148b5565b92506040850135915060608501356001600160401b0381111561510057600080fd5b8501601f8101871361511157600080fd5b61512087823560208401614b93565b91505092959194509250565b602080825282518282018190526000919060409081850190868401855b8281101561518057815180516001600160a01b031685528601516001600160601b0316868501529284019290850190600101615149565b5091979650505050505050565b600080600080604085870312156151a357600080fd5b84356001600160401b03808211156151ba57600080fd5b6151c6888389016149e7565b909650945060208701359150808211156151df57600080fd5b818701915087601f8301126151f357600080fd5b81358181111561520257600080fd5b8860208260081b850101111561521757600080fd5b95989497505060200194505050565b6000806000806040858703121561523c57600080fd5b84356001600160401b038082111561525357600080fd5b61525f888389016149e7565b9096509450602087013591508082111561527857600080fd5b50615285878288016149e7565b95989497509550505050565b600080604083850312156152a457600080fd5b82356152af816148b5565b91506020830135614926816148b5565b6000604082840312156152d157600080fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156152ff576152ff6152d7565b500390565b8135815560208201356001820155600281016040830135615324816148b5565b81546001600160a01b0319166001600160a01b0391909116179055606082013560038201556080820135600482015560a0820135600582015560c0820135600682015560e090910135600790910155565b60008219821115615388576153886152d7565b500190565b60008160001904831182151516156153a7576153a76152d7565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826153d1576153d16153ac565b500490565b634e487b7160e01b600052603260045260246000fd5b6000600182016153fe576153fe6152d7565b5060010190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b600181811c9082168061543957607f821691505b6020821081036152d157634e487b7160e01b600052602260045260246000fd5b601f82111561174357600081815260208120601f850160051c810160208610156154805750805b601f850160051c820191505b8181101561151c5782815560010161548c565b81516001600160401b038111156154b8576154b8614b01565b6154cc816154c68454615425565b84615459565b602080601f83116001811461550157600084156154e95750858301515b600019600386901b1c1916600185901b17855561151c565b600085815260208120601f198616915b8281101561553057888601518255948401946001909101908401615511565b508582101561554e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060828403121561557057600080fd5b604051606081018181106001600160401b038211171561559257615592614b01565b6040528235815260208301356155a7816148b5565b60208201526155b860408401614efc565b60408201529392505050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601890820152775354414b41424c455f4e4f545f4c4f434b45525f524f4c4560401b604082015260600190565b60208082526012908201527122ac21a2a2a229afa0a62627a1a0aa24a7a760711b604082015260600190565b60006020828403121561566b57600080fd5b8151612c9881614dd6565b6020808252600f908201526e4e4f545f4c4f434b45525f524f4c4560881b604082015260600190565b602080825260069082015265232927ad22a760d11b604082015260600190565b600083516156d181846020880161484a565b8351908301906156e581836020880161484a565b01949350505050565b6040808252810184905260008560608301825b87811015615731578235615714816148b5565b6001600160a01b0316825260209283019290910190600101615701565b5083810360208501528481526001600160fb1b0385111561575157600080fd5b8460051b915081866020830137600091016020019081529695505050505050565b60006040828403121561578457600080fd5b604051604081018181106001600160401b03821117156157a6576157a6614b01565b60405282356157b4816148b5565b81526157c260208401614efc565b60208201529392505050565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611df590830184614876565b60006020828403121561588357600080fd5b8151612c98816147fe565b60008261589d5761589d6153ac565b500690565b600081546158af81615425565b600182811680156158c757600181146158dc5761590b565b60ff198416875282151583028701945061590b565b8560005260208060002060005b858110156159025781548a8201529084019082016158e9565b50505082870194505b5050505092915050565b600061592182866158a2565b845161593181836020890161484a565b61593d818301866158a2565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b81526000835161597a81601785016020880161484a565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516159ab81602884016020880161484a565b01602801949350505050565b6000816159c6576159c66152d7565b506000190190565b634e487b7160e01b600052603160045260246000fdfe61723a2f2f5f44396b4e3157724e576243713535425341475262544234625333763851415054596d42546853625833412f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efaf9a8bb3cbd6b84fbccefa71ff73e26e798553c6914585a84886212a46a90279a264697066735822122012569abe56bae4f7a3cd5d57159e755fc4872e2c63edee2e4ab24bf748bc2c6664736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"common/ILicenseExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ILicenseExtension","sourceName":"contracts/common/LicenseExtension.sol","abi":[{"inputs":[],"name":"lockLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum LicenseVersion","name":"licenseVersion","type":"uint8"}],"name":"setLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"common/IWithdrawExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IWithdrawExtension","sourceName":"contracts/common/WithdrawExtension.sol","abi":[{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"common/LicenseExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"LicenseExtension","sourceName":"contracts/common/LicenseExtension.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"getLicenseName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersion","outputs":[{"internalType":"enum LicenseVersion","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersionLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum LicenseVersion","name":"_licenseVersion","type":"uint8"}],"name":"setLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"common/meta-transactions/ERC2771ContextOwnable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC2771ContextOwnable","sourceName":"contracts/common/meta-transactions/ERC2771ContextOwnable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"_trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"trustedForwarder","type":"address"}],"name":"setTrustedForwarder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"common/meta-transactions/UnorderedForwarder":{"address":{"1":"0xC97b52877Aa14987198eA8cABaa678B566baadF1","3":"0xa9dB7831CC85960dB16bEf4914e4d3Ce0630d2B0","4":"0x7902091CBbd1da28adF2d3112FC9745Bbe228aD9","5":"0x3F684a639d5d2D7ccD3daA31E259920E13c67743","25":"0xae19F12838b3513246769Ed8636D565F75Dcb1c7","56":"0xae19F12838b3513246769Ed8636D565F75Dcb1c7","65":"0x5C7C7E058dF26669Ce5623d8B0a6C4d8Ac3EF4fD","66":"0xD3B8fb60442288b185Db9d3B8c4cacccaa3451C0","97":"0x0c63546bFa4096C592d2BfDd9Ac9b6adBB181ea7","137":"0xb1780c61a8b0714bF08E8c403f6cd5c1374F6AA9","250":"0x58E403CDcade1095f0FF8d76de0dF62Ff0EaD4a2","280":"0x084Cf787198420f20e0128573B0b00cEF3FE98De","4002":"0x58E403CDcade1095f0FF8d76de0dF62Ff0EaD4a2","9000":"0x5C7C7E058dF26669Ce5623d8B0a6C4d8Ac3EF4fD","42161":"0xeED9E0a45B31F9dd7b2D55CABe3742Ddca116532","43113":"0xfdc3a9eB43e0fa62cA206D9F51A1cDdf9dD5f1e8","43114":"0xF8ABF0b720378bb25b3f73c01BDBd1A7EC558FB6","421611":"0xe61cc06a7435EC72507c028a577BbAD42E67eAc1","arbitrumOne":"0xeED9E0a45B31F9dd7b2D55CABe3742Ddca116532","arbitrumTestnet":"0xe61cc06a7435EC72507c028a577BbAD42E67eAc1","avalanche":"0xF8ABF0b720378bb25b3f73c01BDBd1A7EC558FB6","avalancheFujiTestnet":"0xfdc3a9eB43e0fa62cA206D9F51A1cDdf9dD5f1e8","bsc":"0xae19F12838b3513246769Ed8636D565F75Dcb1c7","bscTestnet":"0x0c63546bFa4096C592d2BfDd9Ac9b6adBB181ea7","cronos":"0xae19F12838b3513246769Ed8636D565F75Dcb1c7","evmosTestnet":"0x5C7C7E058dF26669Ce5623d8B0a6C4d8Ac3EF4fD","ftmTestnet":"0x58E403CDcade1095f0FF8d76de0dF62Ff0EaD4a2","goerli":"0x3F684a639d5d2D7ccD3daA31E259920E13c67743","mainnet":"0xC97b52877Aa14987198eA8cABaa678B566baadF1","okcMainnet":"0xD3B8fb60442288b185Db9d3B8c4cacccaa3451C0","okcTestnet":"0x5C7C7E058dF26669Ce5623d8B0a6C4d8Ac3EF4fD","opera":"0x58E403CDcade1095f0FF8d76de0dF62Ff0EaD4a2","polygon":"0xb1780c61a8b0714bF08E8c403f6cd5c1374F6AA9","rinkeby":"0x7902091CBbd1da28adF2d3112FC9745Bbe228aD9","ropsten":"0xa9dB7831CC85960dB16bEf4914e4d3Ce0630d2B0","zksyncTestnet":"0x084Cf787198420f20e0128573B0b00cEF3FE98De"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"UnorderedForwarder","sourceName":"contracts/common/meta-transactions/UnorderedForwarder.sol","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"minGasPrice","type":"uint256"},{"internalType":"uint256","name":"maxGasPrice","type":"uint256"},{"internalType":"uint256","name":"expiresAt","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct UnorderedForwarder.MetaTransaction[]","name":"mtxs","type":"tuple[]"},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"name":"batchExecute","outputs":[{"internalType":"bytes[]","name":"returnResults","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"minGasPrice","type":"uint256"},{"internalType":"uint256","name":"maxGasPrice","type":"uint256"},{"internalType":"uint256","name":"expiresAt","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct UnorderedForwarder.MetaTransaction","name":"mtx","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"execute","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"minGasPrice","type":"uint256"},{"internalType":"uint256","name":"maxGasPrice","type":"uint256"},{"internalType":"uint256","name":"expiresAt","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct UnorderedForwarder.MetaTransaction","name":"mtx","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"verify","outputs":[{"internalType":"bytes32","name":"mtxHash","type":"bytes32"}],"stateMutability":"view","type":"function"}],"bytecode":"0x61014060405234801561001157600080fd5b5060408051808201825260128152712ab737b93232b932b22337b93bb0b93232b960711b602080830191825283518085019094526005845264302e302e3160d81b908401528151902060e08190527fae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc1991638118856101008190524660a0529192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6100fd8184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c0526101205250506001600055506101179050565b60805160a05160c05160e0516101005161012051610faf610166600039600061082a0152600061087901526000610854015260006107ad015260006107d7015260006108010152610faf6000f3fe6080604052600436106100345760003560e01c8063b0565b2714610039578063b122ea941461006c578063cd74662f1461008c575b600080fd5b34801561004557600080fd5b50610059610054366004610ba3565b6100ac565b6040519081526020015b60405180910390f35b61007f61007a366004610c86565b6102d5565b6040516100639190610d4d565b61009f61009a366004610ba3565b6104a4565b6040516100639190610daf565b60006101957f2bbaa6c701d9ecd9e324adef5727bb11883e2c24df1dd4c8f19e4e038b3734666100df6020870187610dc2565b6100ef6040880160208901610dc2565b6040880135606089013560808a013560a08b013560c08c013561011560e08e018e610deb565b604051610123929190610e31565b60408051918290038220602083019a909a526001600160a01b0398891690820152969095166060870152608086019390935260a085019190915260c084015260e0830152610100820152610120810191909152610140016040516020818303038152906040528051906020012061055e565b9050428460a00135116101dd5760405162461bcd60e51b815260206004820152600b60248201526a1195d117d156141254915160aa1b60448201526064015b60405180910390fd5b6101ea6020850185610dc2565b6001600160a01b031661023584848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086939250506105b29050565b6001600160a01b0316146102835760405162461bcd60e51b81526020600482015260156024820152744657445f494e56414c49445f5349474e415455524560581b60448201526064016101d4565b600081815260016020526040902054156102ce5760405162461bcd60e51b815260206004820152600c60248201526b1195d117d49154131056515160a21b60448201526064016101d4565b9392505050565b60606002600054036102f95760405162461bcd60e51b81526004016101d490610e41565b6002600090815561030a3447610e8e565b90508483146103555760405162461bcd60e51b81526020600482015260176024820152764657445f4d49534d415443485f5349474e41545552455360481b60448201526064016101d4565b846001600160401b0381111561036d5761036d610ea5565b6040519080825280602002602001820160405280156103a057816020015b606081526020019060019003908161038b5790505b50915060005b8581101561042c576103fe8787838181106103c3576103c3610ebb565b90506020028101906103d59190610ed1565b8686848181106103e7576103e7610ebb565b90506020028101906103f99190610deb565b6105d6565b83828151811061041057610410610ebb565b60200260200101819052508061042590610ef1565b90506103a6565b50600047341161043c573461043e565b475b9050801561047557604051339082156108fc029083906000818181858888f19350505050158015610473573d6000803e3d6000fd5b505b50478111156104965760405162461bcd60e51b81526004016101d490610f0a565b506001600055949350505050565b60606002600054036104c85760405162461bcd60e51b81526004016101d490610e41565b600260009081556104d93447610e8e565b90506104e68585856105d6565b915060004734116104f757346104f9565b475b9050801561053057604051339082156108fc029083906000818181858888f1935050505015801561052e573d6000803e3d6000fd5b505b50478111156105515760405162461bcd60e51b81526004016101d490610f0a565b5060016000559392505050565b60006105ac61056b6107a0565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b92915050565b60008060006105c185856108c7565b915091506105ce8161090c565b509392505050565b60603a8460600135111580156105f0575083608001353a11155b61062e5760405162461bcd60e51b815260206004820152600f60248201526e4657445f494e56414c49445f47415360881b60448201526064016101d4565b47846040013511156106765760405162461bcd60e51b81526020600482015260116024820152704657445f494e56414c49445f56414c554560781b60448201526064016101d4565b60006106838585856100ac565b6000818152600160209081526040808320439055929350909182916106ac918901908901610dc2565b6001600160a01b031660408801356106c760e08a018a610deb565b6106d460208c018c610dc2565b6040516020016106e693929190610f30565b60408051601f198184030181529082905261070091610f51565b60006040518083038185875af1925050503d806000811461073d576040519150601f19603f3d011682016040523d82523d6000602084013e610742565b606091505b5091509150816107965780511561075c5780518082602001fd5b60405162461bcd60e51b815260206004820152600f60248201526e1195d117d0d0531317d19052531151608a1b60448201526064016101d4565b9695505050505050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156107f957507f000000000000000000000000000000000000000000000000000000000000000046145b1561082357507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008082516041036108fd5760208301516040840151606085015160001a6108f187828585610ac0565b94509450505050610905565b506000905060025b9250929050565b600081600481111561092057610920610f63565b036109285750565b600181600481111561093c5761093c610f63565b036109845760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b60448201526064016101d4565b600281600481111561099857610998610f63565b036109e55760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016101d4565b60038160048111156109f9576109f9610f63565b03610a515760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016101d4565b6004816004811115610a6557610a65610f63565b03610abd5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016101d4565b50565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831115610aed5750600090506003610b9a565b8460ff16601b14158015610b0557508460ff16601c14155b15610b165750600090506004610b9a565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610b6a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610b9357600060019250925050610b9a565b9150600090505b94509492505050565b600080600060408486031215610bb857600080fd5b83356001600160401b0380821115610bcf57600080fd5b908501906101008288031215610be457600080fd5b90935060208501359080821115610bfa57600080fd5b818601915086601f830112610c0e57600080fd5b813581811115610c1d57600080fd5b876020828501011115610c2f57600080fd5b6020830194508093505050509250925092565b60008083601f840112610c5457600080fd5b5081356001600160401b03811115610c6b57600080fd5b6020830191508360208260051b850101111561090557600080fd5b60008060008060408587031215610c9c57600080fd5b84356001600160401b0380821115610cb357600080fd5b610cbf88838901610c42565b90965094506020870135915080821115610cd857600080fd5b50610ce587828801610c42565b95989497509550505050565b60005b83811015610d0c578181015183820152602001610cf4565b83811115610d1b576000848401525b50505050565b60008151808452610d39816020860160208601610cf1565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610da257603f19888603018452610d90858351610d21565b94509285019290850190600101610d74565b5092979650505050505050565b6020815260006102ce6020830184610d21565b600060208284031215610dd457600080fd5b81356001600160a01b03811681146102ce57600080fd5b6000808335601e19843603018112610e0257600080fd5b8301803591506001600160401b03821115610e1c57600080fd5b60200191503681900382131561090557600080fd5b8183823760009101908152919050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082821015610ea057610ea0610e78565b500390565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000823560fe19833603018112610ee757600080fd5b9190910192915050565b600060018201610f0357610f03610e78565b5060010190565b6020808252600c908201526b4657445f4554485f4c45414b60a01b604082015260600190565b8284823760609190911b6001600160601b0319169101908152601401919050565b60008251610ee7818460208701610cf1565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220f161075f024f4dbd6172b0d2e10a2cb4a25e9e7b673387b3f33c10564fc7b2b664736f6c634300080f0033","deployedBytecode":"0x6080604052600436106100345760003560e01c8063b0565b2714610039578063b122ea941461006c578063cd74662f1461008c575b600080fd5b34801561004557600080fd5b50610059610054366004610ba3565b6100ac565b6040519081526020015b60405180910390f35b61007f61007a366004610c86565b6102d5565b6040516100639190610d4d565b61009f61009a366004610ba3565b6104a4565b6040516100639190610daf565b60006101957f2bbaa6c701d9ecd9e324adef5727bb11883e2c24df1dd4c8f19e4e038b3734666100df6020870187610dc2565b6100ef6040880160208901610dc2565b6040880135606089013560808a013560a08b013560c08c013561011560e08e018e610deb565b604051610123929190610e31565b60408051918290038220602083019a909a526001600160a01b0398891690820152969095166060870152608086019390935260a085019190915260c084015260e0830152610100820152610120810191909152610140016040516020818303038152906040528051906020012061055e565b9050428460a00135116101dd5760405162461bcd60e51b815260206004820152600b60248201526a1195d117d156141254915160aa1b60448201526064015b60405180910390fd5b6101ea6020850185610dc2565b6001600160a01b031661023584848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086939250506105b29050565b6001600160a01b0316146102835760405162461bcd60e51b81526020600482015260156024820152744657445f494e56414c49445f5349474e415455524560581b60448201526064016101d4565b600081815260016020526040902054156102ce5760405162461bcd60e51b815260206004820152600c60248201526b1195d117d49154131056515160a21b60448201526064016101d4565b9392505050565b60606002600054036102f95760405162461bcd60e51b81526004016101d490610e41565b6002600090815561030a3447610e8e565b90508483146103555760405162461bcd60e51b81526020600482015260176024820152764657445f4d49534d415443485f5349474e41545552455360481b60448201526064016101d4565b846001600160401b0381111561036d5761036d610ea5565b6040519080825280602002602001820160405280156103a057816020015b606081526020019060019003908161038b5790505b50915060005b8581101561042c576103fe8787838181106103c3576103c3610ebb565b90506020028101906103d59190610ed1565b8686848181106103e7576103e7610ebb565b90506020028101906103f99190610deb565b6105d6565b83828151811061041057610410610ebb565b60200260200101819052508061042590610ef1565b90506103a6565b50600047341161043c573461043e565b475b9050801561047557604051339082156108fc029083906000818181858888f19350505050158015610473573d6000803e3d6000fd5b505b50478111156104965760405162461bcd60e51b81526004016101d490610f0a565b506001600055949350505050565b60606002600054036104c85760405162461bcd60e51b81526004016101d490610e41565b600260009081556104d93447610e8e565b90506104e68585856105d6565b915060004734116104f757346104f9565b475b9050801561053057604051339082156108fc029083906000818181858888f1935050505015801561052e573d6000803e3d6000fd5b505b50478111156105515760405162461bcd60e51b81526004016101d490610f0a565b5060016000559392505050565b60006105ac61056b6107a0565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b92915050565b60008060006105c185856108c7565b915091506105ce8161090c565b509392505050565b60603a8460600135111580156105f0575083608001353a11155b61062e5760405162461bcd60e51b815260206004820152600f60248201526e4657445f494e56414c49445f47415360881b60448201526064016101d4565b47846040013511156106765760405162461bcd60e51b81526020600482015260116024820152704657445f494e56414c49445f56414c554560781b60448201526064016101d4565b60006106838585856100ac565b6000818152600160209081526040808320439055929350909182916106ac918901908901610dc2565b6001600160a01b031660408801356106c760e08a018a610deb565b6106d460208c018c610dc2565b6040516020016106e693929190610f30565b60408051601f198184030181529082905261070091610f51565b60006040518083038185875af1925050503d806000811461073d576040519150601f19603f3d011682016040523d82523d6000602084013e610742565b606091505b5091509150816107965780511561075c5780518082602001fd5b60405162461bcd60e51b815260206004820152600f60248201526e1195d117d0d0531317d19052531151608a1b60448201526064016101d4565b9695505050505050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156107f957507f000000000000000000000000000000000000000000000000000000000000000046145b1561082357507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008082516041036108fd5760208301516040840151606085015160001a6108f187828585610ac0565b94509450505050610905565b506000905060025b9250929050565b600081600481111561092057610920610f63565b036109285750565b600181600481111561093c5761093c610f63565b036109845760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b60448201526064016101d4565b600281600481111561099857610998610f63565b036109e55760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016101d4565b60038160048111156109f9576109f9610f63565b03610a515760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016101d4565b6004816004811115610a6557610a65610f63565b03610abd5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016101d4565b50565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831115610aed5750600090506003610b9a565b8460ff16601b14158015610b0557508460ff16601c14155b15610b165750600090506004610b9a565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610b6a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610b9357600060019250925050610b9a565b9150600090505b94509492505050565b600080600060408486031215610bb857600080fd5b83356001600160401b0380821115610bcf57600080fd5b908501906101008288031215610be457600080fd5b90935060208501359080821115610bfa57600080fd5b818601915086601f830112610c0e57600080fd5b813581811115610c1d57600080fd5b876020828501011115610c2f57600080fd5b6020830194508093505050509250925092565b60008083601f840112610c5457600080fd5b5081356001600160401b03811115610c6b57600080fd5b6020830191508360208260051b850101111561090557600080fd5b60008060008060408587031215610c9c57600080fd5b84356001600160401b0380821115610cb357600080fd5b610cbf88838901610c42565b90965094506020870135915080821115610cd857600080fd5b50610ce587828801610c42565b95989497509550505050565b60005b83811015610d0c578181015183820152602001610cf4565b83811115610d1b576000848401525b50505050565b60008151808452610d39816020860160208601610cf1565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610da257603f19888603018452610d90858351610d21565b94509285019290850190600101610d74565b5092979650505050505050565b6020815260006102ce6020830184610d21565b600060208284031215610dd457600080fd5b81356001600160a01b03811681146102ce57600080fd5b6000808335601e19843603018112610e0257600080fd5b8301803591506001600160401b03821115610e1c57600080fd5b60200191503681900382131561090557600080fd5b8183823760009101908152919050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082821015610ea057610ea0610e78565b500390565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000823560fe19833603018112610ee757600080fd5b9190910192915050565b600060018201610f0357610f03610e78565b5060010190565b6020808252600c908201526b4657445f4554485f4c45414b60a01b604082015260600190565b8284823760609190911b6001600160601b0319169101908152601401919050565b60008251610ee7818460208701610cf1565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220f161075f024f4dbd6172b0d2e10a2cb4a25e9e7b673387b3f33c10564fc7b2b664736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"common/WithdrawExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"WithdrawExtension","sourceName":"contracts/common/WithdrawExtension.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"factory/Clones":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Clones","sourceName":"contracts/factory/Clones.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220abbd88f31dba513c72c273bb900fe17a0559a862def97a9371f209883652bea264736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220abbd88f31dba513c72c273bb900fe17a0559a862def97a9371f209883652bea264736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"factory/FlairFactory":{"address":{"1":"0x3e368e34ae2cd9f2617f397ce6b6310fe1caeaed","3":"0xC7F92f1d76Ff5D29F7C90e748ef0B2e26827c785","4":"0x19F6502840Aa62f5cf2fCC1d48D82A6814381A99","5":"0xBa483d24122aDd9BB0E2334E31288f4865e54A83","25":"0x5dB0493c729533e5A57e9885c376c41Ceb54C56E","56":"0x5C7C7E058dF26669Ce5623d8B0a6C4d8Ac3EF4fD","65":"0x5dB0493c729533e5A57e9885c376c41Ceb54C56E","66":"0x9Ce515bA286bE13248cF65e2BF3c0Ec7114341B7","97":"0x00Dc371b553B7be2dF5D5E42e49b4F9236f588B7","137":"0xe5Ae096B0c110b93ebb7ce90153789707297EcF8","250":"0x8D6B1DEe1Ce4901D917eAD895A955F19F783AC8a","280":"0xBBc0735dB658A32AdcC413502F597FBBA2Aa6598","4002":"0x8D6B1DEe1Ce4901D917eAD895A955F19F783AC8a","9000":"0x5dB0493c729533e5A57e9885c376c41Ceb54C56E","42161":"0xf56F052e7F19C8ceF2FBf3E881587D14De95C70a","43113":"0xa878c0aeAaA76Ec7A370b76Ac5BcAc4364eD60e1","43114":"0x58E403CDcade1095f0FF8d76de0dF62Ff0EaD4a2","421611":"0x6BCbc974500905Bb6EaBFd34BE3c6B05ee7F2499","arbitrumOne":"0xf56F052e7F19C8ceF2FBf3E881587D14De95C70a","arbitrumTestnet":"0x6BCbc974500905Bb6EaBFd34BE3c6B05ee7F2499","avalanche":"0x58E403CDcade1095f0FF8d76de0dF62Ff0EaD4a2","avalancheFujiTestnet":"0xa878c0aeAaA76Ec7A370b76Ac5BcAc4364eD60e1","bsc":"0x5C7C7E058dF26669Ce5623d8B0a6C4d8Ac3EF4fD","bscTestnet":"0x00Dc371b553B7be2dF5D5E42e49b4F9236f588B7","cronos":"0x5dB0493c729533e5A57e9885c376c41Ceb54C56E","evmosTestnet":"0x5dB0493c729533e5A57e9885c376c41Ceb54C56E","ftmTestnet":"0x8D6B1DEe1Ce4901D917eAD895A955F19F783AC8a","goerli":"0xBa483d24122aDd9BB0E2334E31288f4865e54A83","mainnet":"0x3e368e34ae2cd9f2617f397ce6b6310fe1caeaed","okcMainnet":"0x9Ce515bA286bE13248cF65e2BF3c0Ec7114341B7","okcTestnet":"0x5dB0493c729533e5A57e9885c376c41Ceb54C56E","opera":"0x8D6B1DEe1Ce4901D917eAD895A955F19F783AC8a","polygon":"0xe5Ae096B0c110b93ebb7ce90153789707297EcF8","rinkeby":"0x19F6502840Aa62f5cf2fCC1d48D82A6814381A99","ropsten":"0xC7F92f1d76Ff5D29F7C90e748ef0B2e26827c785","zksyncTestnet":"0xBBc0735dB658A32AdcC413502F597FBBA2Aa6598"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"FlairFactory","sourceName":"contracts/factory/FlairFactory.sol","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"deployer","type":"address"},{"indexed":true,"internalType":"address","name":"proxyAddress","type":"address"}],"name":"ProxyCreated","type":"event"},{"anonymous":false,"inputs":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"cloneDeterministicSimple","outputs":[{"internalType":"address","name":"deployedProxy","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"predictDeterministicSimple","outputs":[{"internalType":"address","name":"deployedProxy","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b506200001d336200002d565b6200002762000088565b62000377565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620000a95750600054600160ff909116105b80620000d95750620000c630620001bd60201b62000a6f1760201c565b158015620000d9575060005460ff166001145b620001425760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000166576000805461ff0019166101001790555b62000173336000620001cc565b8015620001ba576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6001600160a01b03163b151590565b600054610100900460ff16620001f65760405162461bcd60e51b8152600401620001399062000316565b62000202828262000206565b5050565b600054610100900460ff16620002305760405162461bcd60e51b8152600401620001399062000316565b6200024263ac2ba33360e01b62000292565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b83600381111562000289576200028962000361565b02179055505050565b6001600160e01b03198082169003620002ee5760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640162000139565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b6113ee80620003876000396000f3fe6080604052600436106100d95760003560e01c806301ffc9a7146100de57806310db94b9146101135780632c2330671461014b5780632d00b5871461016d57806347791ece1461019b57806349561cb9146101ae5780636057e0ec146101cf578063715018a6146101f05780638129fc1c14610205578063837fe1401461021a5780638da5cb5b1461022f578063af121f5414610244578063c0bb38ff14610265578063c723955a14610285578063da82b2271461029a578063dcbe353f146102af578063de6d6d96146102cf578063f2fde38b146102ef575b600080fd5b3480156100ea57600080fd5b506100fe6100f9366004611019565b61030f565b60405190151581526020015b60405180910390f35b34801561011f57600080fd5b5061013361012e36600461105f565b61034f565b6040516001600160a01b03909116815260200161010a565b34801561015757600080fd5b5061016b610166366004611089565b61038f565b005b34801561017957600080fd5b5060025461018e90600160b01b900460ff1681565b60405161010a91906110c0565b6101336101a93660046110e8565b6103f7565b3480156101ba57600080fd5b506002546100fe90600160b81b900460ff1681565b3480156101db57600080fd5b506002546100fe90600160a01b900460ff1681565b3480156101fc57600080fd5b5061016b61052c565b34801561021157600080fd5b5061016b610540565b34801561022657600080fd5b5061016b61065b565b34801561023b57600080fd5b506101336106a2565b34801561025057600080fd5b506002546100fe90600160a81b900460ff1681565b34801561027157600080fd5b5061016b61028036600461116e565b6106b7565b34801561029157600080fd5b5061016b61070b565b3480156102a657600080fd5b5061016b61076a565b3480156102bb57600080fd5b50600254610133906001600160a01b031681565b3480156102db57600080fd5b5061016b6102ea3660046111d4565b6107b0565b3480156102fb57600080fd5b5061016b61030a36600461116e565b6109f9565b60006301ffc9a760e01b6001600160e01b03198316148061034957506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b600080338360405160200161036592919061123f565b6040516020818303038152906040528051906020012090506103878482610a7e565b949350505050565b610397610aeb565b600254600160b81b900460ff16156103ca5760405162461bcd60e51b81526004016103c19061125c565b60405180910390fd5b6002805482919060ff60b01b1916600160b01b8360038111156103ef576103ef6110aa565b021790555050565b600080338560405160200161040d92919061123f565b60405160208183030381529060405280519060200120905061042f8682610b4a565b915082156104ed57600080836001600160a01b0316868660405161045492919061127c565b6000604051808303816000865af19150503d8060008114610491576040519150601f19603f3d011682016040523d82523d6000602084013e610496565b606091505b5091509150816104ea578051156104b05780518082602001fd5b60405162461bcd60e51b815260206004820152600f60248201526e4641494c45445f544f5f434c4f4e4560881b60448201526064016103c1565b50505b6040516001600160a01b0383169033907f9678a1e87ca9f1a37dc659a97b39d812d98cd236947e1b53b3d0d6fd346acb6e90600090a350949350505050565b610534610aeb565b61053e6000610be4565b565b600054610100900460ff16158080156105605750600054600160ff909116105b80610581575061056f30610a6f565b158015610581575060005460ff166001145b6105e45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103c1565b6000805460ff191660011790558015610607576000805461ff0019166101001790555b610612336000610c3f565b8015610658576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b610663610aeb565b600254600160a01b900460ff161561068d5760405162461bcd60e51b81526004016103c19061125c565b6002805460ff60a01b1916600160a01b179055565b6000546201000090046001600160a01b031690565b6106bf610aeb565b600254600160a01b900460ff16156106e95760405162461bcd60e51b81526004016103c19061125c565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b610713610aeb565b600254600160b81b900460ff16156107555760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b60448201526064016103c1565b6002805460ff60b81b1916600160b81b179055565b610772610aeb565b6002805460ff60a81b1916600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b6107b933610c74565b6002546001600160a01b03166108095760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b60448201526064016103c1565b600254600160a81b900460ff16156108635760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b454460448201526064016103c1565b60005b838110156109b55760008585838181106108825761088261128c565b9050602002016020810190610897919061116e565b6001600160a01b0316036108da576108d58383838181106108ba576108ba61128c565b6002546001600160a01b031692602090910201359050610df9565b6109a3565b8484828181106108ec576108ec61128c565b9050602002016020810190610901919061116e565b6002546001600160a01b039182169163a9059cbb91168585858181106109295761092961128c565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af115801561097d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a191906112a2565b505b806109ad816112c4565b915050610866565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a5848484846040516109eb94939291906112eb565b60405180910390a150505050565b610a01610aeb565b6001600160a01b038116610a665760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103c1565b61065881610be4565b6001600160a01b03163b151590565b6000610ae4838330604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b8152606093841b60148201526f5af43d82803e903d91602b57fd5bf3ff60801b6028820152921b6038830152604c8201526037808220606c830152605591012090565b9392505050565b33610af46106a2565b6001600160a01b03161461053e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c1565b6000604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528360601b60148201526e5af43d82803e903d91602b57fd5bf360881b6028820152826037826000f59150506001600160a01b0381166103495760405162461bcd60e51b8152602060048201526017602482015276115490cc4c4d8dce8818dc99585d194c8819985a5b1959604a1b60448201526064016103c1565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff16610c665760405162461bcd60e51b81526004016103c19061136d565b610c708282610f14565b5050565b6003600254600160b01b900460ff166003811115610c9457610c946110aa565b03610cd35760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b60448201526064016103c1565b60028054600160b01b900460ff166003811115610cf257610cf26110aa565b03610cfa5750565b6001600254600160b01b900460ff166003811115610d1a57610d1a6110aa565b03610d76576002546001600160a01b038281169116146106585760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b60448201526064016103c1565b6000600254600160b01b900460ff166003811115610d9657610d966110aa565b0361065857806001600160a01b0316610dad6106a2565b6001600160a01b0316146106585760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b60448201526064016103c1565b80471015610e495760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016103c1565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610e96576040519150601f19603f3d011682016040523d82523d6000602084013e610e9b565b606091505b5050905080610f0f5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b60648201526084016103c1565b505050565b600054610100900460ff16610f3b5760405162461bcd60e51b81526004016103c19061136d565b610f4b63ac2ba33360e01b610f98565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b836003811115610f8f57610f8f6110aa565b02179055505050565b6001600160e01b03198082169003610ff15760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b60448201526064016103c1565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60006020828403121561102b57600080fd5b81356001600160e01b031981168114610ae457600080fd5b80356001600160a01b038116811461105a57600080fd5b919050565b6000806040838503121561107257600080fd5b61107b83611043565b946020939093013593505050565b60006020828403121561109b57600080fd5b813560048110610ae457600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106110e257634e487b7160e01b600052602160045260246000fd5b91905290565b600080600080606085870312156110fe57600080fd5b61110785611043565b93506020850135925060408501356001600160401b038082111561112a57600080fd5b818701915087601f83011261113e57600080fd5b81358181111561114d57600080fd5b88602082850101111561115f57600080fd5b95989497505060200194505050565b60006020828403121561118057600080fd5b610ae482611043565b60008083601f84011261119b57600080fd5b5081356001600160401b038111156111b257600080fd5b6020830191508360208260051b85010111156111cd57600080fd5b9250929050565b600080600080604085870312156111ea57600080fd5b84356001600160401b038082111561120157600080fd5b61120d88838901611189565b9096509450602087013591508082111561122657600080fd5b5061123387828801611189565b95989497509550505050565b60609290921b6001600160601b0319168252601482015260340190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156112b457600080fd5b81518015158114610ae457600080fd5b6000600182016112e457634e487b7160e01b600052601160045260246000fd5b5060010190565b6040808252810184905260008560608301825b8781101561132c576001600160a01b0361131784611043565b168252602092830192909101906001016112fe565b5083810360208501528481526001600160fb1b0385111561134c57600080fd5b8460051b915081866020830137600091016020019081529695505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea2646970667358221220204c052f09a4672bed84d24cba877f9c6c38ed3b29e1185164d7f505ab95deb964736f6c634300080f0033","deployedBytecode":"0x6080604052600436106100d95760003560e01c806301ffc9a7146100de57806310db94b9146101135780632c2330671461014b5780632d00b5871461016d57806347791ece1461019b57806349561cb9146101ae5780636057e0ec146101cf578063715018a6146101f05780638129fc1c14610205578063837fe1401461021a5780638da5cb5b1461022f578063af121f5414610244578063c0bb38ff14610265578063c723955a14610285578063da82b2271461029a578063dcbe353f146102af578063de6d6d96146102cf578063f2fde38b146102ef575b600080fd5b3480156100ea57600080fd5b506100fe6100f9366004611019565b61030f565b60405190151581526020015b60405180910390f35b34801561011f57600080fd5b5061013361012e36600461105f565b61034f565b6040516001600160a01b03909116815260200161010a565b34801561015757600080fd5b5061016b610166366004611089565b61038f565b005b34801561017957600080fd5b5060025461018e90600160b01b900460ff1681565b60405161010a91906110c0565b6101336101a93660046110e8565b6103f7565b3480156101ba57600080fd5b506002546100fe90600160b81b900460ff1681565b3480156101db57600080fd5b506002546100fe90600160a01b900460ff1681565b3480156101fc57600080fd5b5061016b61052c565b34801561021157600080fd5b5061016b610540565b34801561022657600080fd5b5061016b61065b565b34801561023b57600080fd5b506101336106a2565b34801561025057600080fd5b506002546100fe90600160a81b900460ff1681565b34801561027157600080fd5b5061016b61028036600461116e565b6106b7565b34801561029157600080fd5b5061016b61070b565b3480156102a657600080fd5b5061016b61076a565b3480156102bb57600080fd5b50600254610133906001600160a01b031681565b3480156102db57600080fd5b5061016b6102ea3660046111d4565b6107b0565b3480156102fb57600080fd5b5061016b61030a36600461116e565b6109f9565b60006301ffc9a760e01b6001600160e01b03198316148061034957506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b600080338360405160200161036592919061123f565b6040516020818303038152906040528051906020012090506103878482610a7e565b949350505050565b610397610aeb565b600254600160b81b900460ff16156103ca5760405162461bcd60e51b81526004016103c19061125c565b60405180910390fd5b6002805482919060ff60b01b1916600160b01b8360038111156103ef576103ef6110aa565b021790555050565b600080338560405160200161040d92919061123f565b60405160208183030381529060405280519060200120905061042f8682610b4a565b915082156104ed57600080836001600160a01b0316868660405161045492919061127c565b6000604051808303816000865af19150503d8060008114610491576040519150601f19603f3d011682016040523d82523d6000602084013e610496565b606091505b5091509150816104ea578051156104b05780518082602001fd5b60405162461bcd60e51b815260206004820152600f60248201526e4641494c45445f544f5f434c4f4e4560881b60448201526064016103c1565b50505b6040516001600160a01b0383169033907f9678a1e87ca9f1a37dc659a97b39d812d98cd236947e1b53b3d0d6fd346acb6e90600090a350949350505050565b610534610aeb565b61053e6000610be4565b565b600054610100900460ff16158080156105605750600054600160ff909116105b80610581575061056f30610a6f565b158015610581575060005460ff166001145b6105e45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103c1565b6000805460ff191660011790558015610607576000805461ff0019166101001790555b610612336000610c3f565b8015610658576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b610663610aeb565b600254600160a01b900460ff161561068d5760405162461bcd60e51b81526004016103c19061125c565b6002805460ff60a01b1916600160a01b179055565b6000546201000090046001600160a01b031690565b6106bf610aeb565b600254600160a01b900460ff16156106e95760405162461bcd60e51b81526004016103c19061125c565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b610713610aeb565b600254600160b81b900460ff16156107555760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b60448201526064016103c1565b6002805460ff60b81b1916600160b81b179055565b610772610aeb565b6002805460ff60a81b1916600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b6107b933610c74565b6002546001600160a01b03166108095760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b60448201526064016103c1565b600254600160a81b900460ff16156108635760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b454460448201526064016103c1565b60005b838110156109b55760008585838181106108825761088261128c565b9050602002016020810190610897919061116e565b6001600160a01b0316036108da576108d58383838181106108ba576108ba61128c565b6002546001600160a01b031692602090910201359050610df9565b6109a3565b8484828181106108ec576108ec61128c565b9050602002016020810190610901919061116e565b6002546001600160a01b039182169163a9059cbb91168585858181106109295761092961128c565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af115801561097d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a191906112a2565b505b806109ad816112c4565b915050610866565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a5848484846040516109eb94939291906112eb565b60405180910390a150505050565b610a01610aeb565b6001600160a01b038116610a665760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103c1565b61065881610be4565b6001600160a01b03163b151590565b6000610ae4838330604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b8152606093841b60148201526f5af43d82803e903d91602b57fd5bf3ff60801b6028820152921b6038830152604c8201526037808220606c830152605591012090565b9392505050565b33610af46106a2565b6001600160a01b03161461053e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c1565b6000604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528360601b60148201526e5af43d82803e903d91602b57fd5bf360881b6028820152826037826000f59150506001600160a01b0381166103495760405162461bcd60e51b8152602060048201526017602482015276115490cc4c4d8dce8818dc99585d194c8819985a5b1959604a1b60448201526064016103c1565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff16610c665760405162461bcd60e51b81526004016103c19061136d565b610c708282610f14565b5050565b6003600254600160b01b900460ff166003811115610c9457610c946110aa565b03610cd35760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b60448201526064016103c1565b60028054600160b01b900460ff166003811115610cf257610cf26110aa565b03610cfa5750565b6001600254600160b01b900460ff166003811115610d1a57610d1a6110aa565b03610d76576002546001600160a01b038281169116146106585760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b60448201526064016103c1565b6000600254600160b01b900460ff166003811115610d9657610d966110aa565b0361065857806001600160a01b0316610dad6106a2565b6001600160a01b0316146106585760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b60448201526064016103c1565b80471015610e495760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016103c1565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610e96576040519150601f19603f3d011682016040523d82523d6000602084013e610e9b565b606091505b5050905080610f0f5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b60648201526084016103c1565b505050565b600054610100900460ff16610f3b5760405162461bcd60e51b81526004016103c19061136d565b610f4b63ac2ba33360e01b610f98565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b836003811115610f8f57610f8f6110aa565b02179055505050565b6001600160e01b03198082169003610ff15760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b60448201526064016103c1565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60006020828403121561102b57600080fd5b81356001600160e01b031981168114610ae457600080fd5b80356001600160a01b038116811461105a57600080fd5b919050565b6000806040838503121561107257600080fd5b61107b83611043565b946020939093013593505050565b60006020828403121561109b57600080fd5b813560048110610ae457600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106110e257634e487b7160e01b600052602160045260246000fd5b91905290565b600080600080606085870312156110fe57600080fd5b61110785611043565b93506020850135925060408501356001600160401b038082111561112a57600080fd5b818701915087601f83011261113e57600080fd5b81358181111561114d57600080fd5b88602082850101111561115f57600080fd5b95989497505060200194505050565b60006020828403121561118057600080fd5b610ae482611043565b60008083601f84011261119b57600080fd5b5081356001600160401b038111156111b257600080fd5b6020830191508360208260051b85010111156111cd57600080fd5b9250929050565b600080600080604085870312156111ea57600080fd5b84356001600160401b038082111561120157600080fd5b61120d88838901611189565b9096509450602087013591508082111561122657600080fd5b5061123387828801611189565b95989497509550505050565b60609290921b6001600160601b0319168252601482015260340190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156112b457600080fd5b81518015158114610ae457600080fd5b6000600182016112e457634e487b7160e01b600052601160045260246000fd5b5060010190565b6040808252810184905260008560608301825b8781101561132c576001600160a01b0361131784611043565b168252602092830192909101906001016112fe565b5083810360208501528481526001600160fb1b0385111561134c57600080fd5b8460051b915081866020830137600091016020019081529695505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea2646970667358221220204c052f09a4672bed84d24cba877f9c6c38ed3b29e1185164d7f505ab95deb964736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"factory/FlairFactoryNewable":{"address":{"3":"0x107323fC6180D032B522214AF88d7A3083D67827","4":"0x0c96A89454B5Ba2d349E0BdC832F82B7Ec11cE2f","5":"0xb5A05196Fdda3b680fdA6E17565f6707E9365752","25":"0x5C7C7E058dF26669Ce5623d8B0a6C4d8Ac3EF4fD","66":"0x6a239F882f3aB169829DC2149d04C2Adb5C63368","137":"0xb55f346bcB5835CA39606a296fe1eb0309777BD2","250":"0xb31c8f06F99Be1285Cb1998949F47E1988f38b23","280":"0x08CB0BAFe324fa147CcB2bB784366e44Db71387E","4002":"0xb31c8f06F99Be1285Cb1998949F47E1988f38b23","43113":"0x97BA377E12dCA8a81b9d304F5e27D179E6ca1FBA","43114":"0xFf3B2524F0BA31FdeA8DE0506F82978c3ce8fFe6","421611":"0xFf6e39A766c55B5f56E58572B8C7bA54ef57acaB","arbitrumTestnet":"0xFf6e39A766c55B5f56E58572B8C7bA54ef57acaB","avalanche":"0xFf3B2524F0BA31FdeA8DE0506F82978c3ce8fFe6","avalancheFujiTestnet":"0x97BA377E12dCA8a81b9d304F5e27D179E6ca1FBA","cronos":"0x5C7C7E058dF26669Ce5623d8B0a6C4d8Ac3EF4fD","ftmTestnet":"0xb31c8f06F99Be1285Cb1998949F47E1988f38b23","goerli":"0xb5A05196Fdda3b680fdA6E17565f6707E9365752","okcMainnet":"0x6a239F882f3aB169829DC2149d04C2Adb5C63368","opera":"0xb31c8f06F99Be1285Cb1998949F47E1988f38b23","polygon":"0xb55f346bcB5835CA39606a296fe1eb0309777BD2","rinkeby":"0x0c96A89454B5Ba2d349E0BdC832F82B7Ec11cE2f","ropsten":"0x107323fC6180D032B522214AF88d7A3083D67827","zksyncTestnet":"0x08CB0BAFe324fa147CcB2bB784366e44Db71387E"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"FlairFactoryNewable","sourceName":"contracts/factory/FlairFactoryNewable.sol","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"deployer","type":"address"},{"indexed":true,"internalType":"address","name":"proxyAddress","type":"address"}],"name":"ProxyCreated","type":"event"},{"anonymous":false,"inputs":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"cloneDeterministicSimple","outputs":[{"internalType":"address","name":"deployedProxy","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b506200001d336200002d565b6200002762000088565b62000377565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620000a95750600054600160ff909116105b80620000d95750620000c630620001bd60201b62000a001760201c565b158015620000d9575060005460ff166001145b620001425760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000166576000805461ff0019166101001790555b62000173336000620001cc565b8015620001ba576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6001600160a01b03163b151590565b600054610100900460ff16620001f65760405162461bcd60e51b8152600401620001399062000316565b62000202828262000206565b5050565b600054610100900460ff16620002305760405162461bcd60e51b8152600401620001399062000316565b6200024263ac2ba33360e01b62000292565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b83600381111562000289576200028962000361565b02179055505050565b6001600160e01b03198082169003620002ee5760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640162000139565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b6113be80620003876000396000f3fe6080604052600436106100ce5760003560e01c806301ffc9a7146100d35780632c233067146101085780632d00b5871461012a57806347791ece1461015857806349561cb9146101785780636057e0ec14610199578063715018a6146101ba5780638129fc1c146101cf578063837fe140146101e45780638da5cb5b146101f9578063af121f541461020e578063c0bb38ff1461022f578063c723955a1461024f578063da82b22714610264578063dcbe353f14610279578063de6d6d9614610299578063f2fde38b146102b9575b600080fd5b3480156100df57600080fd5b506100f36100ee366004610eb0565b6102d9565b60405190151581526020015b60405180910390f35b34801561011457600080fd5b50610128610123366004610ee1565b610319565b005b34801561013657600080fd5b5060025461014b90600160b01b900460ff1681565b6040516100ff9190610f18565b61016b610166366004610f5c565b610381565b6040516100ff9190610fe2565b34801561018457600080fd5b506002546100f390600160b81b900460ff1681565b3480156101a557600080fd5b506002546100f390600160a01b900460ff1681565b3480156101c657600080fd5b506101286104bd565b3480156101db57600080fd5b506101286104d1565b3480156101f057600080fd5b506101286105ec565b34801561020557600080fd5b5061016b610633565b34801561021a57600080fd5b506002546100f390600160a81b900460ff1681565b34801561023b57600080fd5b5061012861024a366004610ff6565b610648565b34801561025b57600080fd5b5061012861069c565b34801561027057600080fd5b506101286106fb565b34801561028557600080fd5b5060025461016b906001600160a01b031681565b3480156102a557600080fd5b506101286102b436600461105c565b610741565b3480156102c557600080fd5b506101286102d4366004610ff6565b61098a565b60006301ffc9a760e01b6001600160e01b03198316148061031357506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b610321610a0f565b600254600160b81b900460ff16156103545760405162461bcd60e51b815260040161034b906110c7565b60405180910390fd5b6002805482919060ff60b01b1916600160b01b83600381111561037957610379610f02565b021790555050565b600080848660405161039290610ea3565b61039c9190610fe2565b8190604051809103906000f59050801580156103bc573d6000803e3d6000fd5b509150819050821561047e57600080836001600160a01b031686866040516103e59291906110e7565b6000604051808303816000865af19150503d8060008114610422576040519150601f19603f3d011682016040523d82523d6000602084013e610427565b606091505b50915091508161047b578051156104415780518082602001fd5b60405162461bcd60e51b815260206004820152600f60248201526e4641494c45445f544f5f434c4f4e4560881b604482015260640161034b565b50505b6040516001600160a01b0383169033907f9678a1e87ca9f1a37dc659a97b39d812d98cd236947e1b53b3d0d6fd346acb6e90600090a350949350505050565b6104c5610a0f565b6104cf6000610a6e565b565b600054610100900460ff16158080156104f15750600054600160ff909116105b80610512575061050030610a00565b158015610512575060005460ff166001145b6105755760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161034b565b6000805460ff191660011790558015610598576000805461ff0019166101001790555b6105a3336000610ac9565b80156105e9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6105f4610a0f565b600254600160a01b900460ff161561061e5760405162461bcd60e51b815260040161034b906110c7565b6002805460ff60a01b1916600160a01b179055565b6000546201000090046001600160a01b031690565b610650610a0f565b600254600160a01b900460ff161561067a5760405162461bcd60e51b815260040161034b906110c7565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6106a4610a0f565b600254600160b81b900460ff16156106e65760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b604482015260640161034b565b6002805460ff60b81b1916600160b81b179055565b610703610a0f565b6002805460ff60a81b1916600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b61074a33610afe565b6002546001600160a01b031661079a5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b604482015260640161034b565b600254600160a81b900460ff16156107f45760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b4544604482015260640161034b565b60005b83811015610946576000858583818110610813576108136110f7565b90506020020160208101906108289190610ff6565b6001600160a01b03160361086b5761086683838381811061084b5761084b6110f7565b6002546001600160a01b031692602090910201359050610c83565b610934565b84848281811061087d5761087d6110f7565b90506020020160208101906108929190610ff6565b6002546001600160a01b039182169163a9059cbb91168585858181106108ba576108ba6110f7565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af115801561090e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610932919061110d565b505b8061093e8161112f565b9150506107f7565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a58484848460405161097c9493929190611156565b60405180910390a150505050565b610992610a0f565b6001600160a01b0381166109f75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161034b565b6105e981610a6e565b6001600160a01b03163b151590565b33610a18610633565b6001600160a01b0316146104cf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161034b565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff16610af05760405162461bcd60e51b815260040161034b906111d8565b610afa8282610d9e565b5050565b6003600254600160b01b900460ff166003811115610b1e57610b1e610f02565b03610b5d5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b604482015260640161034b565b60028054600160b01b900460ff166003811115610b7c57610b7c610f02565b03610b845750565b6001600254600160b01b900460ff166003811115610ba457610ba4610f02565b03610c00576002546001600160a01b038281169116146105e95760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b604482015260640161034b565b6000600254600160b01b900460ff166003811115610c2057610c20610f02565b036105e957806001600160a01b0316610c37610633565b6001600160a01b0316146105e95760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b604482015260640161034b565b80471015610cd35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161034b565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610d20576040519150601f19603f3d011682016040523d82523d6000602084013e610d25565b606091505b5050905080610d995760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b606482015260840161034b565b505050565b600054610100900460ff16610dc55760405162461bcd60e51b815260040161034b906111d8565b610dd563ac2ba33360e01b610e22565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b836003811115610e1957610e19610f02565b02179055505050565b6001600160e01b03198082169003610e7b5760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b604482015260640161034b565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b6101658061122483390190565b600060208284031215610ec257600080fd5b81356001600160e01b031981168114610eda57600080fd5b9392505050565b600060208284031215610ef357600080fd5b813560048110610eda57600080fd5b634e487b7160e01b600052602160045260246000fd5b6020810160048310610f3a57634e487b7160e01b600052602160045260246000fd5b91905290565b80356001600160a01b0381168114610f5757600080fd5b919050565b60008060008060608587031215610f7257600080fd5b610f7b85610f40565b93506020850135925060408501356001600160401b0380821115610f9e57600080fd5b818701915087601f830112610fb257600080fd5b813581811115610fc157600080fd5b886020828501011115610fd357600080fd5b95989497505060200194505050565b6001600160a01b0391909116815260200190565b60006020828403121561100857600080fd5b610eda82610f40565b60008083601f84011261102357600080fd5b5081356001600160401b0381111561103a57600080fd5b6020830191508360208260051b850101111561105557600080fd5b9250929050565b6000806000806040858703121561107257600080fd5b84356001600160401b038082111561108957600080fd5b61109588838901611011565b909650945060208701359150808211156110ae57600080fd5b506110bb87828801611011565b95989497509550505050565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561111f57600080fd5b81518015158114610eda57600080fd5b60006001820161114f57634e487b7160e01b600052601160045260246000fd5b5060010190565b6040808252810184905260008560608301825b87811015611197576001600160a01b0361118284610f40565b16825260209283019290910190600101611169565b5083810360208501528481526001600160fb1b038511156111b757600080fd5b8460051b915081866020830137600091016020019081529695505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fe608060405260405161016538038061016583398101604081905261002291610080565b806100597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61007d60201b61004b1760201c565b80546001600160a01b0319166001600160a01b0392909216919091179055506100b0565b90565b60006020828403121561009257600080fd5b81516001600160a01b03811681146100a957600080fd5b9392505050565b60a7806100be6000396000f3fe608060405236601057600e6013565b005b600e5b604960457f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b604e565b565b90565b3660008037600080366000845af43d6000803e808015606c573d6000f35b3d6000fdfea26469706673582212207f15331a7b34a01f18cf6ff00532eff8b95f4b140ef7bfdf3a40979609c4e35964736f6c634300080f0033a2646970667358221220ad1d0e85715c422e2d35fd51ece1a7c5fe7c18f8719bdd25230a5ff786b6301f64736f6c634300080f0033","deployedBytecode":"0x6080604052600436106100ce5760003560e01c806301ffc9a7146100d35780632c233067146101085780632d00b5871461012a57806347791ece1461015857806349561cb9146101785780636057e0ec14610199578063715018a6146101ba5780638129fc1c146101cf578063837fe140146101e45780638da5cb5b146101f9578063af121f541461020e578063c0bb38ff1461022f578063c723955a1461024f578063da82b22714610264578063dcbe353f14610279578063de6d6d9614610299578063f2fde38b146102b9575b600080fd5b3480156100df57600080fd5b506100f36100ee366004610eb0565b6102d9565b60405190151581526020015b60405180910390f35b34801561011457600080fd5b50610128610123366004610ee1565b610319565b005b34801561013657600080fd5b5060025461014b90600160b01b900460ff1681565b6040516100ff9190610f18565b61016b610166366004610f5c565b610381565b6040516100ff9190610fe2565b34801561018457600080fd5b506002546100f390600160b81b900460ff1681565b3480156101a557600080fd5b506002546100f390600160a01b900460ff1681565b3480156101c657600080fd5b506101286104bd565b3480156101db57600080fd5b506101286104d1565b3480156101f057600080fd5b506101286105ec565b34801561020557600080fd5b5061016b610633565b34801561021a57600080fd5b506002546100f390600160a81b900460ff1681565b34801561023b57600080fd5b5061012861024a366004610ff6565b610648565b34801561025b57600080fd5b5061012861069c565b34801561027057600080fd5b506101286106fb565b34801561028557600080fd5b5060025461016b906001600160a01b031681565b3480156102a557600080fd5b506101286102b436600461105c565b610741565b3480156102c557600080fd5b506101286102d4366004610ff6565b61098a565b60006301ffc9a760e01b6001600160e01b03198316148061031357506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b610321610a0f565b600254600160b81b900460ff16156103545760405162461bcd60e51b815260040161034b906110c7565b60405180910390fd5b6002805482919060ff60b01b1916600160b01b83600381111561037957610379610f02565b021790555050565b600080848660405161039290610ea3565b61039c9190610fe2565b8190604051809103906000f59050801580156103bc573d6000803e3d6000fd5b509150819050821561047e57600080836001600160a01b031686866040516103e59291906110e7565b6000604051808303816000865af19150503d8060008114610422576040519150601f19603f3d011682016040523d82523d6000602084013e610427565b606091505b50915091508161047b578051156104415780518082602001fd5b60405162461bcd60e51b815260206004820152600f60248201526e4641494c45445f544f5f434c4f4e4560881b604482015260640161034b565b50505b6040516001600160a01b0383169033907f9678a1e87ca9f1a37dc659a97b39d812d98cd236947e1b53b3d0d6fd346acb6e90600090a350949350505050565b6104c5610a0f565b6104cf6000610a6e565b565b600054610100900460ff16158080156104f15750600054600160ff909116105b80610512575061050030610a00565b158015610512575060005460ff166001145b6105755760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161034b565b6000805460ff191660011790558015610598576000805461ff0019166101001790555b6105a3336000610ac9565b80156105e9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6105f4610a0f565b600254600160a01b900460ff161561061e5760405162461bcd60e51b815260040161034b906110c7565b6002805460ff60a01b1916600160a01b179055565b6000546201000090046001600160a01b031690565b610650610a0f565b600254600160a01b900460ff161561067a5760405162461bcd60e51b815260040161034b906110c7565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6106a4610a0f565b600254600160b81b900460ff16156106e65760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b604482015260640161034b565b6002805460ff60b81b1916600160b81b179055565b610703610a0f565b6002805460ff60a81b1916600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b61074a33610afe565b6002546001600160a01b031661079a5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b604482015260640161034b565b600254600160a81b900460ff16156107f45760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b4544604482015260640161034b565b60005b83811015610946576000858583818110610813576108136110f7565b90506020020160208101906108289190610ff6565b6001600160a01b03160361086b5761086683838381811061084b5761084b6110f7565b6002546001600160a01b031692602090910201359050610c83565b610934565b84848281811061087d5761087d6110f7565b90506020020160208101906108929190610ff6565b6002546001600160a01b039182169163a9059cbb91168585858181106108ba576108ba6110f7565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af115801561090e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610932919061110d565b505b8061093e8161112f565b9150506107f7565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a58484848460405161097c9493929190611156565b60405180910390a150505050565b610992610a0f565b6001600160a01b0381166109f75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161034b565b6105e981610a6e565b6001600160a01b03163b151590565b33610a18610633565b6001600160a01b0316146104cf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161034b565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff16610af05760405162461bcd60e51b815260040161034b906111d8565b610afa8282610d9e565b5050565b6003600254600160b01b900460ff166003811115610b1e57610b1e610f02565b03610b5d5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b604482015260640161034b565b60028054600160b01b900460ff166003811115610b7c57610b7c610f02565b03610b845750565b6001600254600160b01b900460ff166003811115610ba457610ba4610f02565b03610c00576002546001600160a01b038281169116146105e95760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b604482015260640161034b565b6000600254600160b01b900460ff166003811115610c2057610c20610f02565b036105e957806001600160a01b0316610c37610633565b6001600160a01b0316146105e95760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b604482015260640161034b565b80471015610cd35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161034b565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610d20576040519150601f19603f3d011682016040523d82523d6000602084013e610d25565b606091505b5050905080610d995760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b606482015260840161034b565b505050565b600054610100900460ff16610dc55760405162461bcd60e51b815260040161034b906111d8565b610dd563ac2ba33360e01b610e22565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b836003811115610e1957610e19610f02565b02179055505050565b6001600160e01b03198082169003610e7b5760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b604482015260640161034b565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b6101658061122483390190565b600060208284031215610ec257600080fd5b81356001600160e01b031981168114610eda57600080fd5b9392505050565b600060208284031215610ef357600080fd5b813560048110610eda57600080fd5b634e487b7160e01b600052602160045260246000fd5b6020810160048310610f3a57634e487b7160e01b600052602160045260246000fd5b91905290565b80356001600160a01b0381168114610f5757600080fd5b919050565b60008060008060608587031215610f7257600080fd5b610f7b85610f40565b93506020850135925060408501356001600160401b0380821115610f9e57600080fd5b818701915087601f830112610fb257600080fd5b813581811115610fc157600080fd5b886020828501011115610fd357600080fd5b95989497505060200194505050565b6001600160a01b0391909116815260200190565b60006020828403121561100857600080fd5b610eda82610f40565b60008083601f84011261102357600080fd5b5081356001600160401b0381111561103a57600080fd5b6020830191508360208260051b850101111561105557600080fd5b9250929050565b6000806000806040858703121561107257600080fd5b84356001600160401b038082111561108957600080fd5b61109588838901611011565b909650945060208701359150808211156110ae57600080fd5b506110bb87828801611011565b95989497509550505050565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561111f57600080fd5b81518015158114610eda57600080fd5b60006001820161114f57634e487b7160e01b600052601160045260246000fd5b5060010190565b6040808252810184905260008560608301825b87811015611197576001600160a01b0361118284610f40565b16825260209283019290910190600101611169565b5083810360208501528481526001600160fb1b038511156111b757600080fd5b8460051b915081866020830137600091016020019081529695505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fe608060405260405161016538038061016583398101604081905261002291610080565b806100597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61007d60201b61004b1760201c565b80546001600160a01b0319166001600160a01b0392909216919091179055506100b0565b90565b60006020828403121561009257600080fd5b81516001600160a01b03811681146100a957600080fd5b9392505050565b60a7806100be6000396000f3fe608060405236601057600e6013565b005b600e5b604960457f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b604e565b565b90565b3660008037600080366000845af43d6000803e808015606c573d6000f35b3d6000fdfea26469706673582212207f15331a7b34a01f18cf6ff00532eff8b95f4b140ef7bfdf3a40979609c4e35964736f6c634300080f0033a2646970667358221220ad1d0e85715c422e2d35fd51ece1a7c5fe7c18f8719bdd25230a5ff786b6301f64736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"factory/MinimalProxy":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"MinimalProxy","sourceName":"contracts/factory/MinimalProxy.sol","abi":[{"inputs":[{"internalType":"address","name":"_impl","type":"address"}],"stateMutability":"payable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x608060405260405161016538038061016583398101604081905261002291610080565b806100597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61007d60201b61004b1760201c565b80546001600160a01b0319166001600160a01b0392909216919091179055506100b0565b90565b60006020828403121561009257600080fd5b81516001600160a01b03811681146100a957600080fd5b9392505050565b60a7806100be6000396000f3fe608060405236601057600e6013565b005b600e5b604960457f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b604e565b565b90565b3660008037600080366000845af43d6000803e808015606c573d6000f35b3d6000fdfea26469706673582212207f15331a7b34a01f18cf6ff00532eff8b95f4b140ef7bfdf3a40979609c4e35964736f6c634300080f0033","deployedBytecode":"0x608060405236601057600e6013565b005b600e5b604960457f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b604e565b565b90565b3660008037600080366000845af43d6000803e808015606c573d6000f35b3d6000fdfea26469706673582212207f15331a7b34a01f18cf6ff00532eff8b95f4b140ef7bfdf3a40979609c4e35964736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"misc/opensea/OwnableDelegateProxy":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"OwnableDelegateProxy","sourceName":"contracts/misc/opensea/ProxyRegistry.sol","abi":[],"bytecode":"0x6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea2646970667358221220897e9df3852e0b680ec6d80c776771f8657a31bfa746087eb9013b95cf5a218264736f6c634300080f0033","deployedBytecode":"0x6080604052600080fdfea2646970667358221220897e9df3852e0b680ec6d80c776771f8657a31bfa746087eb9013b95cf5a218264736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"misc/opensea/ProxyRegistry":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ProxyRegistry","sourceName":"contracts/misc/opensea/ProxyRegistry.sol","abi":[{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"proxies","outputs":[{"internalType":"contract OwnableDelegateProxy","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b5060d38061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c455279114602d575b600080fd5b60536038366004606f565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b600060208284031215608057600080fd5b81356001600160a01b0381168114609657600080fd5b939250505056fea26469706673582212201e60ffa926d0b2918807f5157618e11ae9ca571967f097286f2c060034799ea464736f6c634300080f0033","deployedBytecode":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063c455279114602d575b600080fd5b60536038366004606f565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b600060208284031215608057600080fd5b81356001600160a01b0381168114609657600080fd5b939250505056fea26469706673582212201e60ffa926d0b2918807f5157618e11ae9ca571967f097286f2c060034799ea464736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"misc/polygon/NativeMetaTransaction":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"NativeMetaTransaction","sourceName":"contracts/misc/polygon/NativeMetaTransaction.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"userAddress","type":"address"},{"indexed":false,"internalType":"address payable","name":"relayerAddress","type":"address"},{"indexed":false,"internalType":"bytes","name":"functionSignature","type":"bytes"}],"name":"MetaTransactionExecuted","type":"event"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"bytes","name":"functionSignature","type":"bytes"},{"internalType":"bytes32","name":"sigR","type":"bytes32"},{"internalType":"bytes32","name":"sigS","type":"bytes32"},{"internalType":"uint8","name":"sigV","type":"uint8"}],"name":"executeMetaTransaction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getNonce","outputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"misc/rarible/IRoyalties":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IRoyalties","sourceName":"contracts/misc/rarible/IRoyalties.sol","abi":[{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getRaribleV2Royalties","outputs":[{"components":[{"internalType":"address payable","name":"account","type":"address"},{"internalType":"uint96","name":"value","type":"uint96"}],"internalType":"struct LibPart.Part[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"misc/rarible/LibPart":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"LibPart","sourceName":"contracts/misc/rarible/LibPart.sol","abi":[{"inputs":[],"name":"TYPE_HASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60a6610038600b82828239805160001a607314602b57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c806364d4c819146038575b600080fd5b605e7f397e04204c1e1a60ee8724b71f8244e10ab5f2e9009854d80f602bda21b59ebb81565b60405190815260200160405180910390f3fea26469706673582212200f105bc5a4bf5c52006c56db809ee4f2b88e0a30165c84157fa3f648a5cdb92f64736f6c634300080f0033","deployedBytecode":"0x730000000000000000000000000000000000000000301460806040526004361060335760003560e01c806364d4c819146038575b600080fd5b605e7f397e04204c1e1a60ee8724b71f8244e10ab5f2e9009854d80f602bda21b59ebb81565b60405190815260200160405180910390f3fea26469706673582212200f105bc5a4bf5c52006c56db809ee4f2b88e0a30165c84157fa3f648a5cdb92f64736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"misc/rarible/LibRoyaltiesV2":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"LibRoyaltiesV2","sourceName":"contracts/misc/rarible/LibRoyaltiesV2.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220145dbc1e5476712978e05f292c307f06752b204acefdc9d90f3229ddda1a717a64736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220145dbc1e5476712978e05f292c307f06752b204acefdc9d90f3229ddda1a717a64736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/access/AccessControl":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"AccessControl","sourceName":"contracts/access/AccessControl.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/access/AccessControlCrossChain":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"AccessControlCrossChain","sourceName":"contracts/access/AccessControlCrossChain.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"CROSSCHAIN_ALIAS","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/access/AccessControlEnumerable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"AccessControlEnumerable","sourceName":"contracts/access/AccessControlEnumerable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/access/IAccessControl":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IAccessControl","sourceName":"contracts/access/IAccessControl.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/access/IAccessControlEnumerable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IAccessControlEnumerable","sourceName":"contracts/access/IAccessControlEnumerable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/access/Ownable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Ownable","sourceName":"contracts/access/Ownable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/amb/CrossChainEnabledAMB":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"CrossChainEnabledAMB","sourceName":"contracts/crosschain/amb/CrossChainEnabledAMB.sol","abi":[{"inputs":[{"internalType":"address","name":"bridge","type":"address"}],"stateMutability":"nonpayable","type":"constructor"}],"bytecode":"0x60a0604052348015600f57600080fd5b5060405160bc38038060bc833981016040819052602a91603a565b6001600160a01b03166080526068565b600060208284031215604b57600080fd5b81516001600160a01b0381168114606157600080fd5b9392505050565b608051603f607d60003960005050603f6000f3fe6080604052600080fdfea26469706673582212209884bd67993706561c6e5b4d273a774582590b63288266669c10629930cb4ad664736f6c63430008090033","deployedBytecode":"0x6080604052600080fdfea26469706673582212209884bd67993706561c6e5b4d273a774582590b63288266669c10629930cb4ad664736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/amb/LibAMB":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"LibAMB","sourceName":"contracts/crosschain/amb/LibAMB.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220288fb1df8b52873fc67e1921066d5bc1566a8daea933ac55a279f2f8a2a2f6a864736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220288fb1df8b52873fc67e1921066d5bc1566a8daea933ac55a279f2f8a2a2f6a864736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/arbitrum/CrossChainEnabledArbitrumL1":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"CrossChainEnabledArbitrumL1","sourceName":"contracts/crosschain/arbitrum/CrossChainEnabledArbitrumL1.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/arbitrum/CrossChainEnabledArbitrumL2":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"CrossChainEnabledArbitrumL2","sourceName":"contracts/crosschain/arbitrum/CrossChainEnabledArbitrumL2.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/arbitrum/LibArbitrumL1":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"LibArbitrumL1","sourceName":"contracts/crosschain/arbitrum/LibArbitrumL1.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209f0010b404592d904745111d8cdd71c3be14fb9fede8338df2e9e52072d0ae6564736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209f0010b404592d904745111d8cdd71c3be14fb9fede8338df2e9e52072d0ae6564736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/arbitrum/LibArbitrumL2":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"LibArbitrumL2","sourceName":"contracts/crosschain/arbitrum/LibArbitrumL2.sol","abi":[{"inputs":[],"name":"ARBSYS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"bytecode":"0x6091610038600b82828239805160001a607314602b57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063bf0a12cf146038575b600080fd5b603f606481565b6040516001600160a01b03909116815260200160405180910390f3fea2646970667358221220ab77562c84149237fab25891fe1774b814b98c91e76d3514eed6eca6c576ce6864736f6c63430008090033","deployedBytecode":"0x730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063bf0a12cf146038575b600080fd5b603f606481565b6040516001600160a01b03909116815260200160405180910390f3fea2646970667358221220ab77562c84149237fab25891fe1774b814b98c91e76d3514eed6eca6c576ce6864736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/CrossChainEnabled":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"CrossChainEnabled","sourceName":"contracts/crosschain/CrossChainEnabled.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/optimism/CrossChainEnabledOptimism":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"CrossChainEnabledOptimism","sourceName":"contracts/crosschain/optimism/CrossChainEnabledOptimism.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/optimism/LibOptimism":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"LibOptimism","sourceName":"contracts/crosschain/optimism/LibOptimism.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209df9178eb2af42ed4c0dd55637a52437ad90595b04abc6b7ddea128c39a72cd464736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209df9178eb2af42ed4c0dd55637a52437ad90595b04abc6b7ddea128c39a72cd464736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/polygon/CrossChainEnabledPolygonChild":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"CrossChainEnabledPolygonChild","sourceName":"contracts/crosschain/polygon/CrossChainEnabledPolygonChild.sol","abi":[{"inputs":[],"name":"NotCrossChainCall","type":"error"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"rootMessageSender","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"processMessageFromRoot","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/finance/PaymentSplitter":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"PaymentSplitter","sourceName":"contracts/finance/PaymentSplitter.sol","abi":[{"inputs":[{"internalType":"address[]","name":"payees","type":"address[]"},{"internalType":"uint256[]","name":"shares_","type":"uint256[]"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ERC20PaymentReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"PayeeAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PaymentReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PaymentReleased","type":"event"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"payee","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"releasable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"releasable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"totalReleased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReleased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x6080604052604051620011f0380380620011f083398101604081905262000026916200042e565b8051825114620000985760405162461bcd60e51b815260206004820152603260248201527f5061796d656e7453706c69747465723a2070617965657320616e6420736861726044820152710cae640d8cadccee8d040dad2e6dac2e8c6d60731b60648201526084015b60405180910390fd5b6000825111620000eb5760405162461bcd60e51b815260206004820152601a60248201527f5061796d656e7453706c69747465723a206e6f2070617965657300000000000060448201526064016200008f565b60005b82518110156200015757620001428382815181106200011157620001116200050c565b60200260200101518383815181106200012e576200012e6200050c565b60200260200101516200016060201b60201c565b806200014e8162000538565b915050620000ee565b50505062000571565b6001600160a01b038216620001cd5760405162461bcd60e51b815260206004820152602c60248201527f5061796d656e7453706c69747465723a206163636f756e74206973207468652060448201526b7a65726f206164647265737360a01b60648201526084016200008f565b600081116200021f5760405162461bcd60e51b815260206004820152601d60248201527f5061796d656e7453706c69747465723a2073686172657320617265203000000060448201526064016200008f565b6001600160a01b038216600090815260026020526040902054156200029b5760405162461bcd60e51b815260206004820152602b60248201527f5061796d656e7453706c69747465723a206163636f756e7420616c726561647960448201526a206861732073686172657360a81b60648201526084016200008f565b60048054600181019091557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319166001600160a01b0384169081179091556000908152600260205260408120829055546200030390829062000556565b600055604080516001600160a01b0384168152602081018390527f40c340f65e17194d14ddddb073d3c9f888e3cb52b5aae0c6c7706b4fbc905fac910160405180910390a15050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156200038d576200038d6200034c565b604052919050565b60006001600160401b03821115620003b157620003b16200034c565b5060051b60200190565b600082601f830112620003cd57600080fd5b81516020620003e6620003e08362000395565b62000362565b82815260059290921b840181019181810190868411156200040657600080fd5b8286015b848110156200042357805183529183019183016200040a565b509695505050505050565b600080604083850312156200044257600080fd5b82516001600160401b03808211156200045a57600080fd5b818501915085601f8301126200046f57600080fd5b8151602062000482620003e08362000395565b82815260059290921b84018101918181019089841115620004a257600080fd5b948201945b83861015620004d95785516001600160a01b0381168114620004c95760008081fd5b82529482019490820190620004a7565b91880151919650909350505080821115620004f357600080fd5b506200050285828601620003bb565b9150509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156200054f576200054f62000522565b5060010190565b600082198211156200056c576200056c62000522565b500190565b610c6f80620005816000396000f3fe6080604052600436106100a05760003560e01c80639852595c116100645780639852595c146101d2578063a3f8eace14610208578063c45ac05014610228578063ce7c2ac214610248578063d79779b21461027e578063e33b7de3146102b457600080fd5b806319165587146100ee5780633a98ef3914610110578063406072a91461013457806348b750441461017a5780638b83209b1461019a57600080fd5b366100e9577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be77033604080516001600160a01b0390921682523460208301520160405180910390a1005b600080fd5b3480156100fa57600080fd5b5061010e6101093660046109e3565b6102c9565b005b34801561011c57600080fd5b506000545b6040519081526020015b60405180910390f35b34801561014057600080fd5b5061012161014f366004610a00565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561018657600080fd5b5061010e610195366004610a00565b6103c8565b3480156101a657600080fd5b506101ba6101b5366004610a39565b6104e8565b6040516001600160a01b03909116815260200161012b565b3480156101de57600080fd5b506101216101ed3660046109e3565b6001600160a01b031660009081526003602052604090205490565b34801561021457600080fd5b506101216102233660046109e3565b610518565b34801561023457600080fd5b50610121610243366004610a00565b610560565b34801561025457600080fd5b506101216102633660046109e3565b6001600160a01b031660009081526002602052604090205490565b34801561028a57600080fd5b506101216102993660046109e3565b6001600160a01b031660009081526005602052604090205490565b3480156102c057600080fd5b50600154610121565b6001600160a01b0381166000908152600260205260409020546103075760405162461bcd60e51b81526004016102fe90610a52565b60405180910390fd5b600061031282610518565b9050806103315760405162461bcd60e51b81526004016102fe90610a98565b6001600160a01b03821660009081526003602052604081208054839290610359908490610af9565b9250508190555080600160008282546103729190610af9565b909155506103829050828261063a565b604080516001600160a01b0384168152602081018390527fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b056910160405180910390a15050565b6001600160a01b0381166000908152600260205260409020546103fd5760405162461bcd60e51b81526004016102fe90610a52565b60006104098383610560565b9050806104285760405162461bcd60e51b81526004016102fe90610a98565b6001600160a01b0380841660009081526006602090815260408083209386168352929052908120805483929061045f908490610af9565b90915550506001600160a01b0383166000908152600560205260408120805483929061048c908490610af9565b9091555061049d9050838383610758565b604080516001600160a01b038481168252602082018490528516917f3be5b7a71e84ed12875d241991c70855ac5817d847039e17a9d895c1ceb0f18a910160405180910390a2505050565b6000600482815481106104fd576104fd610b11565b6000918252602090912001546001600160a01b031692915050565b60008061052460015490565b61052e9047610af9565b90506105598382610554866001600160a01b031660009081526003602052604090205490565b6107aa565b9392505050565b6001600160a01b03821660009081526005602052604081205481906040516370a0823160e01b81523060048201526001600160a01b038616906370a082319060240160206040518083038186803b1580156105ba57600080fd5b505afa1580156105ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f29190610b27565b6105fc9190610af9565b6001600160a01b0380861660009081526006602090815260408083209388168352929052205490915061063290849083906107aa565b949350505050565b8047101561068a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016102fe565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146106d7576040519150601f19603f3d011682016040523d82523d6000602084013e6106dc565b606091505b50509050806107535760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016102fe565b505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526107539084906107e5565b600080546001600160a01b0385168252600260205260408220548391906107d19086610b40565b6107db9190610b5f565b6106329190610b81565b600061083a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166108b79092919063ffffffff16565b80519091501561075357808060200190518101906108589190610b98565b6107535760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102fe565b60606106328484600085856001600160a01b0385163b6109195760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102fe565b600080866001600160a01b031685876040516109359190610bea565b60006040518083038185875af1925050503d8060008114610972576040519150601f19603f3d011682016040523d82523d6000602084013e610977565b606091505b5091509150610987828286610992565b979650505050505050565b606083156109a1575081610559565b8251156109b15782518084602001fd5b8160405162461bcd60e51b81526004016102fe9190610c06565b6001600160a01b03811681146109e057600080fd5b50565b6000602082840312156109f557600080fd5b8135610559816109cb565b60008060408385031215610a1357600080fd5b8235610a1e816109cb565b91506020830135610a2e816109cb565b809150509250929050565b600060208284031215610a4b57600080fd5b5035919050565b60208082526026908201527f5061796d656e7453706c69747465723a206163636f756e7420686173206e6f2060408201526573686172657360d01b606082015260800190565b6020808252602b908201527f5061796d656e7453706c69747465723a206163636f756e74206973206e6f742060408201526a191d59481c185e5b595b9d60aa1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115610b0c57610b0c610ae3565b500190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610b3957600080fd5b5051919050565b6000816000190483118215151615610b5a57610b5a610ae3565b500290565b600082610b7c57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015610b9357610b93610ae3565b500390565b600060208284031215610baa57600080fd5b8151801515811461055957600080fd5b60005b83811015610bd5578181015183820152602001610bbd565b83811115610be4576000848401525b50505050565b60008251610bfc818460208701610bba565b9190910192915050565b6020815260008251806020840152610c25816040850160208701610bba565b601f01601f1916919091016040019291505056fea2646970667358221220cf59afca0f8e649fbe17743ba4f9050bac27a9e528709aca4fc303dd4caafd6164736f6c63430008090033","deployedBytecode":"0x6080604052600436106100a05760003560e01c80639852595c116100645780639852595c146101d2578063a3f8eace14610208578063c45ac05014610228578063ce7c2ac214610248578063d79779b21461027e578063e33b7de3146102b457600080fd5b806319165587146100ee5780633a98ef3914610110578063406072a91461013457806348b750441461017a5780638b83209b1461019a57600080fd5b366100e9577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be77033604080516001600160a01b0390921682523460208301520160405180910390a1005b600080fd5b3480156100fa57600080fd5b5061010e6101093660046109e3565b6102c9565b005b34801561011c57600080fd5b506000545b6040519081526020015b60405180910390f35b34801561014057600080fd5b5061012161014f366004610a00565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561018657600080fd5b5061010e610195366004610a00565b6103c8565b3480156101a657600080fd5b506101ba6101b5366004610a39565b6104e8565b6040516001600160a01b03909116815260200161012b565b3480156101de57600080fd5b506101216101ed3660046109e3565b6001600160a01b031660009081526003602052604090205490565b34801561021457600080fd5b506101216102233660046109e3565b610518565b34801561023457600080fd5b50610121610243366004610a00565b610560565b34801561025457600080fd5b506101216102633660046109e3565b6001600160a01b031660009081526002602052604090205490565b34801561028a57600080fd5b506101216102993660046109e3565b6001600160a01b031660009081526005602052604090205490565b3480156102c057600080fd5b50600154610121565b6001600160a01b0381166000908152600260205260409020546103075760405162461bcd60e51b81526004016102fe90610a52565b60405180910390fd5b600061031282610518565b9050806103315760405162461bcd60e51b81526004016102fe90610a98565b6001600160a01b03821660009081526003602052604081208054839290610359908490610af9565b9250508190555080600160008282546103729190610af9565b909155506103829050828261063a565b604080516001600160a01b0384168152602081018390527fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b056910160405180910390a15050565b6001600160a01b0381166000908152600260205260409020546103fd5760405162461bcd60e51b81526004016102fe90610a52565b60006104098383610560565b9050806104285760405162461bcd60e51b81526004016102fe90610a98565b6001600160a01b0380841660009081526006602090815260408083209386168352929052908120805483929061045f908490610af9565b90915550506001600160a01b0383166000908152600560205260408120805483929061048c908490610af9565b9091555061049d9050838383610758565b604080516001600160a01b038481168252602082018490528516917f3be5b7a71e84ed12875d241991c70855ac5817d847039e17a9d895c1ceb0f18a910160405180910390a2505050565b6000600482815481106104fd576104fd610b11565b6000918252602090912001546001600160a01b031692915050565b60008061052460015490565b61052e9047610af9565b90506105598382610554866001600160a01b031660009081526003602052604090205490565b6107aa565b9392505050565b6001600160a01b03821660009081526005602052604081205481906040516370a0823160e01b81523060048201526001600160a01b038616906370a082319060240160206040518083038186803b1580156105ba57600080fd5b505afa1580156105ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f29190610b27565b6105fc9190610af9565b6001600160a01b0380861660009081526006602090815260408083209388168352929052205490915061063290849083906107aa565b949350505050565b8047101561068a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016102fe565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146106d7576040519150601f19603f3d011682016040523d82523d6000602084013e6106dc565b606091505b50509050806107535760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016102fe565b505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526107539084906107e5565b600080546001600160a01b0385168252600260205260408220548391906107d19086610b40565b6107db9190610b5f565b6106329190610b81565b600061083a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166108b79092919063ffffffff16565b80519091501561075357808060200190518101906108589190610b98565b6107535760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102fe565b60606106328484600085856001600160a01b0385163b6109195760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102fe565b600080866001600160a01b031685876040516109359190610bea565b60006040518083038185875af1925050503d8060008114610972576040519150601f19603f3d011682016040523d82523d6000602084013e610977565b606091505b5091509150610987828286610992565b979650505050505050565b606083156109a1575081610559565b8251156109b15782518084602001fd5b8160405162461bcd60e51b81526004016102fe9190610c06565b6001600160a01b03811681146109e057600080fd5b50565b6000602082840312156109f557600080fd5b8135610559816109cb565b60008060408385031215610a1357600080fd5b8235610a1e816109cb565b91506020830135610a2e816109cb565b809150509250929050565b600060208284031215610a4b57600080fd5b5035919050565b60208082526026908201527f5061796d656e7453706c69747465723a206163636f756e7420686173206e6f2060408201526573686172657360d01b606082015260800190565b6020808252602b908201527f5061796d656e7453706c69747465723a206163636f756e74206973206e6f742060408201526a191d59481c185e5b595b9d60aa1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115610b0c57610b0c610ae3565b500190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610b3957600080fd5b5051919050565b6000816000190483118215151615610b5a57610b5a610ae3565b500290565b600082610b7c57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015610b9357610b93610ae3565b500390565b600060208284031215610baa57600080fd5b8151801515811461055957600080fd5b60005b83811015610bd5578181015183820152602001610bbd565b83811115610be4576000848401525b50505050565b60008251610bfc818460208701610bba565b9190910192915050565b6020815260008251806020840152610c25816040850160208701610bba565b601f01601f1916919091016040019291505056fea2646970667358221220cf59afca0f8e649fbe17743ba4f9050bac27a9e528709aca4fc303dd4caafd6164736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/finance/VestingWallet":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"VestingWallet","sourceName":"contracts/finance/VestingWallet.sol","abi":[{"inputs":[{"internalType":"address","name":"beneficiaryAddress","type":"address"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"},{"internalType":"uint64","name":"durationSeconds","type":"uint64"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ERC20Released","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EtherReleased","type":"event"},{"inputs":[],"name":"beneficiary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"duration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"start","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"timestamp","type":"uint64"}],"name":"vestedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint64","name":"timestamp","type":"uint64"}],"name":"vestedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x60e060405234801561001057600080fd5b50604051610c80380380610c8083398101604081905261002f916100dd565b6001600160a01b03831661009c5760405162461bcd60e51b815260206004820152602a60248201527f56657374696e6757616c6c65743a2062656e6566696369617279206973207a65604482015269726f206164647265737360b01b606482015260840160405180910390fd5b6001600160a01b039092166080526001600160401b0390811660a0521660c05261012e565b80516001600160401b03811681146100d857600080fd5b919050565b6000806000606084860312156100f257600080fd5b83516001600160a01b038116811461010957600080fd5b9250610117602085016100c1565b9150610125604085016100c1565b90509250925092565b60805160a05160c051610b086101786000396000818160d80152818161047801526104cd01526000610430015260008181610142015281816102c801526103fd0152610b086000f3fe60806040526004361061008a5760003560e01c8063810ec23b11610059578063810ec23b1461016c57806386d1a69f1461018c57806396132521146101a15780639852595c146101b6578063be9a6555146101ec57600080fd5b80630a17b06b146100965780630fb5a6b4146100c9578063191655871461010657806338af3eed1461012857600080fd5b3661009157005b600080fd5b3480156100a257600080fd5b506100b66100b1366004610912565b610201565b6040519081526020015b60405180910390f35b3480156100d557600080fd5b507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166100b6565b34801561011257600080fd5b50610126610121366004610944565b610225565b005b34801561013457600080fd5b506040516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681526020016100c0565b34801561017857600080fd5b506100b661018736600461095f565b6102f1565b34801561019857600080fd5b50610126610396565b3480156101ad57600080fd5b506000546100b6565b3480156101c257600080fd5b506100b66101d1366004610944565b6001600160a01b031660009081526001602052604090205490565b3480156101f857600080fd5b506100b6610425565b600061021f61020f60005490565b61021990476109a8565b83610453565b92915050565b6001600160a01b03811660009081526001602052604081205461024883426102f1565b61025291906109c0565b6001600160a01b03831660009081526001602052604081208054929350839290919061027f9084906109a8565b90915550506040518181526001600160a01b038316907fc0e523490dd523c33b1878c9eb14ff46991e3f5b2cd33710918618f2a39cba1b9060200160405180910390a26102ed827f00000000000000000000000000000000000000000000000000000000000000008361052d565b5050565b6001600160a01b03821660009081526001602052604081205461038f906040516370a0823160e01b81523060048201526001600160a01b038616906370a082319060240160206040518083038186803b15801561034d57600080fd5b505afa158015610361573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038591906109d7565b61021991906109a8565b9392505050565b600080546103a342610201565b6103ad91906109c0565b9050806000808282546103c091906109a8565b90915550506040518181527fda9d4e5f101b8b9b1c5b76d0c5a9f7923571acfc02376aa076b75a8c080c956b9060200160405180910390a16104227f000000000000000000000000000000000000000000000000000000000000000082610584565b50565b67ffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690565b600061045d610425565b8267ffffffffffffffff1610156104765750600061021f565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166104a9610425565b6104b391906109a8565b8267ffffffffffffffff1611156104cb57508161021f565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166104fe610425565b6105129067ffffffffffffffff85166109c0565b61051c90856109f0565b6105269190610a0f565b905061021f565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261057f9084906106a2565b505050565b804710156105d95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064015b60405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610626576040519150601f19603f3d011682016040523d82523d6000602084013e61062b565b606091505b505090508061057f5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016105d0565b60006106f7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166107749092919063ffffffff16565b80519091501561057f57808060200190518101906107159190610a31565b61057f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105d0565b6060610783848460008561078b565b949350505050565b6060824710156107ec5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105d0565b6001600160a01b0385163b6108435760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105d0565b600080866001600160a01b0316858760405161085f9190610a83565b60006040518083038185875af1925050503d806000811461089c576040519150601f19603f3d011682016040523d82523d6000602084013e6108a1565b606091505b50915091506108b18282866108bc565b979650505050505050565b606083156108cb57508161038f565b8251156108db5782518084602001fd5b8160405162461bcd60e51b81526004016105d09190610a9f565b803567ffffffffffffffff8116811461090d57600080fd5b919050565b60006020828403121561092457600080fd5b61038f826108f5565b80356001600160a01b038116811461090d57600080fd5b60006020828403121561095657600080fd5b61038f8261092d565b6000806040838503121561097257600080fd5b61097b8361092d565b9150610989602084016108f5565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600082198211156109bb576109bb610992565b500190565b6000828210156109d2576109d2610992565b500390565b6000602082840312156109e957600080fd5b5051919050565b6000816000190483118215151615610a0a57610a0a610992565b500290565b600082610a2c57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215610a4357600080fd5b8151801515811461038f57600080fd5b60005b83811015610a6e578181015183820152602001610a56565b83811115610a7d576000848401525b50505050565b60008251610a95818460208701610a53565b9190910192915050565b6020815260008251806020840152610abe816040850160208701610a53565b601f01601f1916919091016040019291505056fea26469706673582212207e34db421ed46cfdfe338874d49b916829ef192db0d987f18967ebdc0494b3c964736f6c63430008090033","deployedBytecode":"0x60806040526004361061008a5760003560e01c8063810ec23b11610059578063810ec23b1461016c57806386d1a69f1461018c57806396132521146101a15780639852595c146101b6578063be9a6555146101ec57600080fd5b80630a17b06b146100965780630fb5a6b4146100c9578063191655871461010657806338af3eed1461012857600080fd5b3661009157005b600080fd5b3480156100a257600080fd5b506100b66100b1366004610912565b610201565b6040519081526020015b60405180910390f35b3480156100d557600080fd5b507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166100b6565b34801561011257600080fd5b50610126610121366004610944565b610225565b005b34801561013457600080fd5b506040516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681526020016100c0565b34801561017857600080fd5b506100b661018736600461095f565b6102f1565b34801561019857600080fd5b50610126610396565b3480156101ad57600080fd5b506000546100b6565b3480156101c257600080fd5b506100b66101d1366004610944565b6001600160a01b031660009081526001602052604090205490565b3480156101f857600080fd5b506100b6610425565b600061021f61020f60005490565b61021990476109a8565b83610453565b92915050565b6001600160a01b03811660009081526001602052604081205461024883426102f1565b61025291906109c0565b6001600160a01b03831660009081526001602052604081208054929350839290919061027f9084906109a8565b90915550506040518181526001600160a01b038316907fc0e523490dd523c33b1878c9eb14ff46991e3f5b2cd33710918618f2a39cba1b9060200160405180910390a26102ed827f00000000000000000000000000000000000000000000000000000000000000008361052d565b5050565b6001600160a01b03821660009081526001602052604081205461038f906040516370a0823160e01b81523060048201526001600160a01b038616906370a082319060240160206040518083038186803b15801561034d57600080fd5b505afa158015610361573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038591906109d7565b61021991906109a8565b9392505050565b600080546103a342610201565b6103ad91906109c0565b9050806000808282546103c091906109a8565b90915550506040518181527fda9d4e5f101b8b9b1c5b76d0c5a9f7923571acfc02376aa076b75a8c080c956b9060200160405180910390a16104227f000000000000000000000000000000000000000000000000000000000000000082610584565b50565b67ffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690565b600061045d610425565b8267ffffffffffffffff1610156104765750600061021f565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166104a9610425565b6104b391906109a8565b8267ffffffffffffffff1611156104cb57508161021f565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166104fe610425565b6105129067ffffffffffffffff85166109c0565b61051c90856109f0565b6105269190610a0f565b905061021f565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261057f9084906106a2565b505050565b804710156105d95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064015b60405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610626576040519150601f19603f3d011682016040523d82523d6000602084013e61062b565b606091505b505090508061057f5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016105d0565b60006106f7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166107749092919063ffffffff16565b80519091501561057f57808060200190518101906107159190610a31565b61057f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105d0565b6060610783848460008561078b565b949350505050565b6060824710156107ec5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105d0565b6001600160a01b0385163b6108435760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105d0565b600080866001600160a01b0316858760405161085f9190610a83565b60006040518083038185875af1925050503d806000811461089c576040519150601f19603f3d011682016040523d82523d6000602084013e6108a1565b606091505b50915091506108b18282866108bc565b979650505050505050565b606083156108cb57508161038f565b8251156108db5782518084602001fd5b8160405162461bcd60e51b81526004016105d09190610a9f565b803567ffffffffffffffff8116811461090d57600080fd5b919050565b60006020828403121561092457600080fd5b61038f826108f5565b80356001600160a01b038116811461090d57600080fd5b60006020828403121561095657600080fd5b61038f8261092d565b6000806040838503121561097257600080fd5b61097b8361092d565b9150610989602084016108f5565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600082198211156109bb576109bb610992565b500190565b6000828210156109d2576109d2610992565b500390565b6000602082840312156109e957600080fd5b5051919050565b6000816000190483118215151615610a0a57610a0a610992565b500290565b600082610a2c57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215610a4357600080fd5b8151801515811461038f57600080fd5b60005b83811015610a6e578181015183820152602001610a56565b83811115610a7d576000848401525b50505050565b60008251610a95818460208701610a53565b9190910192915050565b6020815260008251806020840152610abe816040850160208701610a53565b601f01601f1916919091016040019291505056fea26469706673582212207e34db421ed46cfdfe338874d49b916829ef192db0d987f18967ebdc0494b3c964736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/compatibility/GovernorCompatibilityBravo":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorCompatibilityBravo","sourceName":"contracts/governance/compatibility/GovernorCompatibilityBravo.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ProposalQueued","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"getActions","outputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"voter","type":"address"}],"name":"getReceipt","outputs":[{"components":[{"internalType":"bool","name":"hasVoted","type":"bool"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint96","name":"votes","type":"uint96"}],"internalType":"struct IGovernorCompatibilityBravo.Receipt","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalEta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint256","name":"eta","type":"uint256"},{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"uint256","name":"endBlock","type":"uint256"},{"internalType":"uint256","name":"forVotes","type":"uint256"},{"internalType":"uint256","name":"againstVotes","type":"uint256"},{"internalType":"uint256","name":"abstainVotes","type":"uint256"},{"internalType":"bool","name":"canceled","type":"bool"},{"internalType":"bool","name":"executed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"queue","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"queue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quorumVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"timelock","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/compatibility/IGovernorCompatibilityBravo":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IGovernorCompatibilityBravo","sourceName":"contracts/governance/compatibility/IGovernorCompatibilityBravo.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"getActions","outputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"voter","type":"address"}],"name":"getReceipt","outputs":[{"components":[{"internalType":"bool","name":"hasVoted","type":"bool"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint96","name":"votes","type":"uint96"}],"internalType":"struct IGovernorCompatibilityBravo.Receipt","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint256","name":"eta","type":"uint256"},{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"uint256","name":"endBlock","type":"uint256"},{"internalType":"uint256","name":"forVotes","type":"uint256"},{"internalType":"uint256","name":"againstVotes","type":"uint256"},{"internalType":"uint256","name":"abstainVotes","type":"uint256"},{"internalType":"bool","name":"canceled","type":"bool"},{"internalType":"bool","name":"executed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"queue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quorumVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorCountingSimple":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorCountingSimple","sourceName":"contracts/governance/extensions/GovernorCountingSimple.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalVotes","outputs":[{"internalType":"uint256","name":"againstVotes","type":"uint256"},{"internalType":"uint256","name":"forVotes","type":"uint256"},{"internalType":"uint256","name":"abstainVotes","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorPreventLateQuorum":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorPreventLateQuorum","sourceName":"contracts/governance/extensions/GovernorPreventLateQuorum.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"oldVoteExtension","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"newVoteExtension","type":"uint64"}],"name":"LateQuorumVoteExtensionSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint64","name":"extendedDeadline","type":"uint64"}],"name":"ProposalExtended","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"lateQuorumVoteExtension","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newVoteExtension","type":"uint64"}],"name":"setLateQuorumVoteExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorProposalThreshold":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorProposalThreshold","sourceName":"contracts/governance/extensions/GovernorProposalThreshold.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorSettings":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorSettings","sourceName":"contracts/governance/extensions/GovernorSettings.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldProposalThreshold","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newProposalThreshold","type":"uint256"}],"name":"ProposalThresholdSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldVotingDelay","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newVotingDelay","type":"uint256"}],"name":"VotingDelaySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldVotingPeriod","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newVotingPeriod","type":"uint256"}],"name":"VotingPeriodSet","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newProposalThreshold","type":"uint256"}],"name":"setProposalThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVotingDelay","type":"uint256"}],"name":"setVotingDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVotingPeriod","type":"uint256"}],"name":"setVotingPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorTimelockCompound":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorTimelockCompound","sourceName":"contracts/governance/extensions/GovernorTimelockCompound.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ProposalQueued","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldTimelock","type":"address"},{"indexed":false,"internalType":"address","name":"newTimelock","type":"address"}],"name":"TimelockChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"__acceptAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalEta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"queue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"timelock","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ICompoundTimelock","name":"newTimelock","type":"address"}],"name":"updateTimelock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorTimelockControl":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorTimelockControl","sourceName":"contracts/governance/extensions/GovernorTimelockControl.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ProposalQueued","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldTimelock","type":"address"},{"indexed":false,"internalType":"address","name":"newTimelock","type":"address"}],"name":"TimelockChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalEta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"queue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"timelock","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract TimelockController","name":"newTimelock","type":"address"}],"name":"updateTimelock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorVotes":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorVotes","sourceName":"contracts/governance/extensions/GovernorVotes.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"token","outputs":[{"internalType":"contract IVotes","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorVotesComp":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorVotesComp","sourceName":"contracts/governance/extensions/GovernorVotesComp.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"token","outputs":[{"internalType":"contract ERC20VotesComp","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorVotesQuorumFraction":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorVotesQuorumFraction","sourceName":"contracts/governance/extensions/GovernorVotesQuorumFraction.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldQuorumNumerator","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newQuorumNumerator","type":"uint256"}],"name":"QuorumNumeratorUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quorumDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorumNumerator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quorumNumerator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"token","outputs":[{"internalType":"contract IVotes","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newQuorumNumerator","type":"uint256"}],"name":"updateQuorumNumerator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/IGovernorTimelock":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IGovernorTimelock","sourceName":"contracts/governance/extensions/IGovernorTimelock.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ProposalQueued","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalEta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"queue","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"timelock","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/Governor":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Governor","sourceName":"contracts/governance/Governor.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/IGovernor":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IGovernor","sourceName":"contracts/governance/IGovernor.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/TimelockController":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"TimelockController","sourceName":"contracts/governance/TimelockController.sol","abi":[{"inputs":[{"internalType":"uint256","name":"minDelay","type":"uint256"},{"internalType":"address[]","name":"proposers","type":"address[]"},{"internalType":"address[]","name":"executors","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"CallExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"delay","type":"uint256"}],"name":"CallScheduled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"Cancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldDuration","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newDuration","type":"uint256"}],"name":"MinDelayChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"CANCELLER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EXECUTOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROPOSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TIMELOCK_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"payloads","type":"bytes[]"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"executeBatch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getMinDelay","outputs":[{"internalType":"uint256","name":"duration","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"getTimestamp","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"hashOperation","outputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"payloads","type":"bytes[]"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"hashOperationBatch","outputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"isOperation","outputs":[{"internalType":"bool","name":"registered","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"isOperationDone","outputs":[{"internalType":"bool","name":"done","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"isOperationPending","outputs":[{"internalType":"bool","name":"pending","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"isOperationReady","outputs":[{"internalType":"bool","name":"ready","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"delay","type":"uint256"}],"name":"schedule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"payloads","type":"bytes[]"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"delay","type":"uint256"}],"name":"scheduleBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newDelay","type":"uint256"}],"name":"updateDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x60806040523480156200001157600080fd5b50604051620022fb380380620022fb8339810160408190526200003491620003f7565b6200004f6000805160206200227b833981519152806200021c565b620000796000805160206200229b8339815191526000805160206200227b8339815191526200021c565b620000a3600080516020620022bb8339815191526000805160206200227b8339815191526200021c565b620000cd600080516020620022db8339815191526000805160206200227b8339815191526200021c565b620000e86000805160206200227b8339815191523362000267565b620001036000805160206200227b8339815191523062000267565b60005b825181101562000189576200014d6000805160206200229b8339815191528483815181106200013957620001396200046b565b60200260200101516200026760201b60201c565b62000176600080516020620022db8339815191528483815181106200013957620001396200046b565b620001818162000481565b905062000106565b5060005b8151811015620001d357620001c0600080516020620022bb8339815191528383815181106200013957620001396200046b565b620001cb8162000481565b90506200018d565b5060028390556040805160008152602081018590527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1505050620004ab565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b62000273828262000277565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000273576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620002d33390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200034557600080fd5b919050565b600082601f8301126200035c57600080fd5b815160206001600160401b03808311156200037b576200037b62000317565b8260051b604051601f19603f83011681018181108482111715620003a357620003a362000317565b604052938452858101830193838101925087851115620003c257600080fd5b83870191505b84821015620003ec57620003dc826200032d565b83529183019190830190620003c8565b979650505050505050565b6000806000606084860312156200040d57600080fd5b835160208501519093506001600160401b03808211156200042d57600080fd5b6200043b878388016200034a565b935060408601519150808211156200045257600080fd5b5062000461868287016200034a565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b6000600019821415620004a457634e487b7160e01b600052601160045260246000fd5b5060010190565b611dc080620004bb6000396000f3fe6080604052600436106101bb5760003560e01c80638065657f116100ec578063bc197c811161008a578063d547741f11610064578063d547741f14610582578063e38335e5146105a2578063f23a6e61146105b5578063f27a0c92146105e157600080fd5b8063bc197c8114610509578063c4d252f514610535578063d45c44351461055557600080fd5b806391d14854116100c657806391d1485414610480578063a217fddf146104a0578063b08e51c0146104b5578063b1c5f427146104e957600080fd5b80638065657f1461040c5780638f2a0bb01461042c5780638f61f4f51461044c57600080fd5b8063248a9ca31161015957806331d507501161013357806331d507501461038c57806336568abe146103ac578063584b153e146103cc57806364d62353146103ec57600080fd5b8063248a9ca31461030b5780632ab0f5291461033b5780632f2ff15d1461036c57600080fd5b80630d3cf6fc116101955780630d3cf6fc14610260578063134008d31461029457806313bc9f20146102a7578063150b7a02146102c757600080fd5b806301d5062a146101c757806301ffc9a7146101e957806307bd02651461021e57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101e76101e23660046113b9565b6105f6565b005b3480156101f557600080fd5b5061020961020436600461142d565b61068b565b60405190151581526020015b60405180910390f35b34801561022a57600080fd5b506102527fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610215565b34801561026c57600080fd5b506102527f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b6101e76102a2366004611457565b6106b6565b3480156102b357600080fd5b506102096102c23660046114c2565b61076b565b3480156102d357600080fd5b506102f26102e2366004611590565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610215565b34801561031757600080fd5b506102526103263660046114c2565b60009081526020819052604090206001015490565b34801561034757600080fd5b506102096103563660046114c2565b6000908152600160208190526040909120541490565b34801561037857600080fd5b506101e76103873660046115f7565b610791565b34801561039857600080fd5b506102096103a73660046114c2565b6107bb565b3480156103b857600080fd5b506101e76103c73660046115f7565b6107d4565b3480156103d857600080fd5b506102096103e73660046114c2565b610857565b3480156103f857600080fd5b506101e76104073660046114c2565b61086d565b34801561041857600080fd5b50610252610427366004611457565b610911565b34801561043857600080fd5b506101e7610447366004611667565b610950565b34801561045857600080fd5b506102527fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b34801561048c57600080fd5b5061020961049b3660046115f7565b610aa2565b3480156104ac57600080fd5b50610252600081565b3480156104c157600080fd5b506102527ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104f557600080fd5b50610252610504366004611718565b610acb565b34801561051557600080fd5b506102f261052436600461183f565b63bc197c8160e01b95945050505050565b34801561054157600080fd5b506101e76105503660046114c2565b610b10565b34801561056157600080fd5b506102526105703660046114c2565b60009081526001602052604090205490565b34801561058e57600080fd5b506101e761059d3660046115f7565b610be5565b6101e76105b0366004611718565b610c0a565b3480156105c157600080fd5b506102f26105d03660046118e8565b63f23a6e6160e01b95945050505050565b3480156105ed57600080fd5b50600254610252565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161062081610d94565b6000610630898989898989610911565b905061063c8184610da1565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a60405161067896959493929190611975565b60405180910390a3505050505050505050565b60006001600160e01b03198216630271189760e51b14806106b057506106b082610e90565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636106e2816000610aa2565b6106f0576106f08133610ec5565b6000610700888888888888610911565b905061070c8185610f29565b61071888888888610fc5565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161075094939291906119b2565b60405180910390a361076181611098565b5050505050505050565b60008181526001602052604081205460018111801561078a5750428111155b9392505050565b6000828152602081905260409020600101546107ac81610d94565b6107b683836110d1565b505050565b60008181526001602052604081205481905b1192915050565b6001600160a01b03811633146108495760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6108538282611155565b5050565b60008181526001602081905260408220546107cd565b3330146108d05760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b6064820152608401610840565b60025460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1600255565b600086868686868660405160200161092e96959493929190611975565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161097a81610d94565b8887146109995760405162461bcd60e51b8152600401610840906119e4565b8885146109b85760405162461bcd60e51b8152600401610840906119e4565b60006109ca8b8b8b8b8b8b8b8b610acb565b90506109d68184610da1565b60005b8a811015610a945780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a1657610a16611a27565b9050602002016020810190610a2b9190611a3d565b8d8d86818110610a3d57610a3d611a27565b905060200201358c8c87818110610a5657610a56611a27565b9050602002810190610a689190611a58565b8c8b604051610a7c96959493929190611975565b60405180910390a3610a8d81611ab4565b90506109d9565b505050505050505050505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60008888888888888888604051602001610aec989796959493929190611b5f565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610b3a81610d94565b610b4382610857565b610ba95760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b6064820152608401610840565b6000828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260208190526040902060010154610c0081610d94565b6107b68383611155565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610c36816000610aa2565b610c4457610c448133610ec5565b878614610c635760405162461bcd60e51b8152600401610840906119e4565b878414610c825760405162461bcd60e51b8152600401610840906119e4565b6000610c948a8a8a8a8a8a8a8a610acb565b9050610ca08185610f29565b60005b89811015610d7e5760008b8b83818110610cbf57610cbf611a27565b9050602002016020810190610cd49190611a3d565b905060008a8a84818110610cea57610cea611a27565b9050602002013590503660008a8a86818110610d0857610d08611a27565b9050602002810190610d1a9190611a58565b91509150610d2a84848484610fc5565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610d6194939291906119b2565b60405180910390a35050505080610d7790611ab4565b9050610ca3565b50610d8881611098565b50505050505050505050565b610d9e8133610ec5565b50565b610daa826107bb565b15610e0f5760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b6064820152608401610840565b600254811015610e705760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b6064820152608401610840565b610e7a8142611c0a565b6000928352600160205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b14806106b057506301ffc9a760e01b6001600160e01b03198316146106b0565b610ecf8282610aa2565b61085357610ee7816001600160a01b031660146111ba565b610ef28360206111ba565b604051602001610f03929190611c52565b60408051601f198184030181529082905262461bcd60e51b825261084091600401611cc7565b610f328261076b565b610f4e5760405162461bcd60e51b815260040161084090611cfa565b801580610f6a5750600081815260016020819052604090912054145b6108535760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b6064820152608401610840565b6000846001600160a01b0316848484604051610fe2929190611d44565b60006040518083038185875af1925050503d806000811461101f576040519150601f19603f3d011682016040523d82523d6000602084013e611024565b606091505b50509050806110915760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b6064820152608401610840565b5050505050565b6110a18161076b565b6110bd5760405162461bcd60e51b815260040161084090611cfa565b600090815260016020819052604090912055565b6110db8282610aa2565b610853576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556111113390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61115f8282610aa2565b15610853576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b606060006111c9836002611d54565b6111d4906002611c0a565b6001600160401b038111156111eb576111eb6114db565b6040519080825280601f01601f191660200182016040528015611215576020820181803683370190505b509050600360fc1b8160008151811061123057611230611a27565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061125f5761125f611a27565b60200101906001600160f81b031916908160001a9053506000611283846002611d54565b61128e906001611c0a565b90505b6001811115611306576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106112c2576112c2611a27565b1a60f81b8282815181106112d8576112d8611a27565b60200101906001600160f81b031916908160001a90535060049490941c936112ff81611d73565b9050611291565b50831561078a5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610840565b80356001600160a01b038116811461136c57600080fd5b919050565b60008083601f84011261138357600080fd5b5081356001600160401b0381111561139a57600080fd5b6020830191508360208285010111156113b257600080fd5b9250929050565b600080600080600080600060c0888a0312156113d457600080fd5b6113dd88611355565b96506020880135955060408801356001600160401b038111156113ff57600080fd5b61140b8a828b01611371565b989b979a50986060810135976080820135975060a09091013595509350505050565b60006020828403121561143f57600080fd5b81356001600160e01b03198116811461078a57600080fd5b60008060008060008060a0878903121561147057600080fd5b61147987611355565b95506020870135945060408701356001600160401b0381111561149b57600080fd5b6114a789828a01611371565b979a9699509760608101359660809091013595509350505050565b6000602082840312156114d457600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611519576115196114db565b604052919050565b600082601f83011261153257600080fd5b81356001600160401b0381111561154b5761154b6114db565b61155e601f8201601f19166020016114f1565b81815284602083860101111561157357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156115a657600080fd5b6115af85611355565b93506115bd60208601611355565b92506040850135915060608501356001600160401b038111156115df57600080fd5b6115eb87828801611521565b91505092959194509250565b6000806040838503121561160a57600080fd5b8235915061161a60208401611355565b90509250929050565b60008083601f84011261163557600080fd5b5081356001600160401b0381111561164c57600080fd5b6020830191508360208260051b85010111156113b257600080fd5b600080600080600080600080600060c08a8c03121561168557600080fd5b89356001600160401b038082111561169c57600080fd5b6116a88d838e01611623565b909b50995060208c01359150808211156116c157600080fd5b6116cd8d838e01611623565b909950975060408c01359150808211156116e657600080fd5b506116f38c828d01611623565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060008060008060a0898b03121561173457600080fd5b88356001600160401b038082111561174b57600080fd5b6117578c838d01611623565b909a50985060208b013591508082111561177057600080fd5b61177c8c838d01611623565b909850965060408b013591508082111561179557600080fd5b506117a28b828c01611623565b999c989b509699959896976060870135966080013595509350505050565b600082601f8301126117d157600080fd5b813560206001600160401b038211156117ec576117ec6114db565b8160051b6117fb8282016114f1565b928352848101820192828101908785111561181557600080fd5b83870192505b848310156118345782358252918301919083019061181b565b979650505050505050565b600080600080600060a0868803121561185757600080fd5b61186086611355565b945061186e60208701611355565b935060408601356001600160401b038082111561188a57600080fd5b61189689838a016117c0565b945060608801359150808211156118ac57600080fd5b6118b889838a016117c0565b935060808801359150808211156118ce57600080fd5b506118db88828901611521565b9150509295509295909350565b600080600080600060a0868803121561190057600080fd5b61190986611355565b945061191760208701611355565b9350604086013592506060860135915060808601356001600160401b0381111561194057600080fd5b6118db88828901611521565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a06040820152600061199d60a08301868861194c565b60608301949094525060800152949350505050565b60018060a01b03851681528360208201526060604082015260006119da60608301848661194c565b9695505050505050565b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a4f57600080fd5b61078a82611355565b6000808335601e19843603018112611a6f57600080fd5b8301803591506001600160401b03821115611a8957600080fd5b6020019150368190038213156113b257600080fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611ac857611ac8611a9e565b5060010190565b81835260006020808501808196508560051b810191508460005b87811015611b525782840389528135601e19883603018112611b0a57600080fd5b870180356001600160401b03811115611b2257600080fd5b803603891315611b3157600080fd5b611b3e868289850161194c565b9a87019a9550505090840190600101611ae9565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b811015611ba0576001600160a01b03611b8b84611355565b16825260209283019290910190600101611b72565b5083810360208501528881526001600160fb1b03891115611bc057600080fd5b8860051b9150818a602083013781810191505060208101600081526020848303016040850152611bf181888a611acf565b6060850196909652505050608001529695505050505050565b60008219821115611c1d57611c1d611a9e565b500190565b60005b83811015611c3d578181015183820152602001611c25565b83811115611c4c576000848401525b50505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611c8a816017850160208801611c22565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611cbb816028840160208801611c22565b01602801949350505050565b6020815260008251806020840152611ce6816040850160208701611c22565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b6000816000190483118215151615611d6e57611d6e611a9e565b500290565b600081611d8257611d82611a9e565b50600019019056fea264697066735822122023b625a84dcb4b4c5ff2a17e50ba1c1d3d259599aad6471dfd37918d4800174364736f6c634300080900335f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5b09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63fd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783","deployedBytecode":"0x6080604052600436106101bb5760003560e01c80638065657f116100ec578063bc197c811161008a578063d547741f11610064578063d547741f14610582578063e38335e5146105a2578063f23a6e61146105b5578063f27a0c92146105e157600080fd5b8063bc197c8114610509578063c4d252f514610535578063d45c44351461055557600080fd5b806391d14854116100c657806391d1485414610480578063a217fddf146104a0578063b08e51c0146104b5578063b1c5f427146104e957600080fd5b80638065657f1461040c5780638f2a0bb01461042c5780638f61f4f51461044c57600080fd5b8063248a9ca31161015957806331d507501161013357806331d507501461038c57806336568abe146103ac578063584b153e146103cc57806364d62353146103ec57600080fd5b8063248a9ca31461030b5780632ab0f5291461033b5780632f2ff15d1461036c57600080fd5b80630d3cf6fc116101955780630d3cf6fc14610260578063134008d31461029457806313bc9f20146102a7578063150b7a02146102c757600080fd5b806301d5062a146101c757806301ffc9a7146101e957806307bd02651461021e57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101e76101e23660046113b9565b6105f6565b005b3480156101f557600080fd5b5061020961020436600461142d565b61068b565b60405190151581526020015b60405180910390f35b34801561022a57600080fd5b506102527fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610215565b34801561026c57600080fd5b506102527f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b6101e76102a2366004611457565b6106b6565b3480156102b357600080fd5b506102096102c23660046114c2565b61076b565b3480156102d357600080fd5b506102f26102e2366004611590565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610215565b34801561031757600080fd5b506102526103263660046114c2565b60009081526020819052604090206001015490565b34801561034757600080fd5b506102096103563660046114c2565b6000908152600160208190526040909120541490565b34801561037857600080fd5b506101e76103873660046115f7565b610791565b34801561039857600080fd5b506102096103a73660046114c2565b6107bb565b3480156103b857600080fd5b506101e76103c73660046115f7565b6107d4565b3480156103d857600080fd5b506102096103e73660046114c2565b610857565b3480156103f857600080fd5b506101e76104073660046114c2565b61086d565b34801561041857600080fd5b50610252610427366004611457565b610911565b34801561043857600080fd5b506101e7610447366004611667565b610950565b34801561045857600080fd5b506102527fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b34801561048c57600080fd5b5061020961049b3660046115f7565b610aa2565b3480156104ac57600080fd5b50610252600081565b3480156104c157600080fd5b506102527ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104f557600080fd5b50610252610504366004611718565b610acb565b34801561051557600080fd5b506102f261052436600461183f565b63bc197c8160e01b95945050505050565b34801561054157600080fd5b506101e76105503660046114c2565b610b10565b34801561056157600080fd5b506102526105703660046114c2565b60009081526001602052604090205490565b34801561058e57600080fd5b506101e761059d3660046115f7565b610be5565b6101e76105b0366004611718565b610c0a565b3480156105c157600080fd5b506102f26105d03660046118e8565b63f23a6e6160e01b95945050505050565b3480156105ed57600080fd5b50600254610252565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161062081610d94565b6000610630898989898989610911565b905061063c8184610da1565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a60405161067896959493929190611975565b60405180910390a3505050505050505050565b60006001600160e01b03198216630271189760e51b14806106b057506106b082610e90565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636106e2816000610aa2565b6106f0576106f08133610ec5565b6000610700888888888888610911565b905061070c8185610f29565b61071888888888610fc5565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161075094939291906119b2565b60405180910390a361076181611098565b5050505050505050565b60008181526001602052604081205460018111801561078a5750428111155b9392505050565b6000828152602081905260409020600101546107ac81610d94565b6107b683836110d1565b505050565b60008181526001602052604081205481905b1192915050565b6001600160a01b03811633146108495760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6108538282611155565b5050565b60008181526001602081905260408220546107cd565b3330146108d05760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b6064820152608401610840565b60025460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1600255565b600086868686868660405160200161092e96959493929190611975565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161097a81610d94565b8887146109995760405162461bcd60e51b8152600401610840906119e4565b8885146109b85760405162461bcd60e51b8152600401610840906119e4565b60006109ca8b8b8b8b8b8b8b8b610acb565b90506109d68184610da1565b60005b8a811015610a945780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a1657610a16611a27565b9050602002016020810190610a2b9190611a3d565b8d8d86818110610a3d57610a3d611a27565b905060200201358c8c87818110610a5657610a56611a27565b9050602002810190610a689190611a58565b8c8b604051610a7c96959493929190611975565b60405180910390a3610a8d81611ab4565b90506109d9565b505050505050505050505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60008888888888888888604051602001610aec989796959493929190611b5f565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610b3a81610d94565b610b4382610857565b610ba95760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b6064820152608401610840565b6000828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260208190526040902060010154610c0081610d94565b6107b68383611155565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610c36816000610aa2565b610c4457610c448133610ec5565b878614610c635760405162461bcd60e51b8152600401610840906119e4565b878414610c825760405162461bcd60e51b8152600401610840906119e4565b6000610c948a8a8a8a8a8a8a8a610acb565b9050610ca08185610f29565b60005b89811015610d7e5760008b8b83818110610cbf57610cbf611a27565b9050602002016020810190610cd49190611a3d565b905060008a8a84818110610cea57610cea611a27565b9050602002013590503660008a8a86818110610d0857610d08611a27565b9050602002810190610d1a9190611a58565b91509150610d2a84848484610fc5565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610d6194939291906119b2565b60405180910390a35050505080610d7790611ab4565b9050610ca3565b50610d8881611098565b50505050505050505050565b610d9e8133610ec5565b50565b610daa826107bb565b15610e0f5760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b6064820152608401610840565b600254811015610e705760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b6064820152608401610840565b610e7a8142611c0a565b6000928352600160205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b14806106b057506301ffc9a760e01b6001600160e01b03198316146106b0565b610ecf8282610aa2565b61085357610ee7816001600160a01b031660146111ba565b610ef28360206111ba565b604051602001610f03929190611c52565b60408051601f198184030181529082905262461bcd60e51b825261084091600401611cc7565b610f328261076b565b610f4e5760405162461bcd60e51b815260040161084090611cfa565b801580610f6a5750600081815260016020819052604090912054145b6108535760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b6064820152608401610840565b6000846001600160a01b0316848484604051610fe2929190611d44565b60006040518083038185875af1925050503d806000811461101f576040519150601f19603f3d011682016040523d82523d6000602084013e611024565b606091505b50509050806110915760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b6064820152608401610840565b5050505050565b6110a18161076b565b6110bd5760405162461bcd60e51b815260040161084090611cfa565b600090815260016020819052604090912055565b6110db8282610aa2565b610853576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556111113390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61115f8282610aa2565b15610853576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b606060006111c9836002611d54565b6111d4906002611c0a565b6001600160401b038111156111eb576111eb6114db565b6040519080825280601f01601f191660200182016040528015611215576020820181803683370190505b509050600360fc1b8160008151811061123057611230611a27565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061125f5761125f611a27565b60200101906001600160f81b031916908160001a9053506000611283846002611d54565b61128e906001611c0a565b90505b6001811115611306576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106112c2576112c2611a27565b1a60f81b8282815181106112d8576112d8611a27565b60200101906001600160f81b031916908160001a90535060049490941c936112ff81611d73565b9050611291565b50831561078a5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610840565b80356001600160a01b038116811461136c57600080fd5b919050565b60008083601f84011261138357600080fd5b5081356001600160401b0381111561139a57600080fd5b6020830191508360208285010111156113b257600080fd5b9250929050565b600080600080600080600060c0888a0312156113d457600080fd5b6113dd88611355565b96506020880135955060408801356001600160401b038111156113ff57600080fd5b61140b8a828b01611371565b989b979a50986060810135976080820135975060a09091013595509350505050565b60006020828403121561143f57600080fd5b81356001600160e01b03198116811461078a57600080fd5b60008060008060008060a0878903121561147057600080fd5b61147987611355565b95506020870135945060408701356001600160401b0381111561149b57600080fd5b6114a789828a01611371565b979a9699509760608101359660809091013595509350505050565b6000602082840312156114d457600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611519576115196114db565b604052919050565b600082601f83011261153257600080fd5b81356001600160401b0381111561154b5761154b6114db565b61155e601f8201601f19166020016114f1565b81815284602083860101111561157357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156115a657600080fd5b6115af85611355565b93506115bd60208601611355565b92506040850135915060608501356001600160401b038111156115df57600080fd5b6115eb87828801611521565b91505092959194509250565b6000806040838503121561160a57600080fd5b8235915061161a60208401611355565b90509250929050565b60008083601f84011261163557600080fd5b5081356001600160401b0381111561164c57600080fd5b6020830191508360208260051b85010111156113b257600080fd5b600080600080600080600080600060c08a8c03121561168557600080fd5b89356001600160401b038082111561169c57600080fd5b6116a88d838e01611623565b909b50995060208c01359150808211156116c157600080fd5b6116cd8d838e01611623565b909950975060408c01359150808211156116e657600080fd5b506116f38c828d01611623565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060008060008060a0898b03121561173457600080fd5b88356001600160401b038082111561174b57600080fd5b6117578c838d01611623565b909a50985060208b013591508082111561177057600080fd5b61177c8c838d01611623565b909850965060408b013591508082111561179557600080fd5b506117a28b828c01611623565b999c989b509699959896976060870135966080013595509350505050565b600082601f8301126117d157600080fd5b813560206001600160401b038211156117ec576117ec6114db565b8160051b6117fb8282016114f1565b928352848101820192828101908785111561181557600080fd5b83870192505b848310156118345782358252918301919083019061181b565b979650505050505050565b600080600080600060a0868803121561185757600080fd5b61186086611355565b945061186e60208701611355565b935060408601356001600160401b038082111561188a57600080fd5b61189689838a016117c0565b945060608801359150808211156118ac57600080fd5b6118b889838a016117c0565b935060808801359150808211156118ce57600080fd5b506118db88828901611521565b9150509295509295909350565b600080600080600060a0868803121561190057600080fd5b61190986611355565b945061191760208701611355565b9350604086013592506060860135915060808601356001600160401b0381111561194057600080fd5b6118db88828901611521565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a06040820152600061199d60a08301868861194c565b60608301949094525060800152949350505050565b60018060a01b03851681528360208201526060604082015260006119da60608301848661194c565b9695505050505050565b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a4f57600080fd5b61078a82611355565b6000808335601e19843603018112611a6f57600080fd5b8301803591506001600160401b03821115611a8957600080fd5b6020019150368190038213156113b257600080fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611ac857611ac8611a9e565b5060010190565b81835260006020808501808196508560051b810191508460005b87811015611b525782840389528135601e19883603018112611b0a57600080fd5b870180356001600160401b03811115611b2257600080fd5b803603891315611b3157600080fd5b611b3e868289850161194c565b9a87019a9550505090840190600101611ae9565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b811015611ba0576001600160a01b03611b8b84611355565b16825260209283019290910190600101611b72565b5083810360208501528881526001600160fb1b03891115611bc057600080fd5b8860051b9150818a602083013781810191505060208101600081526020848303016040850152611bf181888a611acf565b6060850196909652505050608001529695505050505050565b60008219821115611c1d57611c1d611a9e565b500190565b60005b83811015611c3d578181015183820152602001611c25565b83811115611c4c576000848401525b50505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611c8a816017850160208801611c22565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611cbb816028840160208801611c22565b01602801949350505050565b6020815260008251806020840152611ce6816040850160208701611c22565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b6000816000190483118215151615611d6e57611d6e611a9e565b500290565b600081611d8257611d82611a9e565b50600019019056fea264697066735822122023b625a84dcb4b4c5ff2a17e50ba1c1d3d259599aad6471dfd37918d4800174364736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/utils/IVotes":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IVotes","sourceName":"contracts/governance/utils/IVotes.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/utils/Votes":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Votes","sourceName":"contracts/governance/utils/Votes.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC1822Proxiable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1822Proxiable","sourceName":"contracts/interfaces/draft-IERC1822.sol","abi":[{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC2612":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC2612","sourceName":"contracts/interfaces/draft-IERC2612.sol","abi":[{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC1271":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1271","sourceName":"contracts/interfaces/IERC1271.sol","abi":[{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"magicValue","type":"bytes4"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC1363":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1363","sourceName":"contracts/interfaces/IERC1363.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transferFromAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFromAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC1363Receiver":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1363Receiver","sourceName":"contracts/interfaces/IERC1363Receiver.sol","abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onTransferReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC1363Spender":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1363Spender","sourceName":"contracts/interfaces/IERC1363Spender.sol","abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onApprovalReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC2981":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC2981","sourceName":"contracts/interfaces/IERC2981.sol","abi":[{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC3156FlashBorrower":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC3156FlashBorrower","sourceName":"contracts/interfaces/IERC3156FlashBorrower.sol","abi":[{"inputs":[{"internalType":"address","name":"initiator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onFlashLoan","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC3156FlashLender":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC3156FlashLender","sourceName":"contracts/interfaces/IERC3156FlashLender.sol","abi":[{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"flashFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"flashLoan","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"maxFlashLoan","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC4626":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC4626","sourceName":"contracts/interfaces/IERC4626.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"assetTokenAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"convertToShares","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"maxAssets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"maxMint","outputs":[{"internalType":"uint256","name":"maxShares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxRedeem","outputs":[{"internalType":"uint256","name":"maxShares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"maxAssets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewDeposit","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewMint","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewRedeem","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"totalManagedAssets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/metatx/ERC2771Context":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC2771Context","sourceName":"contracts/metatx/ERC2771Context.sol","abi":[{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/metatx/MinimalForwarder":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"MinimalForwarder","sourceName":"contracts/metatx/MinimalForwarder.sol","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct MinimalForwarder.ForwardRequest","name":"req","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"execute","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"}],"name":"getNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct MinimalForwarder.ForwardRequest","name":"req","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"verify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x61014060405234801561001157600080fd5b50604080518082018252601081526f26b4b734b6b0b62337b93bb0b93232b960811b602080830191825283518085019094526005845264302e302e3160d81b908401528151902060e08190527fae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc1991638118856101008190524660a0529192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6100fb8184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c052610120525061011092505050565b60805160a05160c05160e0516101005161012051610ae261015f60003960006104ec0152600061053b015260006105160152600061046f01526000610499015260006104c30152610ae26000f3fe6080604052600436106100345760003560e01c80632d0335ab1461003957806347153f8214610082578063bf5d3bdb146100a3575b600080fd5b34801561004557600080fd5b5061006f61005436600461087a565b6001600160a01b031660009081526020819052604090205490565b6040519081526020015b60405180910390f35b6100956100903660046108aa565b6100d3565b604051610079929190610979565b3480156100af57600080fd5b506100c36100be3660046108aa565b61026c565b6040519015158152602001610079565b600060606100e285858561026c565b61014e5760405162461bcd60e51b815260206004820152603260248201527f4d696e696d616c466f727761726465723a207369676e617475726520646f6573604482015271081b9bdd081b585d18da081c995c5d595cdd60721b60648201526084015b60405180910390fd5b61015d608086013560016109b5565b60008061016d602089018961087a565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000808660200160208101906101a7919061087a565b6001600160a01b0316606088013560408901356101c760a08b018b6109db565b6101d460208d018d61087a565b6040516020016101e693929190610a22565b60408051601f198184030181529082905261020091610a48565b600060405180830381858888f193505050503d806000811461023e576040519150601f19603f3d011682016040523d82523d6000602084013e610243565b606091505b509092509050610258603f6060890135610a64565b5a1161026057fe5b90969095509350505050565b60008061037f84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061037992507fdd8f4b70b0f4393e889bd39128a30628a78b61816a9eb8199759e7a349657e4891506102dc905060208a018a61087a565b6102ec60408b0160208c0161087a565b60408b013560608c013560808d013561030860a08f018f6109db565b604051610316929190610a86565b6040805191829003822060208301989098526001600160a01b0396871690820152949093166060850152608084019190915260a083015260c082015260e081019190915261010001604051602081830303815290604052805190602001206103ea565b9061043e565b90506080850135600080610396602089018961087a565b6001600160a01b03166001600160a01b03168152602001908152602001600020541480156103e157506103cc602086018661087a565b6001600160a01b0316816001600160a01b0316145b95945050505050565b60006104386103f7610462565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b92915050565b600080600061044d8585610589565b9150915061045a816105cf565b509392505050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156104bb57507f000000000000000000000000000000000000000000000000000000000000000046145b156104e557507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b6000808251604114156105c05760208301516040840151606085015160001a6105b48782858561078d565b945094505050506105c8565b506000905060025b9250929050565b60008160048111156105e3576105e3610a96565b14156105ec5750565b600181600481111561060057610600610a96565b141561064e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610145565b600281600481111561066257610662610a96565b14156106b05760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610145565b60038160048111156106c4576106c4610a96565b141561071d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610145565b600481600481111561073157610731610a96565b141561078a5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610145565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156107c45750600090506003610871565b8460ff16601b141580156107dc57508460ff16601c14155b156107ed5750600090506004610871565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610841573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661086a57600060019250925050610871565b9150600090505b94509492505050565b60006020828403121561088c57600080fd5b81356001600160a01b03811681146108a357600080fd5b9392505050565b6000806000604084860312156108bf57600080fd5b833567ffffffffffffffff808211156108d757600080fd5b9085019060c082880312156108eb57600080fd5b9093506020850135908082111561090157600080fd5b818601915086601f83011261091557600080fd5b81358181111561092457600080fd5b87602082850101111561093657600080fd5b6020830194508093505050509250925092565b60005b8381101561096457818101518382015260200161094c565b83811115610973576000848401525b50505050565b821515815260406020820152600082518060408401526109a0816060850160208701610949565b601f01601f1916919091016060019392505050565b600082198211156109d657634e487b7160e01b600052601160045260246000fd5b500190565b6000808335601e198436030181126109f257600080fd5b83018035915067ffffffffffffffff821115610a0d57600080fd5b6020019150368190038213156105c857600080fd5b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b60008251610a5a818460208701610949565b9190910192915050565b600082610a8157634e487b7160e01b600052601260045260246000fd5b500490565b8183823760009101908152919050565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220c096d335dd8ff531b965b5440323db8da2634e5b6dabf89bdbc9ecaaef95384164736f6c63430008090033","deployedBytecode":"0x6080604052600436106100345760003560e01c80632d0335ab1461003957806347153f8214610082578063bf5d3bdb146100a3575b600080fd5b34801561004557600080fd5b5061006f61005436600461087a565b6001600160a01b031660009081526020819052604090205490565b6040519081526020015b60405180910390f35b6100956100903660046108aa565b6100d3565b604051610079929190610979565b3480156100af57600080fd5b506100c36100be3660046108aa565b61026c565b6040519015158152602001610079565b600060606100e285858561026c565b61014e5760405162461bcd60e51b815260206004820152603260248201527f4d696e696d616c466f727761726465723a207369676e617475726520646f6573604482015271081b9bdd081b585d18da081c995c5d595cdd60721b60648201526084015b60405180910390fd5b61015d608086013560016109b5565b60008061016d602089018961087a565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000808660200160208101906101a7919061087a565b6001600160a01b0316606088013560408901356101c760a08b018b6109db565b6101d460208d018d61087a565b6040516020016101e693929190610a22565b60408051601f198184030181529082905261020091610a48565b600060405180830381858888f193505050503d806000811461023e576040519150601f19603f3d011682016040523d82523d6000602084013e610243565b606091505b509092509050610258603f6060890135610a64565b5a1161026057fe5b90969095509350505050565b60008061037f84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061037992507fdd8f4b70b0f4393e889bd39128a30628a78b61816a9eb8199759e7a349657e4891506102dc905060208a018a61087a565b6102ec60408b0160208c0161087a565b60408b013560608c013560808d013561030860a08f018f6109db565b604051610316929190610a86565b6040805191829003822060208301989098526001600160a01b0396871690820152949093166060850152608084019190915260a083015260c082015260e081019190915261010001604051602081830303815290604052805190602001206103ea565b9061043e565b90506080850135600080610396602089018961087a565b6001600160a01b03166001600160a01b03168152602001908152602001600020541480156103e157506103cc602086018661087a565b6001600160a01b0316816001600160a01b0316145b95945050505050565b60006104386103f7610462565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b92915050565b600080600061044d8585610589565b9150915061045a816105cf565b509392505050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156104bb57507f000000000000000000000000000000000000000000000000000000000000000046145b156104e557507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b6000808251604114156105c05760208301516040840151606085015160001a6105b48782858561078d565b945094505050506105c8565b506000905060025b9250929050565b60008160048111156105e3576105e3610a96565b14156105ec5750565b600181600481111561060057610600610a96565b141561064e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610145565b600281600481111561066257610662610a96565b14156106b05760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610145565b60038160048111156106c4576106c4610a96565b141561071d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610145565b600481600481111561073157610731610a96565b141561078a5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610145565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156107c45750600090506003610871565b8460ff16601b141580156107dc57508460ff16601c14155b156107ed5750600090506004610871565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610841573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661086a57600060019250925050610871565b9150600090505b94509492505050565b60006020828403121561088c57600080fd5b81356001600160a01b03811681146108a357600080fd5b9392505050565b6000806000604084860312156108bf57600080fd5b833567ffffffffffffffff808211156108d757600080fd5b9085019060c082880312156108eb57600080fd5b9093506020850135908082111561090157600080fd5b818601915086601f83011261091557600080fd5b81358181111561092457600080fd5b87602082850101111561093657600080fd5b6020830194508093505050509250925092565b60005b8381101561096457818101518382015260200161094c565b83811115610973576000848401525b50505050565b821515815260406020820152600082518060408401526109a0816060850160208701610949565b601f01601f1916919091016060019392505050565b600082198211156109d657634e487b7160e01b600052601160045260246000fd5b500190565b6000808335601e198436030181126109f257600080fd5b83018035915067ffffffffffffffff821115610a0d57600080fd5b6020019150368190038213156105c857600080fd5b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b60008251610a5a818460208701610949565b9190910192915050565b600082610a8157634e487b7160e01b600052601260045260246000fd5b500490565b8183823760009101908152919050565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220c096d335dd8ff531b965b5440323db8da2634e5b6dabf89bdbc9ecaaef95384164736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/beacon/BeaconProxy":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"BeaconProxy","sourceName":"contracts/proxy/beacon/BeaconProxy.sol","abi":[{"inputs":[{"internalType":"address","name":"beacon","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x608060405260405161092738038061092783398101604081905261002291610474565b61002e82826000610035565b505061059e565b61003e8361010f565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b1561010a57610108836001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100c057600080fd5b505afa1580156100d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100f89190610534565b836102c160201b6100291760201c565b505b505050565b610122816102ed60201b6100551760201c565b6101815760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b610204816001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101bd57600080fd5b505afa1580156101d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f59190610534565b6102ed60201b6100551760201c565b6102695760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610178565b806102a07fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102fc60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102e68383604051806060016040528060278152602001610900602791396102ff565b9392505050565b6001600160a01b03163b151590565b90565b60606001600160a01b0384163b6103675760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610178565b600080856001600160a01b031685604051610382919061054f565b600060405180830381855af49150503d80600081146103bd576040519150601f19603f3d011682016040523d82523d6000602084013e6103c2565b606091505b5090925090506103d38282866103dd565b9695505050505050565b606083156103ec5750816102e6565b8251156103fc5782518084602001fd5b8160405162461bcd60e51b8152600401610178919061056b565b80516001600160a01b038116811461042d57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561046357818101518382015260200161044b565b838111156101085750506000910152565b6000806040838503121561048757600080fd5b61049083610416565b60208401519092506001600160401b03808211156104ad57600080fd5b818501915085601f8301126104c157600080fd5b8151818111156104d3576104d3610432565b604051601f8201601f19908116603f011681019083821181831017156104fb576104fb610432565b8160405282815288602084870101111561051457600080fd5b610525836020830160208801610448565b80955050505050509250929050565b60006020828403121561054657600080fd5b6102e682610416565b60008251610561818460208701610448565b9190910192915050565b602081526000825180602084015261058a816040850160208701610448565b601f01601f19169190910160400192915050565b610353806105ad6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61010f565b565b606061004e83836040518060600160405280602781526020016102f760279139610133565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100d257600080fd5b505afa1580156100e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010a919061024e565b905090565b3660008037600080366000845af43d6000803e80801561012e573d6000f35b3d6000fd5b60606001600160a01b0384163b6101a05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101bb91906102a7565b600060405180830381855af49150503d80600081146101f6576040519150601f19603f3d011682016040523d82523d6000602084013e6101fb565b606091505b509150915061020b828286610215565b9695505050505050565b6060831561022457508161004e565b8251156102345782518084602001fd5b8160405162461bcd60e51b815260040161019791906102c3565b60006020828403121561026057600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561029257818101518382015260200161027a565b838111156102a1576000848401525b50505050565b600082516102b9818460208701610277565b9190910192915050565b60208152600082518060208401526102e2816040850160208701610277565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c2849c0a15380ad6927f162f733548aad2e7c63763af5c25bea6e78da74d417964736f6c63430008090033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","deployedBytecode":"0x60806040523661001357610011610017565b005b6100115b610027610022610067565b61010f565b565b606061004e83836040518060600160405280602781526020016102f760279139610133565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100d257600080fd5b505afa1580156100e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010a919061024e565b905090565b3660008037600080366000845af43d6000803e80801561012e573d6000f35b3d6000fd5b60606001600160a01b0384163b6101a05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101bb91906102a7565b600060405180830381855af49150503d80600081146101f6576040519150601f19603f3d011682016040523d82523d6000602084013e6101fb565b606091505b509150915061020b828286610215565b9695505050505050565b6060831561022457508161004e565b8251156102345782518084602001fd5b8160405162461bcd60e51b815260040161019791906102c3565b60006020828403121561026057600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561029257818101518382015260200161027a565b838111156102a1576000848401525b50505050565b600082516102b9818460208701610277565b9190910192915050565b60208152600082518060208401526102e2816040850160208701610277565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c2849c0a15380ad6927f162f733548aad2e7c63763af5c25bea6e78da74d417964736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/beacon/IBeacon":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IBeacon","sourceName":"contracts/proxy/beacon/IBeacon.sol","abi":[{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/beacon/UpgradeableBeacon":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"UpgradeableBeacon","sourceName":"contracts/proxy/beacon/UpgradeableBeacon.sol","abi":[{"inputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506040516104e43803806104e483398101604081905261002f91610151565b61003833610047565b61004181610097565b50610181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100aa8161014260201b6101a01760201c565b6101205760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03163b151590565b60006020828403121561016357600080fd5b81516001600160a01b038116811461017a57600080fd5b9392505050565b610354806101906000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea26469706673582212203f0b62c86ff1acd57383d66937ec1fb6326b68807bfa75a94858ba00c9ff5ceb64736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea26469706673582212203f0b62c86ff1acd57383d66937ec1fb6326b68807bfa75a94858ba00c9ff5ceb64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/Clones":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Clones","sourceName":"contracts/proxy/Clones.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f2026685656e32cd413455db3e805c9b637ba010f3369d29ae06cf1df87608c264736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f2026685656e32cd413455db3e805c9b637ba010f3369d29ae06cf1df87608c264736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/ERC1967/ERC1967Proxy":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1967Proxy","sourceName":"contracts/proxy/ERC1967/ERC1967Proxy.sol","abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x608060405260405161072138038061072183398101604081905261002291610314565b61002e82826000610035565b5050610431565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106fa602791396101a9565b9392505050565b6100ea8161028760201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61029660201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606001600160a01b0384163b6102115760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610148565b600080856001600160a01b03168560405161022c91906103e2565b600060405180830381855af49150503d8060008114610267576040519150601f19603f3d011682016040523d82523d6000602084013e61026c565b606091505b50909250905061027d828286610299565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a85750816100d0565b8251156102b85782518084602001fd5b8160405162461bcd60e51b815260040161014891906103fe565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103035781810151838201526020016102eb565b838111156100645750506000910152565b6000806040838503121561032757600080fd5b82516001600160a01b038116811461033e57600080fd5b60208401519092506001600160401b038082111561035b57600080fd5b818501915085601f83011261036f57600080fd5b815181811115610381576103816102d2565b604051601f8201601f19908116603f011681019083821181831017156103a9576103a96102d2565b816040528281528860208487010111156103c257600080fd5b6103d38360208301602088016102e8565b80955050505050509250929050565b600082516103f48184602087016102e8565b9190910192915050565b602081526000825180602084015261041d8160408501602087016102e8565b601f01601f19169190910160400192915050565b6102ba806104406000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025e602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b60606001600160a01b0384163b6101305760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161014b919061020e565b600060405180830381855af49150503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b509150915061019b8282866101a5565b9695505050505050565b606083156101b457508161004e565b8251156101c45782518084602001fd5b8160405162461bcd60e51b8152600401610127919061022a565b60005b838110156101f95781810151838201526020016101e1565b83811115610208576000848401525b50505050565b600082516102208184602087016101de565b9190910192915050565b60208152600082518060208401526102498160408501602087016101de565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220012b2e6d3c22a9b90d918e56e90f5d0dc9562c086b68567310b49392b9105b8964736f6c63430008090033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","deployedBytecode":"0x60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025e602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b60606001600160a01b0384163b6101305760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161014b919061020e565b600060405180830381855af49150503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b509150915061019b8282866101a5565b9695505050505050565b606083156101b457508161004e565b8251156101c45782518084602001fd5b8160405162461bcd60e51b8152600401610127919061022a565b60005b838110156101f95781810151838201526020016101e1565b83811115610208576000848401525b50505050565b600082516102208184602087016101de565b9190910192915050565b60208152600082518060208401526102498160408501602087016101de565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220012b2e6d3c22a9b90d918e56e90f5d0dc9562c086b68567310b49392b9105b8964736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/ERC1967/ERC1967Upgrade":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1967Upgrade","sourceName":"contracts/proxy/ERC1967/ERC1967Upgrade.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/Proxy":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Proxy","sourceName":"contracts/proxy/Proxy.sol","abi":[{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/transparent/ProxyAdmin":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ProxyAdmin","sourceName":"contracts/proxy/transparent/ProxyAdmin.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeProxyAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"}],"name":"getProxyAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"}],"name":"getProxyImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"implementation","type":"address"}],"name":"upgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea2646970667358221220e9f4825daef94fe498441dad7e269b25b227f53e068d121189fc347571f57cee64736f6c63430008090033","deployedBytecode":"0x60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea2646970667358221220e9f4825daef94fe498441dad7e269b25b227f53e068d121189fc347571f57cee64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/transparent/TransparentUpgradeableProxy":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"TransparentUpgradeableProxy","sourceName":"contracts/proxy/transparent/TransparentUpgradeableProxy.sol","abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x608060405260405162000e8138038062000e81833981016040819052620000269162000490565b828162000036828260006200004d565b50620000449050826200008a565b505050620005c3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e5a60279139620002f8565b9392505050565b60006200018060008051602062000e3a83398151915260001b620003de60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e3a83398151915260001b620003de60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200028c1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620002081760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000570565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f191906200058e565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b83811115620000835750506000910152565b600080600060608486031215620004a657600080fd5b620004b1846200042e565b9250620004c1602085016200042e565b60408501519092506001600160401b0380821115620004df57600080fd5b818601915086601f830112620004f457600080fd5b8151818111156200050957620005096200044b565b604051601f8201601f19908116603f011681019083821181831017156200053457620005346200044b565b816040528281528960208487010111156200054e57600080fd5b6200056183602083016020880162000461565b80955050505050509250925092565b600082516200058481846020870162000461565b9190910192915050565b6020815260008251806020840152620005af81604085016020870162000461565b601f01601f19169190910160400192915050565b61086780620005d36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220cfb0cf0bbe115abbb9bf3be4bc00d10d9ef33dfafdf3dbe5eb87a81104ff498d64736f6c63430008090033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","deployedBytecode":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220cfb0cf0bbe115abbb9bf3be4bc00d10d9ef33dfafdf3dbe5eb87a81104ff498d64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/utils/Initializable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Initializable","sourceName":"contracts/proxy/utils/Initializable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/utils/UUPSUpgradeable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"UUPSUpgradeable","sourceName":"contracts/proxy/utils/UUPSUpgradeable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/security/Pausable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Pausable","sourceName":"contracts/security/Pausable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/security/PullPayment":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"PullPayment","sourceName":"contracts/security/PullPayment.sol","abi":[{"inputs":[{"internalType":"address","name":"dest","type":"address"}],"name":"payments","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"payee","type":"address"}],"name":"withdrawPayments","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/security/ReentrancyGuard":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ReentrancyGuard","sourceName":"contracts/security/ReentrancyGuard.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/common/ERC2981":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC2981","sourceName":"contracts/token/common/ERC2981.sol","abi":[{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/ERC1155":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155","sourceName":"contracts/token/ERC1155/ERC1155.sol","abi":[{"inputs":[{"internalType":"string","name":"uri_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b50604051620015f0380380620015f083398101604081905262000034916200011b565b6200003f8162000046565b5062000234565b80516200005b9060029060208401906200005f565b5050565b8280546200006d90620001f7565b90600052602060002090601f016020900481019282620000915760008555620000dc565b82601f10620000ac57805160ff1916838001178555620000dc565b82800160010185558215620000dc579182015b82811115620000dc578251825591602001919060010190620000bf565b50620000ea929150620000ee565b5090565b5b80821115620000ea5760008155600101620000ef565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200012f57600080fd5b82516001600160401b03808211156200014757600080fd5b818501915085601f8301126200015c57600080fd5b81518181111562000171576200017162000105565b604051601f8201601f19908116603f011681019083821181831017156200019c576200019c62000105565b816040528281528886848701011115620001b557600080fd5b600093505b82841015620001d95784840186015181850187015292850192620001ba565b82841115620001eb5760008684830101525b98975050505050505050565b600181811c908216806200020c57607f821691505b602082108114156200022e57634e487b7160e01b600052602260045260246000fd5b50919050565b6113ac80620002446000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461010a578063a22cb4651461012a578063e985e9c51461013d578063f242432a1461017957600080fd5b8062fdd58e1461008c57806301ffc9a7146100b25780630e89341c146100d55780632eb2c2d6146100f5575b600080fd5b61009f61009a366004610b5f565b61018c565b6040519081526020015b60405180910390f35b6100c56100c0366004610ba2565b610222565b60405190151581526020016100a9565b6100e86100e3366004610bc6565b610274565b6040516100a99190610c2c565b610108610103366004610d8b565b610308565b005b61011d610118366004610e35565b610354565b6040516100a99190610f3b565b610108610138366004610f4e565b61047e565b6100c561014b366004610f8a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b610108610187366004610fbd565b61048d565b60006001600160a01b0383166101fc5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b03198216636cdb3d1360e11b148061025357506001600160e01b031982166303a24d0760e21b145b8061026e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606002805461028390611022565b80601f01602080910402602001604051908101604052809291908181526020018280546102af90611022565b80156102fc5780601f106102d1576101008083540402835291602001916102fc565b820191906000526020600020905b8154815290600101906020018083116102df57829003601f168201915b50505050509050919050565b6001600160a01b0385163314806103245750610324853361014b565b6103405760405162461bcd60e51b81526004016101f39061105d565b61034d85858585856104d2565b5050505050565b606081518351146103b95760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b60648201526084016101f3565b6000835167ffffffffffffffff8111156103d5576103d5610c3f565b6040519080825280602002602001820160405280156103fe578160200160208202803683370190505b50905060005b845181101561047657610449858281518110610422576104226110ac565b602002602001015185838151811061043c5761043c6110ac565b602002602001015161018c565b82828151811061045b5761045b6110ac565b602090810291909101015261046f816110d8565b9050610404565b509392505050565b6104893383836106af565b5050565b6001600160a01b0385163314806104a957506104a9853361014b565b6104c55760405162461bcd60e51b81526004016101f39061105d565b61034d8585858585610790565b81518351146105345760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084016101f3565b6001600160a01b03841661055a5760405162461bcd60e51b81526004016101f3906110f3565b3360005b845181101561064157600085828151811061057b5761057b6110ac565b602002602001015190506000858381518110610599576105996110ac565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156105e95760405162461bcd60e51b81526004016101f390611138565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610626908490611182565b925050819055505050508061063a906110d8565b905061055e565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161069192919061119a565b60405180910390a46106a78187878787876108ba565b505050505050565b816001600160a01b0316836001600160a01b031614156107235760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b60648201526084016101f3565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166107b65760405162461bcd60e51b81526004016101f3906110f3565b3360006107c285610a2e565b905060006107cf85610a2e565b90506000868152602081815260408083206001600160a01b038c168452909152902054858110156108125760405162461bcd60e51b81526004016101f390611138565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061084f908490611182565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46108af848a8a8a8a8a610a79565b505050505050505050565b6001600160a01b0384163b156106a75760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906108fe90899089908890889088906004016111c8565b602060405180830381600087803b15801561091857600080fd5b505af1925050508015610948575060408051601f3d908101601f1916820190925261094591810190611226565b60015b6109f557610954611243565b806308c379a0141561098e575061096961125f565b806109745750610990565b8060405162461bcd60e51b81526004016101f39190610c2c565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60648201526084016101f3565b6001600160e01b0319811663bc197c8160e01b14610a255760405162461bcd60e51b81526004016101f3906112e9565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610a6857610a686110ac565b602090810291909101015292915050565b6001600160a01b0384163b156106a75760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610abd9089908990889088908890600401611331565b602060405180830381600087803b158015610ad757600080fd5b505af1925050508015610b07575060408051601f3d908101601f19168201909252610b0491810190611226565b60015b610b1357610954611243565b6001600160e01b0319811663f23a6e6160e01b14610a255760405162461bcd60e51b81526004016101f3906112e9565b80356001600160a01b0381168114610b5a57600080fd5b919050565b60008060408385031215610b7257600080fd5b610b7b83610b43565b946020939093013593505050565b6001600160e01b031981168114610b9f57600080fd5b50565b600060208284031215610bb457600080fd5b8135610bbf81610b89565b9392505050565b600060208284031215610bd857600080fd5b5035919050565b6000815180845260005b81811015610c0557602081850181015186830182015201610be9565b81811115610c17576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610bbf6020830184610bdf565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715610c7b57610c7b610c3f565b6040525050565b600067ffffffffffffffff821115610c9c57610c9c610c3f565b5060051b60200190565b600082601f830112610cb757600080fd5b81356020610cc482610c82565b604051610cd18282610c55565b83815260059390931b8501820192828101915086841115610cf157600080fd5b8286015b84811015610d0c5780358352918301918301610cf5565b509695505050505050565b600082601f830112610d2857600080fd5b813567ffffffffffffffff811115610d4257610d42610c3f565b604051610d59601f8301601f191660200182610c55565b818152846020838601011115610d6e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215610da357600080fd5b610dac86610b43565b9450610dba60208701610b43565b9350604086013567ffffffffffffffff80821115610dd757600080fd5b610de389838a01610ca6565b94506060880135915080821115610df957600080fd5b610e0589838a01610ca6565b93506080880135915080821115610e1b57600080fd5b50610e2888828901610d17565b9150509295509295909350565b60008060408385031215610e4857600080fd5b823567ffffffffffffffff80821115610e6057600080fd5b818501915085601f830112610e7457600080fd5b81356020610e8182610c82565b604051610e8e8282610c55565b83815260059390931b8501820192828101915089841115610eae57600080fd5b948201945b83861015610ed357610ec486610b43565b82529482019490820190610eb3565b96505086013592505080821115610ee957600080fd5b50610ef685828601610ca6565b9150509250929050565b600081518084526020808501945080840160005b83811015610f3057815187529582019590820190600101610f14565b509495945050505050565b602081526000610bbf6020830184610f00565b60008060408385031215610f6157600080fd5b610f6a83610b43565b915060208301358015158114610f7f57600080fd5b809150509250929050565b60008060408385031215610f9d57600080fd5b610fa683610b43565b9150610fb460208401610b43565b90509250929050565b600080600080600060a08688031215610fd557600080fd5b610fde86610b43565b9450610fec60208701610b43565b93506040860135925060608601359150608086013567ffffffffffffffff81111561101657600080fd5b610e2888828901610d17565b600181811c9082168061103657607f821691505b6020821081141561105757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602f908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526e195c881b9bdc88185c1c1c9bdd9959608a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156110ec576110ec6110c2565b5060010190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60008219821115611195576111956110c2565b500190565b6040815260006111ad6040830185610f00565b82810360208401526111bf8185610f00565b95945050505050565b6001600160a01b0386811682528516602082015260a0604082018190526000906111f490830186610f00565b82810360608401526112068186610f00565b9050828103608084015261121a8185610bdf565b98975050505050505050565b60006020828403121561123857600080fd5b8151610bbf81610b89565b600060033d111561125c5760046000803e5060005160e01c5b90565b600060443d101561126d5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561129d57505050505090565b82850191508151818111156112b55750505050505090565b843d87010160208285010111156112cf5750505050505090565b6112de60208286010187610c55565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061136b90830184610bdf565b97965050505050505056fea26469706673582212208589f9ade71b111122fe06f6192ba5a1bcba279086f8c117d40c8967db504c6e64736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461010a578063a22cb4651461012a578063e985e9c51461013d578063f242432a1461017957600080fd5b8062fdd58e1461008c57806301ffc9a7146100b25780630e89341c146100d55780632eb2c2d6146100f5575b600080fd5b61009f61009a366004610b5f565b61018c565b6040519081526020015b60405180910390f35b6100c56100c0366004610ba2565b610222565b60405190151581526020016100a9565b6100e86100e3366004610bc6565b610274565b6040516100a99190610c2c565b610108610103366004610d8b565b610308565b005b61011d610118366004610e35565b610354565b6040516100a99190610f3b565b610108610138366004610f4e565b61047e565b6100c561014b366004610f8a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b610108610187366004610fbd565b61048d565b60006001600160a01b0383166101fc5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b03198216636cdb3d1360e11b148061025357506001600160e01b031982166303a24d0760e21b145b8061026e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606002805461028390611022565b80601f01602080910402602001604051908101604052809291908181526020018280546102af90611022565b80156102fc5780601f106102d1576101008083540402835291602001916102fc565b820191906000526020600020905b8154815290600101906020018083116102df57829003601f168201915b50505050509050919050565b6001600160a01b0385163314806103245750610324853361014b565b6103405760405162461bcd60e51b81526004016101f39061105d565b61034d85858585856104d2565b5050505050565b606081518351146103b95760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b60648201526084016101f3565b6000835167ffffffffffffffff8111156103d5576103d5610c3f565b6040519080825280602002602001820160405280156103fe578160200160208202803683370190505b50905060005b845181101561047657610449858281518110610422576104226110ac565b602002602001015185838151811061043c5761043c6110ac565b602002602001015161018c565b82828151811061045b5761045b6110ac565b602090810291909101015261046f816110d8565b9050610404565b509392505050565b6104893383836106af565b5050565b6001600160a01b0385163314806104a957506104a9853361014b565b6104c55760405162461bcd60e51b81526004016101f39061105d565b61034d8585858585610790565b81518351146105345760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084016101f3565b6001600160a01b03841661055a5760405162461bcd60e51b81526004016101f3906110f3565b3360005b845181101561064157600085828151811061057b5761057b6110ac565b602002602001015190506000858381518110610599576105996110ac565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156105e95760405162461bcd60e51b81526004016101f390611138565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610626908490611182565b925050819055505050508061063a906110d8565b905061055e565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161069192919061119a565b60405180910390a46106a78187878787876108ba565b505050505050565b816001600160a01b0316836001600160a01b031614156107235760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b60648201526084016101f3565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166107b65760405162461bcd60e51b81526004016101f3906110f3565b3360006107c285610a2e565b905060006107cf85610a2e565b90506000868152602081815260408083206001600160a01b038c168452909152902054858110156108125760405162461bcd60e51b81526004016101f390611138565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061084f908490611182565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46108af848a8a8a8a8a610a79565b505050505050505050565b6001600160a01b0384163b156106a75760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906108fe90899089908890889088906004016111c8565b602060405180830381600087803b15801561091857600080fd5b505af1925050508015610948575060408051601f3d908101601f1916820190925261094591810190611226565b60015b6109f557610954611243565b806308c379a0141561098e575061096961125f565b806109745750610990565b8060405162461bcd60e51b81526004016101f39190610c2c565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60648201526084016101f3565b6001600160e01b0319811663bc197c8160e01b14610a255760405162461bcd60e51b81526004016101f3906112e9565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610a6857610a686110ac565b602090810291909101015292915050565b6001600160a01b0384163b156106a75760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610abd9089908990889088908890600401611331565b602060405180830381600087803b158015610ad757600080fd5b505af1925050508015610b07575060408051601f3d908101601f19168201909252610b0491810190611226565b60015b610b1357610954611243565b6001600160e01b0319811663f23a6e6160e01b14610a255760405162461bcd60e51b81526004016101f3906112e9565b80356001600160a01b0381168114610b5a57600080fd5b919050565b60008060408385031215610b7257600080fd5b610b7b83610b43565b946020939093013593505050565b6001600160e01b031981168114610b9f57600080fd5b50565b600060208284031215610bb457600080fd5b8135610bbf81610b89565b9392505050565b600060208284031215610bd857600080fd5b5035919050565b6000815180845260005b81811015610c0557602081850181015186830182015201610be9565b81811115610c17576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610bbf6020830184610bdf565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715610c7b57610c7b610c3f565b6040525050565b600067ffffffffffffffff821115610c9c57610c9c610c3f565b5060051b60200190565b600082601f830112610cb757600080fd5b81356020610cc482610c82565b604051610cd18282610c55565b83815260059390931b8501820192828101915086841115610cf157600080fd5b8286015b84811015610d0c5780358352918301918301610cf5565b509695505050505050565b600082601f830112610d2857600080fd5b813567ffffffffffffffff811115610d4257610d42610c3f565b604051610d59601f8301601f191660200182610c55565b818152846020838601011115610d6e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215610da357600080fd5b610dac86610b43565b9450610dba60208701610b43565b9350604086013567ffffffffffffffff80821115610dd757600080fd5b610de389838a01610ca6565b94506060880135915080821115610df957600080fd5b610e0589838a01610ca6565b93506080880135915080821115610e1b57600080fd5b50610e2888828901610d17565b9150509295509295909350565b60008060408385031215610e4857600080fd5b823567ffffffffffffffff80821115610e6057600080fd5b818501915085601f830112610e7457600080fd5b81356020610e8182610c82565b604051610e8e8282610c55565b83815260059390931b8501820192828101915089841115610eae57600080fd5b948201945b83861015610ed357610ec486610b43565b82529482019490820190610eb3565b96505086013592505080821115610ee957600080fd5b50610ef685828601610ca6565b9150509250929050565b600081518084526020808501945080840160005b83811015610f3057815187529582019590820190600101610f14565b509495945050505050565b602081526000610bbf6020830184610f00565b60008060408385031215610f6157600080fd5b610f6a83610b43565b915060208301358015158114610f7f57600080fd5b809150509250929050565b60008060408385031215610f9d57600080fd5b610fa683610b43565b9150610fb460208401610b43565b90509250929050565b600080600080600060a08688031215610fd557600080fd5b610fde86610b43565b9450610fec60208701610b43565b93506040860135925060608601359150608086013567ffffffffffffffff81111561101657600080fd5b610e2888828901610d17565b600181811c9082168061103657607f821691505b6020821081141561105757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602f908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526e195c881b9bdc88185c1c1c9bdd9959608a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156110ec576110ec6110c2565b5060010190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60008219821115611195576111956110c2565b500190565b6040815260006111ad6040830185610f00565b82810360208401526111bf8185610f00565b95945050505050565b6001600160a01b0386811682528516602082015260a0604082018190526000906111f490830186610f00565b82810360608401526112068186610f00565b9050828103608084015261121a8185610bdf565b98975050505050505050565b60006020828403121561123857600080fd5b8151610bbf81610b89565b600060033d111561125c5760046000803e5060005160e01c5b90565b600060443d101561126d5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561129d57505050505090565b82850191508151818111156112b55750505050505090565b843d87010160208285010111156112cf5750505050505090565b6112de60208286010187610c55565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061136b90830184610bdf565b97965050505050505056fea26469706673582212208589f9ade71b111122fe06f6192ba5a1bcba279086f8c117d40c8967db504c6e64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/extensions/ERC1155Burnable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Burnable","sourceName":"contracts/token/ERC1155/extensions/ERC1155Burnable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"burnBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/extensions/ERC1155Pausable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Pausable","sourceName":"contracts/token/ERC1155/extensions/ERC1155Pausable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/extensions/ERC1155Supply":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Supply","sourceName":"contracts/token/ERC1155/extensions/ERC1155Supply.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/extensions/ERC1155URIStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155URIStorage","sourceName":"contracts/token/ERC1155/extensions/ERC1155URIStorage.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/extensions/IERC1155MetadataURI":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155MetadataURI","sourceName":"contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/IERC1155":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155","sourceName":"contracts/token/ERC1155/IERC1155.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/IERC1155Receiver":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155Receiver","sourceName":"contracts/token/ERC1155/IERC1155Receiver.sol","abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/presets/ERC1155PresetMinterPauser":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155PresetMinterPauser","sourceName":"contracts/token/ERC1155/presets/ERC1155PresetMinterPauser.sol","abi":[{"inputs":[{"internalType":"string","name":"uri","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"burnBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mintBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162002d7f38038062002d7f8339810160408190526200003491620002e7565b806200004081620000b7565b506005805460ff1916905562000058600033620000d0565b620000847f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000d0565b620000b07f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620000d0565b5062000400565b8051620000cc9060049060208401906200022b565b5050565b620000cc8282620000ed82826200011960201b62000a871760201c565b60008281526001602090815260409091206200011491839062000b0b620001b9821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000cc576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001753390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001d0836001600160a01b038416620001d9565b90505b92915050565b60008181526001830160205260408120546200022257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620001d3565b506000620001d3565b8280546200023990620003c3565b90600052602060002090601f0160209004810192826200025d5760008555620002a8565b82601f106200027857805160ff1916838001178555620002a8565b82800160010185558215620002a8579182015b82811115620002a85782518255916020019190600101906200028b565b50620002b6929150620002ba565b5090565b5b80821115620002b65760008155600101620002bb565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215620002fb57600080fd5b82516001600160401b03808211156200031357600080fd5b818501915085601f8301126200032857600080fd5b8151818111156200033d576200033d620002d1565b604051601f8201601f19908116603f01168101908382118183101715620003685762000368620002d1565b8160405282815288868487010111156200038157600080fd5b600093505b82841015620003a5578484018601518185018701529285019262000386565b82841115620003b75760008684830101525b98975050505050505050565b600181811c90821680620003d857607f821691505b60208210811415620003fa57634e487b7160e01b600052602260045260246000fd5b50919050565b61296f80620004106000396000f3fe608060405234801561001057600080fd5b50600436106101725760003560e01c8063731133e9116100de578063ca15c87311610097578063e63ab1e911610071578063e63ab1e914610358578063e985e9c51461037f578063f242432a146103bb578063f5298aca146103ce57600080fd5b8063ca15c8731461030b578063d53913931461031e578063d547741f1461034557600080fd5b8063731133e9146102975780638456cb59146102aa5780639010d07c146102b257806391d14854146102dd578063a217fddf146102f0578063a22cb465146102f857600080fd5b80632f2ff15d116101305780632f2ff15d1461022b57806336568abe1461023e5780633f4ba83a146102515780634e1273f4146102595780635c975abb146102795780636b20c4541461028457600080fd5b8062fdd58e1461017757806301ffc9a71461019d5780630e89341c146101c05780631f7fdffa146101e0578063248a9ca3146101f55780632eb2c2d614610218575b600080fd5b61018a610185366004611d02565b6103e1565b6040519081526020015b60405180910390f35b6101b06101ab366004611d42565b61047c565b6040519015158152602001610194565b6101d36101ce366004611d5f565b610487565b6040516101949190611dd0565b6101f36101ee366004611f2f565b61051b565b005b61018a610203366004611d5f565b60009081526020819052604090206001015490565b6101f3610226366004611fc8565b610573565b6101f3610239366004612072565b6105bf565b6101f361024c366004612072565b6105e9565b6101f3610667565b61026c61026736600461209e565b61070d565b60405161019491906121a4565b60055460ff166101b0565b6101f36102923660046121b7565b610837565b6101f36102a536600461222b565b61087a565b6101f36108cc565b6102c56102c0366004612280565b610970565b6040516001600160a01b039091168152602001610194565b6101b06102eb366004612072565b61098f565b61018a600081565b6101f36103063660046122a2565b6109b8565b61018a610319366004611d5f565b6109c3565b61018a7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6101f3610353366004612072565b6109da565b61018a7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6101b061038d3660046122de565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b6101f36103c9366004612308565b6109ff565b6101f36103dc36600461236d565b610a44565b60006001600160a01b0383166104515760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b600061047682610b20565b606060048054610496906123a0565b80601f01602080910402602001604051908101604052809291908181526020018280546104c2906123a0565b801561050f5780601f106104e45761010080835404028352916020019161050f565b820191906000526020600020905b8154815290600101906020018083116104f257829003601f168201915b50505050509050919050565b6105457f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361098f565b6105615760405162461bcd60e51b8152600401610448906123db565b61056d84848484610b60565b50505050565b6001600160a01b03851633148061058f575061058f853361038d565b6105ab5760405162461bcd60e51b815260040161044890612438565b6105b88585858585610cbb565b5050505050565b6000828152602081905260409020600101546105da81610e68565b6105e48383610e75565b505050565b6001600160a01b03811633146106595760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610448565b6106638282610e97565b5050565b6106917f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a3361098f565b6107035760405162461bcd60e51b815260206004820152603b60248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f686176652070617573657220726f6c6520746f20756e706175736500000000006064820152608401610448565b61070b610eb9565b565b606081518351146107725760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610448565b6000835167ffffffffffffffff81111561078e5761078e611de3565b6040519080825280602002602001820160405280156107b7578160200160208202803683370190505b50905060005b845181101561082f576108028582815181106107db576107db612487565b60200260200101518583815181106107f5576107f5612487565b60200260200101516103e1565b82828151811061081457610814612487565b6020908102919091010152610828816124b3565b90506107bd565b509392505050565b6001600160a01b0383163314806108535750610853833361038d565b61086f5760405162461bcd60e51b815260040161044890612438565b6105e4838383610f0b565b6108a47f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361098f565b6108c05760405162461bcd60e51b8152600401610448906123db565b61056d848484846110aa565b6108f67f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a3361098f565b6109685760405162461bcd60e51b815260206004820152603960248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f686176652070617573657220726f6c6520746f207061757365000000000000006064820152608401610448565b61070b611195565b600082815260016020526040812061098890836111d2565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6106633383836111de565b6000818152600160205260408120610476906112bf565b6000828152602081905260409020600101546109f581610e68565b6105e48383610e97565b6001600160a01b038516331480610a1b5750610a1b853361038d565b610a375760405162461bcd60e51b815260040161044890612438565b6105b885858585856112c9565b6001600160a01b038316331480610a605750610a60833361038d565b610a7c5760405162461bcd60e51b815260040161044890612438565b6105e4838383611405565b610a91828261098f565b610663576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610ac73390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610988836001600160a01b038416611521565b60006001600160e01b03198216636cdb3d1360e11b1480610b5157506001600160e01b031982166303a24d0760e21b145b80610476575061047682611570565b6001600160a01b038416610b865760405162461bcd60e51b8152600401610448906124ce565b8151835114610ba75760405162461bcd60e51b81526004016104489061250f565b33610bb781600087878787611595565b60005b8451811015610c5357838181518110610bd557610bd5612487565b602002602001015160026000878481518110610bf357610bf3612487565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254610c3b9190612557565b90915550819050610c4b816124b3565b915050610bba565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610ca492919061256f565b60405180910390a46105b8816000878787876115a3565b8151835114610cdc5760405162461bcd60e51b81526004016104489061250f565b6001600160a01b038416610d025760405162461bcd60e51b81526004016104489061259d565b33610d11818787878787611595565b60005b8451811015610dfa576000858281518110610d3157610d31612487565b602002602001015190506000858381518110610d4f57610d4f612487565b60209081029190910181015160008481526002835260408082206001600160a01b038e168352909352919091205490915081811015610da05760405162461bcd60e51b8152600401610448906125e2565b60008381526002602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610ddf908490612557565b9250508190555050505080610df3906124b3565b9050610d14565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610e4a92919061256f565b60405180910390a4610e608187878787876115a3565b505050505050565b610e72813361170e565b50565b610e7f8282610a87565b60008281526001602052604090206105e49082610b0b565b610ea18282611772565b60008281526001602052604090206105e490826117d7565b610ec16117ec565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038316610f315760405162461bcd60e51b81526004016104489061262c565b8051825114610f525760405162461bcd60e51b81526004016104489061250f565b6000339050610f7581856000868660405180602001604052806000815250611595565b60005b835181101561103d576000848281518110610f9557610f95612487565b602002602001015190506000848381518110610fb357610fb3612487565b60209081029190910181015160008481526002835260408082206001600160a01b038c1683529093529190912054909150818110156110045760405162461bcd60e51b81526004016104489061266f565b60009283526002602090815260408085206001600160a01b038b1686529091529092209103905580611035816124b3565b915050610f78565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb868660405161108e92919061256f565b60405180910390a460408051602081019091526000905261056d565b6001600160a01b0384166110d05760405162461bcd60e51b8152600401610448906124ce565b3360006110dc85611835565b905060006110e985611835565b90506110fa83600089858589611595565b60008681526002602090815260408083206001600160a01b038b1684529091528120805487929061112c908490612557565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461118c83600089898989611880565b50505050505050565b61119d61194a565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610eee3390565b60006109888383611990565b816001600160a01b0316836001600160a01b031614156112525760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610448565b6001600160a01b03838116600081815260036020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6000610476825490565b6001600160a01b0384166112ef5760405162461bcd60e51b81526004016104489061259d565b3360006112fb85611835565b9050600061130885611835565b9050611318838989858589611595565b60008681526002602090815260408083206001600160a01b038c1684529091529020548581101561135b5760405162461bcd60e51b8152600401610448906125e2565b60008781526002602090815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061139a908490612557565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46113fa848a8a8a8a8a611880565b505050505050505050565b6001600160a01b03831661142b5760405162461bcd60e51b81526004016104489061262c565b33600061143784611835565b9050600061144484611835565b905061146483876000858560405180602001604052806000815250611595565b60008581526002602090815260408083206001600160a01b038a168452909152902054848110156114a75760405162461bcd60e51b81526004016104489061266f565b60008681526002602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091526000905261118c565b600081815260018301602052604081205461156857508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610476565b506000610476565b60006001600160e01b03198216635a05180f60e01b14806104765750610476826119ba565b610e608686868686866119ef565b6001600160a01b0384163b15610e605760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906115e790899089908890889088906004016126b3565b602060405180830381600087803b15801561160157600080fd5b505af1925050508015611631575060408051601f3d908101601f1916820190925261162e91810190612711565b60015b6116de5761163d61272e565b806308c379a01415611677575061165261274a565b8061165d5750611679565b8060405162461bcd60e51b81526004016104489190611dd0565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610448565b6001600160e01b0319811663bc197c8160e01b1461118c5760405162461bcd60e51b8152600401610448906127d4565b611718828261098f565b61066357611730816001600160a01b03166014611a57565b61173b836020611a57565b60405160200161174c92919061281c565b60408051601f198184030181529082905262461bcd60e51b825261044891600401611dd0565b61177c828261098f565b15610663576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610988836001600160a01b038416611bf3565b60055460ff1661070b5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610448565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061186f5761186f612487565b602090810291909101015292915050565b6001600160a01b0384163b15610e605760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906118c49089908990889088908890600401612891565b602060405180830381600087803b1580156118de57600080fd5b505af192505050801561190e575060408051601f3d908101601f1916820190925261190b91810190612711565b60015b61191a5761163d61272e565b6001600160e01b0319811663f23a6e6160e01b1461118c5760405162461bcd60e51b8152600401610448906127d4565b60055460ff161561070b5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610448565b60008260000182815481106119a7576119a7612487565b9060005260206000200154905092915050565b60006001600160e01b03198216637965db0b60e01b148061047657506301ffc9a760e01b6001600160e01b0319831614610476565b60055460ff1615610e605760405162461bcd60e51b815260206004820152602c60248201527f455243313135355061757361626c653a20746f6b656e207472616e736665722060448201526b1dda1a5b19481c185d5cd95960a21b6064820152608401610448565b60606000611a668360026128d6565b611a71906002612557565b67ffffffffffffffff811115611a8957611a89611de3565b6040519080825280601f01601f191660200182016040528015611ab3576020820181803683370190505b509050600360fc1b81600081518110611ace57611ace612487565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611afd57611afd612487565b60200101906001600160f81b031916908160001a9053506000611b218460026128d6565b611b2c906001612557565b90505b6001811115611ba4576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611b6057611b60612487565b1a60f81b828281518110611b7657611b76612487565b60200101906001600160f81b031916908160001a90535060049490941c93611b9d816128f5565b9050611b2f565b5083156109885760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610448565b60008181526001830160205260408120548015611cdc576000611c1760018361290c565b8554909150600090611c2b9060019061290c565b9050818114611c90576000866000018281548110611c4b57611c4b612487565b9060005260206000200154905080876000018481548110611c6e57611c6e612487565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611ca157611ca1612923565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610476565b6000915050610476565b80356001600160a01b0381168114611cfd57600080fd5b919050565b60008060408385031215611d1557600080fd5b611d1e83611ce6565b946020939093013593505050565b6001600160e01b031981168114610e7257600080fd5b600060208284031215611d5457600080fd5b813561098881611d2c565b600060208284031215611d7157600080fd5b5035919050565b60005b83811015611d93578181015183820152602001611d7b565b8381111561056d5750506000910152565b60008151808452611dbc816020860160208601611d78565b601f01601f19169290920160200192915050565b6020815260006109886020830184611da4565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715611e1f57611e1f611de3565b6040525050565b600067ffffffffffffffff821115611e4057611e40611de3565b5060051b60200190565b600082601f830112611e5b57600080fd5b81356020611e6882611e26565b604051611e758282611df9565b83815260059390931b8501820192828101915086841115611e9557600080fd5b8286015b84811015611eb05780358352918301918301611e99565b509695505050505050565b600082601f830112611ecc57600080fd5b813567ffffffffffffffff811115611ee657611ee6611de3565b604051611efd601f8301601f191660200182611df9565b818152846020838601011115611f1257600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611f4557600080fd5b611f4e85611ce6565b9350602085013567ffffffffffffffff80821115611f6b57600080fd5b611f7788838901611e4a565b94506040870135915080821115611f8d57600080fd5b611f9988838901611e4a565b93506060870135915080821115611faf57600080fd5b50611fbc87828801611ebb565b91505092959194509250565b600080600080600060a08688031215611fe057600080fd5b611fe986611ce6565b9450611ff760208701611ce6565b9350604086013567ffffffffffffffff8082111561201457600080fd5b61202089838a01611e4a565b9450606088013591508082111561203657600080fd5b61204289838a01611e4a565b9350608088013591508082111561205857600080fd5b5061206588828901611ebb565b9150509295509295909350565b6000806040838503121561208557600080fd5b8235915061209560208401611ce6565b90509250929050565b600080604083850312156120b157600080fd5b823567ffffffffffffffff808211156120c957600080fd5b818501915085601f8301126120dd57600080fd5b813560206120ea82611e26565b6040516120f78282611df9565b83815260059390931b850182019282810191508984111561211757600080fd5b948201945b8386101561213c5761212d86611ce6565b8252948201949082019061211c565b9650508601359250508082111561215257600080fd5b5061215f85828601611e4a565b9150509250929050565b600081518084526020808501945080840160005b838110156121995781518752958201959082019060010161217d565b509495945050505050565b6020815260006109886020830184612169565b6000806000606084860312156121cc57600080fd5b6121d584611ce6565b9250602084013567ffffffffffffffff808211156121f257600080fd5b6121fe87838801611e4a565b9350604086013591508082111561221457600080fd5b5061222186828701611e4a565b9150509250925092565b6000806000806080858703121561224157600080fd5b61224a85611ce6565b93506020850135925060408501359150606085013567ffffffffffffffff81111561227457600080fd5b611fbc87828801611ebb565b6000806040838503121561229357600080fd5b50508035926020909101359150565b600080604083850312156122b557600080fd5b6122be83611ce6565b9150602083013580151581146122d357600080fd5b809150509250929050565b600080604083850312156122f157600080fd5b6122fa83611ce6565b915061209560208401611ce6565b600080600080600060a0868803121561232057600080fd5b61232986611ce6565b945061233760208701611ce6565b93506040860135925060608601359150608086013567ffffffffffffffff81111561236157600080fd5b61206588828901611ebb565b60008060006060848603121561238257600080fd5b61238b84611ce6565b95602085013595506040909401359392505050565b600181811c908216806123b457607f821691505b602082108114156123d557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526038908201527f455243313135355072657365744d696e7465725061757365723a206d7573742060408201527f68617665206d696e74657220726f6c6520746f206d696e740000000000000000606082015260800190565b6020808252602f908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526e195c881b9bdc88185c1c1c9bdd9959608a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156124c7576124c761249d565b5060010190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b6000821982111561256a5761256a61249d565b500190565b6040815260006125826040830185612169565b82810360208401526125948185612169565b95945050505050565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60208082526023908201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526024908201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604082015263616e636560e01b606082015260800190565b6001600160a01b0386811682528516602082015260a0604082018190526000906126df90830186612169565b82810360608401526126f18186612169565b905082810360808401526127058185611da4565b98975050505050505050565b60006020828403121561272357600080fd5b815161098881611d2c565b600060033d11156127475760046000803e5060005160e01c5b90565b600060443d10156127585790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561278857505050505090565b82850191508151818111156127a05750505050505090565b843d87010160208285010111156127ba5750505050505090565b6127c960208286010187611df9565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612854816017850160208801611d78565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612885816028840160208801611d78565b01602801949350505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906128cb90830184611da4565b979650505050505050565b60008160001904831182151516156128f0576128f061249d565b500290565b6000816129045761290461249d565b506000190190565b60008282101561291e5761291e61249d565b500390565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220f23b72c48861ea1d650c5aa7b26b2a1da82c07a3eb091612de6e3befb8b92ecc64736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101725760003560e01c8063731133e9116100de578063ca15c87311610097578063e63ab1e911610071578063e63ab1e914610358578063e985e9c51461037f578063f242432a146103bb578063f5298aca146103ce57600080fd5b8063ca15c8731461030b578063d53913931461031e578063d547741f1461034557600080fd5b8063731133e9146102975780638456cb59146102aa5780639010d07c146102b257806391d14854146102dd578063a217fddf146102f0578063a22cb465146102f857600080fd5b80632f2ff15d116101305780632f2ff15d1461022b57806336568abe1461023e5780633f4ba83a146102515780634e1273f4146102595780635c975abb146102795780636b20c4541461028457600080fd5b8062fdd58e1461017757806301ffc9a71461019d5780630e89341c146101c05780631f7fdffa146101e0578063248a9ca3146101f55780632eb2c2d614610218575b600080fd5b61018a610185366004611d02565b6103e1565b6040519081526020015b60405180910390f35b6101b06101ab366004611d42565b61047c565b6040519015158152602001610194565b6101d36101ce366004611d5f565b610487565b6040516101949190611dd0565b6101f36101ee366004611f2f565b61051b565b005b61018a610203366004611d5f565b60009081526020819052604090206001015490565b6101f3610226366004611fc8565b610573565b6101f3610239366004612072565b6105bf565b6101f361024c366004612072565b6105e9565b6101f3610667565b61026c61026736600461209e565b61070d565b60405161019491906121a4565b60055460ff166101b0565b6101f36102923660046121b7565b610837565b6101f36102a536600461222b565b61087a565b6101f36108cc565b6102c56102c0366004612280565b610970565b6040516001600160a01b039091168152602001610194565b6101b06102eb366004612072565b61098f565b61018a600081565b6101f36103063660046122a2565b6109b8565b61018a610319366004611d5f565b6109c3565b61018a7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6101f3610353366004612072565b6109da565b61018a7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6101b061038d3660046122de565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b6101f36103c9366004612308565b6109ff565b6101f36103dc36600461236d565b610a44565b60006001600160a01b0383166104515760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b600061047682610b20565b606060048054610496906123a0565b80601f01602080910402602001604051908101604052809291908181526020018280546104c2906123a0565b801561050f5780601f106104e45761010080835404028352916020019161050f565b820191906000526020600020905b8154815290600101906020018083116104f257829003601f168201915b50505050509050919050565b6105457f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361098f565b6105615760405162461bcd60e51b8152600401610448906123db565b61056d84848484610b60565b50505050565b6001600160a01b03851633148061058f575061058f853361038d565b6105ab5760405162461bcd60e51b815260040161044890612438565b6105b88585858585610cbb565b5050505050565b6000828152602081905260409020600101546105da81610e68565b6105e48383610e75565b505050565b6001600160a01b03811633146106595760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610448565b6106638282610e97565b5050565b6106917f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a3361098f565b6107035760405162461bcd60e51b815260206004820152603b60248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f686176652070617573657220726f6c6520746f20756e706175736500000000006064820152608401610448565b61070b610eb9565b565b606081518351146107725760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610448565b6000835167ffffffffffffffff81111561078e5761078e611de3565b6040519080825280602002602001820160405280156107b7578160200160208202803683370190505b50905060005b845181101561082f576108028582815181106107db576107db612487565b60200260200101518583815181106107f5576107f5612487565b60200260200101516103e1565b82828151811061081457610814612487565b6020908102919091010152610828816124b3565b90506107bd565b509392505050565b6001600160a01b0383163314806108535750610853833361038d565b61086f5760405162461bcd60e51b815260040161044890612438565b6105e4838383610f0b565b6108a47f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361098f565b6108c05760405162461bcd60e51b8152600401610448906123db565b61056d848484846110aa565b6108f67f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a3361098f565b6109685760405162461bcd60e51b815260206004820152603960248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f686176652070617573657220726f6c6520746f207061757365000000000000006064820152608401610448565b61070b611195565b600082815260016020526040812061098890836111d2565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6106633383836111de565b6000818152600160205260408120610476906112bf565b6000828152602081905260409020600101546109f581610e68565b6105e48383610e97565b6001600160a01b038516331480610a1b5750610a1b853361038d565b610a375760405162461bcd60e51b815260040161044890612438565b6105b885858585856112c9565b6001600160a01b038316331480610a605750610a60833361038d565b610a7c5760405162461bcd60e51b815260040161044890612438565b6105e4838383611405565b610a91828261098f565b610663576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610ac73390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610988836001600160a01b038416611521565b60006001600160e01b03198216636cdb3d1360e11b1480610b5157506001600160e01b031982166303a24d0760e21b145b80610476575061047682611570565b6001600160a01b038416610b865760405162461bcd60e51b8152600401610448906124ce565b8151835114610ba75760405162461bcd60e51b81526004016104489061250f565b33610bb781600087878787611595565b60005b8451811015610c5357838181518110610bd557610bd5612487565b602002602001015160026000878481518110610bf357610bf3612487565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254610c3b9190612557565b90915550819050610c4b816124b3565b915050610bba565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610ca492919061256f565b60405180910390a46105b8816000878787876115a3565b8151835114610cdc5760405162461bcd60e51b81526004016104489061250f565b6001600160a01b038416610d025760405162461bcd60e51b81526004016104489061259d565b33610d11818787878787611595565b60005b8451811015610dfa576000858281518110610d3157610d31612487565b602002602001015190506000858381518110610d4f57610d4f612487565b60209081029190910181015160008481526002835260408082206001600160a01b038e168352909352919091205490915081811015610da05760405162461bcd60e51b8152600401610448906125e2565b60008381526002602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610ddf908490612557565b9250508190555050505080610df3906124b3565b9050610d14565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610e4a92919061256f565b60405180910390a4610e608187878787876115a3565b505050505050565b610e72813361170e565b50565b610e7f8282610a87565b60008281526001602052604090206105e49082610b0b565b610ea18282611772565b60008281526001602052604090206105e490826117d7565b610ec16117ec565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038316610f315760405162461bcd60e51b81526004016104489061262c565b8051825114610f525760405162461bcd60e51b81526004016104489061250f565b6000339050610f7581856000868660405180602001604052806000815250611595565b60005b835181101561103d576000848281518110610f9557610f95612487565b602002602001015190506000848381518110610fb357610fb3612487565b60209081029190910181015160008481526002835260408082206001600160a01b038c1683529093529190912054909150818110156110045760405162461bcd60e51b81526004016104489061266f565b60009283526002602090815260408085206001600160a01b038b1686529091529092209103905580611035816124b3565b915050610f78565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb868660405161108e92919061256f565b60405180910390a460408051602081019091526000905261056d565b6001600160a01b0384166110d05760405162461bcd60e51b8152600401610448906124ce565b3360006110dc85611835565b905060006110e985611835565b90506110fa83600089858589611595565b60008681526002602090815260408083206001600160a01b038b1684529091528120805487929061112c908490612557565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461118c83600089898989611880565b50505050505050565b61119d61194a565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610eee3390565b60006109888383611990565b816001600160a01b0316836001600160a01b031614156112525760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610448565b6001600160a01b03838116600081815260036020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6000610476825490565b6001600160a01b0384166112ef5760405162461bcd60e51b81526004016104489061259d565b3360006112fb85611835565b9050600061130885611835565b9050611318838989858589611595565b60008681526002602090815260408083206001600160a01b038c1684529091529020548581101561135b5760405162461bcd60e51b8152600401610448906125e2565b60008781526002602090815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061139a908490612557565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46113fa848a8a8a8a8a611880565b505050505050505050565b6001600160a01b03831661142b5760405162461bcd60e51b81526004016104489061262c565b33600061143784611835565b9050600061144484611835565b905061146483876000858560405180602001604052806000815250611595565b60008581526002602090815260408083206001600160a01b038a168452909152902054848110156114a75760405162461bcd60e51b81526004016104489061266f565b60008681526002602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091526000905261118c565b600081815260018301602052604081205461156857508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610476565b506000610476565b60006001600160e01b03198216635a05180f60e01b14806104765750610476826119ba565b610e608686868686866119ef565b6001600160a01b0384163b15610e605760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906115e790899089908890889088906004016126b3565b602060405180830381600087803b15801561160157600080fd5b505af1925050508015611631575060408051601f3d908101601f1916820190925261162e91810190612711565b60015b6116de5761163d61272e565b806308c379a01415611677575061165261274a565b8061165d5750611679565b8060405162461bcd60e51b81526004016104489190611dd0565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610448565b6001600160e01b0319811663bc197c8160e01b1461118c5760405162461bcd60e51b8152600401610448906127d4565b611718828261098f565b61066357611730816001600160a01b03166014611a57565b61173b836020611a57565b60405160200161174c92919061281c565b60408051601f198184030181529082905262461bcd60e51b825261044891600401611dd0565b61177c828261098f565b15610663576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610988836001600160a01b038416611bf3565b60055460ff1661070b5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610448565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061186f5761186f612487565b602090810291909101015292915050565b6001600160a01b0384163b15610e605760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906118c49089908990889088908890600401612891565b602060405180830381600087803b1580156118de57600080fd5b505af192505050801561190e575060408051601f3d908101601f1916820190925261190b91810190612711565b60015b61191a5761163d61272e565b6001600160e01b0319811663f23a6e6160e01b1461118c5760405162461bcd60e51b8152600401610448906127d4565b60055460ff161561070b5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610448565b60008260000182815481106119a7576119a7612487565b9060005260206000200154905092915050565b60006001600160e01b03198216637965db0b60e01b148061047657506301ffc9a760e01b6001600160e01b0319831614610476565b60055460ff1615610e605760405162461bcd60e51b815260206004820152602c60248201527f455243313135355061757361626c653a20746f6b656e207472616e736665722060448201526b1dda1a5b19481c185d5cd95960a21b6064820152608401610448565b60606000611a668360026128d6565b611a71906002612557565b67ffffffffffffffff811115611a8957611a89611de3565b6040519080825280601f01601f191660200182016040528015611ab3576020820181803683370190505b509050600360fc1b81600081518110611ace57611ace612487565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611afd57611afd612487565b60200101906001600160f81b031916908160001a9053506000611b218460026128d6565b611b2c906001612557565b90505b6001811115611ba4576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611b6057611b60612487565b1a60f81b828281518110611b7657611b76612487565b60200101906001600160f81b031916908160001a90535060049490941c93611b9d816128f5565b9050611b2f565b5083156109885760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610448565b60008181526001830160205260408120548015611cdc576000611c1760018361290c565b8554909150600090611c2b9060019061290c565b9050818114611c90576000866000018281548110611c4b57611c4b612487565b9060005260206000200154905080876000018481548110611c6e57611c6e612487565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611ca157611ca1612923565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610476565b6000915050610476565b80356001600160a01b0381168114611cfd57600080fd5b919050565b60008060408385031215611d1557600080fd5b611d1e83611ce6565b946020939093013593505050565b6001600160e01b031981168114610e7257600080fd5b600060208284031215611d5457600080fd5b813561098881611d2c565b600060208284031215611d7157600080fd5b5035919050565b60005b83811015611d93578181015183820152602001611d7b565b8381111561056d5750506000910152565b60008151808452611dbc816020860160208601611d78565b601f01601f19169290920160200192915050565b6020815260006109886020830184611da4565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715611e1f57611e1f611de3565b6040525050565b600067ffffffffffffffff821115611e4057611e40611de3565b5060051b60200190565b600082601f830112611e5b57600080fd5b81356020611e6882611e26565b604051611e758282611df9565b83815260059390931b8501820192828101915086841115611e9557600080fd5b8286015b84811015611eb05780358352918301918301611e99565b509695505050505050565b600082601f830112611ecc57600080fd5b813567ffffffffffffffff811115611ee657611ee6611de3565b604051611efd601f8301601f191660200182611df9565b818152846020838601011115611f1257600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611f4557600080fd5b611f4e85611ce6565b9350602085013567ffffffffffffffff80821115611f6b57600080fd5b611f7788838901611e4a565b94506040870135915080821115611f8d57600080fd5b611f9988838901611e4a565b93506060870135915080821115611faf57600080fd5b50611fbc87828801611ebb565b91505092959194509250565b600080600080600060a08688031215611fe057600080fd5b611fe986611ce6565b9450611ff760208701611ce6565b9350604086013567ffffffffffffffff8082111561201457600080fd5b61202089838a01611e4a565b9450606088013591508082111561203657600080fd5b61204289838a01611e4a565b9350608088013591508082111561205857600080fd5b5061206588828901611ebb565b9150509295509295909350565b6000806040838503121561208557600080fd5b8235915061209560208401611ce6565b90509250929050565b600080604083850312156120b157600080fd5b823567ffffffffffffffff808211156120c957600080fd5b818501915085601f8301126120dd57600080fd5b813560206120ea82611e26565b6040516120f78282611df9565b83815260059390931b850182019282810191508984111561211757600080fd5b948201945b8386101561213c5761212d86611ce6565b8252948201949082019061211c565b9650508601359250508082111561215257600080fd5b5061215f85828601611e4a565b9150509250929050565b600081518084526020808501945080840160005b838110156121995781518752958201959082019060010161217d565b509495945050505050565b6020815260006109886020830184612169565b6000806000606084860312156121cc57600080fd5b6121d584611ce6565b9250602084013567ffffffffffffffff808211156121f257600080fd5b6121fe87838801611e4a565b9350604086013591508082111561221457600080fd5b5061222186828701611e4a565b9150509250925092565b6000806000806080858703121561224157600080fd5b61224a85611ce6565b93506020850135925060408501359150606085013567ffffffffffffffff81111561227457600080fd5b611fbc87828801611ebb565b6000806040838503121561229357600080fd5b50508035926020909101359150565b600080604083850312156122b557600080fd5b6122be83611ce6565b9150602083013580151581146122d357600080fd5b809150509250929050565b600080604083850312156122f157600080fd5b6122fa83611ce6565b915061209560208401611ce6565b600080600080600060a0868803121561232057600080fd5b61232986611ce6565b945061233760208701611ce6565b93506040860135925060608601359150608086013567ffffffffffffffff81111561236157600080fd5b61206588828901611ebb565b60008060006060848603121561238257600080fd5b61238b84611ce6565b95602085013595506040909401359392505050565b600181811c908216806123b457607f821691505b602082108114156123d557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526038908201527f455243313135355072657365744d696e7465725061757365723a206d7573742060408201527f68617665206d696e74657220726f6c6520746f206d696e740000000000000000606082015260800190565b6020808252602f908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526e195c881b9bdc88185c1c1c9bdd9959608a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156124c7576124c761249d565b5060010190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b6000821982111561256a5761256a61249d565b500190565b6040815260006125826040830185612169565b82810360208401526125948185612169565b95945050505050565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60208082526023908201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526024908201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604082015263616e636560e01b606082015260800190565b6001600160a01b0386811682528516602082015260a0604082018190526000906126df90830186612169565b82810360608401526126f18186612169565b905082810360808401526127058185611da4565b98975050505050505050565b60006020828403121561272357600080fd5b815161098881611d2c565b600060033d11156127475760046000803e5060005160e01c5b90565b600060443d10156127585790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561278857505050505090565b82850191508151818111156127a05750505050505090565b843d87010160208285010111156127ba5750505050505090565b6127c960208286010187611df9565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612854816017850160208801611d78565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612885816028840160208801611d78565b01602801949350505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906128cb90830184611da4565b979650505050505050565b60008160001904831182151516156128f0576128f061249d565b500290565b6000816129045761290461249d565b506000190190565b60008282101561291e5761291e61249d565b500390565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220f23b72c48861ea1d650c5aa7b26b2a1da82c07a3eb091612de6e3befb8b92ecc64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/utils/ERC1155Holder":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Holder","sourceName":"contracts/token/ERC1155/utils/ERC1155Holder.sol","abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506103c5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a714610046578063bc197c811461006e578063f23a6e61146100a6575b600080fd5b6100596100543660046100fc565b6100c5565b60405190151581526020015b60405180910390f35b61008d61007c366004610280565b63bc197c8160e01b95945050505050565b6040516001600160e01b03199091168152602001610065565b61008d6100b436600461032a565b63f23a6e6160e01b95945050505050565b60006001600160e01b03198216630271189760e51b14806100f657506301ffc9a760e01b6001600160e01b03198316145b92915050565b60006020828403121561010e57600080fd5b81356001600160e01b03198116811461012657600080fd5b9392505050565b80356001600160a01b038116811461014457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561018857610188610149565b604052919050565b600082601f8301126101a157600080fd5b8135602067ffffffffffffffff8211156101bd576101bd610149565b8160051b6101cc82820161015f565b92835284810182019282810190878511156101e657600080fd5b83870192505b84831015610205578235825291830191908301906101ec565b979650505050505050565b600082601f83011261022157600080fd5b813567ffffffffffffffff81111561023b5761023b610149565b61024e601f8201601f191660200161015f565b81815284602083860101111561026357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561029857600080fd5b6102a18661012d565b94506102af6020870161012d565b9350604086013567ffffffffffffffff808211156102cc57600080fd5b6102d889838a01610190565b945060608801359150808211156102ee57600080fd5b6102fa89838a01610190565b9350608088013591508082111561031057600080fd5b5061031d88828901610210565b9150509295509295909350565b600080600080600060a0868803121561034257600080fd5b61034b8661012d565b94506103596020870161012d565b93506040860135925060608601359150608086013567ffffffffffffffff81111561038357600080fd5b61031d8882890161021056fea2646970667358221220017f716b93360c6547823d1a00353560c3ee01dab8ebc26c9d45dc0fef87f03364736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a714610046578063bc197c811461006e578063f23a6e61146100a6575b600080fd5b6100596100543660046100fc565b6100c5565b60405190151581526020015b60405180910390f35b61008d61007c366004610280565b63bc197c8160e01b95945050505050565b6040516001600160e01b03199091168152602001610065565b61008d6100b436600461032a565b63f23a6e6160e01b95945050505050565b60006001600160e01b03198216630271189760e51b14806100f657506301ffc9a760e01b6001600160e01b03198316145b92915050565b60006020828403121561010e57600080fd5b81356001600160e01b03198116811461012657600080fd5b9392505050565b80356001600160a01b038116811461014457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561018857610188610149565b604052919050565b600082601f8301126101a157600080fd5b8135602067ffffffffffffffff8211156101bd576101bd610149565b8160051b6101cc82820161015f565b92835284810182019282810190878511156101e657600080fd5b83870192505b84831015610205578235825291830191908301906101ec565b979650505050505050565b600082601f83011261022157600080fd5b813567ffffffffffffffff81111561023b5761023b610149565b61024e601f8201601f191660200161015f565b81815284602083860101111561026357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561029857600080fd5b6102a18661012d565b94506102af6020870161012d565b9350604086013567ffffffffffffffff808211156102cc57600080fd5b6102d889838a01610190565b945060608801359150808211156102ee57600080fd5b6102fa89838a01610190565b9350608088013591508082111561031057600080fd5b5061031d88828901610210565b9150509295509295909350565b600080600080600060a0868803121561034257600080fd5b61034b8661012d565b94506103596020870161012d565b93506040860135925060608601359150608086013567ffffffffffffffff81111561038357600080fd5b61031d8882890161021056fea2646970667358221220017f716b93360c6547823d1a00353560c3ee01dab8ebc26c9d45dc0fef87f03364736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/utils/ERC1155Receiver":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Receiver","sourceName":"contracts/token/ERC1155/utils/ERC1155Receiver.sol","abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/ERC20":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20","sourceName":"contracts/token/ERC20/ERC20.sol","abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162000b1938038062000b198339810160408190526200003491620001db565b81516200004990600390602085019062000068565b5080516200005f90600490602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b61088780620002926000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c391906106c4565b60405180910390f35b6100df6100da366004610735565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f36600461075f565b61024a565b604051601281526020016100c3565b6100df610131366004610735565b61026e565b6100f361014436600461079b565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df610175366004610735565b61029f565b6100df610188366004610735565b61031f565b6100f361019b3660046107bd565b61032d565b6060600380546101af906107f0565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107f0565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b919061082b565b610358565b6060600480546101af906107f0565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061066b90849061082b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106b791815260200190565b60405180910390a36104f0565b600060208083528351808285015260005b818110156106f1578581018301518582016040015282016106d5565b81811115610703576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461073057600080fd5b919050565b6000806040838503121561074857600080fd5b61075183610719565b946020939093013593505050565b60008060006060848603121561077457600080fd5b61077d84610719565b925061078b60208501610719565b9150604084013590509250925092565b6000602082840312156107ad57600080fd5b6107b682610719565b9392505050565b600080604083850312156107d057600080fd5b6107d983610719565b91506107e760208401610719565b90509250929050565b600181811c9082168061080457607f821691505b6020821081141561082557634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561084c57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220701d02b02100b16cb72e770d2f394f3d0fad6d2f51381cf7f917c7cf674e18b364736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c391906106c4565b60405180910390f35b6100df6100da366004610735565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f36600461075f565b61024a565b604051601281526020016100c3565b6100df610131366004610735565b61026e565b6100f361014436600461079b565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df610175366004610735565b61029f565b6100df610188366004610735565b61031f565b6100f361019b3660046107bd565b61032d565b6060600380546101af906107f0565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107f0565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b919061082b565b610358565b6060600480546101af906107f0565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061066b90849061082b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106b791815260200190565b60405180910390a36104f0565b600060208083528351808285015260005b818110156106f1578581018301518582016040015282016106d5565b81811115610703576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461073057600080fd5b919050565b6000806040838503121561074857600080fd5b61075183610719565b946020939093013593505050565b60008060006060848603121561077457600080fd5b61077d84610719565b925061078b60208501610719565b9150604084013590509250925092565b6000602082840312156107ad57600080fd5b6107b682610719565b9392505050565b600080604083850312156107d057600080fd5b6107d983610719565b91506107e760208401610719565b90509250929050565b600181811c9082168061080457607f821691505b6020821081141561082557634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561084c57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220701d02b02100b16cb72e770d2f394f3d0fad6d2f51381cf7f917c7cf674e18b364736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20Permit":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20Permit","sourceName":"contracts/token/ERC20/extensions/draft-ERC20Permit.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/IERC20Permit":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC20Permit","sourceName":"contracts/token/ERC20/extensions/draft-IERC20Permit.sol","abi":[{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20Burnable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20Burnable","sourceName":"contracts/token/ERC20/extensions/ERC20Burnable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20Capped":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20Capped","sourceName":"contracts/token/ERC20/extensions/ERC20Capped.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20FlashMint":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20FlashMint","sourceName":"contracts/token/ERC20/extensions/ERC20FlashMint.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"flashFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"flashLoan","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"maxFlashLoan","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20Pausable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20Pausable","sourceName":"contracts/token/ERC20/extensions/ERC20Pausable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20Snapshot":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20Snapshot","sourceName":"contracts/token/ERC20/extensions/ERC20Snapshot.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Snapshot","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"name":"balanceOfAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"name":"totalSupplyAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20Votes":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20Votes","sourceName":"contracts/token/ERC20/extensions/ERC20Votes.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint32","name":"pos","type":"uint32"}],"name":"checkpoints","outputs":[{"components":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint224","name":"votes","type":"uint224"}],"internalType":"struct ERC20Votes.Checkpoint","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20VotesComp":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20VotesComp","sourceName":"contracts/token/ERC20/extensions/ERC20VotesComp.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint32","name":"pos","type":"uint32"}],"name":"checkpoints","outputs":[{"components":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint224","name":"votes","type":"uint224"}],"internalType":"struct ERC20Votes.Checkpoint","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20Wrapper":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20Wrapper","sourceName":"contracts/token/ERC20/extensions/ERC20Wrapper.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC4626":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC4626","sourceName":"contracts/token/ERC20/extensions/ERC4626.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"convertToShares","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/IERC20Metadata":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC20Metadata","sourceName":"contracts/token/ERC20/extensions/IERC20Metadata.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/IERC20":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC20","sourceName":"contracts/token/ERC20/IERC20.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/presets/ERC20PresetFixedSupply":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20PresetFixedSupply","sourceName":"contracts/token/ERC20/presets/ERC20PresetFixedSupply.sol","abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162000e6038038062000e608339810160408190526200003491620002dd565b8351849084906200004d9060039060208501906200016a565b508051620000639060049060208401906200016a565b5050506200007881836200008260201b60201c565b50505050620003d6565b6001600160a01b038216620000dd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000f1919062000372565b90915550506001600160a01b038216600090815260208190526040812080548392906200012090849062000372565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001789062000399565b90600052602060002090601f0160209004810192826200019c5760008555620001e7565b82601f10620001b757805160ff1916838001178555620001e7565b82800160010185558215620001e7579182015b82811115620001e7578251825591602001919060010190620001ca565b50620001f5929150620001f9565b5090565b5b80821115620001f55760008155600101620001fa565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200023857600080fd5b81516001600160401b038082111562000255576200025562000210565b604051601f8301601f19908116603f0116810190828211818310171562000280576200028062000210565b816040528381526020925086838588010111156200029d57600080fd5b600091505b83821015620002c15785820183015181830184015290820190620002a2565b83821115620002d35760008385830101525b9695505050505050565b60008060008060808587031215620002f457600080fd5b84516001600160401b03808211156200030c57600080fd5b6200031a8883890162000226565b955060208701519150808211156200033157600080fd5b50620003408782880162000226565b60408701516060880151919550935090506001600160a01b03811681146200036757600080fd5b939692955090935050565b600082198211156200039457634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620003ae57607f821691505b60208210811415620003d057634e487b7160e01b600052602260045260246000fd5b50919050565b610a7a80620003e66000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101ad578063a457c2d7146101b5578063a9059cbb146101c8578063dd62ed3e146101db57600080fd5b806342966c681461015c57806370a082311461017157806379cc67901461019a57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a5780633950935114610149575b600080fd5b6100dc6101ee565b6040516100e9919061087f565b60405180910390f35b6101056101003660046108f0565b610280565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b61010561013536600461091a565b610298565b604051601281526020016100e9565b6101056101573660046108f0565b6102bc565b61016f61016a366004610956565b6102de565b005b61011961017f36600461096f565b6001600160a01b031660009081526020819052604090205490565b61016f6101a83660046108f0565b6102eb565b6100dc610304565b6101056101c33660046108f0565b610313565b6101056101d63660046108f0565b610393565b6101196101e9366004610991565b6103a1565b6060600380546101fd906109c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610229906109c4565b80156102765780601f1061024b57610100808354040283529160200191610276565b820191906000526020600020905b81548152906001019060200180831161025957829003601f168201915b5050505050905090565b60003361028e8185856103cc565b5060019392505050565b6000336102a68582856104f1565b6102b185858561056b565b506001949350505050565b60003361028e8185856102cf83836103a1565b6102d99190610a15565b6103cc565b6102e83382610739565b50565b6102f68233836104f1565b6103008282610739565b5050565b6060600480546101fd906109c4565b6000338161032182866103a1565b9050838110156103865760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102b182868684036103cc565b60003361028e81858561056b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661042e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161037d565b6001600160a01b03821661048f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161037d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104fd84846103a1565b9050600019811461056557818110156105585760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161037d565b61056584848484036103cc565b50505050565b6001600160a01b0383166105cf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161037d565b6001600160a01b0382166106315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161037d565b6001600160a01b038316600090815260208190526040902054818110156106a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161037d565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106e0908490610a15565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161072c91815260200190565b60405180910390a3610565565b6001600160a01b0382166107995760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161037d565b6001600160a01b0382166000908152602081905260409020548181101561080d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161037d565b6001600160a01b038316600090815260208190526040812083830390556002805484929061083c908490610a2d565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016104e4565b600060208083528351808285015260005b818110156108ac57858101830151858201604001528201610890565b818111156108be576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146108eb57600080fd5b919050565b6000806040838503121561090357600080fd5b61090c836108d4565b946020939093013593505050565b60008060006060848603121561092f57600080fd5b610938846108d4565b9250610946602085016108d4565b9150604084013590509250925092565b60006020828403121561096857600080fd5b5035919050565b60006020828403121561098157600080fd5b61098a826108d4565b9392505050565b600080604083850312156109a457600080fd5b6109ad836108d4565b91506109bb602084016108d4565b90509250929050565b600181811c908216806109d857607f821691505b602082108114156109f957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610a2857610a286109ff565b500190565b600082821015610a3f57610a3f6109ff565b50039056fea2646970667358221220dc132e0f3aa42d082859bdc07e1b4889eb86baeb5b4f060715848c54b723ece964736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101ad578063a457c2d7146101b5578063a9059cbb146101c8578063dd62ed3e146101db57600080fd5b806342966c681461015c57806370a082311461017157806379cc67901461019a57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a5780633950935114610149575b600080fd5b6100dc6101ee565b6040516100e9919061087f565b60405180910390f35b6101056101003660046108f0565b610280565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b61010561013536600461091a565b610298565b604051601281526020016100e9565b6101056101573660046108f0565b6102bc565b61016f61016a366004610956565b6102de565b005b61011961017f36600461096f565b6001600160a01b031660009081526020819052604090205490565b61016f6101a83660046108f0565b6102eb565b6100dc610304565b6101056101c33660046108f0565b610313565b6101056101d63660046108f0565b610393565b6101196101e9366004610991565b6103a1565b6060600380546101fd906109c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610229906109c4565b80156102765780601f1061024b57610100808354040283529160200191610276565b820191906000526020600020905b81548152906001019060200180831161025957829003601f168201915b5050505050905090565b60003361028e8185856103cc565b5060019392505050565b6000336102a68582856104f1565b6102b185858561056b565b506001949350505050565b60003361028e8185856102cf83836103a1565b6102d99190610a15565b6103cc565b6102e83382610739565b50565b6102f68233836104f1565b6103008282610739565b5050565b6060600480546101fd906109c4565b6000338161032182866103a1565b9050838110156103865760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102b182868684036103cc565b60003361028e81858561056b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661042e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161037d565b6001600160a01b03821661048f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161037d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104fd84846103a1565b9050600019811461056557818110156105585760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161037d565b61056584848484036103cc565b50505050565b6001600160a01b0383166105cf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161037d565b6001600160a01b0382166106315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161037d565b6001600160a01b038316600090815260208190526040902054818110156106a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161037d565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106e0908490610a15565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161072c91815260200190565b60405180910390a3610565565b6001600160a01b0382166107995760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161037d565b6001600160a01b0382166000908152602081905260409020548181101561080d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161037d565b6001600160a01b038316600090815260208190526040812083830390556002805484929061083c908490610a2d565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016104e4565b600060208083528351808285015260005b818110156108ac57858101830151858201604001528201610890565b818111156108be576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146108eb57600080fd5b919050565b6000806040838503121561090357600080fd5b61090c836108d4565b946020939093013593505050565b60008060006060848603121561092f57600080fd5b610938846108d4565b9250610946602085016108d4565b9150604084013590509250925092565b60006020828403121561096857600080fd5b5035919050565b60006020828403121561098157600080fd5b61098a826108d4565b9392505050565b600080604083850312156109a457600080fd5b6109ad836108d4565b91506109bb602084016108d4565b90509250929050565b600181811c908216806109d857607f821691505b602082108114156109f957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610a2857610a286109ff565b500190565b600082821015610a3f57610a3f6109ff565b50039056fea2646970667358221220dc132e0f3aa42d082859bdc07e1b4889eb86baeb5b4f060715848c54b723ece964736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/presets/ERC20PresetMinterPauser":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20PresetMinterPauser","sourceName":"contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol","abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162001d6638038062001d668339810160408190526200003491620003b5565b8151829082906200004d90600590602085019062000242565b5080516200006390600690602084019062000242565b50506007805460ff19169055506200007d600033620000dd565b620000a97f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000dd565b620000d57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620000dd565b50506200045c565b620000e98282620000ed565b5050565b6200010482826200013060201b6200093d1760201c565b60008281526001602090815260409091206200012b918390620009c1620001d0821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000e9576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556200018c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001e7836001600160a01b038416620001f0565b90505b92915050565b60008181526001830160205260408120546200023957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620001ea565b506000620001ea565b82805462000250906200041f565b90600052602060002090601f016020900481019282620002745760008555620002bf565b82601f106200028f57805160ff1916838001178555620002bf565b82800160010185558215620002bf579182015b82811115620002bf578251825591602001919060010190620002a2565b50620002cd929150620002d1565b5090565b5b80821115620002cd5760008155600101620002d2565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200031057600080fd5b81516001600160401b03808211156200032d576200032d620002e8565b604051601f8301601f19908116603f01168101908282118183101715620003585762000358620002e8565b816040528381526020925086838588010111156200037557600080fd5b600091505b838210156200039957858201830151818301840152908201906200037a565b83821115620003ab5760008385830101525b9695505050505050565b60008060408385031215620003c957600080fd5b82516001600160401b0380821115620003e157600080fd5b620003ef86838701620002fe565b935060208501519150808211156200040657600080fd5b506200041585828601620002fe565b9150509250929050565b600181811c908216806200043457607f821691505b602082108114156200045657634e487b7160e01b600052602260045260246000fd5b50919050565b6118fa806200046c6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063a457c2d711610097578063d539139311610071578063d5391393146103af578063d547741f146103d6578063dd62ed3e146103e9578063e63ab1e9146103fc57600080fd5b8063a457c2d714610376578063a9059cbb14610389578063ca15c8731461039c57600080fd5b80639010d07c116100d35780639010d07c1461032857806391d148541461035357806395d89b4114610366578063a217fddf1461036e57600080fd5b806370a08231146102e457806379cc67901461030d5780638456cb591461032057600080fd5b8063313ce567116101665780633f4ba83a116101405780633f4ba83a146102ab57806340c10f19146102b357806342966c68146102c65780635c975abb146102d957600080fd5b8063313ce5671461027657806336568abe14610285578063395093511461029857600080fd5b806318160ddd116101a257806318160ddd1461021957806323b872dd1461022b578063248a9ca31461023e5780632f2ff15d1461026157600080fd5b806301ffc9a7146101c957806306fdde03146101f1578063095ea7b314610206575b600080fd5b6101dc6101d73660046115a0565b610423565b60405190151581526020015b60405180910390f35b6101f961044e565b6040516101e891906115f6565b6101dc610214366004611645565b6104e0565b6004545b6040519081526020016101e8565b6101dc61023936600461166f565b6104f8565b61021d61024c3660046116ab565b60009081526020819052604090206001015490565b61027461026f3660046116c4565b61051c565b005b604051601281526020016101e8565b6102746102933660046116c4565b610546565b6101dc6102a6366004611645565b6105c9565b6102746105eb565b6102746102c1366004611645565b610691565b6102746102d43660046116ab565b610730565b60075460ff166101dc565b61021d6102f23660046116f0565b6001600160a01b031660009081526002602052604090205490565b61027461031b366004611645565b61073d565b610274610752565b61033b61033636600461170b565b6107f6565b6040516001600160a01b0390911681526020016101e8565b6101dc6103613660046116c4565b610815565b6101f961083e565b61021d600081565b6101dc610384366004611645565b61084d565b6101dc610397366004611645565b6108c8565b61021d6103aa3660046116ab565b6108d6565b61021d7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102746103e43660046116c4565b6108ed565b61021d6103f736600461172d565b610912565b61021d7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60006001600160e01b03198216635a05180f60e01b14806104485750610448826109d6565b92915050565b60606005805461045d90611757565b80601f016020809104026020016040519081016040528092919081815260200182805461048990611757565b80156104d65780601f106104ab576101008083540402835291602001916104d6565b820191906000526020600020905b8154815290600101906020018083116104b957829003601f168201915b5050505050905090565b6000336104ee818585610a0b565b5060019392505050565b600033610506858285610b2f565b610511858585610ba9565b506001949350505050565b60008281526020819052604090206001015461053781610d82565b6105418383610d8c565b505050565b6001600160a01b03811633146105bb5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105c58282610dae565b5050565b6000336104ee8185856105dc8383610912565b6105e691906117a8565b610a0b565b6106157f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610815565b6106875760405162461bcd60e51b815260206004820152603960248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20756e70617573650000000000000060648201526084016105b2565b61068f610dd0565b565b6106bb7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610815565b6107265760405162461bcd60e51b815260206004820152603660248201527f45524332305072657365744d696e7465725061757365723a206d7573742068616044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b60648201526084016105b2565b6105c58282610e22565b61073a3382610f0d565b50565b610748823383610b2f565b6105c58282610f0d565b61077c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610815565b6107ee5760405162461bcd60e51b815260206004820152603760248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20706175736500000000000000000060648201526084016105b2565b61068f611067565b600082815260016020526040812061080e90836110a4565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60606006805461045d90611757565b6000338161085b8286610912565b9050838110156108bb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105b2565b6105118286868403610a0b565b6000336104ee818585610ba9565b6000818152600160205260408120610448906110b0565b60008281526020819052604090206001015461090881610d82565b6105418383610dae565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6109478282610815565b6105c5576000828152602081815260408083206001600160a01b03851684529091529020805460ff1916600117905561097d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600061080e836001600160a01b0384166110ba565b60006001600160e01b03198216637965db0b60e01b148061044857506301ffc9a760e01b6001600160e01b0319831614610448565b6001600160a01b038316610a6d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105b2565b6001600160a01b038216610ace5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105b2565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610b3b8484610912565b90506000198114610ba35781811015610b965760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105b2565b610ba38484848403610a0b565b50505050565b6001600160a01b038316610c0d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105b2565b6001600160a01b038216610c6f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105b2565b610c7a838383611109565b6001600160a01b03831660009081526002602052604090205481811015610cf25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105b2565b6001600160a01b03808516600090815260026020526040808220858503905591851681529081208054849290610d299084906117a8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d7591815260200190565b60405180910390a3610ba3565b61073a8133611114565b610d96828261093d565b600082815260016020526040902061054190826109c1565b610db88282611178565b600082815260016020526040902061054190826111dd565b610dd86111f2565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610e785760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105b2565b610e8460008383611109565b8060046000828254610e9691906117a8565b90915550506001600160a01b03821660009081526002602052604081208054839290610ec39084906117a8565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216610f6d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105b2565b610f7982600083611109565b6001600160a01b03821660009081526002602052604090205481811015610fed5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105b2565b6001600160a01b038316600090815260026020526040812083830390556004805484929061101c9084906117c0565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b61106f61123b565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610e053390565b600061080e8383611281565b6000610448825490565b600081815260018301602052604081205461110157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610448565b506000610448565b6105418383836112ab565b61111e8282610815565b6105c557611136816001600160a01b03166014611311565b611141836020611311565b6040516020016111529291906117d7565b60408051601f198184030181529082905262461bcd60e51b82526105b2916004016115f6565b6111828282610815565b156105c5576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600061080e836001600160a01b0384166114ad565b60075460ff1661068f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105b2565b60075460ff161561068f5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105b2565b60008260000182815481106112985761129861184c565b9060005260206000200154905092915050565b60075460ff16156105415760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b60648201526084016105b2565b60606000611320836002611862565b61132b9060026117a8565b67ffffffffffffffff81111561134357611343611881565b6040519080825280601f01601f19166020018201604052801561136d576020820181803683370190505b509050600360fc1b816000815181106113885761138861184c565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106113b7576113b761184c565b60200101906001600160f81b031916908160001a90535060006113db846002611862565b6113e69060016117a8565b90505b600181111561145e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061141a5761141a61184c565b1a60f81b8282815181106114305761143061184c565b60200101906001600160f81b031916908160001a90535060049490941c9361145781611897565b90506113e9565b50831561080e5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105b2565b600081815260018301602052604081205480156115965760006114d16001836117c0565b85549091506000906114e5906001906117c0565b905081811461154a5760008660000182815481106115055761150561184c565b90600052602060002001549050808760000184815481106115285761152861184c565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061155b5761155b6118ae565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610448565b6000915050610448565b6000602082840312156115b257600080fd5b81356001600160e01b03198116811461080e57600080fd5b60005b838110156115e55781810151838201526020016115cd565b83811115610ba35750506000910152565b60208152600082518060208401526116158160408501602087016115ca565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461164057600080fd5b919050565b6000806040838503121561165857600080fd5b61166183611629565b946020939093013593505050565b60008060006060848603121561168457600080fd5b61168d84611629565b925061169b60208501611629565b9150604084013590509250925092565b6000602082840312156116bd57600080fd5b5035919050565b600080604083850312156116d757600080fd5b823591506116e760208401611629565b90509250929050565b60006020828403121561170257600080fd5b61080e82611629565b6000806040838503121561171e57600080fd5b50508035926020909101359150565b6000806040838503121561174057600080fd5b61174983611629565b91506116e760208401611629565b600181811c9082168061176b57607f821691505b6020821081141561178c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156117bb576117bb611792565b500190565b6000828210156117d2576117d2611792565b500390565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161180f8160178501602088016115ca565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516118408160288401602088016115ca565b01602801949350505050565b634e487b7160e01b600052603260045260246000fd5b600081600019048311821515161561187c5761187c611792565b500290565b634e487b7160e01b600052604160045260246000fd5b6000816118a6576118a6611792565b506000190190565b634e487b7160e01b600052603160045260246000fdfea264697066735822122048c66a7206666f4e204e67398e5f8308e3aacac953e70d07d306c4815a38f61464736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063a457c2d711610097578063d539139311610071578063d5391393146103af578063d547741f146103d6578063dd62ed3e146103e9578063e63ab1e9146103fc57600080fd5b8063a457c2d714610376578063a9059cbb14610389578063ca15c8731461039c57600080fd5b80639010d07c116100d35780639010d07c1461032857806391d148541461035357806395d89b4114610366578063a217fddf1461036e57600080fd5b806370a08231146102e457806379cc67901461030d5780638456cb591461032057600080fd5b8063313ce567116101665780633f4ba83a116101405780633f4ba83a146102ab57806340c10f19146102b357806342966c68146102c65780635c975abb146102d957600080fd5b8063313ce5671461027657806336568abe14610285578063395093511461029857600080fd5b806318160ddd116101a257806318160ddd1461021957806323b872dd1461022b578063248a9ca31461023e5780632f2ff15d1461026157600080fd5b806301ffc9a7146101c957806306fdde03146101f1578063095ea7b314610206575b600080fd5b6101dc6101d73660046115a0565b610423565b60405190151581526020015b60405180910390f35b6101f961044e565b6040516101e891906115f6565b6101dc610214366004611645565b6104e0565b6004545b6040519081526020016101e8565b6101dc61023936600461166f565b6104f8565b61021d61024c3660046116ab565b60009081526020819052604090206001015490565b61027461026f3660046116c4565b61051c565b005b604051601281526020016101e8565b6102746102933660046116c4565b610546565b6101dc6102a6366004611645565b6105c9565b6102746105eb565b6102746102c1366004611645565b610691565b6102746102d43660046116ab565b610730565b60075460ff166101dc565b61021d6102f23660046116f0565b6001600160a01b031660009081526002602052604090205490565b61027461031b366004611645565b61073d565b610274610752565b61033b61033636600461170b565b6107f6565b6040516001600160a01b0390911681526020016101e8565b6101dc6103613660046116c4565b610815565b6101f961083e565b61021d600081565b6101dc610384366004611645565b61084d565b6101dc610397366004611645565b6108c8565b61021d6103aa3660046116ab565b6108d6565b61021d7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102746103e43660046116c4565b6108ed565b61021d6103f736600461172d565b610912565b61021d7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60006001600160e01b03198216635a05180f60e01b14806104485750610448826109d6565b92915050565b60606005805461045d90611757565b80601f016020809104026020016040519081016040528092919081815260200182805461048990611757565b80156104d65780601f106104ab576101008083540402835291602001916104d6565b820191906000526020600020905b8154815290600101906020018083116104b957829003601f168201915b5050505050905090565b6000336104ee818585610a0b565b5060019392505050565b600033610506858285610b2f565b610511858585610ba9565b506001949350505050565b60008281526020819052604090206001015461053781610d82565b6105418383610d8c565b505050565b6001600160a01b03811633146105bb5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105c58282610dae565b5050565b6000336104ee8185856105dc8383610912565b6105e691906117a8565b610a0b565b6106157f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610815565b6106875760405162461bcd60e51b815260206004820152603960248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20756e70617573650000000000000060648201526084016105b2565b61068f610dd0565b565b6106bb7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610815565b6107265760405162461bcd60e51b815260206004820152603660248201527f45524332305072657365744d696e7465725061757365723a206d7573742068616044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b60648201526084016105b2565b6105c58282610e22565b61073a3382610f0d565b50565b610748823383610b2f565b6105c58282610f0d565b61077c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610815565b6107ee5760405162461bcd60e51b815260206004820152603760248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20706175736500000000000000000060648201526084016105b2565b61068f611067565b600082815260016020526040812061080e90836110a4565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60606006805461045d90611757565b6000338161085b8286610912565b9050838110156108bb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105b2565b6105118286868403610a0b565b6000336104ee818585610ba9565b6000818152600160205260408120610448906110b0565b60008281526020819052604090206001015461090881610d82565b6105418383610dae565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6109478282610815565b6105c5576000828152602081815260408083206001600160a01b03851684529091529020805460ff1916600117905561097d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600061080e836001600160a01b0384166110ba565b60006001600160e01b03198216637965db0b60e01b148061044857506301ffc9a760e01b6001600160e01b0319831614610448565b6001600160a01b038316610a6d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105b2565b6001600160a01b038216610ace5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105b2565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610b3b8484610912565b90506000198114610ba35781811015610b965760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105b2565b610ba38484848403610a0b565b50505050565b6001600160a01b038316610c0d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105b2565b6001600160a01b038216610c6f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105b2565b610c7a838383611109565b6001600160a01b03831660009081526002602052604090205481811015610cf25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105b2565b6001600160a01b03808516600090815260026020526040808220858503905591851681529081208054849290610d299084906117a8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d7591815260200190565b60405180910390a3610ba3565b61073a8133611114565b610d96828261093d565b600082815260016020526040902061054190826109c1565b610db88282611178565b600082815260016020526040902061054190826111dd565b610dd86111f2565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610e785760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105b2565b610e8460008383611109565b8060046000828254610e9691906117a8565b90915550506001600160a01b03821660009081526002602052604081208054839290610ec39084906117a8565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216610f6d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105b2565b610f7982600083611109565b6001600160a01b03821660009081526002602052604090205481811015610fed5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105b2565b6001600160a01b038316600090815260026020526040812083830390556004805484929061101c9084906117c0565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b61106f61123b565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610e053390565b600061080e8383611281565b6000610448825490565b600081815260018301602052604081205461110157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610448565b506000610448565b6105418383836112ab565b61111e8282610815565b6105c557611136816001600160a01b03166014611311565b611141836020611311565b6040516020016111529291906117d7565b60408051601f198184030181529082905262461bcd60e51b82526105b2916004016115f6565b6111828282610815565b156105c5576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600061080e836001600160a01b0384166114ad565b60075460ff1661068f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105b2565b60075460ff161561068f5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105b2565b60008260000182815481106112985761129861184c565b9060005260206000200154905092915050565b60075460ff16156105415760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b60648201526084016105b2565b60606000611320836002611862565b61132b9060026117a8565b67ffffffffffffffff81111561134357611343611881565b6040519080825280601f01601f19166020018201604052801561136d576020820181803683370190505b509050600360fc1b816000815181106113885761138861184c565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106113b7576113b761184c565b60200101906001600160f81b031916908160001a90535060006113db846002611862565b6113e69060016117a8565b90505b600181111561145e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061141a5761141a61184c565b1a60f81b8282815181106114305761143061184c565b60200101906001600160f81b031916908160001a90535060049490941c9361145781611897565b90506113e9565b50831561080e5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105b2565b600081815260018301602052604081205480156115965760006114d16001836117c0565b85549091506000906114e5906001906117c0565b905081811461154a5760008660000182815481106115055761150561184c565b90600052602060002001549050808760000184815481106115285761152861184c565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061155b5761155b6118ae565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610448565b6000915050610448565b6000602082840312156115b257600080fd5b81356001600160e01b03198116811461080e57600080fd5b60005b838110156115e55781810151838201526020016115cd565b83811115610ba35750506000910152565b60208152600082518060208401526116158160408501602087016115ca565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461164057600080fd5b919050565b6000806040838503121561165857600080fd5b61166183611629565b946020939093013593505050565b60008060006060848603121561168457600080fd5b61168d84611629565b925061169b60208501611629565b9150604084013590509250925092565b6000602082840312156116bd57600080fd5b5035919050565b600080604083850312156116d757600080fd5b823591506116e760208401611629565b90509250929050565b60006020828403121561170257600080fd5b61080e82611629565b6000806040838503121561171e57600080fd5b50508035926020909101359150565b6000806040838503121561174057600080fd5b61174983611629565b91506116e760208401611629565b600181811c9082168061176b57607f821691505b6020821081141561178c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156117bb576117bb611792565b500190565b6000828210156117d2576117d2611792565b500390565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161180f8160178501602088016115ca565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516118408160288401602088016115ca565b01602801949350505050565b634e487b7160e01b600052603260045260246000fd5b600081600019048311821515161561187c5761187c611792565b500290565b634e487b7160e01b600052604160045260246000fd5b6000816118a6576118a6611792565b506000190190565b634e487b7160e01b600052603160045260246000fdfea264697066735822122048c66a7206666f4e204e67398e5f8308e3aacac953e70d07d306c4815a38f61464736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/utils/SafeERC20":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"SafeERC20","sourceName":"contracts/token/ERC20/utils/SafeERC20.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204f774261ac5ce5eeb19b4ffd5970485c04b17a812de3732dd193699a8a25c44664736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204f774261ac5ce5eeb19b4ffd5970485c04b17a812de3732dd193699a8a25c44664736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/utils/TokenTimelock":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"TokenTimelock","sourceName":"contracts/token/ERC20/utils/TokenTimelock.sol","abi":[{"inputs":[{"internalType":"contract IERC20","name":"token_","type":"address"},{"internalType":"address","name":"beneficiary_","type":"address"},{"internalType":"uint256","name":"releaseTime_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"beneficiary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"releaseTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60e060405234801561001057600080fd5b506040516107c53803806107c583398101604081905261002f916100d0565b42811161009d5760405162461bcd60e51b815260206004820152603260248201527f546f6b656e54696d656c6f636b3a2072656c656173652074696d65206973206260448201527165666f72652063757272656e742074696d6560701b606482015260840160405180910390fd5b6001600160a01b03928316608052911660a05260c052610113565b6001600160a01b03811681146100cd57600080fd5b50565b6000806000606084860312156100e557600080fd5b83516100f0816100b8565b6020850151909350610101816100b8565b80925050604084015190509250925092565b60805160a05160c05161066b61015a60003960008181609f015260f0015260008181605301526102a701526000818160ca015281816101820152610285015261066b6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806338af3eed1461005157806386d1a69f14610090578063b91d40011461009a578063fc0c546a146100c8575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100986100ee565b005b6040517f00000000000000000000000000000000000000000000000000000000000000008152602001610087565b7f0000000000000000000000000000000000000000000000000000000000000000610073565b7f000000000000000000000000000000000000000000000000000000000000000042101561017e5760405162461bcd60e51b815260206004820152603260248201527f546f6b656e54696d656c6f636b3a2063757272656e742074696d65206973206260448201527165666f72652072656c656173652074696d6560701b60648201526084015b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000006040516370a0823160e01b81523060048201526001600160a01b0391909116906370a082319060240160206040518083038186803b1580156101e257600080fd5b505afa1580156101f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021a919061057b565b9050600081116102785760405162461bcd60e51b815260206004820152602360248201527f546f6b656e54696d656c6f636b3a206e6f20746f6b656e7320746f2072656c6560448201526261736560e81b6064820152608401610175565b6102cc6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836102cf565b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610321908490610326565b505050565b600061037b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166103f89092919063ffffffff16565b80519091501561032157808060200190518101906103999190610594565b6103215760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610175565b60606104078484600085610411565b90505b9392505050565b6060824710156104725760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610175565b6001600160a01b0385163b6104c95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610175565b600080866001600160a01b031685876040516104e591906105e6565b60006040518083038185875af1925050503d8060008114610522576040519150601f19603f3d011682016040523d82523d6000602084013e610527565b606091505b5091509150610537828286610542565b979650505050505050565b6060831561055157508161040a565b8251156105615782518084602001fd5b8160405162461bcd60e51b81526004016101759190610602565b60006020828403121561058d57600080fd5b5051919050565b6000602082840312156105a657600080fd5b8151801515811461040a57600080fd5b60005b838110156105d15781810151838201526020016105b9565b838111156105e0576000848401525b50505050565b600082516105f88184602087016105b6565b9190910192915050565b60208152600082518060208401526106218160408501602087016105b6565b601f01601f1916919091016040019291505056fea2646970667358221220d18aa9183c5f8c1ed5a5a53fb7572ed848fe028d77bcbedbde6a747ec3a4f42664736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806338af3eed1461005157806386d1a69f14610090578063b91d40011461009a578063fc0c546a146100c8575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100986100ee565b005b6040517f00000000000000000000000000000000000000000000000000000000000000008152602001610087565b7f0000000000000000000000000000000000000000000000000000000000000000610073565b7f000000000000000000000000000000000000000000000000000000000000000042101561017e5760405162461bcd60e51b815260206004820152603260248201527f546f6b656e54696d656c6f636b3a2063757272656e742074696d65206973206260448201527165666f72652072656c656173652074696d6560701b60648201526084015b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000006040516370a0823160e01b81523060048201526001600160a01b0391909116906370a082319060240160206040518083038186803b1580156101e257600080fd5b505afa1580156101f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021a919061057b565b9050600081116102785760405162461bcd60e51b815260206004820152602360248201527f546f6b656e54696d656c6f636b3a206e6f20746f6b656e7320746f2072656c6560448201526261736560e81b6064820152608401610175565b6102cc6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836102cf565b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610321908490610326565b505050565b600061037b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166103f89092919063ffffffff16565b80519091501561032157808060200190518101906103999190610594565b6103215760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610175565b60606104078484600085610411565b90505b9392505050565b6060824710156104725760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610175565b6001600160a01b0385163b6104c95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610175565b600080866001600160a01b031685876040516104e591906105e6565b60006040518083038185875af1925050503d8060008114610522576040519150601f19603f3d011682016040523d82523d6000602084013e610527565b606091505b5091509150610537828286610542565b979650505050505050565b6060831561055157508161040a565b8251156105615782518084602001fd5b8160405162461bcd60e51b81526004016101759190610602565b60006020828403121561058d57600080fd5b5051919050565b6000602082840312156105a657600080fd5b8151801515811461040a57600080fd5b60005b838110156105d15781810151838201526020016105b9565b838111156105e0576000848401525b50505050565b600082516105f88184602087016105b6565b9190910192915050565b60208152600082518060208401526106218160408501602087016105b6565b601f01601f1916919091016040019291505056fea2646970667358221220d18aa9183c5f8c1ed5a5a53fb7572ed848fe028d77bcbedbde6a747ec3a4f42664736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/ERC721":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721","sourceName":"contracts/token/ERC721/ERC721.sol","abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"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":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"},{"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":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"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":"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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"}],"bytecode":"0x60806040523480156200001157600080fd5b50604051620013d7380380620013d78339810160408190526200003491620001db565b81516200004990600090602085019062000068565b5080516200005f90600190602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b61114580620002926000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610c58565b610228565b60405190151581526020015b60405180910390f35b61010461027a565b6040516100f39190610ccd565b61012461011f366004610ce0565b61030c565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610d15565b610333565b005b61014f61015f366004610d3f565b61044e565b61014f610172366004610d3f565b61047f565b610124610185366004610ce0565b61049a565b61019d610198366004610d7b565b6104fa565b6040519081526020016100f3565b610104610580565b61014f6101c1366004610d96565b61058f565b61014f6101d4366004610de8565b61059e565b6101046101e7366004610ce0565b6105d6565b6100e76101fa366004610ec4565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061025957506001600160e01b03198216635b5e139f60e01b145b8061027457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461028990610ef7565b80601f01602080910402602001604051908101604052809291908181526020018280546102b590610ef7565b80156103025780601f106102d757610100808354040283529160200191610302565b820191906000526020600020905b8154815290600101906020018083116102e557829003601f168201915b5050505050905090565b60006103178261064a565b506000908152600460205260409020546001600160a01b031690565b600061033e8261049a565b9050806001600160a01b0316836001600160a01b031614156103b15760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103cd57506103cd81336101fa565b61043f5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016103a8565b61044983836106ac565b505050565b610458338261071a565b6104745760405162461bcd60e51b81526004016103a890610f32565b610449838383610799565b6104498383836040518060200160405280600081525061059e565b6000818152600260205260408120546001600160a01b0316806102745760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a8565b60006001600160a01b0382166105645760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103a8565b506001600160a01b031660009081526003602052604090205490565b60606001805461028990610ef7565b61059a338383610935565b5050565b6105a8338361071a565b6105c45760405162461bcd60e51b81526004016103a890610f32565b6105d084848484610a04565b50505050565b60606105e18261064a565b60006105f860408051602081019091526000815290565b905060008151116106185760405180602001604052806000815250610643565b8061062284610a37565b604051602001610633929190610f80565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166106a95760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a8565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e18261049a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806107268361049a565b9050806001600160a01b0316846001600160a01b0316148061076d57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806107915750836001600160a01b03166107868461030c565b6001600160a01b0316145b949350505050565b826001600160a01b03166107ac8261049a565b6001600160a01b0316146108105760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103a8565b6001600160a01b0382166108725760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103a8565b61087d6000826106ac565b6001600160a01b03831660009081526003602052604081208054600192906108a6908490610fc5565b90915550506001600160a01b03821660009081526003602052604081208054600192906108d4908490610fdc565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b031614156109975760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103a8565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610a0f848484610799565b610a1b84848484610b35565b6105d05760405162461bcd60e51b81526004016103a890610ff4565b606081610a5b5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610a855780610a6f81611046565b9150610a7e9050600a83611077565b9150610a5f565b60008167ffffffffffffffff811115610aa057610aa0610dd2565b6040519080825280601f01601f191660200182016040528015610aca576020820181803683370190505b5090505b841561079157610adf600183610fc5565b9150610aec600a8661108b565b610af7906030610fdc565b60f81b818381518110610b0c57610b0c61109f565b60200101906001600160f81b031916908160001a905350610b2e600a86611077565b9450610ace565b60006001600160a01b0384163b15610c3757604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610b799033908990889088906004016110b5565b602060405180830381600087803b158015610b9357600080fd5b505af1925050508015610bc3575060408051601f3d908101601f19168201909252610bc0918101906110f2565b60015b610c1d573d808015610bf1576040519150601f19603f3d011682016040523d82523d6000602084013e610bf6565b606091505b508051610c155760405162461bcd60e51b81526004016103a890610ff4565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610791565b506001949350505050565b6001600160e01b0319811681146106a957600080fd5b600060208284031215610c6a57600080fd5b813561064381610c42565b60005b83811015610c90578181015183820152602001610c78565b838111156105d05750506000910152565b60008151808452610cb9816020860160208601610c75565b601f01601f19169290920160200192915050565b6020815260006106436020830184610ca1565b600060208284031215610cf257600080fd5b5035919050565b80356001600160a01b0381168114610d1057600080fd5b919050565b60008060408385031215610d2857600080fd5b610d3183610cf9565b946020939093013593505050565b600080600060608486031215610d5457600080fd5b610d5d84610cf9565b9250610d6b60208501610cf9565b9150604084013590509250925092565b600060208284031215610d8d57600080fd5b61064382610cf9565b60008060408385031215610da957600080fd5b610db283610cf9565b915060208301358015158114610dc757600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610dfe57600080fd5b610e0785610cf9565b9350610e1560208601610cf9565b925060408501359150606085013567ffffffffffffffff80821115610e3957600080fd5b818701915087601f830112610e4d57600080fd5b813581811115610e5f57610e5f610dd2565b604051601f8201601f19908116603f01168101908382118183101715610e8757610e87610dd2565b816040528281528a6020848701011115610ea057600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ed757600080fd5b610ee083610cf9565b9150610eee60208401610cf9565b90509250929050565b600181811c90821680610f0b57607f821691505b60208210811415610f2c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b60008351610f92818460208801610c75565b835190830190610fa6818360208801610c75565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b600082821015610fd757610fd7610faf565b500390565b60008219821115610fef57610fef610faf565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600060001982141561105a5761105a610faf565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261108657611086611061565b500490565b60008261109a5761109a611061565b500690565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110e890830184610ca1565b9695505050505050565b60006020828403121561110457600080fd5b815161064381610c4256fea2646970667358221220dbaf7531c6ab6358f8bfc6705e38c89d81c50d229dd1bf325d98b7120ec9a03164736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610c58565b610228565b60405190151581526020015b60405180910390f35b61010461027a565b6040516100f39190610ccd565b61012461011f366004610ce0565b61030c565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610d15565b610333565b005b61014f61015f366004610d3f565b61044e565b61014f610172366004610d3f565b61047f565b610124610185366004610ce0565b61049a565b61019d610198366004610d7b565b6104fa565b6040519081526020016100f3565b610104610580565b61014f6101c1366004610d96565b61058f565b61014f6101d4366004610de8565b61059e565b6101046101e7366004610ce0565b6105d6565b6100e76101fa366004610ec4565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061025957506001600160e01b03198216635b5e139f60e01b145b8061027457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461028990610ef7565b80601f01602080910402602001604051908101604052809291908181526020018280546102b590610ef7565b80156103025780601f106102d757610100808354040283529160200191610302565b820191906000526020600020905b8154815290600101906020018083116102e557829003601f168201915b5050505050905090565b60006103178261064a565b506000908152600460205260409020546001600160a01b031690565b600061033e8261049a565b9050806001600160a01b0316836001600160a01b031614156103b15760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103cd57506103cd81336101fa565b61043f5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016103a8565b61044983836106ac565b505050565b610458338261071a565b6104745760405162461bcd60e51b81526004016103a890610f32565b610449838383610799565b6104498383836040518060200160405280600081525061059e565b6000818152600260205260408120546001600160a01b0316806102745760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a8565b60006001600160a01b0382166105645760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103a8565b506001600160a01b031660009081526003602052604090205490565b60606001805461028990610ef7565b61059a338383610935565b5050565b6105a8338361071a565b6105c45760405162461bcd60e51b81526004016103a890610f32565b6105d084848484610a04565b50505050565b60606105e18261064a565b60006105f860408051602081019091526000815290565b905060008151116106185760405180602001604052806000815250610643565b8061062284610a37565b604051602001610633929190610f80565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166106a95760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a8565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e18261049a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806107268361049a565b9050806001600160a01b0316846001600160a01b0316148061076d57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806107915750836001600160a01b03166107868461030c565b6001600160a01b0316145b949350505050565b826001600160a01b03166107ac8261049a565b6001600160a01b0316146108105760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103a8565b6001600160a01b0382166108725760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103a8565b61087d6000826106ac565b6001600160a01b03831660009081526003602052604081208054600192906108a6908490610fc5565b90915550506001600160a01b03821660009081526003602052604081208054600192906108d4908490610fdc565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b031614156109975760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103a8565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610a0f848484610799565b610a1b84848484610b35565b6105d05760405162461bcd60e51b81526004016103a890610ff4565b606081610a5b5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610a855780610a6f81611046565b9150610a7e9050600a83611077565b9150610a5f565b60008167ffffffffffffffff811115610aa057610aa0610dd2565b6040519080825280601f01601f191660200182016040528015610aca576020820181803683370190505b5090505b841561079157610adf600183610fc5565b9150610aec600a8661108b565b610af7906030610fdc565b60f81b818381518110610b0c57610b0c61109f565b60200101906001600160f81b031916908160001a905350610b2e600a86611077565b9450610ace565b60006001600160a01b0384163b15610c3757604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610b799033908990889088906004016110b5565b602060405180830381600087803b158015610b9357600080fd5b505af1925050508015610bc3575060408051601f3d908101601f19168201909252610bc0918101906110f2565b60015b610c1d573d808015610bf1576040519150601f19603f3d011682016040523d82523d6000602084013e610bf6565b606091505b508051610c155760405162461bcd60e51b81526004016103a890610ff4565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610791565b506001949350505050565b6001600160e01b0319811681146106a957600080fd5b600060208284031215610c6a57600080fd5b813561064381610c42565b60005b83811015610c90578181015183820152602001610c78565b838111156105d05750506000910152565b60008151808452610cb9816020860160208601610c75565b601f01601f19169290920160200192915050565b6020815260006106436020830184610ca1565b600060208284031215610cf257600080fd5b5035919050565b80356001600160a01b0381168114610d1057600080fd5b919050565b60008060408385031215610d2857600080fd5b610d3183610cf9565b946020939093013593505050565b600080600060608486031215610d5457600080fd5b610d5d84610cf9565b9250610d6b60208501610cf9565b9150604084013590509250925092565b600060208284031215610d8d57600080fd5b61064382610cf9565b60008060408385031215610da957600080fd5b610db283610cf9565b915060208301358015158114610dc757600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610dfe57600080fd5b610e0785610cf9565b9350610e1560208601610cf9565b925060408501359150606085013567ffffffffffffffff80821115610e3957600080fd5b818701915087601f830112610e4d57600080fd5b813581811115610e5f57610e5f610dd2565b604051601f8201601f19908116603f01168101908382118183101715610e8757610e87610dd2565b816040528281528a6020848701011115610ea057600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ed757600080fd5b610ee083610cf9565b9150610eee60208401610cf9565b90509250929050565b600181811c90821680610f0b57607f821691505b60208210811415610f2c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b60008351610f92818460208801610c75565b835190830190610fa6818360208801610c75565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b600082821015610fd757610fd7610faf565b500390565b60008219821115610fef57610fef610faf565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600060001982141561105a5761105a610faf565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261108657611086611061565b500490565b60008261109a5761109a611061565b500690565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110e890830184610ca1565b9695505050505050565b60006020828403121561110457600080fd5b815161064381610c4256fea2646970667358221220dbaf7531c6ab6358f8bfc6705e38c89d81c50d229dd1bf325d98b7120ec9a03164736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/ERC721Votes":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721Votes","sourceName":"contracts/token/ERC721/extensions/draft-ERC721Votes.sol","abi":[{"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":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","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"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","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":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"blockNumber","type":"uint256"}],"name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"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":"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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/ERC721Burnable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721Burnable","sourceName":"contracts/token/ERC721/extensions/ERC721Burnable.sol","abi":[{"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":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"},{"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":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"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":"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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/ERC721Enumerable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721Enumerable","sourceName":"contracts/token/ERC721/extensions/ERC721Enumerable.sol","abi":[{"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":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"},{"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":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"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":"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":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/ERC721Pausable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721Pausable","sourceName":"contracts/token/ERC721/extensions/ERC721Pausable.sol","abi":[{"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":"address","name":"account","type":"address"}],"name":"Paused","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":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"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":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/ERC721Royalty":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721Royalty","sourceName":"contracts/token/ERC721/extensions/ERC721Royalty.sol","abi":[{"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":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"},{"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":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/ERC721URIStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721URIStorage","sourceName":"contracts/token/ERC721/extensions/ERC721URIStorage.sol","abi":[{"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":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"},{"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":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"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":"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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/IERC721Enumerable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721Enumerable","sourceName":"contracts/token/ERC721/extensions/IERC721Enumerable.sol","abi":[{"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":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"},{"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":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"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":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/IERC721Metadata":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721Metadata","sourceName":"contracts/token/ERC721/extensions/IERC721Metadata.sol","abi":[{"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":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"},{"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":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","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":"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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/IERC721":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721","sourceName":"contracts/token/ERC721/IERC721.sol","abi":[{"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":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"},{"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":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"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":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/IERC721Receiver":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721Receiver","sourceName":"contracts/token/ERC721/IERC721Receiver.sol","abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/presets/ERC721PresetMinterPauserAutoId":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721PresetMinterPauserAutoId","sourceName":"contracts/token/ERC721/presets/ERC721PresetMinterPauserAutoId.sol","abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"baseTokenURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","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":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"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":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"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":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162002929380380620029298339810160408190526200003491620003cc565b8251839083906200004d90600290602085019062000259565b5080516200006390600390602084019062000259565b5050600c805460ff191690555080516200008590600e90602084019062000259565b5062000093600033620000f4565b620000bf7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000f4565b620000eb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620000f4565b5050506200049a565b62000100828262000104565b5050565b6200011b82826200014760201b62000ced1760201c565b60008281526001602090815260409091206200014291839062000d71620001e7821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000100576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001a33390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001fe836001600160a01b03841662000207565b90505b92915050565b6000818152600183016020526040812054620002505750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000201565b50600062000201565b82805462000267906200045d565b90600052602060002090601f0160209004810192826200028b5760008555620002d6565b82601f10620002a657805160ff1916838001178555620002d6565b82800160010185558215620002d6579182015b82811115620002d6578251825591602001919060010190620002b9565b50620002e4929150620002e8565b5090565b5b80821115620002e45760008155600101620002e9565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200032757600080fd5b81516001600160401b0380821115620003445762000344620002ff565b604051601f8301601f19908116603f011681019082821181831017156200036f576200036f620002ff565b816040528381526020925086838588010111156200038c57600080fd5b600091505b83821015620003b0578582018301518183018401529082019062000391565b83821115620003c25760008385830101525b9695505050505050565b600080600060608486031215620003e257600080fd5b83516001600160401b0380821115620003fa57600080fd5b620004088783880162000315565b945060208601519150808211156200041f57600080fd5b6200042d8783880162000315565b935060408601519150808211156200044457600080fd5b50620004538682870162000315565b9150509250925092565b600181811c908216806200047257607f821691505b602082108114156200049457634e487b7160e01b600052602260045260246000fd5b50919050565b61247f80620004aa6000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80636352211e1161010f578063a22cb465116100a2578063d539139311610071578063d5391393146103f7578063d547741f1461041e578063e63ab1e914610431578063e985e9c51461045857600080fd5b8063a22cb465146103ab578063b88d4fde146103be578063c87b56dd146103d1578063ca15c873146103e457600080fd5b80639010d07c116100de5780639010d07c1461037557806391d148541461038857806395d89b411461039b578063a217fddf146103a357600080fd5b80636352211e146103345780636a6278421461034757806370a082311461035a5780638456cb591461036d57600080fd5b80632f2ff15d1161018757806342842e0e1161015657806342842e0e146102f057806342966c68146103035780634f6ccce7146103165780635c975abb1461032957600080fd5b80632f2ff15d146102af5780632f745c59146102c257806336568abe146102d55780633f4ba83a146102e857600080fd5b8063095ea7b3116101c3578063095ea7b31461025257806318160ddd1461026757806323b872dd14610279578063248a9ca31461028c57600080fd5b806301ffc9a7146101ea57806306fdde0314610212578063081812fc14610227575b600080fd5b6101fd6101f8366004611e8c565b610494565b60405190151581526020015b60405180910390f35b61021a6104a5565b6040516102099190611f01565b61023a610235366004611f14565b610537565b6040516001600160a01b039091168152602001610209565b610265610260366004611f49565b61055e565b005b600a545b604051908152602001610209565b610265610287366004611f73565b610679565b61026b61029a366004611f14565b60009081526020819052604090206001015490565b6102656102bd366004611faf565b6106ab565b61026b6102d0366004611f49565b6106d0565b6102656102e3366004611faf565b610766565b6102656107e4565b6102656102fe366004611f73565b61088c565b610265610311366004611f14565b6108a7565b61026b610324366004611f14565b6108d8565b600c5460ff166101fd565b61023a610342366004611f14565b61096b565b610265610355366004611fdb565b6109cb565b61026b610368366004611fdb565b610a87565b610265610b0d565b61023a610383366004611ff6565b610bb1565b6101fd610396366004611faf565b610bd0565b61021a610bf9565b61026b600081565b6102656103b9366004612018565b610c08565b6102656103cc36600461206a565b610c13565b61021a6103df366004611f14565b610c4b565b61026b6103f2366004611f14565b610cb1565b61026b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61026561042c366004611faf565b610cc8565b61026b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6101fd610466366004612146565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b600061049f82610d86565b92915050565b6060600280546104b490612170565b80601f01602080910402602001604051908101604052809291908181526020018280546104e090612170565b801561052d5780601f106105025761010080835404028352916020019161052d565b820191906000526020600020905b81548152906001019060200180831161051057829003601f168201915b5050505050905090565b600061054282610dab565b506000908152600660205260409020546001600160a01b031690565b60006105698261096b565b9050806001600160a01b0316836001600160a01b031614156105dc5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806105f857506105f88133610466565b61066a5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016105d3565b6106748383610e0a565b505050565b610684335b82610e78565b6106a05760405162461bcd60e51b81526004016105d3906121ab565b610674838383610ef7565b6000828152602081905260409020600101546106c68161109e565b61067483836110a8565b60006106db83610a87565b821061073d5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016105d3565b506001600160a01b03919091166000908152600860209081526040808320938352929052205490565b6001600160a01b03811633146107d65760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016105d3565b6107e082826110ca565b5050565b61080e7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610bd0565b610882576040805162461bcd60e51b81526020600482015260248101919091527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f20756e706175736560648201526084016105d3565b61088a6110ec565b565b61067483838360405180602001604052806000815250610c13565b6108b03361067e565b6108cc5760405162461bcd60e51b81526004016105d3906121ab565b6108d58161113e565b50565b60006108e3600a5490565b82106109465760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016105d3565b600a8281548110610959576109596121f9565b90600052602060002001549050919050565b6000818152600460205260408120546001600160a01b03168061049f5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016105d3565b6109f57f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610bd0565b610a675760405162461bcd60e51b815260206004820152603d60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d7573742068617665206d696e74657220726f6c6520746f206d696e7400000060648201526084016105d3565b610a7981610a74600d5490565b6111e5565b6108d5600d80546001019055565b60006001600160a01b038216610af15760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016105d3565b506001600160a01b031660009081526005602052604090205490565b610b377f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610bd0565b610ba95760405162461bcd60e51b815260206004820152603e60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f207061757365000060648201526084016105d3565b61088a611333565b6000828152600160205260408120610bc99083611370565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600380546104b490612170565b6107e033838361137c565b610c1d3383610e78565b610c395760405162461bcd60e51b81526004016105d3906121ab565b610c458484848461144b565b50505050565b6060610c5682610dab565b6000610c6061147e565b90506000815111610c805760405180602001604052806000815250610bc9565b80610c8a8461148d565b604051602001610c9b92919061220f565b6040516020818303038152906040529392505050565b600081815260016020526040812061049f9061158b565b600082815260208190526040902060010154610ce38161109e565b61067483836110ca565b610cf78282610bd0565b6107e0576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610d2d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610bc9836001600160a01b038416611595565b60006001600160e01b0319821663780e9d6360e01b148061049f575061049f826115e4565b6000818152600460205260409020546001600160a01b03166108d55760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016105d3565b600081815260066020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610e3f8261096b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610e848361096b565b9050806001600160a01b0316846001600160a01b03161480610ecb57506001600160a01b0380821660009081526007602090815260408083209388168352929052205460ff165b80610eef5750836001600160a01b0316610ee484610537565b6001600160a01b0316145b949350505050565b826001600160a01b0316610f0a8261096b565b6001600160a01b031614610f6e5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016105d3565b6001600160a01b038216610fd05760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016105d3565b610fdb838383611624565b610fe6600082610e0a565b6001600160a01b038316600090815260056020526040812080546001929061100f908490612254565b90915550506001600160a01b038216600090815260056020526040812080546001929061103d90849061226b565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108d5813361162f565b6110b28282610ced565b60008281526001602052604090206106749082610d71565b6110d48282611693565b600082815260016020526040902061067490826116f8565b6110f461170d565b600c805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60006111498261096b565b905061115781600084611624565b611162600083610e0a565b6001600160a01b038116600090815260056020526040812080546001929061118b908490612254565b909155505060008281526004602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6001600160a01b03821661123b5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016105d3565b6000818152600460205260409020546001600160a01b0316156112a05760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105d3565b6112ac60008383611624565b6001600160a01b03821660009081526005602052604081208054600192906112d590849061226b565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b61133b611756565b600c805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586111213390565b6000610bc9838361179c565b816001600160a01b0316836001600160a01b031614156113de5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016105d3565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611456848484610ef7565b611462848484846117c6565b610c455760405162461bcd60e51b81526004016105d390612283565b6060600e80546104b490612170565b6060816114b15750506040805180820190915260018152600360fc1b602082015290565b8160005b81156114db57806114c5816122d5565b91506114d49050600a83612306565b91506114b5565b60008167ffffffffffffffff8111156114f6576114f6612054565b6040519080825280601f01601f191660200182016040528015611520576020820181803683370190505b5090505b8415610eef57611535600183612254565b9150611542600a8661231a565b61154d90603061226b565b60f81b818381518110611562576115626121f9565b60200101906001600160f81b031916908160001a905350611584600a86612306565b9450611524565b600061049f825490565b60008181526001830160205260408120546115dc5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561049f565b50600061049f565b60006001600160e01b031982166380ac58cd60e01b148061161557506001600160e01b03198216635b5e139f60e01b145b8061049f575061049f826118d3565b6106748383836118f8565b6116398282610bd0565b6107e057611651816001600160a01b0316601461196a565b61165c83602061196a565b60405160200161166d92919061232e565b60408051601f198184030181529082905262461bcd60e51b82526105d391600401611f01565b61169d8282610bd0565b156107e0576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610bc9836001600160a01b038416611b06565b600c5460ff1661088a5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105d3565b600c5460ff161561088a5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105d3565b60008260000182815481106117b3576117b36121f9565b9060005260206000200154905092915050565b60006001600160a01b0384163b156118c857604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061180a9033908990889088906004016123a3565b602060405180830381600087803b15801561182457600080fd5b505af1925050508015611854575060408051601f3d908101601f19168201909252611851918101906123e0565b60015b6118ae573d808015611882576040519150601f19603f3d011682016040523d82523d6000602084013e611887565b606091505b5080516118a65760405162461bcd60e51b81526004016105d390612283565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610eef565b506001949350505050565b60006001600160e01b03198216635a05180f60e01b148061049f575061049f82611bf9565b611903838383611c2e565b600c5460ff16156106745760405162461bcd60e51b815260206004820152602b60248201527f4552433732315061757361626c653a20746f6b656e207472616e73666572207760448201526a1a1a5b19481c185d5cd95960aa1b60648201526084016105d3565b606060006119798360026123fd565b61198490600261226b565b67ffffffffffffffff81111561199c5761199c612054565b6040519080825280601f01601f1916602001820160405280156119c6576020820181803683370190505b509050600360fc1b816000815181106119e1576119e16121f9565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611a1057611a106121f9565b60200101906001600160f81b031916908160001a9053506000611a348460026123fd565b611a3f90600161226b565b90505b6001811115611ab7576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611a7357611a736121f9565b1a60f81b828281518110611a8957611a896121f9565b60200101906001600160f81b031916908160001a90535060049490941c93611ab08161241c565b9050611a42565b508315610bc95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105d3565b60008181526001830160205260408120548015611bef576000611b2a600183612254565b8554909150600090611b3e90600190612254565b9050818114611ba3576000866000018281548110611b5e57611b5e6121f9565b9060005260206000200154905080876000018481548110611b8157611b816121f9565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611bb457611bb4612433565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061049f565b600091505061049f565b60006001600160e01b03198216637965db0b60e01b148061049f57506301ffc9a760e01b6001600160e01b031983161461049f565b6001600160a01b038316611c8957611c8481600a80546000838152600b60205260408120829055600182018355919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80155565b611cac565b816001600160a01b0316836001600160a01b031614611cac57611cac8382611ce6565b6001600160a01b038216611cc35761067481611d83565b826001600160a01b0316826001600160a01b031614610674576106748282611e32565b60006001611cf384610a87565b611cfd9190612254565b600083815260096020526040902054909150808214611d50576001600160a01b03841660009081526008602090815260408083208584528252808320548484528184208190558352600990915290208190555b5060009182526009602090815260408084208490556001600160a01b039094168352600881528383209183525290812055565b600a54600090611d9590600190612254565b6000838152600b6020526040812054600a8054939450909284908110611dbd57611dbd6121f9565b9060005260206000200154905080600a8381548110611dde57611dde6121f9565b6000918252602080832090910192909255828152600b9091526040808220849055858252812055600a805480611e1657611e16612433565b6001900381819060005260206000200160009055905550505050565b6000611e3d83610a87565b6001600160a01b039093166000908152600860209081526040808320868452825280832085905593825260099052919091209190915550565b6001600160e01b0319811681146108d557600080fd5b600060208284031215611e9e57600080fd5b8135610bc981611e76565b60005b83811015611ec4578181015183820152602001611eac565b83811115610c455750506000910152565b60008151808452611eed816020860160208601611ea9565b601f01601f19169290920160200192915050565b602081526000610bc96020830184611ed5565b600060208284031215611f2657600080fd5b5035919050565b80356001600160a01b0381168114611f4457600080fd5b919050565b60008060408385031215611f5c57600080fd5b611f6583611f2d565b946020939093013593505050565b600080600060608486031215611f8857600080fd5b611f9184611f2d565b9250611f9f60208501611f2d565b9150604084013590509250925092565b60008060408385031215611fc257600080fd5b82359150611fd260208401611f2d565b90509250929050565b600060208284031215611fed57600080fd5b610bc982611f2d565b6000806040838503121561200957600080fd5b50508035926020909101359150565b6000806040838503121561202b57600080fd5b61203483611f2d565b91506020830135801515811461204957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561208057600080fd5b61208985611f2d565b935061209760208601611f2d565b925060408501359150606085013567ffffffffffffffff808211156120bb57600080fd5b818701915087601f8301126120cf57600080fd5b8135818111156120e1576120e1612054565b604051601f8201601f19908116603f0116810190838211818310171561210957612109612054565b816040528281528a602084870101111561212257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561215957600080fd5b61216283611f2d565b9150611fd260208401611f2d565b600181811c9082168061218457607f821691505b602082108114156121a557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008351612221818460208801611ea9565b835190830190612235818360208801611ea9565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b6000828210156122665761226661223e565b500390565b6000821982111561227e5761227e61223e565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60006000198214156122e9576122e961223e565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082612315576123156122f0565b500490565b600082612329576123296122f0565b500690565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612366816017850160208801611ea9565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612397816028840160208801611ea9565b01602801949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906123d690830184611ed5565b9695505050505050565b6000602082840312156123f257600080fd5b8151610bc981611e76565b60008160001904831182151516156124175761241761223e565b500290565b60008161242b5761242b61223e565b506000190190565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220904fdcec717bb77b92b7a0770155545f37faf7149eef4539d04876c24632417764736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80636352211e1161010f578063a22cb465116100a2578063d539139311610071578063d5391393146103f7578063d547741f1461041e578063e63ab1e914610431578063e985e9c51461045857600080fd5b8063a22cb465146103ab578063b88d4fde146103be578063c87b56dd146103d1578063ca15c873146103e457600080fd5b80639010d07c116100de5780639010d07c1461037557806391d148541461038857806395d89b411461039b578063a217fddf146103a357600080fd5b80636352211e146103345780636a6278421461034757806370a082311461035a5780638456cb591461036d57600080fd5b80632f2ff15d1161018757806342842e0e1161015657806342842e0e146102f057806342966c68146103035780634f6ccce7146103165780635c975abb1461032957600080fd5b80632f2ff15d146102af5780632f745c59146102c257806336568abe146102d55780633f4ba83a146102e857600080fd5b8063095ea7b3116101c3578063095ea7b31461025257806318160ddd1461026757806323b872dd14610279578063248a9ca31461028c57600080fd5b806301ffc9a7146101ea57806306fdde0314610212578063081812fc14610227575b600080fd5b6101fd6101f8366004611e8c565b610494565b60405190151581526020015b60405180910390f35b61021a6104a5565b6040516102099190611f01565b61023a610235366004611f14565b610537565b6040516001600160a01b039091168152602001610209565b610265610260366004611f49565b61055e565b005b600a545b604051908152602001610209565b610265610287366004611f73565b610679565b61026b61029a366004611f14565b60009081526020819052604090206001015490565b6102656102bd366004611faf565b6106ab565b61026b6102d0366004611f49565b6106d0565b6102656102e3366004611faf565b610766565b6102656107e4565b6102656102fe366004611f73565b61088c565b610265610311366004611f14565b6108a7565b61026b610324366004611f14565b6108d8565b600c5460ff166101fd565b61023a610342366004611f14565b61096b565b610265610355366004611fdb565b6109cb565b61026b610368366004611fdb565b610a87565b610265610b0d565b61023a610383366004611ff6565b610bb1565b6101fd610396366004611faf565b610bd0565b61021a610bf9565b61026b600081565b6102656103b9366004612018565b610c08565b6102656103cc36600461206a565b610c13565b61021a6103df366004611f14565b610c4b565b61026b6103f2366004611f14565b610cb1565b61026b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61026561042c366004611faf565b610cc8565b61026b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6101fd610466366004612146565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b600061049f82610d86565b92915050565b6060600280546104b490612170565b80601f01602080910402602001604051908101604052809291908181526020018280546104e090612170565b801561052d5780601f106105025761010080835404028352916020019161052d565b820191906000526020600020905b81548152906001019060200180831161051057829003601f168201915b5050505050905090565b600061054282610dab565b506000908152600660205260409020546001600160a01b031690565b60006105698261096b565b9050806001600160a01b0316836001600160a01b031614156105dc5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806105f857506105f88133610466565b61066a5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016105d3565b6106748383610e0a565b505050565b610684335b82610e78565b6106a05760405162461bcd60e51b81526004016105d3906121ab565b610674838383610ef7565b6000828152602081905260409020600101546106c68161109e565b61067483836110a8565b60006106db83610a87565b821061073d5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016105d3565b506001600160a01b03919091166000908152600860209081526040808320938352929052205490565b6001600160a01b03811633146107d65760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016105d3565b6107e082826110ca565b5050565b61080e7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610bd0565b610882576040805162461bcd60e51b81526020600482015260248101919091527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f20756e706175736560648201526084016105d3565b61088a6110ec565b565b61067483838360405180602001604052806000815250610c13565b6108b03361067e565b6108cc5760405162461bcd60e51b81526004016105d3906121ab565b6108d58161113e565b50565b60006108e3600a5490565b82106109465760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016105d3565b600a8281548110610959576109596121f9565b90600052602060002001549050919050565b6000818152600460205260408120546001600160a01b03168061049f5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016105d3565b6109f57f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610bd0565b610a675760405162461bcd60e51b815260206004820152603d60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d7573742068617665206d696e74657220726f6c6520746f206d696e7400000060648201526084016105d3565b610a7981610a74600d5490565b6111e5565b6108d5600d80546001019055565b60006001600160a01b038216610af15760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016105d3565b506001600160a01b031660009081526005602052604090205490565b610b377f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610bd0565b610ba95760405162461bcd60e51b815260206004820152603e60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f207061757365000060648201526084016105d3565b61088a611333565b6000828152600160205260408120610bc99083611370565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600380546104b490612170565b6107e033838361137c565b610c1d3383610e78565b610c395760405162461bcd60e51b81526004016105d3906121ab565b610c458484848461144b565b50505050565b6060610c5682610dab565b6000610c6061147e565b90506000815111610c805760405180602001604052806000815250610bc9565b80610c8a8461148d565b604051602001610c9b92919061220f565b6040516020818303038152906040529392505050565b600081815260016020526040812061049f9061158b565b600082815260208190526040902060010154610ce38161109e565b61067483836110ca565b610cf78282610bd0565b6107e0576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610d2d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610bc9836001600160a01b038416611595565b60006001600160e01b0319821663780e9d6360e01b148061049f575061049f826115e4565b6000818152600460205260409020546001600160a01b03166108d55760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016105d3565b600081815260066020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610e3f8261096b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610e848361096b565b9050806001600160a01b0316846001600160a01b03161480610ecb57506001600160a01b0380821660009081526007602090815260408083209388168352929052205460ff165b80610eef5750836001600160a01b0316610ee484610537565b6001600160a01b0316145b949350505050565b826001600160a01b0316610f0a8261096b565b6001600160a01b031614610f6e5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016105d3565b6001600160a01b038216610fd05760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016105d3565b610fdb838383611624565b610fe6600082610e0a565b6001600160a01b038316600090815260056020526040812080546001929061100f908490612254565b90915550506001600160a01b038216600090815260056020526040812080546001929061103d90849061226b565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108d5813361162f565b6110b28282610ced565b60008281526001602052604090206106749082610d71565b6110d48282611693565b600082815260016020526040902061067490826116f8565b6110f461170d565b600c805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60006111498261096b565b905061115781600084611624565b611162600083610e0a565b6001600160a01b038116600090815260056020526040812080546001929061118b908490612254565b909155505060008281526004602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6001600160a01b03821661123b5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016105d3565b6000818152600460205260409020546001600160a01b0316156112a05760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105d3565b6112ac60008383611624565b6001600160a01b03821660009081526005602052604081208054600192906112d590849061226b565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b61133b611756565b600c805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586111213390565b6000610bc9838361179c565b816001600160a01b0316836001600160a01b031614156113de5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016105d3565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611456848484610ef7565b611462848484846117c6565b610c455760405162461bcd60e51b81526004016105d390612283565b6060600e80546104b490612170565b6060816114b15750506040805180820190915260018152600360fc1b602082015290565b8160005b81156114db57806114c5816122d5565b91506114d49050600a83612306565b91506114b5565b60008167ffffffffffffffff8111156114f6576114f6612054565b6040519080825280601f01601f191660200182016040528015611520576020820181803683370190505b5090505b8415610eef57611535600183612254565b9150611542600a8661231a565b61154d90603061226b565b60f81b818381518110611562576115626121f9565b60200101906001600160f81b031916908160001a905350611584600a86612306565b9450611524565b600061049f825490565b60008181526001830160205260408120546115dc5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561049f565b50600061049f565b60006001600160e01b031982166380ac58cd60e01b148061161557506001600160e01b03198216635b5e139f60e01b145b8061049f575061049f826118d3565b6106748383836118f8565b6116398282610bd0565b6107e057611651816001600160a01b0316601461196a565b61165c83602061196a565b60405160200161166d92919061232e565b60408051601f198184030181529082905262461bcd60e51b82526105d391600401611f01565b61169d8282610bd0565b156107e0576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610bc9836001600160a01b038416611b06565b600c5460ff1661088a5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105d3565b600c5460ff161561088a5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105d3565b60008260000182815481106117b3576117b36121f9565b9060005260206000200154905092915050565b60006001600160a01b0384163b156118c857604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061180a9033908990889088906004016123a3565b602060405180830381600087803b15801561182457600080fd5b505af1925050508015611854575060408051601f3d908101601f19168201909252611851918101906123e0565b60015b6118ae573d808015611882576040519150601f19603f3d011682016040523d82523d6000602084013e611887565b606091505b5080516118a65760405162461bcd60e51b81526004016105d390612283565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610eef565b506001949350505050565b60006001600160e01b03198216635a05180f60e01b148061049f575061049f82611bf9565b611903838383611c2e565b600c5460ff16156106745760405162461bcd60e51b815260206004820152602b60248201527f4552433732315061757361626c653a20746f6b656e207472616e73666572207760448201526a1a1a5b19481c185d5cd95960aa1b60648201526084016105d3565b606060006119798360026123fd565b61198490600261226b565b67ffffffffffffffff81111561199c5761199c612054565b6040519080825280601f01601f1916602001820160405280156119c6576020820181803683370190505b509050600360fc1b816000815181106119e1576119e16121f9565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611a1057611a106121f9565b60200101906001600160f81b031916908160001a9053506000611a348460026123fd565b611a3f90600161226b565b90505b6001811115611ab7576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611a7357611a736121f9565b1a60f81b828281518110611a8957611a896121f9565b60200101906001600160f81b031916908160001a90535060049490941c93611ab08161241c565b9050611a42565b508315610bc95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105d3565b60008181526001830160205260408120548015611bef576000611b2a600183612254565b8554909150600090611b3e90600190612254565b9050818114611ba3576000866000018281548110611b5e57611b5e6121f9565b9060005260206000200154905080876000018481548110611b8157611b816121f9565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611bb457611bb4612433565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061049f565b600091505061049f565b60006001600160e01b03198216637965db0b60e01b148061049f57506301ffc9a760e01b6001600160e01b031983161461049f565b6001600160a01b038316611c8957611c8481600a80546000838152600b60205260408120829055600182018355919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80155565b611cac565b816001600160a01b0316836001600160a01b031614611cac57611cac8382611ce6565b6001600160a01b038216611cc35761067481611d83565b826001600160a01b0316826001600160a01b031614610674576106748282611e32565b60006001611cf384610a87565b611cfd9190612254565b600083815260096020526040902054909150808214611d50576001600160a01b03841660009081526008602090815260408083208584528252808320548484528184208190558352600990915290208190555b5060009182526009602090815260408084208490556001600160a01b039094168352600881528383209183525290812055565b600a54600090611d9590600190612254565b6000838152600b6020526040812054600a8054939450909284908110611dbd57611dbd6121f9565b9060005260206000200154905080600a8381548110611dde57611dde6121f9565b6000918252602080832090910192909255828152600b9091526040808220849055858252812055600a805480611e1657611e16612433565b6001900381819060005260206000200160009055905550505050565b6000611e3d83610a87565b6001600160a01b039093166000908152600860209081526040808320868452825280832085905593825260099052919091209190915550565b6001600160e01b0319811681146108d557600080fd5b600060208284031215611e9e57600080fd5b8135610bc981611e76565b60005b83811015611ec4578181015183820152602001611eac565b83811115610c455750506000910152565b60008151808452611eed816020860160208601611ea9565b601f01601f19169290920160200192915050565b602081526000610bc96020830184611ed5565b600060208284031215611f2657600080fd5b5035919050565b80356001600160a01b0381168114611f4457600080fd5b919050565b60008060408385031215611f5c57600080fd5b611f6583611f2d565b946020939093013593505050565b600080600060608486031215611f8857600080fd5b611f9184611f2d565b9250611f9f60208501611f2d565b9150604084013590509250925092565b60008060408385031215611fc257600080fd5b82359150611fd260208401611f2d565b90509250929050565b600060208284031215611fed57600080fd5b610bc982611f2d565b6000806040838503121561200957600080fd5b50508035926020909101359150565b6000806040838503121561202b57600080fd5b61203483611f2d565b91506020830135801515811461204957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561208057600080fd5b61208985611f2d565b935061209760208601611f2d565b925060408501359150606085013567ffffffffffffffff808211156120bb57600080fd5b818701915087601f8301126120cf57600080fd5b8135818111156120e1576120e1612054565b604051601f8201601f19908116603f0116810190838211818310171561210957612109612054565b816040528281528a602084870101111561212257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561215957600080fd5b61216283611f2d565b9150611fd260208401611f2d565b600181811c9082168061218457607f821691505b602082108114156121a557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008351612221818460208801611ea9565b835190830190612235818360208801611ea9565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b6000828210156122665761226661223e565b500390565b6000821982111561227e5761227e61223e565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60006000198214156122e9576122e961223e565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082612315576123156122f0565b500490565b600082612329576123296122f0565b500690565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612366816017850160208801611ea9565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612397816028840160208801611ea9565b01602801949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906123d690830184611ed5565b9695505050505050565b6000602082840312156123f257600080fd5b8151610bc981611e76565b60008160001904831182151516156124175761241761223e565b500290565b60008161242b5761242b61223e565b506000190190565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220904fdcec717bb77b92b7a0770155545f37faf7149eef4539d04876c24632417764736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/utils/ERC721Holder":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721Holder","sourceName":"contracts/token/ERC721/utils/ERC721Holder.sol","abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506101af806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063150b7a0214610030575b600080fd5b61004e61003e36600461009d565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200160405180910390f35b80356001600160a01b038116811461008257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156100b357600080fd5b6100bc8561006b565b93506100ca6020860161006b565b925060408501359150606085013567ffffffffffffffff808211156100ee57600080fd5b818701915087601f83011261010257600080fd5b81358181111561011457610114610087565b604051601f8201601f19908116603f0116810190838211818310171561013c5761013c610087565b816040528281528a602084870101111561015557600080fd5b8260208601602083013760006020848301015280955050505050509295919450925056fea26469706673582212203b949b10ab655f3f3682634067da84891aca6edbd1a8a99ca0ec1a31004e97b964736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063150b7a0214610030575b600080fd5b61004e61003e36600461009d565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200160405180910390f35b80356001600160a01b038116811461008257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156100b357600080fd5b6100bc8561006b565b93506100ca6020860161006b565b925060408501359150606085013567ffffffffffffffff808211156100ee57600080fd5b818701915087601f83011261010257600080fd5b81358181111561011457610114610087565b604051601f8201601f19908116603f0116810190838211818310171561013c5761013c610087565b816040528281528a602084870101111561015557600080fd5b8260208601602083013760006020848301015280955050505050509295919450925056fea26469706673582212203b949b10ab655f3f3682634067da84891aca6edbd1a8a99ca0ec1a31004e97b964736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC777/ERC777":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC777","sourceName":"contracts/token/ERC777/ERC777.sol","abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"address[]","name":"defaultOperators_","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"AuthorizedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"RevokedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Sent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"authorizeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenHolder","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"defaultOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"granularity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"tokenHolder","type":"address"}],"name":"isOperatorFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"revokeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"send","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162001bcf38038062001bcf8339810160408190526200003491620003f1565b82516200004990600290602086019062000215565b5081516200005f90600390602085019062000215565b50805162000075906004906020840190620002a4565b5060005b8151811015620000e5576001600560008484815181106200009e576200009e62000508565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580620000dc816200051e565b91505062000079565b506040516329965a1d60e01b815230600482018190527fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce217705460248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad24906329965a1d90606401600060405180830381600087803b1580156200016057600080fd5b505af115801562000175573d6000803e3d6000fd5b50506040516329965a1d60e01b815230600482018190527faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a60248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad2492506329965a1d9150606401600060405180830381600087803b158015620001f357600080fd5b505af115801562000208573d6000803e3d6000fd5b5050505050505062000585565b828054620002239062000548565b90600052602060002090601f01602090048101928262000247576000855562000292565b82601f106200026257805160ff191683800117855562000292565b8280016001018555821562000292579182015b828111156200029257825182559160200191906001019062000275565b50620002a0929150620002fc565b5090565b82805482825590600052602060002090810192821562000292579160200282015b828111156200029257825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620002c5565b5b80821115620002a05760008155600101620002fd565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562000354576200035462000313565b604052919050565b600082601f8301126200036e57600080fd5b81516001600160401b038111156200038a576200038a62000313565b6020620003a0601f8301601f1916820162000329565b8281528582848701011115620003b557600080fd5b60005b83811015620003d5578581018301518282018401528201620003b8565b83811115620003e75760008385840101525b5095945050505050565b6000806000606084860312156200040757600080fd5b83516001600160401b03808211156200041f57600080fd5b6200042d878388016200035c565b94506020915081860151818111156200044557600080fd5b62000453888289016200035c565b9450506040860151818111156200046957600080fd5b8601601f810188136200047b57600080fd5b80518281111562000490576200049062000313565b8060051b9250620004a384840162000329565b818152928201840192848101908a851115620004be57600080fd5b928501925b84841015620004f857835192506001600160a01b0383168314620004e75760008081fd5b8282529285019290850190620004c3565b8096505050505050509250925092565b634e487b7160e01b600052603260045260246000fd5b60006000198214156200054157634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c908216806200055d57607f821691505b602082108114156200057f57634e487b7160e01b600052602260045260246000fd5b50919050565b61163a80620005956000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063959b8c3f116100a2578063d95b637111610071578063d95b63711461022b578063dd62ed3e1461023e578063fad8b32a14610277578063fc673c4f1461028a578063fe9d93031461029d57600080fd5b8063959b8c3f146101ea57806395d89b41146101fd5780639bd9bbc614610205578063a9059cbb1461021857600080fd5b806323b872dd116100e957806323b872dd14610183578063313ce56714610196578063556f0dc7146101a557806362ad1b83146101ac57806370a08231146101c157600080fd5b806306e485381461011b57806306fdde0314610139578063095ea7b31461014e57806318160ddd14610171575b600080fd5b6101236102b0565b60405161013091906110ae565b60405180910390f35b610141610312565b6040516101309190611148565b61016161015c366004611173565b61039b565b6040519015158152602001610130565b6001545b604051908152602001610130565b61016161019136600461119f565b6103b3565b60405160128152602001610130565b6001610175565b6101bf6101ba366004611283565b6103f9565b005b6101756101cf366004611316565b6001600160a01b031660009081526020819052604090205490565b6101bf6101f8366004611316565b61043e565b61014161055c565b6101bf610213366004611333565b61056b565b610161610226366004611173565b61058e565b61016161023936600461138c565b6105c6565b61017561024c36600461138c565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6101bf610285366004611316565b610668565b6101bf6102983660046113c5565b610784565b6101bf6102ab366004611445565b6107bc565b6060600480548060200260200160405190810160405280929190818152602001828054801561030857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102ea575b5050505050905090565b6060600280546103219061148c565b80601f016020809104026020016040519081016040528092919081815260200182805461034d9061148c565b80156103085780601f1061036f57610100808354040283529160200191610308565b820191906000526020600020905b81548152906001019060200180831161037d57509395945050505050565b6000336103a98185856107db565b5060019392505050565b6000336103c1858285610902565b6103ee8585856040518060200160405280600081525060405180602001604052806000815250600061098e565b506001949350505050565b61040333866105c6565b6104285760405162461bcd60e51b815260040161041f906114c7565b60405180910390fd5b6104378585858585600161098e565b5050505050565b336001600160a01b03821614156104a35760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff16156104f4573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19169055610523565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b6060600380546103219061148c565b6105893384848460405180602001604052806000815250600161098e565b505050565b60006105bd3384846040518060200160405280600081525060405180602001604052806000815250600061098e565b50600192915050565b6000816001600160a01b0316836001600160a01b0316148061063157506001600160a01b03831660009081526005602052604090205460ff16801561063157506001600160a01b0380831660009081526007602090815260408083209387168352929052205460ff16155b8061066157506001600160a01b0380831660009081526006602090815260408083209387168352929052205460ff165b9392505050565b6001600160a01b0381163314156106cb5760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff161561071f573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561074b565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b61078e33856105c6565b6107aa5760405162461bcd60e51b815260040161041f906114c7565b6107b684848484610a8a565b50505050565b6107d733838360405180602001604052806000815250610a8a565b5050565b6001600160a01b03831661083f5760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161041f565b6001600160a01b0382166108a15760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b606482015260840161041f565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526008602090815260408083209386168352929052205460001981146107b657818110156109815760405162461bcd60e51b815260206004820152601e60248201527f4552433737373a20696e73756666696369656e7420616c6c6f77616e63650000604482015260640161041f565b6107b684848484036107db565b6001600160a01b0386166109f35760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b606482015260840161041f565b6001600160a01b038516610a555760405162461bcd60e51b8152602060048201526024808201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161041f565b33610a64818888888888610c3e565b610a72818888888888610d74565b610a8181888888888888610eda565b50505050505050565b6001600160a01b038416610aeb5760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b606482015260840161041f565b33610afb81866000878787610c3e565b6001600160a01b03851660009081526020819052604090205484811015610b705760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b606482015260840161041f565b6001600160a01b0386166000908152602081905260408120868303905560018054879290610b9f908490611529565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098878787604051610bed93929190611540565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610cba57600080fd5b505afa158015610cce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf29190611575565b90506001600160a01b03811615610a8157604051633ad5cbc160e11b81526001600160a01b038216906375ab978290610d39908a908a908a908a908a908a90600401611592565b600060405180830381600087803b158015610d5357600080fd5b505af1158015610d67573d6000803e3d6000fd5b5050505050505050505050565b6001600160a01b03851660009081526020819052604090205483811015610ded5760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b606482015260840161041f565b6001600160a01b03808716600090815260208190526040808220878503905591871681529081208054869290610e249084906115ec565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051610e7c93929190611540565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610ec991815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610f5657600080fd5b505afa158015610f6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8e9190611575565b90506001600160a01b0381161561100a576040516223de2960e01b81526001600160a01b038216906223de2990610fd3908b908b908b908b908b908b90600401611592565b600060405180830381600087803b158015610fed57600080fd5b505af1158015611001573d6000803e3d6000fd5b505050506110a4565b81156110a4576001600160a01b0386163b156110a45760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a40161041f565b5050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156110ef5783516001600160a01b0316835292840192918401916001016110ca565b50909695505050505050565b6000815180845260005b8181101561112157602081850181015186830182015201611105565b81811115611133576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061066160208301846110fb565b6001600160a01b038116811461117057600080fd5b50565b6000806040838503121561118657600080fd5b82356111918161115b565b946020939093013593505050565b6000806000606084860312156111b457600080fd5b83356111bf8161115b565b925060208401356111cf8161115b565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261120757600080fd5b813567ffffffffffffffff80821115611222576112226111e0565b604051601f8301601f19908116603f0116810190828211818310171561124a5761124a6111e0565b8160405283815286602085880101111561126357600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a0868803121561129b57600080fd5b85356112a68161115b565b945060208601356112b68161115b565b935060408601359250606086013567ffffffffffffffff808211156112da57600080fd5b6112e689838a016111f6565b935060808801359150808211156112fc57600080fd5b50611309888289016111f6565b9150509295509295909350565b60006020828403121561132857600080fd5b81356106618161115b565b60008060006060848603121561134857600080fd5b83356113538161115b565b925060208401359150604084013567ffffffffffffffff81111561137657600080fd5b611382868287016111f6565b9150509250925092565b6000806040838503121561139f57600080fd5b82356113aa8161115b565b915060208301356113ba8161115b565b809150509250929050565b600080600080608085870312156113db57600080fd5b84356113e68161115b565b935060208501359250604085013567ffffffffffffffff8082111561140a57600080fd5b611416888389016111f6565b9350606087013591508082111561142c57600080fd5b50611439878288016111f6565b91505092959194509250565b6000806040838503121561145857600080fd5b82359150602083013567ffffffffffffffff81111561147657600080fd5b611482858286016111f6565b9150509250929050565b600181811c908216806114a057607f821691505b602082108114156114c157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008282101561153b5761153b611513565b500390565b83815260606020820152600061155960608301856110fb565b828103604084015261156b81856110fb565b9695505050505050565b60006020828403121561158757600080fd5b81516106618161115b565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c0608082018190526000906115cd908301856110fb565b82810360a08401526115df81856110fb565b9998505050505050505050565b600082198211156115ff576115ff611513565b50019056fea2646970667358221220dec8b87b9af6219ef84a946a07b0afce572fce594cc7b8b387590cb21c422daf64736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063959b8c3f116100a2578063d95b637111610071578063d95b63711461022b578063dd62ed3e1461023e578063fad8b32a14610277578063fc673c4f1461028a578063fe9d93031461029d57600080fd5b8063959b8c3f146101ea57806395d89b41146101fd5780639bd9bbc614610205578063a9059cbb1461021857600080fd5b806323b872dd116100e957806323b872dd14610183578063313ce56714610196578063556f0dc7146101a557806362ad1b83146101ac57806370a08231146101c157600080fd5b806306e485381461011b57806306fdde0314610139578063095ea7b31461014e57806318160ddd14610171575b600080fd5b6101236102b0565b60405161013091906110ae565b60405180910390f35b610141610312565b6040516101309190611148565b61016161015c366004611173565b61039b565b6040519015158152602001610130565b6001545b604051908152602001610130565b61016161019136600461119f565b6103b3565b60405160128152602001610130565b6001610175565b6101bf6101ba366004611283565b6103f9565b005b6101756101cf366004611316565b6001600160a01b031660009081526020819052604090205490565b6101bf6101f8366004611316565b61043e565b61014161055c565b6101bf610213366004611333565b61056b565b610161610226366004611173565b61058e565b61016161023936600461138c565b6105c6565b61017561024c36600461138c565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6101bf610285366004611316565b610668565b6101bf6102983660046113c5565b610784565b6101bf6102ab366004611445565b6107bc565b6060600480548060200260200160405190810160405280929190818152602001828054801561030857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102ea575b5050505050905090565b6060600280546103219061148c565b80601f016020809104026020016040519081016040528092919081815260200182805461034d9061148c565b80156103085780601f1061036f57610100808354040283529160200191610308565b820191906000526020600020905b81548152906001019060200180831161037d57509395945050505050565b6000336103a98185856107db565b5060019392505050565b6000336103c1858285610902565b6103ee8585856040518060200160405280600081525060405180602001604052806000815250600061098e565b506001949350505050565b61040333866105c6565b6104285760405162461bcd60e51b815260040161041f906114c7565b60405180910390fd5b6104378585858585600161098e565b5050505050565b336001600160a01b03821614156104a35760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff16156104f4573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19169055610523565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b6060600380546103219061148c565b6105893384848460405180602001604052806000815250600161098e565b505050565b60006105bd3384846040518060200160405280600081525060405180602001604052806000815250600061098e565b50600192915050565b6000816001600160a01b0316836001600160a01b0316148061063157506001600160a01b03831660009081526005602052604090205460ff16801561063157506001600160a01b0380831660009081526007602090815260408083209387168352929052205460ff16155b8061066157506001600160a01b0380831660009081526006602090815260408083209387168352929052205460ff165b9392505050565b6001600160a01b0381163314156106cb5760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff161561071f573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561074b565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b61078e33856105c6565b6107aa5760405162461bcd60e51b815260040161041f906114c7565b6107b684848484610a8a565b50505050565b6107d733838360405180602001604052806000815250610a8a565b5050565b6001600160a01b03831661083f5760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161041f565b6001600160a01b0382166108a15760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b606482015260840161041f565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526008602090815260408083209386168352929052205460001981146107b657818110156109815760405162461bcd60e51b815260206004820152601e60248201527f4552433737373a20696e73756666696369656e7420616c6c6f77616e63650000604482015260640161041f565b6107b684848484036107db565b6001600160a01b0386166109f35760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b606482015260840161041f565b6001600160a01b038516610a555760405162461bcd60e51b8152602060048201526024808201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161041f565b33610a64818888888888610c3e565b610a72818888888888610d74565b610a8181888888888888610eda565b50505050505050565b6001600160a01b038416610aeb5760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b606482015260840161041f565b33610afb81866000878787610c3e565b6001600160a01b03851660009081526020819052604090205484811015610b705760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b606482015260840161041f565b6001600160a01b0386166000908152602081905260408120868303905560018054879290610b9f908490611529565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098878787604051610bed93929190611540565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610cba57600080fd5b505afa158015610cce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf29190611575565b90506001600160a01b03811615610a8157604051633ad5cbc160e11b81526001600160a01b038216906375ab978290610d39908a908a908a908a908a908a90600401611592565b600060405180830381600087803b158015610d5357600080fd5b505af1158015610d67573d6000803e3d6000fd5b5050505050505050505050565b6001600160a01b03851660009081526020819052604090205483811015610ded5760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b606482015260840161041f565b6001600160a01b03808716600090815260208190526040808220878503905591871681529081208054869290610e249084906115ec565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051610e7c93929190611540565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610ec991815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610f5657600080fd5b505afa158015610f6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8e9190611575565b90506001600160a01b0381161561100a576040516223de2960e01b81526001600160a01b038216906223de2990610fd3908b908b908b908b908b908b90600401611592565b600060405180830381600087803b158015610fed57600080fd5b505af1158015611001573d6000803e3d6000fd5b505050506110a4565b81156110a4576001600160a01b0386163b156110a45760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a40161041f565b5050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156110ef5783516001600160a01b0316835292840192918401916001016110ca565b50909695505050505050565b6000815180845260005b8181101561112157602081850181015186830182015201611105565b81811115611133576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061066160208301846110fb565b6001600160a01b038116811461117057600080fd5b50565b6000806040838503121561118657600080fd5b82356111918161115b565b946020939093013593505050565b6000806000606084860312156111b457600080fd5b83356111bf8161115b565b925060208401356111cf8161115b565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261120757600080fd5b813567ffffffffffffffff80821115611222576112226111e0565b604051601f8301601f19908116603f0116810190828211818310171561124a5761124a6111e0565b8160405283815286602085880101111561126357600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a0868803121561129b57600080fd5b85356112a68161115b565b945060208601356112b68161115b565b935060408601359250606086013567ffffffffffffffff808211156112da57600080fd5b6112e689838a016111f6565b935060808801359150808211156112fc57600080fd5b50611309888289016111f6565b9150509295509295909350565b60006020828403121561132857600080fd5b81356106618161115b565b60008060006060848603121561134857600080fd5b83356113538161115b565b925060208401359150604084013567ffffffffffffffff81111561137657600080fd5b611382868287016111f6565b9150509250925092565b6000806040838503121561139f57600080fd5b82356113aa8161115b565b915060208301356113ba8161115b565b809150509250929050565b600080600080608085870312156113db57600080fd5b84356113e68161115b565b935060208501359250604085013567ffffffffffffffff8082111561140a57600080fd5b611416888389016111f6565b9350606087013591508082111561142c57600080fd5b50611439878288016111f6565b91505092959194509250565b6000806040838503121561145857600080fd5b82359150602083013567ffffffffffffffff81111561147657600080fd5b611482858286016111f6565b9150509250929050565b600181811c908216806114a057607f821691505b602082108114156114c157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008282101561153b5761153b611513565b500390565b83815260606020820152600061155960608301856110fb565b828103604084015261156b81856110fb565b9695505050505050565b60006020828403121561158757600080fd5b81516106618161115b565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c0608082018190526000906115cd908301856110fb565b82810360a08401526115df81856110fb565b9998505050505050505050565b600082198211156115ff576115ff611513565b50019056fea2646970667358221220dec8b87b9af6219ef84a946a07b0afce572fce594cc7b8b387590cb21c422daf64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC777/IERC777":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC777","sourceName":"contracts/token/ERC777/IERC777.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"AuthorizedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"RevokedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Sent","type":"event"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"authorizeOperator","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":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"defaultOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"granularity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"tokenHolder","type":"address"}],"name":"isOperatorFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"revokeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"send","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC777/IERC777Recipient":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC777Recipient","sourceName":"contracts/token/ERC777/IERC777Recipient.sol","abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"tokensReceived","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC777/IERC777Sender":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC777Sender","sourceName":"contracts/token/ERC777/IERC777Sender.sol","abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"tokensToSend","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC777/presets/ERC777PresetFixedSupply":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC777PresetFixedSupply","sourceName":"contracts/token/ERC777/presets/ERC777PresetFixedSupply.sol","abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"address[]","name":"defaultOperators","type":"address[]"},{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"AuthorizedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"RevokedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Sent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"authorizeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenHolder","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"defaultOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"granularity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"tokenHolder","type":"address"}],"name":"isOperatorFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"revokeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"send","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b50604051620020d1380380620020d18339810160408190526200003491620007c9565b84848482600290805190602001906200004f929190620005c2565b50815162000065906003906020850190620005c2565b5080516200007b90600490602084019062000651565b5060005b8151811015620000eb57600160056000848481518110620000a457620000a4620008ec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580620000e28162000918565b9150506200007f565b506040516329965a1d60e01b815230600482018190527fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce217705460248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad24906329965a1d90606401600060405180830381600087803b1580156200016657600080fd5b505af11580156200017b573d6000803e3d6000fd5b50506040516329965a1d60e01b815230600482018190527faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a60248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad2492506329965a1d9150606401600060405180830381600087803b158015620001f957600080fd5b505af11580156200020e573d6000803e3d6000fd5b5050505050505062000247818360405180602001604052806000815250604051806020016040528060008152506200025260201b60201c565b505050505062000a78565b6200026284848484600162000268565b50505050565b6001600160a01b038516620002c45760405162461bcd60e51b815260206004820181905260248201527f4552433737373a206d696e7420746f20746865207a65726f206164647265737360448201526064015b60405180910390fd5b60003390508460016000828254620002dd919062000936565b90915550506001600160a01b038616600090815260208190526040812080548792906200030c90849062000936565b909155506200032490508160008888888888620003be565b856001600160a01b0316816001600160a01b03167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d8787876040516200036d939291906200097f565b60405180910390a36040518581526001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b1580156200043b57600080fd5b505afa15801562000450573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004769190620009b8565b90506001600160a01b03811615620004f8576040516223de2960e01b81526001600160a01b038216906223de2990620004be908b908b908b908b908b908b90600401620009dd565b600060405180830381600087803b158015620004d957600080fd5b505af1158015620004ee573d6000803e3d6000fd5b50505050620005a9565b8115620005a9576200051e866001600160a01b0316620005b360201b620007db1760201c565b15620005a95760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a401620002bb565b5050505050505050565b6001600160a01b03163b151590565b828054620005d09062000a3b565b90600052602060002090601f016020900481019282620005f457600085556200063f565b82601f106200060f57805160ff19168380011785556200063f565b828001600101855582156200063f579182015b828111156200063f57825182559160200191906001019062000622565b506200064d929150620006a9565b5090565b8280548282559060005260206000209081019282156200063f579160200282015b828111156200063f57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000672565b5b808211156200064d5760008155600101620006aa565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620007015762000701620006c0565b604052919050565b60005b83811015620007265781810151838201526020016200070c565b83811115620002625750506000910152565b600082601f8301126200074a57600080fd5b81516001600160401b03811115620007665762000766620006c0565b6200077b601f8201601f1916602001620006d6565b8181528460208386010111156200079157600080fd5b620007a482602083016020870162000709565b949350505050565b80516001600160a01b0381168114620007c457600080fd5b919050565b600080600080600060a08688031215620007e257600080fd5b85516001600160401b0380821115620007fa57600080fd5b6200080889838a0162000738565b96506020915081880151818111156200082057600080fd5b6200082e8a828b0162000738565b9650506040880151818111156200084457600080fd5b8801601f81018a136200085657600080fd5b8051828111156200086b576200086b620006c0565b8060051b92506200087e848401620006d6565b818152928201840192848101908c8511156200089957600080fd5b928501925b84841015620008c257620008b284620007ac565b825292850192908501906200089e565b80985050505050505060608601519150620008e060808701620007ac565b90509295509295909350565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156200092f576200092f62000902565b5060010190565b600082198211156200094c576200094c62000902565b500190565b600081518084526200096b81602086016020860162000709565b601f01601f19169290920160200192915050565b8381526060602082015260006200099a606083018562000951565b8281036040840152620009ae818562000951565b9695505050505050565b600060208284031215620009cb57600080fd5b620009d682620007ac565b9392505050565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c06080820181905260009062000a1a9083018562000951565b82810360a084015262000a2e818562000951565b9998505050505050505050565b600181811c9082168062000a5057607f821691505b6020821081141562000a7257634e487b7160e01b600052602260045260246000fd5b50919050565b6116498062000a886000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063959b8c3f116100a2578063d95b637111610071578063d95b63711461022b578063dd62ed3e1461023e578063fad8b32a14610277578063fc673c4f1461028a578063fe9d93031461029d57600080fd5b8063959b8c3f146101ea57806395d89b41146101fd5780639bd9bbc614610205578063a9059cbb1461021857600080fd5b806323b872dd116100e957806323b872dd14610183578063313ce56714610196578063556f0dc7146101a557806362ad1b83146101ac57806370a08231146101c157600080fd5b806306e485381461011b57806306fdde0314610139578063095ea7b31461014e57806318160ddd14610171575b600080fd5b6101236102b0565b60405161013091906110bd565b60405180910390f35b610141610312565b6040516101309190611157565b61016161015c366004611182565b61039b565b6040519015158152602001610130565b6001545b604051908152602001610130565b6101616101913660046111ae565b6103b3565b60405160128152602001610130565b6001610175565b6101bf6101ba366004611292565b6103f9565b005b6101756101cf366004611325565b6001600160a01b031660009081526020819052604090205490565b6101bf6101f8366004611325565b61043e565b61014161055c565b6101bf610213366004611342565b61056b565b610161610226366004611182565b61058e565b61016161023936600461139b565b6105c6565b61017561024c36600461139b565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6101bf610285366004611325565b610668565b6101bf6102983660046113d4565b610784565b6101bf6102ab366004611454565b6107bc565b6060600480548060200260200160405190810160405280929190818152602001828054801561030857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102ea575b5050505050905090565b6060600280546103219061149b565b80601f016020809104026020016040519081016040528092919081815260200182805461034d9061149b565b80156103085780601f1061036f57610100808354040283529160200191610308565b820191906000526020600020905b81548152906001019060200180831161037d57509395945050505050565b6000336103a98185856107ea565b5060019392505050565b6000336103c1858285610911565b6103ee8585856040518060200160405280600081525060405180602001604052806000815250600061099d565b506001949350505050565b61040333866105c6565b6104285760405162461bcd60e51b815260040161041f906114d6565b60405180910390fd5b6104378585858585600161099d565b5050505050565b336001600160a01b03821614156104a35760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff16156104f4573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19169055610523565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b6060600380546103219061149b565b6105893384848460405180602001604052806000815250600161099d565b505050565b60006105bd3384846040518060200160405280600081525060405180602001604052806000815250600061099d565b50600192915050565b6000816001600160a01b0316836001600160a01b0316148061063157506001600160a01b03831660009081526005602052604090205460ff16801561063157506001600160a01b0380831660009081526007602090815260408083209387168352929052205460ff16155b8061066157506001600160a01b0380831660009081526006602090815260408083209387168352929052205460ff165b9392505050565b6001600160a01b0381163314156106cb5760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff161561071f573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561074b565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b61078e33856105c6565b6107aa5760405162461bcd60e51b815260040161041f906114d6565b6107b684848484610a99565b50505050565b6107d733838360405180602001604052806000815250610a99565b5050565b6001600160a01b03163b151590565b6001600160a01b03831661084e5760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161041f565b6001600160a01b0382166108b05760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b606482015260840161041f565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526008602090815260408083209386168352929052205460001981146107b657818110156109905760405162461bcd60e51b815260206004820152601e60248201527f4552433737373a20696e73756666696369656e7420616c6c6f77616e63650000604482015260640161041f565b6107b684848484036107ea565b6001600160a01b038616610a025760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b606482015260840161041f565b6001600160a01b038516610a645760405162461bcd60e51b8152602060048201526024808201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161041f565b33610a73818888888888610c4d565b610a81818888888888610d83565b610a9081888888888888610ee9565b50505050505050565b6001600160a01b038416610afa5760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b606482015260840161041f565b33610b0a81866000878787610c4d565b6001600160a01b03851660009081526020819052604090205484811015610b7f5760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b606482015260840161041f565b6001600160a01b0386166000908152602081905260408120868303905560018054879290610bae908490611538565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098878787604051610bfc9392919061154f565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610cc957600080fd5b505afa158015610cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d019190611584565b90506001600160a01b03811615610a9057604051633ad5cbc160e11b81526001600160a01b038216906375ab978290610d48908a908a908a908a908a908a906004016115a1565b600060405180830381600087803b158015610d6257600080fd5b505af1158015610d76573d6000803e3d6000fd5b5050505050505050505050565b6001600160a01b03851660009081526020819052604090205483811015610dfc5760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b606482015260840161041f565b6001600160a01b03808716600090815260208190526040808220878503905591871681529081208054869290610e339084906115fb565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051610e8b9392919061154f565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610ed891815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610f6557600080fd5b505afa158015610f79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9d9190611584565b90506001600160a01b03811615611019576040516223de2960e01b81526001600160a01b038216906223de2990610fe2908b908b908b908b908b908b906004016115a1565b600060405180830381600087803b158015610ffc57600080fd5b505af1158015611010573d6000803e3d6000fd5b505050506110b3565b81156110b3576001600160a01b0386163b156110b35760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a40161041f565b5050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156110fe5783516001600160a01b0316835292840192918401916001016110d9565b50909695505050505050565b6000815180845260005b8181101561113057602081850181015186830182015201611114565b81811115611142576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610661602083018461110a565b6001600160a01b038116811461117f57600080fd5b50565b6000806040838503121561119557600080fd5b82356111a08161116a565b946020939093013593505050565b6000806000606084860312156111c357600080fd5b83356111ce8161116a565b925060208401356111de8161116a565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261121657600080fd5b813567ffffffffffffffff80821115611231576112316111ef565b604051601f8301601f19908116603f01168101908282118183101715611259576112596111ef565b8160405283815286602085880101111561127257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156112aa57600080fd5b85356112b58161116a565b945060208601356112c58161116a565b935060408601359250606086013567ffffffffffffffff808211156112e957600080fd5b6112f589838a01611205565b9350608088013591508082111561130b57600080fd5b5061131888828901611205565b9150509295509295909350565b60006020828403121561133757600080fd5b81356106618161116a565b60008060006060848603121561135757600080fd5b83356113628161116a565b925060208401359150604084013567ffffffffffffffff81111561138557600080fd5b61139186828701611205565b9150509250925092565b600080604083850312156113ae57600080fd5b82356113b98161116a565b915060208301356113c98161116a565b809150509250929050565b600080600080608085870312156113ea57600080fd5b84356113f58161116a565b935060208501359250604085013567ffffffffffffffff8082111561141957600080fd5b61142588838901611205565b9350606087013591508082111561143b57600080fd5b5061144887828801611205565b91505092959194509250565b6000806040838503121561146757600080fd5b82359150602083013567ffffffffffffffff81111561148557600080fd5b61149185828601611205565b9150509250929050565b600181811c908216806114af57607f821691505b602082108114156114d057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008282101561154a5761154a611522565b500390565b838152606060208201526000611568606083018561110a565b828103604084015261157a818561110a565b9695505050505050565b60006020828403121561159657600080fd5b81516106618161116a565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c0608082018190526000906115dc9083018561110a565b82810360a08401526115ee818561110a565b9998505050505050505050565b6000821982111561160e5761160e611522565b50019056fea2646970667358221220c35887fab1a87d1b8867924b2ee66f5a7e6813cecffe415f10c449675c0cd5a964736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063959b8c3f116100a2578063d95b637111610071578063d95b63711461022b578063dd62ed3e1461023e578063fad8b32a14610277578063fc673c4f1461028a578063fe9d93031461029d57600080fd5b8063959b8c3f146101ea57806395d89b41146101fd5780639bd9bbc614610205578063a9059cbb1461021857600080fd5b806323b872dd116100e957806323b872dd14610183578063313ce56714610196578063556f0dc7146101a557806362ad1b83146101ac57806370a08231146101c157600080fd5b806306e485381461011b57806306fdde0314610139578063095ea7b31461014e57806318160ddd14610171575b600080fd5b6101236102b0565b60405161013091906110bd565b60405180910390f35b610141610312565b6040516101309190611157565b61016161015c366004611182565b61039b565b6040519015158152602001610130565b6001545b604051908152602001610130565b6101616101913660046111ae565b6103b3565b60405160128152602001610130565b6001610175565b6101bf6101ba366004611292565b6103f9565b005b6101756101cf366004611325565b6001600160a01b031660009081526020819052604090205490565b6101bf6101f8366004611325565b61043e565b61014161055c565b6101bf610213366004611342565b61056b565b610161610226366004611182565b61058e565b61016161023936600461139b565b6105c6565b61017561024c36600461139b565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6101bf610285366004611325565b610668565b6101bf6102983660046113d4565b610784565b6101bf6102ab366004611454565b6107bc565b6060600480548060200260200160405190810160405280929190818152602001828054801561030857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102ea575b5050505050905090565b6060600280546103219061149b565b80601f016020809104026020016040519081016040528092919081815260200182805461034d9061149b565b80156103085780601f1061036f57610100808354040283529160200191610308565b820191906000526020600020905b81548152906001019060200180831161037d57509395945050505050565b6000336103a98185856107ea565b5060019392505050565b6000336103c1858285610911565b6103ee8585856040518060200160405280600081525060405180602001604052806000815250600061099d565b506001949350505050565b61040333866105c6565b6104285760405162461bcd60e51b815260040161041f906114d6565b60405180910390fd5b6104378585858585600161099d565b5050505050565b336001600160a01b03821614156104a35760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff16156104f4573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19169055610523565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b6060600380546103219061149b565b6105893384848460405180602001604052806000815250600161099d565b505050565b60006105bd3384846040518060200160405280600081525060405180602001604052806000815250600061099d565b50600192915050565b6000816001600160a01b0316836001600160a01b0316148061063157506001600160a01b03831660009081526005602052604090205460ff16801561063157506001600160a01b0380831660009081526007602090815260408083209387168352929052205460ff16155b8061066157506001600160a01b0380831660009081526006602090815260408083209387168352929052205460ff165b9392505050565b6001600160a01b0381163314156106cb5760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff161561071f573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561074b565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b61078e33856105c6565b6107aa5760405162461bcd60e51b815260040161041f906114d6565b6107b684848484610a99565b50505050565b6107d733838360405180602001604052806000815250610a99565b5050565b6001600160a01b03163b151590565b6001600160a01b03831661084e5760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161041f565b6001600160a01b0382166108b05760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b606482015260840161041f565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526008602090815260408083209386168352929052205460001981146107b657818110156109905760405162461bcd60e51b815260206004820152601e60248201527f4552433737373a20696e73756666696369656e7420616c6c6f77616e63650000604482015260640161041f565b6107b684848484036107ea565b6001600160a01b038616610a025760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b606482015260840161041f565b6001600160a01b038516610a645760405162461bcd60e51b8152602060048201526024808201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161041f565b33610a73818888888888610c4d565b610a81818888888888610d83565b610a9081888888888888610ee9565b50505050505050565b6001600160a01b038416610afa5760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b606482015260840161041f565b33610b0a81866000878787610c4d565b6001600160a01b03851660009081526020819052604090205484811015610b7f5760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b606482015260840161041f565b6001600160a01b0386166000908152602081905260408120868303905560018054879290610bae908490611538565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098878787604051610bfc9392919061154f565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610cc957600080fd5b505afa158015610cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d019190611584565b90506001600160a01b03811615610a9057604051633ad5cbc160e11b81526001600160a01b038216906375ab978290610d48908a908a908a908a908a908a906004016115a1565b600060405180830381600087803b158015610d6257600080fd5b505af1158015610d76573d6000803e3d6000fd5b5050505050505050505050565b6001600160a01b03851660009081526020819052604090205483811015610dfc5760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b606482015260840161041f565b6001600160a01b03808716600090815260208190526040808220878503905591871681529081208054869290610e339084906115fb565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051610e8b9392919061154f565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610ed891815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610f6557600080fd5b505afa158015610f79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9d9190611584565b90506001600160a01b03811615611019576040516223de2960e01b81526001600160a01b038216906223de2990610fe2908b908b908b908b908b908b906004016115a1565b600060405180830381600087803b158015610ffc57600080fd5b505af1158015611010573d6000803e3d6000fd5b505050506110b3565b81156110b3576001600160a01b0386163b156110b35760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a40161041f565b5050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156110fe5783516001600160a01b0316835292840192918401916001016110d9565b50909695505050505050565b6000815180845260005b8181101561113057602081850181015186830182015201611114565b81811115611142576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610661602083018461110a565b6001600160a01b038116811461117f57600080fd5b50565b6000806040838503121561119557600080fd5b82356111a08161116a565b946020939093013593505050565b6000806000606084860312156111c357600080fd5b83356111ce8161116a565b925060208401356111de8161116a565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261121657600080fd5b813567ffffffffffffffff80821115611231576112316111ef565b604051601f8301601f19908116603f01168101908282118183101715611259576112596111ef565b8160405283815286602085880101111561127257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156112aa57600080fd5b85356112b58161116a565b945060208601356112c58161116a565b935060408601359250606086013567ffffffffffffffff808211156112e957600080fd5b6112f589838a01611205565b9350608088013591508082111561130b57600080fd5b5061131888828901611205565b9150509295509295909350565b60006020828403121561133757600080fd5b81356106618161116a565b60008060006060848603121561135757600080fd5b83356113628161116a565b925060208401359150604084013567ffffffffffffffff81111561138557600080fd5b61139186828701611205565b9150509250925092565b600080604083850312156113ae57600080fd5b82356113b98161116a565b915060208301356113c98161116a565b809150509250929050565b600080600080608085870312156113ea57600080fd5b84356113f58161116a565b935060208501359250604085013567ffffffffffffffff8082111561141957600080fd5b61142588838901611205565b9350606087013591508082111561143b57600080fd5b5061144887828801611205565b91505092959194509250565b6000806040838503121561146757600080fd5b82359150602083013567ffffffffffffffff81111561148557600080fd5b61149185828601611205565b9150509250929050565b600181811c908216806114af57607f821691505b602082108114156114d057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008282101561154a5761154a611522565b500390565b838152606060208201526000611568606083018561110a565b828103604084015261157a818561110a565b9695505050505050565b60006020828403121561159657600080fd5b81516106618161116a565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c0608082018190526000906115dc9083018561110a565b82810360a08401526115ee818561110a565b9998505050505050505050565b6000821982111561160e5761160e611522565b50019056fea2646970667358221220c35887fab1a87d1b8867924b2ee66f5a7e6813cecffe415f10c449675c0cd5a964736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Address":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Address","sourceName":"contracts/utils/Address.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220606d7d087d9537598f178a0e24bbca9265c44e5d57806c9d1487d791c2014e6d64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220606d7d087d9537598f178a0e24bbca9265c44e5d57806c9d1487d791c2014e6d64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Arrays":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Arrays","sourceName":"contracts/utils/Arrays.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220655ca9dd21119229980dc932da7b27559291a855eeef99bfff98cd076fd5895c64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220655ca9dd21119229980dc932da7b27559291a855eeef99bfff98cd076fd5895c64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Base64":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Base64","sourceName":"contracts/utils/Base64.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122011638abb6e3586d7f6ccaa6dd9fb1274cbb9c8730c14061f650735e65642a99964736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122011638abb6e3586d7f6ccaa6dd9fb1274cbb9c8730c14061f650735e65642a99964736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Checkpoints":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Checkpoints","sourceName":"contracts/utils/Checkpoints.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122052b0c69fec6bee636076dd6f90ff9c1a517975fe60ef11a3192d0049d34e9c0c64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122052b0c69fec6bee636076dd6f90ff9c1a517975fe60ef11a3192d0049d34e9c0c64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Context":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Context","sourceName":"contracts/utils/Context.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Counters":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Counters","sourceName":"contracts/utils/Counters.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207e9744ee0d57c3c7ee555c3db47df50e361acf4e3c082e5de7aefa7b14d96ce264736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207e9744ee0d57c3c7ee555c3db47df50e361acf4e3c082e5de7aefa7b14d96ce264736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Create2":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Create2","sourceName":"contracts/utils/Create2.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663fd34c338df3acc96e8be8f5ab984b23259d2ddb6dd435519240eb376fd9b064736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663fd34c338df3acc96e8be8f5ab984b23259d2ddb6dd435519240eb376fd9b064736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/cryptography/EIP712":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"EIP712","sourceName":"contracts/utils/cryptography/draft-EIP712.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/cryptography/ECDSA":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ECDSA","sourceName":"contracts/utils/cryptography/ECDSA.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220914ddf8c54b121fc32a2c250c5713169e8ee9e5bdf72d13b12f1137e3ca30e2464736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220914ddf8c54b121fc32a2c250c5713169e8ee9e5bdf72d13b12f1137e3ca30e2464736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/cryptography/MerkleProof":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"MerkleProof","sourceName":"contracts/utils/cryptography/MerkleProof.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209d381f7e6729bdfbea34798b2f92550cb12e1699fa50dc80557b2ee144c8e2e664736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209d381f7e6729bdfbea34798b2f92550cb12e1699fa50dc80557b2ee144c8e2e664736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/cryptography/SignatureChecker":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"SignatureChecker","sourceName":"contracts/utils/cryptography/SignatureChecker.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209842b391c06c2db43bee88f2053a845447fe59228a99b55b5c6323f1b1d6a51364736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209842b391c06c2db43bee88f2053a845447fe59228a99b55b5c6323f1b1d6a51364736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/escrow/ConditionalEscrow":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ConditionalEscrow","sourceName":"contracts/utils/escrow/ConditionalEscrow.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":false,"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":false,"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"address","name":"payee","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"payee","type":"address"}],"name":"depositsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"payee","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"payee","type":"address"}],"name":"withdrawalAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/escrow/Escrow":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Escrow","sourceName":"contracts/utils/escrow/Escrow.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":false,"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":false,"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"address","name":"payee","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"payee","type":"address"}],"name":"depositsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"payee","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61050d8061007e6000396000f3fe6080604052600436106100555760003560e01c806351cff8d91461005a578063715018a61461007c5780638da5cb5b14610091578063e3a9db1a146100be578063f2fde38b14610102578063f340fa0114610122575b600080fd5b34801561006657600080fd5b5061007a61007536600461048d565b610135565b005b34801561008857600080fd5b5061007a6101ac565b34801561009d57600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b3480156100ca57600080fd5b506100f46100d936600461048d565b6001600160a01b031660009081526001602052604090205490565b6040519081526020016100b5565b34801561010e57600080fd5b5061007a61011d36600461048d565b6101c0565b61007a61013036600461048d565b61023e565b61013d6102b0565b6001600160a01b0381166000818152600160205260408120805491905590610165908261030a565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516101a091815260200190565b60405180910390a25050565b6101b46102b0565b6101be6000610428565b565b6101c86102b0565b6001600160a01b0381166102325760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61023b81610428565b50565b6102466102b0565b6001600160a01b0381166000908152600160205260408120805434928392916102709084906104b1565b90915550506040518181526001600160a01b038316907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020016101a0565b6000546001600160a01b031633146101be5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610229565b8047101561035a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610229565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146103a7576040519150601f19603f3d011682016040523d82523d6000602084013e6103ac565b606091505b50509050806104235760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610229565b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461023b57600080fd5b60006020828403121561049f57600080fd5b81356104aa81610478565b9392505050565b600082198211156104d257634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220f0e4e0868b7beb65355490f66dcb5e786874e97e41891698970cad2925921cfe64736f6c63430008090033","deployedBytecode":"0x6080604052600436106100555760003560e01c806351cff8d91461005a578063715018a61461007c5780638da5cb5b14610091578063e3a9db1a146100be578063f2fde38b14610102578063f340fa0114610122575b600080fd5b34801561006657600080fd5b5061007a61007536600461048d565b610135565b005b34801561008857600080fd5b5061007a6101ac565b34801561009d57600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b3480156100ca57600080fd5b506100f46100d936600461048d565b6001600160a01b031660009081526001602052604090205490565b6040519081526020016100b5565b34801561010e57600080fd5b5061007a61011d36600461048d565b6101c0565b61007a61013036600461048d565b61023e565b61013d6102b0565b6001600160a01b0381166000818152600160205260408120805491905590610165908261030a565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516101a091815260200190565b60405180910390a25050565b6101b46102b0565b6101be6000610428565b565b6101c86102b0565b6001600160a01b0381166102325760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61023b81610428565b50565b6102466102b0565b6001600160a01b0381166000908152600160205260408120805434928392916102709084906104b1565b90915550506040518181526001600160a01b038316907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020016101a0565b6000546001600160a01b031633146101be5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610229565b8047101561035a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610229565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146103a7576040519150601f19603f3d011682016040523d82523d6000602084013e6103ac565b606091505b50509050806104235760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610229565b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461023b57600080fd5b60006020828403121561049f57600080fd5b81356104aa81610478565b9392505050565b600082198211156104d257634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220f0e4e0868b7beb65355490f66dcb5e786874e97e41891698970cad2925921cfe64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/escrow/RefundEscrow":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"RefundEscrow","sourceName":"contracts/utils/escrow/RefundEscrow.sol","abi":[{"inputs":[{"internalType":"address payable","name":"beneficiary_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":false,"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RefundsClosed","type":"event"},{"anonymous":false,"inputs":[],"name":"RefundsEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":false,"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"beneficiary","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beneficiaryWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"close","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"refundee","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"payee","type":"address"}],"name":"depositsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableRefunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"state","outputs":[{"internalType":"enum RefundEscrow.State","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"payee","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"withdrawalAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60a060405234801561001057600080fd5b50604051610b22380380610b2283398101604081905261002f91610113565b610038336100c3565b6001600160a01b0381166100a85760405162461bcd60e51b815260206004820152602d60248201527f526566756e64457363726f773a2062656e65666963696172792069732074686560448201526c207a65726f206164647265737360981b606482015260840160405180910390fd5b6001600160a01b03166080526002805460ff19169055610143565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561012557600080fd5b81516001600160a01b038116811461013c57600080fd5b9392505050565b6080516109be6101646000396000818160bb015261051b01526109be6000f3fe6080604052600436106100a75760003560e01c80638da5cb5b116100645780638da5cb5b146101895780639af6549a146101a7578063c19d93fb146101bc578063e3a9db1a146101dc578063f2fde38b14610220578063f340fa011461024057600080fd5b806338af3eed146100ac57806343d726d6146100f857806351cff8d91461010f578063685ca1941461012f578063715018a61461015f5780638c52dc4114610174575b600080fd5b3480156100b857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b34801561010457600080fd5b5061010d610253565b005b34801561011b57600080fd5b5061010d61012a366004610900565b61030f565b34801561013b57600080fd5b5061014f61014a366004610900565b61038c565b60405190151581526020016100ef565b34801561016b57600080fd5b5061010d6103ae565b34801561018057600080fd5b5061010d6103c2565b34801561019557600080fd5b506000546001600160a01b03166100db565b3480156101b357600080fd5b5061010d610483565b3480156101c857600080fd5b5060025460ff166040516100ef919061093a565b3480156101e857600080fd5b506102126101f7366004610900565b6001600160a01b031660009081526001602052604090205490565b6040519081526020016100ef565b34801561022c57600080fd5b5061010d61023b366004610900565b610541565b61010d61024e366004610900565b6105b7565b61025b61063a565b600060025460ff16600281111561027457610274610924565b146102d85760405162461bcd60e51b815260206004820152602960248201527f526566756e64457363726f773a2063616e206f6e6c7920636c6f7365207768696044820152686c652061637469766560b81b60648201526084015b60405180910390fd5b6002805460ff1916811790556040517f088672c3a6e342f7cd94a65ba63b79df24a8973927b4d05d803c44bbf787d12f90600090a1565b6103188161038c565b6103805760405162461bcd60e51b815260206004820152603360248201527f436f6e646974696f6e616c457363726f773a207061796565206973206e6f7420604482015272616c6c6f77656420746f20776974686472617760681b60648201526084016102cf565b61038981610694565b50565b6000600160025460ff1660028111156103a7576103a7610924565b1492915050565b6103b661063a565b6103c0600061070b565b565b6103ca61063a565b600060025460ff1660028111156103e3576103e3610924565b1461044b5760405162461bcd60e51b815260206004820152603260248201527f526566756e64457363726f773a2063616e206f6e6c7920656e61626c6520726560448201527166756e6473207768696c652061637469766560701b60648201526084016102cf565b6002805460ff191660011790556040517f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8990600090a1565b6002805460ff16600281111561049b5761049b610924565b1461050e5760405162461bcd60e51b815260206004820152603860248201527f526566756e64457363726f773a2062656e65666963696172792063616e206f6e60448201527f6c79207769746864726177207768696c6520636c6f736564000000000000000060648201526084016102cf565b6103c06001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000164761075b565b61054961063a565b6001600160a01b0381166105ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102cf565b6103898161070b565b600060025460ff1660028111156105d0576105d0610924565b146106315760405162461bcd60e51b815260206004820152602b60248201527f526566756e64457363726f773a2063616e206f6e6c79206465706f736974207760448201526a68696c652061637469766560a81b60648201526084016102cf565b61038981610879565b6000546001600160a01b031633146103c05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102cf565b61069c61063a565b6001600160a01b03811660008181526001602052604081208054919055906106c4908261075b565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516106ff91815260200190565b60405180910390a25050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b804710156107ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016102cf565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146107f8576040519150601f19603f3d011682016040523d82523d6000602084013e6107fd565b606091505b50509050806108745760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016102cf565b505050565b61088161063a565b6001600160a01b0381166000908152600160205260408120805434928392916108ab908490610962565b90915550506040518181526001600160a01b038316907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020016106ff565b6001600160a01b038116811461038957600080fd5b60006020828403121561091257600080fd5b813561091d816108eb565b9392505050565b634e487b7160e01b600052602160045260246000fd5b602081016003831061095c57634e487b7160e01b600052602160045260246000fd5b91905290565b6000821982111561098357634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220d99790e641c40ef87f3b35b232f63f0df03ce3576454bb1cd00ad1fa9fc1f9c564736f6c63430008090033","deployedBytecode":"0x6080604052600436106100a75760003560e01c80638da5cb5b116100645780638da5cb5b146101895780639af6549a146101a7578063c19d93fb146101bc578063e3a9db1a146101dc578063f2fde38b14610220578063f340fa011461024057600080fd5b806338af3eed146100ac57806343d726d6146100f857806351cff8d91461010f578063685ca1941461012f578063715018a61461015f5780638c52dc4114610174575b600080fd5b3480156100b857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b34801561010457600080fd5b5061010d610253565b005b34801561011b57600080fd5b5061010d61012a366004610900565b61030f565b34801561013b57600080fd5b5061014f61014a366004610900565b61038c565b60405190151581526020016100ef565b34801561016b57600080fd5b5061010d6103ae565b34801561018057600080fd5b5061010d6103c2565b34801561019557600080fd5b506000546001600160a01b03166100db565b3480156101b357600080fd5b5061010d610483565b3480156101c857600080fd5b5060025460ff166040516100ef919061093a565b3480156101e857600080fd5b506102126101f7366004610900565b6001600160a01b031660009081526001602052604090205490565b6040519081526020016100ef565b34801561022c57600080fd5b5061010d61023b366004610900565b610541565b61010d61024e366004610900565b6105b7565b61025b61063a565b600060025460ff16600281111561027457610274610924565b146102d85760405162461bcd60e51b815260206004820152602960248201527f526566756e64457363726f773a2063616e206f6e6c7920636c6f7365207768696044820152686c652061637469766560b81b60648201526084015b60405180910390fd5b6002805460ff1916811790556040517f088672c3a6e342f7cd94a65ba63b79df24a8973927b4d05d803c44bbf787d12f90600090a1565b6103188161038c565b6103805760405162461bcd60e51b815260206004820152603360248201527f436f6e646974696f6e616c457363726f773a207061796565206973206e6f7420604482015272616c6c6f77656420746f20776974686472617760681b60648201526084016102cf565b61038981610694565b50565b6000600160025460ff1660028111156103a7576103a7610924565b1492915050565b6103b661063a565b6103c0600061070b565b565b6103ca61063a565b600060025460ff1660028111156103e3576103e3610924565b1461044b5760405162461bcd60e51b815260206004820152603260248201527f526566756e64457363726f773a2063616e206f6e6c7920656e61626c6520726560448201527166756e6473207768696c652061637469766560701b60648201526084016102cf565b6002805460ff191660011790556040517f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8990600090a1565b6002805460ff16600281111561049b5761049b610924565b1461050e5760405162461bcd60e51b815260206004820152603860248201527f526566756e64457363726f773a2062656e65666963696172792063616e206f6e60448201527f6c79207769746864726177207768696c6520636c6f736564000000000000000060648201526084016102cf565b6103c06001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000164761075b565b61054961063a565b6001600160a01b0381166105ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102cf565b6103898161070b565b600060025460ff1660028111156105d0576105d0610924565b146106315760405162461bcd60e51b815260206004820152602b60248201527f526566756e64457363726f773a2063616e206f6e6c79206465706f736974207760448201526a68696c652061637469766560a81b60648201526084016102cf565b61038981610879565b6000546001600160a01b031633146103c05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102cf565b61069c61063a565b6001600160a01b03811660008181526001602052604081208054919055906106c4908261075b565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516106ff91815260200190565b60405180910390a25050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b804710156107ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016102cf565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146107f8576040519150601f19603f3d011682016040523d82523d6000602084013e6107fd565b606091505b50509050806108745760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016102cf565b505050565b61088161063a565b6001600160a01b0381166000908152600160205260408120805434928392916108ab908490610962565b90915550506040518181526001600160a01b038316907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020016106ff565b6001600160a01b038116811461038957600080fd5b60006020828403121561091257600080fd5b813561091d816108eb565b9392505050565b634e487b7160e01b600052602160045260246000fd5b602081016003831061095c57634e487b7160e01b600052602160045260246000fd5b91905290565b6000821982111561098357634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220d99790e641c40ef87f3b35b232f63f0df03ce3576454bb1cd00ad1fa9fc1f9c564736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/introspection/ERC165":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC165","sourceName":"contracts/utils/introspection/ERC165.sol","abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/introspection/ERC165Checker":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC165Checker","sourceName":"contracts/utils/introspection/ERC165Checker.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220117d4739ea209855873e3a69cf4dc77f5649a6e5c941d771dcc0f36cfd51d3a564736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220117d4739ea209855873e3a69cf4dc77f5649a6e5c941d771dcc0f36cfd51d3a564736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/introspection/ERC165Storage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC165Storage","sourceName":"contracts/utils/introspection/ERC165Storage.sol","abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/introspection/ERC1820Implementer":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1820Implementer","sourceName":"contracts/utils/introspection/ERC1820Implementer.sol","abi":[{"inputs":[{"internalType":"bytes32","name":"interfaceHash","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"canImplementInterfaceForAddress","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b50610114806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063249cb3fa14602d575b600080fd5b603c603836600460a4565b604e565b60405190815260200160405180910390f35b6000828152602081815260408083206001600160a01b038516845290915281205460ff16607b576000609d565b7fa2ef4600d742022d532d4747cb3547474667d6f13804902513b2ec01c848f4b45b9392505050565b6000806040838503121560b657600080fd5b8235915060208301356001600160a01b038116811460d357600080fd5b80915050925092905056fea2646970667358221220af9541137737bcae4ca91010bdc12e6ce157547dd38d2d5785066de00fad9b3e64736f6c63430008090033","deployedBytecode":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063249cb3fa14602d575b600080fd5b603c603836600460a4565b604e565b60405190815260200160405180910390f35b6000828152602081815260408083206001600160a01b038516845290915281205460ff16607b576000609d565b7fa2ef4600d742022d532d4747cb3547474667d6f13804902513b2ec01c848f4b45b9392505050565b6000806040838503121560b657600080fd5b8235915060208301356001600160a01b038116811460d357600080fd5b80915050925092905056fea2646970667358221220af9541137737bcae4ca91010bdc12e6ce157547dd38d2d5785066de00fad9b3e64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/introspection/IERC165":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC165","sourceName":"contracts/utils/introspection/IERC165.sol","abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/introspection/IERC1820Implementer":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1820Implementer","sourceName":"contracts/utils/introspection/IERC1820Implementer.sol","abi":[{"inputs":[{"internalType":"bytes32","name":"interfaceHash","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"canImplementInterfaceForAddress","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/introspection/IERC1820Registry":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1820Registry","sourceName":"contracts/utils/introspection/IERC1820Registry.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bytes32","name":"interfaceHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"implementer","type":"address"}],"name":"InterfaceImplementerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"newManager","type":"address"}],"name":"ManagerChanged","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"_interfaceHash","type":"bytes32"}],"name":"getInterfaceImplementer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"implementsERC165Interface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"implementsERC165InterfaceNoCache","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"interfaceName","type":"string"}],"name":"interfaceHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"_interfaceHash","type":"bytes32"},{"internalType":"address","name":"implementer","type":"address"}],"name":"setInterfaceImplementer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"newManager","type":"address"}],"name":"setManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"updateERC165Cache","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/math/Math":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Math","sourceName":"contracts/utils/math/Math.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204a14f751b3f38a82303bdf89fdc12542c5fa1609e4895c7add5c67d1ca79b9c464736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204a14f751b3f38a82303bdf89fdc12542c5fa1609e4895c7add5c67d1ca79b9c464736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/math/SafeCast":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"SafeCast","sourceName":"contracts/utils/math/SafeCast.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a62378d355b38fa0abfa1c077e9c835782285fbd860732d27f2ee38b441a84d464736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a62378d355b38fa0abfa1c077e9c835782285fbd860732d27f2ee38b441a84d464736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/math/SafeMath":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"SafeMath","sourceName":"contracts/utils/math/SafeMath.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209738fa06839ad9c993fda222cd8796d9f4af8ec87c42dc83ad5376e21b184f6764736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209738fa06839ad9c993fda222cd8796d9f4af8ec87c42dc83ad5376e21b184f6764736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/math/SignedMath":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"SignedMath","sourceName":"contracts/utils/math/SignedMath.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206b958077e79d8c0218ea38180129587ea2f5f32e6ccbf5cada96c61f1cda30ae64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206b958077e79d8c0218ea38180129587ea2f5f32e6ccbf5cada96c61f1cda30ae64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/math/SignedSafeMath":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"SignedSafeMath","sourceName":"contracts/utils/math/SignedSafeMath.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220eac28e590fd923710978b0b42c5e6f8cc69e1a2b14089db10aa3a4fa30ae29e564736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220eac28e590fd923710978b0b42c5e6f8cc69e1a2b14089db10aa3a4fa30ae29e564736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Multicall":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Multicall","sourceName":"contracts/utils/Multicall.sol","abi":[{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/StorageSlot":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"StorageSlot","sourceName":"contracts/utils/StorageSlot.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209be81e3312f310746e52a8aef980c20007b986e39ffe78d4a990363c1a83cd2864736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209be81e3312f310746e52a8aef980c20007b986e39ffe78d4a990363c1a83cd2864736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Strings":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Strings","sourceName":"contracts/utils/Strings.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b096dc6b0e37ea9c827520996e336d2f126d85adfc64e5ab59d5969bae525c9864736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b096dc6b0e37ea9c827520996e336d2f126d85adfc64e5ab59d5969bae525c9864736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/structs/BitMaps":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"BitMaps","sourceName":"contracts/utils/structs/BitMaps.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c5ac034d38686d0b67fda2eec38f26b45891cd22ae31d0df027016e4b65cf13a64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c5ac034d38686d0b67fda2eec38f26b45891cd22ae31d0df027016e4b65cf13a64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/structs/DoubleEndedQueue":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"DoubleEndedQueue","sourceName":"contracts/utils/structs/DoubleEndedQueue.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"inputs":[],"name":"OutOfBounds","type":"error"}],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a1f883749a60323cd05a4f6a4b0582f16eb5d58287457ceb8942b07688a344f264736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a1f883749a60323cd05a4f6a4b0582f16eb5d58287457ceb8942b07688a344f264736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/structs/EnumerableMap":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"EnumerableMap","sourceName":"contracts/utils/structs/EnumerableMap.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201e95925852ea21fb1440ea745a714cf6128faf5aeadb3e2298ed42fc376ba86e64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201e95925852ea21fb1440ea745a714cf6128faf5aeadb3e2298ed42fc376ba86e64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/structs/EnumerableSet":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"EnumerableSet","sourceName":"contracts/utils/structs/EnumerableSet.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202a8392941a7271bf335ac2e9721c0be783ed6532ec5fd4db2e0d57622a97964e64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202a8392941a7271bf335ac2e9721c0be783ed6532ec5fd4db2e0d57622a97964e64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Timers":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Timers","sourceName":"contracts/utils/Timers.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122071cad4555d45eedf68405aec2cee18b6803a8196b147c8bde0315e331f76f7da64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122071cad4555d45eedf68405aec2cee18b6803a8196b147c8bde0315e331f76f7da64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/amb/IAMB":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IAMB","sourceName":"contracts/vendor/amb/IAMB.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"executor","type":"address"},{"indexed":true,"internalType":"bytes32","name":"messageId","type":"bytes32"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"AffirmationCompleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"executor","type":"address"},{"indexed":true,"internalType":"bytes32","name":"messageId","type":"bytes32"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"RelayedMessage","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"messageId","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"encodedData","type":"bytes"}],"name":"UserRequestForAffirmation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"messageId","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"encodedData","type":"bytes"}],"name":"UserRequestForSignature","type":"event"},{"inputs":[],"name":"destinationChainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_messageId","type":"bytes32"}],"name":"failedMessageDataHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_messageId","type":"bytes32"}],"name":"failedMessageReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_messageId","type":"bytes32"}],"name":"failedMessageSender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxGasPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_messageId","type":"bytes32"}],"name":"messageCallStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"messageId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"messageSender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"messageSourceChainId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"uint256","name":"_gas","type":"uint256"}],"name":"requireToConfirmMessage","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"uint256","name":"_gas","type":"uint256"}],"name":"requireToPassMessage","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sourceChainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transactionHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/arbitrum/IArbSys":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IArbSys","sourceName":"contracts/vendor/arbitrum/IArbSys.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"destination","type":"address"},{"indexed":true,"internalType":"uint256","name":"uniqueId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"batchNumber","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"indexInBatch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"arbBlockNum","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethBlockNum","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"callvalue","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"L2ToL1Transaction","type":"event"},{"inputs":[],"name":"arbBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"arbChainID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"arbOSVersion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getStorageAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStorageGasAvailable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getTransactionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTopLevelCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"dest","type":"address"}],"name":"mapL1SenderContractAddressToL2Alias","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"myCallersAddressWithoutAliasing","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"calldataForL1","type":"bytes"}],"name":"sendTxToL1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"wasMyCallersAddressAliased","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"destination","type":"address"}],"name":"withdrawEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/arbitrum/IBridge":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IBridge","sourceName":"contracts/vendor/arbitrum/IBridge.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"outbox","type":"address"},{"indexed":true,"internalType":"address","name":"destAddr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"BridgeCallTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"inbox","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"InboxToggle","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"messageIndex","type":"uint256"},{"indexed":true,"internalType":"bytes32","name":"beforeInboxAcc","type":"bytes32"},{"indexed":false,"internalType":"address","name":"inbox","type":"address"},{"indexed":false,"internalType":"uint8","name":"kind","type":"uint8"},{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"bytes32","name":"messageDataHash","type":"bytes32"}],"name":"MessageDelivered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"outbox","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"OutboxToggle","type":"event"},{"inputs":[],"name":"activeOutbox","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"inbox","type":"address"}],"name":"allowedInboxes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"outbox","type":"address"}],"name":"allowedOutboxes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes32","name":"messageDataHash","type":"bytes32"}],"name":"deliverMessageToInbox","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"destAddr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"executeCall","outputs":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"inboxAccs","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"messageCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"inbox","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setInbox","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"inbox","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setOutbox","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/arbitrum/IInbox":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IInbox","sourceName":"contracts/vendor/arbitrum/IInbox.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"messageNum","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"InboxMessageDelivered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"messageNum","type":"uint256"}],"name":"InboxMessageDeliveredFromOrigin","type":"event"},{"inputs":[],"name":"bridge","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"destAddr","type":"address"},{"internalType":"uint256","name":"arbTxCallValue","type":"uint256"},{"internalType":"uint256","name":"maxSubmissionCost","type":"uint256"},{"internalType":"address","name":"submissionRefundAddress","type":"address"},{"internalType":"address","name":"valueRefundAddress","type":"address"},{"internalType":"uint256","name":"maxGas","type":"uint256"},{"internalType":"uint256","name":"gasPriceBid","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"createRetryableTicket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"destAddr","type":"address"},{"internalType":"uint256","name":"arbTxCallValue","type":"uint256"},{"internalType":"uint256","name":"maxSubmissionCost","type":"uint256"},{"internalType":"address","name":"submissionRefundAddress","type":"address"},{"internalType":"address","name":"valueRefundAddress","type":"address"},{"internalType":"uint256","name":"maxGas","type":"uint256"},{"internalType":"uint256","name":"gasPriceBid","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"createRetryableTicketNoRefundAliasRewrite","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxSubmissionCost","type":"uint256"}],"name":"depositEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"pauseCreateRetryables","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxGas","type":"uint256"},{"internalType":"uint256","name":"gasPriceBid","type":"uint256"},{"internalType":"address","name":"destAddr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"sendContractTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxGas","type":"uint256"},{"internalType":"uint256","name":"gasPriceBid","type":"uint256"},{"internalType":"address","name":"destAddr","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"sendL1FundedContractTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxGas","type":"uint256"},{"internalType":"uint256","name":"gasPriceBid","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"address","name":"destAddr","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"sendL1FundedUnsignedTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"messageData","type":"bytes"}],"name":"sendL2Message","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxGas","type":"uint256"},{"internalType":"uint256","name":"gasPriceBid","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"address","name":"destAddr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"sendUnsignedTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startRewriteAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopRewriteAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpauseCreateRetryables","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/arbitrum/IMessageProvider":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IMessageProvider","sourceName":"contracts/vendor/arbitrum/IMessageProvider.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"messageNum","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"InboxMessageDelivered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"messageNum","type":"uint256"}],"name":"InboxMessageDeliveredFromOrigin","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/arbitrum/IOutbox":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IOutbox","sourceName":"contracts/vendor/arbitrum/IOutbox.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"destAddr","type":"address"},{"indexed":true,"internalType":"address","name":"l2Sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"outboxEntryIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"transactionIndex","type":"uint256"}],"name":"OutBoxTransactionExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"batchNum","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"outboxEntryIndex","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"outputRoot","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"numInBatch","type":"uint256"}],"name":"OutboxEntryCreated","type":"event"},{"inputs":[],"name":"l2ToL1BatchNum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l2ToL1Block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l2ToL1EthBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l2ToL1OutputId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l2ToL1Sender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l2ToL1Timestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"batchNum","type":"uint256"}],"name":"outboxEntryExists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"sendsData","type":"bytes"},{"internalType":"uint256[]","name":"sendLengths","type":"uint256[]"}],"name":"processOutgoingMessages","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/compound/ICompoundTimelock":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ICompoundTimelock","sourceName":"contracts/vendor/compound/ICompoundTimelock.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"CancelTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ExecuteTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"}],"name":"NewAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newDelay","type":"uint256"}],"name":"NewDelay","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"NewPendingAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"QueueTransaction","type":"event"},{"inputs":[],"name":"GRACE_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAXIMUM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"cancelTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"delay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"executeTransaction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"queueTransaction","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"queuedTransactions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"setDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"setPendingAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/optimism/ICrossDomainMessenger":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ICrossDomainMessenger","sourceName":"contracts/vendor/optimism/ICrossDomainMessenger.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"msgHash","type":"bytes32"}],"name":"FailedRelayedMessage","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"msgHash","type":"bytes32"}],"name":"RelayedMessage","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"bytes","name":"message","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"messageNonce","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"gasLimit","type":"uint256"}],"name":"SentMessage","type":"event"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"uint32","name":"_gasLimit","type":"uint32"}],"name":"sendMessage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"xDomainMessageSender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/polygon/IFxMessageProcessor":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IFxMessageProcessor","sourceName":"contracts/vendor/polygon/IFxMessageProcessor.sol","abi":[{"inputs":[{"internalType":"uint256","name":"stateId","type":"uint256"},{"internalType":"address","name":"rootMessageSender","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"processMessageFromRoot","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/base/ERC721MultiTokenStream":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721MultiTokenStream","sourceName":"contracts/streams/ERC721/base/ERC721MultiTokenStream.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/base/IERC721MultiTokenStream":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721MultiTokenStream","sourceName":"contracts/streams/ERC721/base/ERC721MultiTokenStream.sol","abi":[{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"claimableAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/ERC721CustodialStakingExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721CustodialStakingExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721CustodialStakingExtension.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721CustodialStakingExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721StakingExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lastStakingTime","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxStakingTotalDurations","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minStakingDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"savedStakedDurations","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setMaxStakingTotalDurations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setMinStakingDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"uint256","name":"startTokenId","type":"uint256"},{"internalType":"uint256","name":"endTokenId","type":"uint256"}],"name":"tokensInCustody","outputs":[{"internalType":"bool[]","name":"tokens","type":"bool[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"totalStakedDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"totalStakedDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"unlockingTime","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"unlockingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/ERC721EmissionReleaseExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721EmissionReleaseExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721EmissionReleaseExtension.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"calcUntil","type":"uint64"}],"name":"emissionAmountUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionEnd","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionStart","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionTimeUnit","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721EmissionReleaseExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"rateByToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"calcUntil","type":"uint64"}],"name":"releasedAmountUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionEnd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setEmissionRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionTimeUnit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/ERC721EqualSplitExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721EqualSplitExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721EqualSplitExtension.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721EqualSplitExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setTotalTickets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTickets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/ERC721InstantReleaseExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721InstantReleaseExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721InstantReleaseExtension.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721InstantReleaseExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/ERC721LockableClaimExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721LockableClaimExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721LockableClaimExtension.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimLockedUntil","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721LockableClaimExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setClaimLockedUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/ERC721LockedStakingExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721LockedStakingExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721LockedStakingExtension.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721LockedStakingExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721StakingExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lastStakingTime","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxStakingTotalDurations","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minStakingDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"savedStakedDurations","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setMaxStakingTotalDurations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setMinStakingDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"totalStakedDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"totalStakedDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"unlockingTime","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"unlockingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/ERC721ShareSplitExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721ShareSplitExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721ShareSplitExtension.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"prevShares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newShares","type":"uint256"}],"name":"SharesUpdated","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"getSharesByTokens","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721ShareSplitExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_shares","type":"uint256[]"}],"name":"setSharesForTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"shares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/ERC721StakingExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721StakingExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721StakingExtension.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721StakingExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lastStakingTime","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxStakingTotalDurations","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minStakingDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"savedStakedDurations","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setMaxStakingTotalDurations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setMinStakingDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"totalStakedDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"totalStakedDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"unlockingTime","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"unlockingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/ERC721VestingReleaseExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721VestingReleaseExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721VestingReleaseExtension.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721VestingReleaseExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setVestingDurationSeconds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setVestingStartTimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vestingDurationSeconds","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vestingStartTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/IERC721CustodialStakingExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721CustodialStakingExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721CustodialStakingExtension.sol","abi":[{"inputs":[],"name":"hasERC721CustodialStakingExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"uint256","name":"startTokenId","type":"uint256"},{"internalType":"uint256","name":"endTokenId","type":"uint256"}],"name":"tokensInCustody","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/IERC721EmissionReleaseExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721EmissionReleaseExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721EmissionReleaseExtension.sol","abi":[{"inputs":[{"internalType":"uint64","name":"calcUntil","type":"uint64"}],"name":"emissionAmountUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721EmissionReleaseExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"rateByToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"calcUntil","type":"uint64"}],"name":"releasedAmountUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionEnd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setEmissionRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionTimeUnit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/IERC721EqualSplitExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721EqualSplitExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721EqualSplitExtension.sol","abi":[{"inputs":[],"name":"hasERC721EqualSplitExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setTotalTickets","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/IERC721InstantReleaseExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721InstantReleaseExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721InstantReleaseExtension.sol","abi":[{"inputs":[],"name":"hasERC721InstantReleaseExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/IERC721LockableClaimExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721LockableClaimExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721LockableClaimExtension.sol","abi":[{"inputs":[],"name":"hasERC721LockableClaimExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setClaimLockedUntil","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/IERC721LockedStakingExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721LockedStakingExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721LockedStakingExtension.sol","abi":[{"inputs":[],"name":"hasERC721LockedStakingExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/IERC721ShareSplitExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721ShareSplitExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721ShareSplitExtension.sol","abi":[{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"getSharesByTokens","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721ShareSplitExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_shares","type":"uint256[]"}],"name":"setSharesForTokens","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/IERC721StakingExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721StakingExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721StakingExtension.sol","abi":[{"inputs":[],"name":"hasERC721StakingExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/IERC721VestingReleaseExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721VestingReleaseExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721VestingReleaseExtension.sol","abi":[{"inputs":[],"name":"hasERC721VestingReleaseExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setVestingDurationSeconds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setVestingStartTimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/presets/ERC721CustodialStakingEmissionStream":{"address":{"1":"0x0e6223dEfF249b5E2Ff966f2f24CE87de1229Df5","3":"0xFADbF74931C8a1eD22e80b390524A83717161eAe","4":"0xd558dd6a5664E004772008Ceb48005276107b5c5","5":"0x293E9F67cEF4d7465b6B9E19ccDB16F68536F54d","25":"0x1Fc79E01fe724Ef4A1f8995f1299B90565a6AD39","56":"0x01d50c1438f38A9DD5906a92bdEC7efB60A7c584","65":"0x27F848F575D9EDBc10c874825CCE379b19e9D155","66":"0xA2474D51D29079aa55e6FD6Ee97FFCa63f1f3661","97":"0xCeEb0cF54453f3070Da376fe34D94E278D3f3f6b","137":"0xAC4EdE9b090b393AEC91Caf6A9631b6Bb0A8Bc14","250":"0xa878c0aeAaA76Ec7A370b76Ac5BcAc4364eD60e1","280":"0x04c67744d9386C52Ce60BC20C1f1431D1Db1BF3D","4002":"0xa878c0aeAaA76Ec7A370b76Ac5BcAc4364eD60e1","9000":"0x27F848F575D9EDBc10c874825CCE379b19e9D155","42161":"0x614A331D14164720352ef916f4b91695c9199c7b","43113":"0x0e6223dEfF249b5E2Ff966f2f24CE87de1229Df5","43114":"0xfdc3a9eB43e0fa62cA206D9F51A1cDdf9dD5f1e8","421611":"0x48F9152b91103E158029921C59Ff844d30468288","arbitrumOne":"0x614A331D14164720352ef916f4b91695c9199c7b","arbitrumTestnet":"0x48F9152b91103E158029921C59Ff844d30468288","avalanche":"0xfdc3a9eB43e0fa62cA206D9F51A1cDdf9dD5f1e8","avalancheFujiTestnet":"0x0e6223dEfF249b5E2Ff966f2f24CE87de1229Df5","bsc":"0x01d50c1438f38A9DD5906a92bdEC7efB60A7c584","bscTestnet":"0xCeEb0cF54453f3070Da376fe34D94E278D3f3f6b","cronos":"0x1Fc79E01fe724Ef4A1f8995f1299B90565a6AD39","evmosTestnet":"0x27F848F575D9EDBc10c874825CCE379b19e9D155","ftmTestnet":"0xa878c0aeAaA76Ec7A370b76Ac5BcAc4364eD60e1","goerli":"0x293E9F67cEF4d7465b6B9E19ccDB16F68536F54d","mainnet":"0x0e6223dEfF249b5E2Ff966f2f24CE87de1229Df5","okcMainnet":"0xA2474D51D29079aa55e6FD6Ee97FFCa63f1f3661","okcTestnet":"0x27F848F575D9EDBc10c874825CCE379b19e9D155","opera":"0xa878c0aeAaA76Ec7A370b76Ac5BcAc4364eD60e1","polygon":"0xAC4EdE9b090b393AEC91Caf6A9631b6Bb0A8Bc14","rinkeby":"0xd558dd6a5664E004772008Ceb48005276107b5c5","ropsten":"0xFADbF74931C8a1eD22e80b390524A83717161eAe","zksyncTestnet":"0x04c67744d9386C52Ce60BC20C1f1431D1Db1BF3D"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721CustodialStakingEmissionStream","sourceName":"contracts/streams/ERC721/presets/ERC721CustodialStakingEmissionStream.sol","abi":[{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint64","name":"minStakingDuration","type":"uint64"},{"internalType":"uint64","name":"maxStakingTotalDurations","type":"uint64"},{"internalType":"uint256","name":"emissionRate","type":"uint256"},{"internalType":"uint64","name":"emissionTimeUnit","type":"uint64"},{"internalType":"uint64","name":"emissionStart","type":"uint64"},{"internalType":"uint64","name":"emissionEnd","type":"uint64"},{"internalType":"uint256","name":"totalTickets","type":"uint256"},{"internalType":"uint64","name":"claimLockedUntil","type":"uint64"}],"internalType":"struct ERC721CustodialStakingEmissionStream.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimLockedUntil","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"calcUntil","type":"uint64"}],"name":"emissionAmountUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionEnd","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionStart","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionTimeUnit","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721CustodialStakingExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721EmissionReleaseExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721EqualSplitExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721LockableClaimExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721StakingExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint64","name":"minStakingDuration","type":"uint64"},{"internalType":"uint64","name":"maxStakingTotalDurations","type":"uint64"},{"internalType":"uint256","name":"emissionRate","type":"uint256"},{"internalType":"uint64","name":"emissionTimeUnit","type":"uint64"},{"internalType":"uint64","name":"emissionStart","type":"uint64"},{"internalType":"uint64","name":"emissionEnd","type":"uint64"},{"internalType":"uint256","name":"totalTickets","type":"uint256"},{"internalType":"uint64","name":"claimLockedUntil","type":"uint64"}],"internalType":"struct ERC721CustodialStakingEmissionStream.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lastStakingTime","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxStakingTotalDurations","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minStakingDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"rateByToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"calcUntil","type":"uint64"}],"name":"releasedAmountUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"rewardAmountByToken","outputs":[{"internalType":"uint256","name":"total","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"rewardAmountByToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"savedStakedDurations","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setClaimLockedUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionEnd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setEmissionRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionTimeUnit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setMaxStakingTotalDurations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setMinStakingDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setTotalTickets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"uint256","name":"startTokenId","type":"uint256"},{"internalType":"uint256","name":"endTokenId","type":"uint256"}],"name":"tokensInCustody","outputs":[{"internalType":"bool[]","name":"tokens","type":"bool[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"totalStakedDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"totalStakedDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTickets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"unlockingTime","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"unlockingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x60806040523480156200001157600080fd5b506040516200456538038062004565833981016040819052620000349162000798565b6200003f3362000057565b6001600255620000508133620000b2565b50620008c6565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620000d35750600054600160ff909116105b80620001035750620000f0306200026760201b620024441760201c565b15801562000103575060005460ff166001145b6200016c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000190576000805461ff0019166101001790555b6200019b8262000057565b620001a882600062000276565b82516020840151620001bb9190620002b0565b620001d583604001518460600151620002e660201b60201c565b620001f983608001518460a001518560c001518660e001516200032660201b60201c565b6101008301516200020a9062000364565b6101208301516200021b906200039c565b801562000262576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6001600160a01b03163b151590565b600054610100900460ff16620002a05760405162461bcd60e51b8152600401620001639062000865565b620002ac8282620003d1565b5050565b600054610100900460ff16620002da5760405162461bcd60e51b8152600401620001639062000865565b620002ac828262000478565b600054610100900460ff16620003105760405162461bcd60e51b8152600401620001639062000865565b6200031a620004e2565b620002ac828262000520565b600054610100900460ff16620003505760405162461bcd60e51b8152600401620001639062000865565b6200035e8484848462000589565b50505050565b600054610100900460ff166200038e5760405162461bcd60e51b8152600401620001639062000865565b620003998162000614565b50565b600054610100900460ff16620003c65760405162461bcd60e51b8152600401620001639062000865565b620003998162000655565b600054610100900460ff16620003fb5760405162461bcd60e51b8152600401620001639062000865565b6200040d63ac2ba33360e01b620006a7565b600d8054600160401b600160e01b03198116680100000000000000006001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b8360038111156200046f576200046f620008b0565b02179055505050565b600054610100900460ff16620004a25760405162461bcd60e51b8152600401620001639062000865565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055620002ac631ba050e960e21b620006a7565b600054610100900460ff166200050c5760405162461bcd60e51b8152600401620001639062000865565b6200051e633f7ab4d760e11b620006a7565b565b600054610100900460ff166200054a5760405162461bcd60e51b8152600401620001639062000865565b600980546001600160401b0383811668010000000000000000026001600160801b031990921690851617179055620002ac633a41ba5360e11b620006a7565b600054610100900460ff16620005b35760405162461bcd60e51b8152600401620001639062000865565b6006849055600780546001600160401b03838116600160801b02600160801b600160c01b031986831668010000000000000000026001600160801b03199094169288169290921792909217161790556200035e63c9f600a960e01b620006a7565b600054610100900460ff166200063e5760405162461bcd60e51b8152600401620001639062000865565b600881905562000399632d5305cb60e21b620006a7565b600054610100900460ff166200067f5760405162461bcd60e51b8152600401620001639062000865565b600d80546001600160401b0319166001600160401b038316179055620003996317b2ef4360e31b5b6001600160e01b03198082169003620007035760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640162000163565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60405161014081016001600160401b03811182821017156200075d57634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b03811681146200077b57600080fd5b919050565b80516001600160401b03811681146200077b57600080fd5b60006101408284031215620007ac57600080fd5b620007b66200072b565b620007c18362000763565b8152620007d16020840162000780565b6020820152620007e46040840162000780565b6040820152620007f76060840162000780565b6060820152608083015160808201526200081460a0840162000780565b60a08201526200082760c0840162000780565b60c08201526200083a60e0840162000780565b60e082015261010083810151908201526101206200085a81850162000780565b908201529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b613c8f80620008d66000396000f3fe60806040526004361061038b5760003560e01c80639199690b116101d4578063d0d6641d116100fe578063d0d6641d14610baa578063d1335b6914610551578063d4244f2414610bca578063d5ed4d5a14610bf1578063d97314f514610c11578063da82b22714610c31578063dcbe353f14610c46578063dd11247e14610c6d578063dda8820f14610551578063ddd5e1b214610c83578063de6d6d9614610ca3578063de76a67614610cc3578063e449f34114610ce3578063f2fde38b14610d03578063f389b6e414610d23578063f4415ad614610d43578063f593dfc814610d7b578063f66e38c214610d9b578063fd5e6dd114610dbb57600080fd5b80639199690b14610551578063968d9b2c1461095857806396afc450146109785780639edfe8301461098e578063a1bdb15e146109ae578063a1cf6493146109ce578063a5549bc614610a11578063a5b23be714610a31578063a694fc3a14610a51578063a86b21e814610a71578063a8a67c8c14610a91578063aaf2f99914610ab1578063ae890c0a14610ad1578063af121f5414610af1578063bf57972e14610b12578063c088184914610b3f578063c0bb38ff14610b75578063c1a2fe8014610551578063c723955a14610b9557600080fd5b80633a73f7d6116102b55780633a73f7d61461068f5780633b3f12e2146106af5780633d2dded5146106cf57806349561cb91461070c5780634abb4c491461072d578063513da9481461075a57806354fd4d501461078157806357dc48c8146107b05780636057e0ec1461080457806361949636146108255780636ba4c13814610845578063715018a61461086557806378b094ca1461087a578063790c0c731461089a5780638368909c146108ba578063837fe140146108e157806384fd5ae0146108f657806389c6b815146109165780638da5cb5b1461093657600080fd5b80630191c0af146103a457806301ffc9a7146103d757806306fdde031461040757806308289dbe1461042957806308ae7e54146104775780630c805a44146104975780630fbf0a93146104cd57806314427a96146104ed578063150b7a021461050d5780631bc51b26146105515780631c725fdc1461056557806325289bad146105855780632890d033146105ac5780632c0e1313146105c15780632c233067146105e15780632d00b587146106015780632e17de781461062f57806333abcdbd1461064f578063379607f51461066f57600080fd5b3661039f576000341161039d57600080fd5b005b600080fd5b3480156103b057600080fd5b506103c46103bf3660046132bf565b610df1565b6040519081526020015b60405180910390f35b3480156103e357600080fd5b506103f76103f2366004613315565b610e47565b60405190151581526020016103ce565b34801561041357600080fd5b5061041c610e87565b6040516103ce919061333f565b34801561043557600080fd5b5061045f610444366004613394565b600b602052600090815260409020546001600160401b031681565b6040516001600160401b0390911681526020016103ce565b34801561048357600080fd5b5060095461045f906001600160401b031681565b3480156104a357600080fd5b5061045f6104b2366004613394565b600a602052600090815260409020546001600160401b031681565b3480156104d957600080fd5b5061039d6104e83660046133ad565b610ea3565b3480156104f957600080fd5b50600d5461045f906001600160401b031681565b34801561051957600080fd5b5061053861052836600461345d565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016103ce565b34801561055d57600080fd5b5060016103f7565b34801561057157600080fd5b5061039d610580366004613537565b610f1b565b34801561059157600080fd5b5060035461045f90600160a01b90046001600160401b031681565b3480156105b857600080fd5b506103c4610fa5565b3480156105cd57600080fd5b5061039d6105dc366004613537565b610fb6565b3480156105ed57600080fd5b5061039d6105fc366004613552565b611012565b34801561060d57600080fd5b50600d5461062290600160f01b900460ff1681565b6040516103ce9190613589565b34801561063b57600080fd5b5061039d61064a366004613394565b611071565b34801561065b57600080fd5b5061045f61066a366004613394565b6110a7565b34801561067b57600080fd5b5061039d61068a366004613394565b61119c565b34801561069b57600080fd5b506103c46106aa3660046133ad565b6111aa565b3480156106bb57600080fd5b506103c46106ca3660046132bf565b6111fc565b3480156106db57600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc546103c4565b34801561071857600080fd5b50600d546103f790600160f81b900460ff1681565b34801561073957600080fd5b5061074d6107483660046133ad565b61127a565b6040516103ce91906135b1565b34801561076657600080fd5b5060075461045f90600160401b90046001600160401b031681565b34801561078d57600080fd5b5061041c60405180604001604052806003815260200162302e3160e81b81525081565b3480156107bc57600080fd5b506107ef6107cb3660046135f5565b60046020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016103ce565b34801561081057600080fd5b50600d546103f790600160e01b900460ff1681565b34801561083157600080fd5b5060075461045f906001600160401b031681565b34801561085157600080fd5b5061039d6108603660046133ad565b611325565b34801561087157600080fd5b5061039d611336565b34801561088657600080fd5b5061039d610895366004613537565b61134a565b3480156108a657600080fd5b506103c46108b5366004613625565b6113b0565b3480156108c657600080fd5b5060075461045f90600160801b90046001600160401b031681565b3480156108ed57600080fd5b5061039d611474565b34801561090257600080fd5b506103c46109113660046133ad565b6114bb565b34801561092257600080fd5b506103c46109313660046133ad565b61154e565b34801561094257600080fd5b5061094b611563565b6040516103ce9190613642565b34801561096457600080fd5b506103c4610973366004613394565b611578565b34801561098457600080fd5b506103c460065481565b34801561099a57600080fd5b506103c46109a9366004613537565b611585565b3480156109ba57600080fd5b5061039d6109c9366004613394565b6115ca565b3480156109da57600080fd5b506103c46109e93660046135f5565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b348015610a1d57600080fd5b5061039d610a2c366004613537565b611609565b348015610a3d57600080fd5b506103c4610a4c366004613394565b611665565b348015610a5d57600080fd5b5061039d610a6c366004613394565b6116ab565b348015610a7d57600080fd5b506103c4610a8c366004613537565b611710565b348015610a9d57600080fd5b5061039d610aac366004613656565b61174c565b348015610abd57600080fd5b5061039d610acc366004613537565b6118ce565b348015610add57600080fd5b5061039d610aec366004613394565b611934565b348015610afd57600080fd5b50600d546103f790600160e81b900460ff1681565b348015610b1e57600080fd5b50610b32610b2d366004613737565b611973565b6040516103ce919061376c565b348015610b4b57600080fd5b506103c4610b5a366004613625565b6001600160a01b031660009081526005602052604090205490565b348015610b8157600080fd5b5061039d610b90366004613625565b611a37565b348015610ba157600080fd5b5061039d611a95565b348015610bb657600080fd5b506103c4610bc5366004613394565b611af6565b348015610bd657600080fd5b5060095461045f90600160401b90046001600160401b031681565b348015610bfd57600080fd5b5060035461094b906001600160a01b031681565b348015610c1d57600080fd5b5061039d610c2c366004613537565b611b50565b348015610c3d57600080fd5b5061039d611bac565b348015610c5257600080fd5b50600d5461094b90600160401b90046001600160a01b031681565b348015610c7957600080fd5b506103c460085481565b348015610c8f57600080fd5b5061039d610c9e3660046135f5565b611bf2565b348015610caf57600080fd5b5061039d610cbe3660046137a6565b611deb565b348015610ccf57600080fd5b5061045f610cde3660046133ad565b612039565b348015610cef57600080fd5b5061039d610cfe3660046133ad565b612085565b348015610d0f57600080fd5b5061039d610d1e366004613625565b6120b4565b348015610d2f57600080fd5b5061039d610d3e366004613811565b61212a565b348015610d4f57600080fd5b506103c4610d5e366004613394565b600090815260046020908152604080832083805290915290205490565b348015610d8757600080fd5b5061039d610d96366004613537565b61238f565b348015610da757600080fd5b506103c4610db63660046135f5565b6123f5565b348015610dc757600080fd5b5061094b610dd6366004613394565b600c602052600090815260409020546001600160a01b031681565b600080805b84811015610e3e57610e20868683818110610e1357610e13613878565b90506020020135856123f5565b610e2a90836138a4565b915080610e36816138bc565b915050610df6565b50949350505050565b60006301ffc9a760e01b6001600160e01b031983161480610e8157506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b604051806060016040528060288152602001613c326028913981565b6002805403610ecd5760405162461bcd60e51b8152600401610ec4906138d5565b60405180910390fd5b600280556007546001600160401b03600160401b9091048116429091161015610f085760405162461bcd60e51b8152600401610ec49061390c565b610f128282612453565b50506001600255565b610f2361249c565b6003546001600160401b03600160a01b909104811690821611610f785760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b6044820152606401610ec4565b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000610fb160006113b0565b905090565b610fbe61249c565b60035442600160a01b9091046001600160401b031610610ff05760405162461bcd60e51b8152600401610ec490613935565b600d80546001600160401b0319166001600160401b0392909216919091179055565b61101a61249c565b600d54600160f81b900460ff16156110445760405162461bcd60e51b8152600401610ec49061395c565b600d805482919060ff60f01b1916600160f01b83600381111561106957611069613573565b021790555050565b60028054036110925760405162461bcd60e51b8152600401610ec4906138d5565b6002805561109f816124fb565b506001600255565b6000818152600b6020908152604080832054600a9092528220546001600160401b039182169116156111645760006110dd612506565b905042816001600160401b031611156110f35750425b6000848152600a60205260409020546001600160401b031615611162576000848152600a60205260409020546001600160401b039081169082161115611162576000848152600a6020526040902054611155906001600160401b03168261397c565b61115f90836139a4565b91505b505b6009546001600160401b03600160401b90910481169082161115610e815750600954600160401b90046001600160401b031692915050565b6111a7816000611bf2565b50565b6000805b828110156111f5576111d78484838181106111cb576111cb613878565b90506020020135611665565b6111e190836138a4565b9150806111ed816138bc565b9150506111ae565b5092915050565b600080805b84811015610e3e576004600087878481811061121f5761121f613878565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b03168152602001908152602001600020600001548261126691906138a4565b915080611272816138bc565b915050611201565b60606000826001600160401b03811115611296576112966133ee565b6040519080825280602002602001820160405280156112bf578160200160208202803683370190505b50905060005b8381101561131d576112ee8585838181106112e2576112e2613878565b90506020020135611af6565b82828151811061130057611300613878565b602090810291909101015280611315816138bc565b9150506112c5565b509392505050565b611332828260003361212a565b5050565b61133e61249c565b6113486000612544565b565b61135261249c565b60035442600160a01b9091046001600160401b0316106113845760405162461bcd60e51b8152600401610ec490613935565b600780546001600160401b03909216600160801b02600160801b600160c01b0319909216919091179055565b60006001600160a01b0382166113e4576001600160a01b038216600090815260056020526040902054610e819047906138a4565b6040516370a0823160e01b81526001600160a01b038316906370a0823190611410903090600401613642565b602060405180830381865afa15801561142d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145191906139cf565b6001600160a01b038316600090815260056020526040902054610e8191906138a4565b61147c61249c565b600d54600160e01b900460ff16156114a65760405162461bcd60e51b8152600401610ec49061395c565b600d805460ff60e01b1916600160e01b179055565b60008060005b8381101561152a576000600a60008787858181106114e1576114e1613878565b60209081029290920135835250810191909152604001600020546001600160401b031611156115185781611514816138bc565b9250505b80611522816138bc565b9150506114c1565b506008548160065461153c91906139e8565b6115469190613a1d565b949350505050565b600061155c838360006111fc565b9392505050565b6000546201000090046001600160a01b031690565b6000610e818260006123f5565b6007546000906001600160401b03808216916115aa91600160401b909104168461397c565b6115b49190613a31565b6001600160401b0316600654610e8191906139e8565b6115d261249c565b60035442600160a01b9091046001600160401b0316106116045760405162461bcd60e51b8152600401610ec490613935565b600655565b61161161249c565b60035442600160a01b9091046001600160401b0316106116435760405162461bcd60e51b8152600401610ec490613935565b600980546001600160401b0319166001600160401b0392909216919091179055565b6007546008546000916001600160401b031690611681846110a7565b6001600160401b031660065461169791906139e8565b6116a19190613a1d565b610e819190613a1d565b60028054036116cc5760405162461bcd60e51b8152600401610ec4906138d5565b600280556007546001600160401b03600160401b90910481164290911610156117075760405162461bcd60e51b8152600401610ec49061390c565b61109f8161259f565b6007546006546000916001600160401b03808216929161173991600160401b909104168561397c565b6001600160401b03166116a191906139e8565b600054610100900460ff161580801561176c5750600054600160ff909116105b8061178d575061177b30612444565b15801561178d575060005460ff166001145b6117f05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ec4565b6000805460ff191660011790558015611813576000805461ff0019166101001790555b61181c82612544565b6118278260006125aa565b611839836000015184602001516125db565b61184b8360400151846060015161260c565b61186783608001518460a001518560c001518660e00151612645565b61187583610100015161267e565b6118838361012001516126ae565b80156118c9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6118d661249c565b60035442600160a01b9091046001600160401b0316106119085760405162461bcd60e51b8152600401610ec490613935565b600780546001600160401b03909216600160401b02600160401b600160801b0319909216919091179055565b61193c61249c565b60035442600160a01b9091046001600160401b03161061196e5760405162461bcd60e51b8152600401610ec490613935565b600855565b606061197f8383613a57565b61198a9060016138a4565b6001600160401b038111156119a1576119a16133ee565b6040519080825280602002602001820160405280156119ca578160200160208202803683370190505b509050825b82811161131d576000818152600c60205260409020546001600160a01b03808716911603611a2557600182611a048684613a57565b81518110611a1457611a14613878565b911515602092830291909101909101525b80611a2f816138bc565b9150506119cf565b611a3f61249c565b600d54600160e01b900460ff1615611a695760405162461bcd60e51b8152600401610ec49061395c565b600d80546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b611a9d61249c565b600d54600160f81b900460ff1615611adf5760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401610ec4565b600d80546001600160f81b0316600160f81b179055565b6000818152600a60205260408120546001600160401b0316611b19576000611b41565b6009546000838152600a6020526040902054611b41916001600160401b0390811691166139a4565b6001600160401b031692915050565b611b5861249c565b60035442600160a01b9091046001600160401b031610611b8a5760405162461bcd60e51b8152600401610ec490613935565b600780546001600160401b0319166001600160401b0392909216919091179055565b611bb461249c565b600d805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b6002805403611c135760405162461bcd60e51b8152600401610ec4906138d5565b6002805533611c238383836126de565b6000611c2f84846123f5565b905060008111611c745760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b6044820152606401610ec4565b60008481526004602090815260408083206001600160a01b038716845290915281208054839290611ca69084906138a4565b909155505060008481526004602090815260408083206001600160a01b0387168452825280832042600190910155600590915281208054839290611ceb9084906138a4565b90915550506001600160a01b038316611d1657611d116001600160a01b038316826126ff565b611d89565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb90611d449085908590600401613a6e565b6020604051808303816000875af1158015611d63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d879190613a87565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b611df433612815565b600d54600160401b90046001600160a01b0316611e4b5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401610ec4565b600d54600160e81b900460ff1615611ea55760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610ec4565b60005b83811015611ff5576000858583818110611ec457611ec4613878565b9050602002016020810190611ed99190613625565b6001600160a01b031603611f2457611f1f838383818110611efc57611efc613878565b600d546001600160a01b03600160401b90910416926020909102013590506126ff565b611fe3565b848482818110611f3657611f36613878565b9050602002016020810190611f4b9190613625565b600d546001600160a01b039182169163a9059cbb91600160401b900416858585818110611f7a57611f7a613878565b905060200201356040518363ffffffff1660e01b8152600401611f9e929190613a6e565b6020604051808303816000875af1158015611fbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe19190613a87565b505b80611fed816138bc565b915050611ea8565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a58484848460405161202b9493929190613adf565b60405180910390a150505050565b600080805b8381101561131d5761206785858381811061205b5761205b613878565b905060200201356110a7565b61207190836139a4565b91508061207d816138bc565b91505061203e565b60028054036120a65760405162461bcd60e51b8152600401610ec4906138d5565b60028055610f1282826129a2565b6120bc61249c565b6001600160a01b0381166121215760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ec4565b6111a781612544565b600280540361214b5760405162461bcd60e51b8152600401610ec4906138d5565b600280556000805b8481101561227b5761217e86868381811061217057612170613878565b9050602002013585856126de565b60006121a287878481811061219557612195613878565b90506020020135866123f5565b905080156122685780600460008989868181106121c1576121c1613878565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b03168152602001908152602001600020600001600082825461220b91906138a4565b909155504290506004600089898681811061222857612228613878565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a16825290925290206001015561226581846138a4565b92505b5080612273816138bc565b915050612153565b506001600160a01b038316600090815260056020526040812080548392906122a49084906138a4565b90915550506001600160a01b0383166122cf576122ca6001600160a01b038316826126ff565b612342565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906122fd9085908590600401613a6e565b6020604051808303816000875af115801561231c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123409190613a87565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b133838787878660405161237b96959493929190613b42565b60405180910390a150506001600255505050565b61239761249c565b60035442600160a01b9091046001600160401b0316106123c95760405162461bcd60e51b8152600401610ec490613935565b600980546001600160401b03909216600160401b02600160401b600160801b0319909216919091179055565b60008061241461240d612407856113b0565b50600090565b85856129e4565b60008581526004602090815260408083206001600160a01b03881684529091529020549091506115469082613a57565b6001600160a01b03163b151590565b334260005b8381101561249557612483838387878581811061247757612477613878565b90506020020135612a29565b8061248d816138bc565b915050612458565b5050505050565b336124a5611563565b6001600160a01b0316146113485760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ec4565b6111a7334283612ac6565b600754600090600160801b90046001600160401b0316156125385750600754600160801b90046001600160401b031690565b506001600160401b0390565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6111a7334283612a29565b600054610100900460ff166125d15760405162461bcd60e51b8152600401610ec490613b81565b6113328282612b5a565b600054610100900460ff166126025760405162461bcd60e51b8152600401610ec490613b81565b6113328282612bf4565b600054610100900460ff166126335760405162461bcd60e51b8152600401610ec490613b81565b61263b612c59565b6113328282612c90565b600054610100900460ff1661266c5760405162461bcd60e51b8152600401610ec490613b81565b61267884848484612cef565b50505050565b600054610100900460ff166126a55760405162461bcd60e51b8152600401610ec490613b81565b6111a781612d70565b600054610100900460ff166126d55760405162461bcd60e51b8152600401610ec490613b81565b6111a781612dac565b6126e9838383612dfe565b6126f4838383612f08565b6118c9838383612f53565b8047101561274f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610ec4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461279c576040519150601f19603f3d011682016040523d82523d6000602084013e6127a1565b606091505b50509050806118c95760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610ec4565b6003600d54600160f01b900460ff16600381111561283557612835613573565b036128745760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401610ec4565b6002600d54600160f01b900460ff16600381111561289457612894613573565b0361289c5750565b6001600d54600160f01b900460ff1660038111156128bc576128bc613573565b0361291f57600d546001600160a01b03828116600160401b90920416146111a75760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401610ec4565b6000600d54600160f01b900460ff16600381111561293f5761293f613573565b036111a757806001600160a01b0316612956611563565b6001600160a01b0316146111a75760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401610ec4565b334260005b83811015612495576129d283838787858181106129c6576129c6613878565b90506020020135612ac6565b806129dc816138bc565b9150506129a7565b6007546000906001600160401b03166129fc846110a7565b612a069190613a31565b6001600160401b0316600854600654612a1f9190613a1d565b61154691906139e8565b6000818152600c6020526040902080546001600160a01b0319166001600160a01b038516179055612a5b838383613018565b6003546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90612a8f90869030908690600401613bcc565b600060405180830381600087803b158015612aa957600080fd5b505af1158015612abd573d6000803e3d6000fd5b50505050505050565b6000818152600c60205260409020546001600160a01b03848116911614612aff5760405162461bcd60e51b8152600401610ec490613bf0565b6000818152600c6020526040902080546001600160a01b0319169055612b268383836130b1565b6003546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90612a8f90309087908690600401613bcc565b600054610100900460ff16612b815760405162461bcd60e51b8152600401610ec490613b81565b612b9163ac2ba33360e01b6131ce565b600d8054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b836003811115612beb57612beb613573565b02179055505050565b600054610100900460ff16612c1b5760405162461bcd60e51b8152600401610ec490613b81565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055611332631ba050e960e21b6131ce565b600054610100900460ff16612c805760405162461bcd60e51b8152600401610ec490613b81565b611348633f7ab4d760e11b6131ce565b600054610100900460ff16612cb75760405162461bcd60e51b8152600401610ec490613b81565b600980546001600160401b03838116600160401b026001600160801b031990921690851617179055611332633a41ba5360e11b6131ce565b600054610100900460ff16612d165760405162461bcd60e51b8152600401610ec490613b81565b6006849055600780546001600160401b03838116600160801b02600160801b600160c01b0319868316600160401b026001600160801b031990941692881692909217929092171617905561267863c9f600a960e01b6131ce565b600054610100900460ff16612d975760405162461bcd60e51b8152600401610ec490613b81565b60088190556111a7632d5305cb60e21b6131ce565b600054610100900460ff16612dd35760405162461bcd60e51b8152600401610ec490613b81565b600d80546001600160401b0319166001600160401b0383161790556111a76317b2ef4360e31b6131ce565b6000838152600c60205260409020546001600160a01b0316612ecf576003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa158015612e65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e899190613c14565b6001600160a01b0316146118c95760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b6044820152606401610ec4565b6000838152600c60205260409020546001600160a01b038281169116146118c95760405162461bcd60e51b8152600401610ec490613bf0565b600d54426001600160401b03909116106118c95760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b6044820152606401610ec4565b60075442600160401b9091046001600160401b031610612fa35760405162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b6044820152606401610ec4565b600754612fb9906001600160401b031642613a57565b60008481526004602090815260408083206001600160a01b0387168452909152902060010154106118c95760405162461bcd60e51b8152602060048201526009602482015268544f4f5f4541524c5960b81b6044820152606401610ec4565b600954600160401b90046001600160401b0316613034826110a7565b6001600160401b0316106130825760405162461bcd60e51b815260206004820152601560248201527413505617d1155490551253d397d15610d151511151605a1b6044820152606401610ec4565b6000908152600a6020526040902080546001600160401b0319166001600160401b039290921691909117905550565b6000818152600a60205260409020546001600160401b03166131025760405162461bcd60e51b815260206004820152600a6024820152691393d517d4d51052d15160b21b6044820152606401610ec4565b6009546000828152600a602052604090205461312a916001600160401b0390811691166139a4565b6001600160401b0316826001600160401b031610156131845760405162461bcd60e51b815260206004820152601660248201527509c9ea8bea6a882968a88be989e9c8ebe8a9c9eaa8e960531b6044820152606401610ec4565b61318d816110a7565b6000918252600b6020908152604080842080546001600160401b03949094166001600160401b0319948516179055600a909152909120805490911690555050565b6001600160e01b031980821690036132275760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401610ec4565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60008083601f84011261326157600080fd5b5081356001600160401b0381111561327857600080fd5b6020830191508360208260051b850101111561329357600080fd5b9250929050565b6001600160a01b03811681146111a757600080fd5b80356132ba8161329a565b919050565b6000806000604084860312156132d457600080fd5b83356001600160401b038111156132ea57600080fd5b6132f68682870161324f565b909450925050602084013561330a8161329a565b809150509250925092565b60006020828403121561332757600080fd5b81356001600160e01b03198116811461155c57600080fd5b600060208083528351808285015260005b8181101561336c57858101830151858201604001528201613350565b8181111561337e576000604083870101525b50601f01601f1916929092016040019392505050565b6000602082840312156133a657600080fd5b5035919050565b600080602083850312156133c057600080fd5b82356001600160401b038111156133d657600080fd5b6133e28582860161324f565b90969095509350505050565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b0381118282101715613427576134276133ee565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613455576134556133ee565b604052919050565b6000806000806080858703121561347357600080fd5b843561347e8161329a565b935060208581013561348f8161329a565b93506040860135925060608601356001600160401b03808211156134b257600080fd5b818801915088601f8301126134c657600080fd5b8135818111156134d8576134d86133ee565b6134ea601f8201601f1916850161342d565b9150808252898482850101111561350057600080fd5b808484018584013760008482840101525080935050505092959194509250565b80356001600160401b03811681146132ba57600080fd5b60006020828403121561354957600080fd5b61155c82613520565b60006020828403121561356457600080fd5b81356004811061155c57600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106135ab57634e487b7160e01b600052602160045260246000fd5b91905290565b6020808252825182820181905260009190848201906040850190845b818110156135e9578351835292840192918401916001016135cd565b50909695505050505050565b6000806040838503121561360857600080fd5b82359150602083013561361a8161329a565b809150509250929050565b60006020828403121561363757600080fd5b813561155c8161329a565b6001600160a01b0391909116815260200190565b60008082840361016081121561366b57600080fd5b6101408082121561367b57600080fd5b613683613404565b915061368e856132af565b825261369c60208601613520565b60208301526136ad60408601613520565b60408301526136be60608601613520565b6060830152608085013560808301526136d960a08601613520565b60a08301526136ea60c08601613520565b60c08301526136fb60e08601613520565b60e08301526101008581013590830152610120613719818701613520565b818401525081935061372c8186016132af565b925050509250929050565b60008060006060848603121561374c57600080fd5b83356137578161329a565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b818110156135e9578351151583529284019291840191600101613788565b600080600080604085870312156137bc57600080fd5b84356001600160401b03808211156137d357600080fd5b6137df8883890161324f565b909650945060208701359150808211156137f857600080fd5b506138058782880161324f565b95989497509550505050565b6000806000806060858703121561382757600080fd5b84356001600160401b0381111561383d57600080fd5b6138498782880161324f565b909550935050602085013561385d8161329a565b9150604085013561386d8161329a565b939692955090935050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156138b7576138b761388e565b500190565b6000600182016138ce576138ce61388e565b5060010190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252600f908201526e1393d517d4d5105495115117d65155608a1b604082015260600190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b60006001600160401b038381169083168181101561399c5761399c61388e565b039392505050565b60006001600160401b038083168185168083038211156139c6576139c661388e565b01949350505050565b6000602082840312156139e157600080fd5b5051919050565b6000816000190483118215151615613a0257613a0261388e565b500290565b634e487b7160e01b600052601260045260246000fd5b600082613a2c57613a2c613a07565b500490565b60006001600160401b0380841680613a4b57613a4b613a07565b92169190910492915050565b600082821015613a6957613a6961388e565b500390565b6001600160a01b03929092168252602082015260400190565b600060208284031215613a9957600080fd5b8151801515811461155c57600080fd5b81835260006001600160fb1b03831115613ac257600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b87811015613b22578235613b058161329a565b6001600160a01b0316825260209283019290910190600101613af2565b508381036020850152613b36818688613aa9565b98975050505050505050565b600060018060a01b038089168352808816602084015260a06040840152613b6d60a084018789613aa9565b941660608301525060800152949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6020808252600a90820152692727aa2fa9aa20a5a2a960b11b604082015260600190565b600060208284031215613c2657600080fd5b815161155c8161329a56fe45524337323120437573746f6469616c205374616b696e6720456d697373696f6e2053747265616da2646970667358221220552c3879e5a2ec05c0df82a9c11774c3a8fbb8e74e7708aa8ed0b0ce01fb5f3964736f6c634300080f0033","deployedBytecode":"0x60806040526004361061038b5760003560e01c80639199690b116101d4578063d0d6641d116100fe578063d0d6641d14610baa578063d1335b6914610551578063d4244f2414610bca578063d5ed4d5a14610bf1578063d97314f514610c11578063da82b22714610c31578063dcbe353f14610c46578063dd11247e14610c6d578063dda8820f14610551578063ddd5e1b214610c83578063de6d6d9614610ca3578063de76a67614610cc3578063e449f34114610ce3578063f2fde38b14610d03578063f389b6e414610d23578063f4415ad614610d43578063f593dfc814610d7b578063f66e38c214610d9b578063fd5e6dd114610dbb57600080fd5b80639199690b14610551578063968d9b2c1461095857806396afc450146109785780639edfe8301461098e578063a1bdb15e146109ae578063a1cf6493146109ce578063a5549bc614610a11578063a5b23be714610a31578063a694fc3a14610a51578063a86b21e814610a71578063a8a67c8c14610a91578063aaf2f99914610ab1578063ae890c0a14610ad1578063af121f5414610af1578063bf57972e14610b12578063c088184914610b3f578063c0bb38ff14610b75578063c1a2fe8014610551578063c723955a14610b9557600080fd5b80633a73f7d6116102b55780633a73f7d61461068f5780633b3f12e2146106af5780633d2dded5146106cf57806349561cb91461070c5780634abb4c491461072d578063513da9481461075a57806354fd4d501461078157806357dc48c8146107b05780636057e0ec1461080457806361949636146108255780636ba4c13814610845578063715018a61461086557806378b094ca1461087a578063790c0c731461089a5780638368909c146108ba578063837fe140146108e157806384fd5ae0146108f657806389c6b815146109165780638da5cb5b1461093657600080fd5b80630191c0af146103a457806301ffc9a7146103d757806306fdde031461040757806308289dbe1461042957806308ae7e54146104775780630c805a44146104975780630fbf0a93146104cd57806314427a96146104ed578063150b7a021461050d5780631bc51b26146105515780631c725fdc1461056557806325289bad146105855780632890d033146105ac5780632c0e1313146105c15780632c233067146105e15780632d00b587146106015780632e17de781461062f57806333abcdbd1461064f578063379607f51461066f57600080fd5b3661039f576000341161039d57600080fd5b005b600080fd5b3480156103b057600080fd5b506103c46103bf3660046132bf565b610df1565b6040519081526020015b60405180910390f35b3480156103e357600080fd5b506103f76103f2366004613315565b610e47565b60405190151581526020016103ce565b34801561041357600080fd5b5061041c610e87565b6040516103ce919061333f565b34801561043557600080fd5b5061045f610444366004613394565b600b602052600090815260409020546001600160401b031681565b6040516001600160401b0390911681526020016103ce565b34801561048357600080fd5b5060095461045f906001600160401b031681565b3480156104a357600080fd5b5061045f6104b2366004613394565b600a602052600090815260409020546001600160401b031681565b3480156104d957600080fd5b5061039d6104e83660046133ad565b610ea3565b3480156104f957600080fd5b50600d5461045f906001600160401b031681565b34801561051957600080fd5b5061053861052836600461345d565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016103ce565b34801561055d57600080fd5b5060016103f7565b34801561057157600080fd5b5061039d610580366004613537565b610f1b565b34801561059157600080fd5b5060035461045f90600160a01b90046001600160401b031681565b3480156105b857600080fd5b506103c4610fa5565b3480156105cd57600080fd5b5061039d6105dc366004613537565b610fb6565b3480156105ed57600080fd5b5061039d6105fc366004613552565b611012565b34801561060d57600080fd5b50600d5461062290600160f01b900460ff1681565b6040516103ce9190613589565b34801561063b57600080fd5b5061039d61064a366004613394565b611071565b34801561065b57600080fd5b5061045f61066a366004613394565b6110a7565b34801561067b57600080fd5b5061039d61068a366004613394565b61119c565b34801561069b57600080fd5b506103c46106aa3660046133ad565b6111aa565b3480156106bb57600080fd5b506103c46106ca3660046132bf565b6111fc565b3480156106db57600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc546103c4565b34801561071857600080fd5b50600d546103f790600160f81b900460ff1681565b34801561073957600080fd5b5061074d6107483660046133ad565b61127a565b6040516103ce91906135b1565b34801561076657600080fd5b5060075461045f90600160401b90046001600160401b031681565b34801561078d57600080fd5b5061041c60405180604001604052806003815260200162302e3160e81b81525081565b3480156107bc57600080fd5b506107ef6107cb3660046135f5565b60046020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016103ce565b34801561081057600080fd5b50600d546103f790600160e01b900460ff1681565b34801561083157600080fd5b5060075461045f906001600160401b031681565b34801561085157600080fd5b5061039d6108603660046133ad565b611325565b34801561087157600080fd5b5061039d611336565b34801561088657600080fd5b5061039d610895366004613537565b61134a565b3480156108a657600080fd5b506103c46108b5366004613625565b6113b0565b3480156108c657600080fd5b5060075461045f90600160801b90046001600160401b031681565b3480156108ed57600080fd5b5061039d611474565b34801561090257600080fd5b506103c46109113660046133ad565b6114bb565b34801561092257600080fd5b506103c46109313660046133ad565b61154e565b34801561094257600080fd5b5061094b611563565b6040516103ce9190613642565b34801561096457600080fd5b506103c4610973366004613394565b611578565b34801561098457600080fd5b506103c460065481565b34801561099a57600080fd5b506103c46109a9366004613537565b611585565b3480156109ba57600080fd5b5061039d6109c9366004613394565b6115ca565b3480156109da57600080fd5b506103c46109e93660046135f5565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b348015610a1d57600080fd5b5061039d610a2c366004613537565b611609565b348015610a3d57600080fd5b506103c4610a4c366004613394565b611665565b348015610a5d57600080fd5b5061039d610a6c366004613394565b6116ab565b348015610a7d57600080fd5b506103c4610a8c366004613537565b611710565b348015610a9d57600080fd5b5061039d610aac366004613656565b61174c565b348015610abd57600080fd5b5061039d610acc366004613537565b6118ce565b348015610add57600080fd5b5061039d610aec366004613394565b611934565b348015610afd57600080fd5b50600d546103f790600160e81b900460ff1681565b348015610b1e57600080fd5b50610b32610b2d366004613737565b611973565b6040516103ce919061376c565b348015610b4b57600080fd5b506103c4610b5a366004613625565b6001600160a01b031660009081526005602052604090205490565b348015610b8157600080fd5b5061039d610b90366004613625565b611a37565b348015610ba157600080fd5b5061039d611a95565b348015610bb657600080fd5b506103c4610bc5366004613394565b611af6565b348015610bd657600080fd5b5060095461045f90600160401b90046001600160401b031681565b348015610bfd57600080fd5b5060035461094b906001600160a01b031681565b348015610c1d57600080fd5b5061039d610c2c366004613537565b611b50565b348015610c3d57600080fd5b5061039d611bac565b348015610c5257600080fd5b50600d5461094b90600160401b90046001600160a01b031681565b348015610c7957600080fd5b506103c460085481565b348015610c8f57600080fd5b5061039d610c9e3660046135f5565b611bf2565b348015610caf57600080fd5b5061039d610cbe3660046137a6565b611deb565b348015610ccf57600080fd5b5061045f610cde3660046133ad565b612039565b348015610cef57600080fd5b5061039d610cfe3660046133ad565b612085565b348015610d0f57600080fd5b5061039d610d1e366004613625565b6120b4565b348015610d2f57600080fd5b5061039d610d3e366004613811565b61212a565b348015610d4f57600080fd5b506103c4610d5e366004613394565b600090815260046020908152604080832083805290915290205490565b348015610d8757600080fd5b5061039d610d96366004613537565b61238f565b348015610da757600080fd5b506103c4610db63660046135f5565b6123f5565b348015610dc757600080fd5b5061094b610dd6366004613394565b600c602052600090815260409020546001600160a01b031681565b600080805b84811015610e3e57610e20868683818110610e1357610e13613878565b90506020020135856123f5565b610e2a90836138a4565b915080610e36816138bc565b915050610df6565b50949350505050565b60006301ffc9a760e01b6001600160e01b031983161480610e8157506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b604051806060016040528060288152602001613c326028913981565b6002805403610ecd5760405162461bcd60e51b8152600401610ec4906138d5565b60405180910390fd5b600280556007546001600160401b03600160401b9091048116429091161015610f085760405162461bcd60e51b8152600401610ec49061390c565b610f128282612453565b50506001600255565b610f2361249c565b6003546001600160401b03600160a01b909104811690821611610f785760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b6044820152606401610ec4565b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000610fb160006113b0565b905090565b610fbe61249c565b60035442600160a01b9091046001600160401b031610610ff05760405162461bcd60e51b8152600401610ec490613935565b600d80546001600160401b0319166001600160401b0392909216919091179055565b61101a61249c565b600d54600160f81b900460ff16156110445760405162461bcd60e51b8152600401610ec49061395c565b600d805482919060ff60f01b1916600160f01b83600381111561106957611069613573565b021790555050565b60028054036110925760405162461bcd60e51b8152600401610ec4906138d5565b6002805561109f816124fb565b506001600255565b6000818152600b6020908152604080832054600a9092528220546001600160401b039182169116156111645760006110dd612506565b905042816001600160401b031611156110f35750425b6000848152600a60205260409020546001600160401b031615611162576000848152600a60205260409020546001600160401b039081169082161115611162576000848152600a6020526040902054611155906001600160401b03168261397c565b61115f90836139a4565b91505b505b6009546001600160401b03600160401b90910481169082161115610e815750600954600160401b90046001600160401b031692915050565b6111a7816000611bf2565b50565b6000805b828110156111f5576111d78484838181106111cb576111cb613878565b90506020020135611665565b6111e190836138a4565b9150806111ed816138bc565b9150506111ae565b5092915050565b600080805b84811015610e3e576004600087878481811061121f5761121f613878565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b03168152602001908152602001600020600001548261126691906138a4565b915080611272816138bc565b915050611201565b60606000826001600160401b03811115611296576112966133ee565b6040519080825280602002602001820160405280156112bf578160200160208202803683370190505b50905060005b8381101561131d576112ee8585838181106112e2576112e2613878565b90506020020135611af6565b82828151811061130057611300613878565b602090810291909101015280611315816138bc565b9150506112c5565b509392505050565b611332828260003361212a565b5050565b61133e61249c565b6113486000612544565b565b61135261249c565b60035442600160a01b9091046001600160401b0316106113845760405162461bcd60e51b8152600401610ec490613935565b600780546001600160401b03909216600160801b02600160801b600160c01b0319909216919091179055565b60006001600160a01b0382166113e4576001600160a01b038216600090815260056020526040902054610e819047906138a4565b6040516370a0823160e01b81526001600160a01b038316906370a0823190611410903090600401613642565b602060405180830381865afa15801561142d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145191906139cf565b6001600160a01b038316600090815260056020526040902054610e8191906138a4565b61147c61249c565b600d54600160e01b900460ff16156114a65760405162461bcd60e51b8152600401610ec49061395c565b600d805460ff60e01b1916600160e01b179055565b60008060005b8381101561152a576000600a60008787858181106114e1576114e1613878565b60209081029290920135835250810191909152604001600020546001600160401b031611156115185781611514816138bc565b9250505b80611522816138bc565b9150506114c1565b506008548160065461153c91906139e8565b6115469190613a1d565b949350505050565b600061155c838360006111fc565b9392505050565b6000546201000090046001600160a01b031690565b6000610e818260006123f5565b6007546000906001600160401b03808216916115aa91600160401b909104168461397c565b6115b49190613a31565b6001600160401b0316600654610e8191906139e8565b6115d261249c565b60035442600160a01b9091046001600160401b0316106116045760405162461bcd60e51b8152600401610ec490613935565b600655565b61161161249c565b60035442600160a01b9091046001600160401b0316106116435760405162461bcd60e51b8152600401610ec490613935565b600980546001600160401b0319166001600160401b0392909216919091179055565b6007546008546000916001600160401b031690611681846110a7565b6001600160401b031660065461169791906139e8565b6116a19190613a1d565b610e819190613a1d565b60028054036116cc5760405162461bcd60e51b8152600401610ec4906138d5565b600280556007546001600160401b03600160401b90910481164290911610156117075760405162461bcd60e51b8152600401610ec49061390c565b61109f8161259f565b6007546006546000916001600160401b03808216929161173991600160401b909104168561397c565b6001600160401b03166116a191906139e8565b600054610100900460ff161580801561176c5750600054600160ff909116105b8061178d575061177b30612444565b15801561178d575060005460ff166001145b6117f05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ec4565b6000805460ff191660011790558015611813576000805461ff0019166101001790555b61181c82612544565b6118278260006125aa565b611839836000015184602001516125db565b61184b8360400151846060015161260c565b61186783608001518460a001518560c001518660e00151612645565b61187583610100015161267e565b6118838361012001516126ae565b80156118c9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6118d661249c565b60035442600160a01b9091046001600160401b0316106119085760405162461bcd60e51b8152600401610ec490613935565b600780546001600160401b03909216600160401b02600160401b600160801b0319909216919091179055565b61193c61249c565b60035442600160a01b9091046001600160401b03161061196e5760405162461bcd60e51b8152600401610ec490613935565b600855565b606061197f8383613a57565b61198a9060016138a4565b6001600160401b038111156119a1576119a16133ee565b6040519080825280602002602001820160405280156119ca578160200160208202803683370190505b509050825b82811161131d576000818152600c60205260409020546001600160a01b03808716911603611a2557600182611a048684613a57565b81518110611a1457611a14613878565b911515602092830291909101909101525b80611a2f816138bc565b9150506119cf565b611a3f61249c565b600d54600160e01b900460ff1615611a695760405162461bcd60e51b8152600401610ec49061395c565b600d80546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b611a9d61249c565b600d54600160f81b900460ff1615611adf5760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401610ec4565b600d80546001600160f81b0316600160f81b179055565b6000818152600a60205260408120546001600160401b0316611b19576000611b41565b6009546000838152600a6020526040902054611b41916001600160401b0390811691166139a4565b6001600160401b031692915050565b611b5861249c565b60035442600160a01b9091046001600160401b031610611b8a5760405162461bcd60e51b8152600401610ec490613935565b600780546001600160401b0319166001600160401b0392909216919091179055565b611bb461249c565b600d805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b6002805403611c135760405162461bcd60e51b8152600401610ec4906138d5565b6002805533611c238383836126de565b6000611c2f84846123f5565b905060008111611c745760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b6044820152606401610ec4565b60008481526004602090815260408083206001600160a01b038716845290915281208054839290611ca69084906138a4565b909155505060008481526004602090815260408083206001600160a01b0387168452825280832042600190910155600590915281208054839290611ceb9084906138a4565b90915550506001600160a01b038316611d1657611d116001600160a01b038316826126ff565b611d89565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb90611d449085908590600401613a6e565b6020604051808303816000875af1158015611d63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d879190613a87565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b611df433612815565b600d54600160401b90046001600160a01b0316611e4b5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401610ec4565b600d54600160e81b900460ff1615611ea55760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610ec4565b60005b83811015611ff5576000858583818110611ec457611ec4613878565b9050602002016020810190611ed99190613625565b6001600160a01b031603611f2457611f1f838383818110611efc57611efc613878565b600d546001600160a01b03600160401b90910416926020909102013590506126ff565b611fe3565b848482818110611f3657611f36613878565b9050602002016020810190611f4b9190613625565b600d546001600160a01b039182169163a9059cbb91600160401b900416858585818110611f7a57611f7a613878565b905060200201356040518363ffffffff1660e01b8152600401611f9e929190613a6e565b6020604051808303816000875af1158015611fbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe19190613a87565b505b80611fed816138bc565b915050611ea8565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a58484848460405161202b9493929190613adf565b60405180910390a150505050565b600080805b8381101561131d5761206785858381811061205b5761205b613878565b905060200201356110a7565b61207190836139a4565b91508061207d816138bc565b91505061203e565b60028054036120a65760405162461bcd60e51b8152600401610ec4906138d5565b60028055610f1282826129a2565b6120bc61249c565b6001600160a01b0381166121215760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ec4565b6111a781612544565b600280540361214b5760405162461bcd60e51b8152600401610ec4906138d5565b600280556000805b8481101561227b5761217e86868381811061217057612170613878565b9050602002013585856126de565b60006121a287878481811061219557612195613878565b90506020020135866123f5565b905080156122685780600460008989868181106121c1576121c1613878565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b03168152602001908152602001600020600001600082825461220b91906138a4565b909155504290506004600089898681811061222857612228613878565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a16825290925290206001015561226581846138a4565b92505b5080612273816138bc565b915050612153565b506001600160a01b038316600090815260056020526040812080548392906122a49084906138a4565b90915550506001600160a01b0383166122cf576122ca6001600160a01b038316826126ff565b612342565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906122fd9085908590600401613a6e565b6020604051808303816000875af115801561231c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123409190613a87565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b133838787878660405161237b96959493929190613b42565b60405180910390a150506001600255505050565b61239761249c565b60035442600160a01b9091046001600160401b0316106123c95760405162461bcd60e51b8152600401610ec490613935565b600980546001600160401b03909216600160401b02600160401b600160801b0319909216919091179055565b60008061241461240d612407856113b0565b50600090565b85856129e4565b60008581526004602090815260408083206001600160a01b03881684529091529020549091506115469082613a57565b6001600160a01b03163b151590565b334260005b8381101561249557612483838387878581811061247757612477613878565b90506020020135612a29565b8061248d816138bc565b915050612458565b5050505050565b336124a5611563565b6001600160a01b0316146113485760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ec4565b6111a7334283612ac6565b600754600090600160801b90046001600160401b0316156125385750600754600160801b90046001600160401b031690565b506001600160401b0390565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6111a7334283612a29565b600054610100900460ff166125d15760405162461bcd60e51b8152600401610ec490613b81565b6113328282612b5a565b600054610100900460ff166126025760405162461bcd60e51b8152600401610ec490613b81565b6113328282612bf4565b600054610100900460ff166126335760405162461bcd60e51b8152600401610ec490613b81565b61263b612c59565b6113328282612c90565b600054610100900460ff1661266c5760405162461bcd60e51b8152600401610ec490613b81565b61267884848484612cef565b50505050565b600054610100900460ff166126a55760405162461bcd60e51b8152600401610ec490613b81565b6111a781612d70565b600054610100900460ff166126d55760405162461bcd60e51b8152600401610ec490613b81565b6111a781612dac565b6126e9838383612dfe565b6126f4838383612f08565b6118c9838383612f53565b8047101561274f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610ec4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461279c576040519150601f19603f3d011682016040523d82523d6000602084013e6127a1565b606091505b50509050806118c95760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610ec4565b6003600d54600160f01b900460ff16600381111561283557612835613573565b036128745760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401610ec4565b6002600d54600160f01b900460ff16600381111561289457612894613573565b0361289c5750565b6001600d54600160f01b900460ff1660038111156128bc576128bc613573565b0361291f57600d546001600160a01b03828116600160401b90920416146111a75760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401610ec4565b6000600d54600160f01b900460ff16600381111561293f5761293f613573565b036111a757806001600160a01b0316612956611563565b6001600160a01b0316146111a75760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401610ec4565b334260005b83811015612495576129d283838787858181106129c6576129c6613878565b90506020020135612ac6565b806129dc816138bc565b9150506129a7565b6007546000906001600160401b03166129fc846110a7565b612a069190613a31565b6001600160401b0316600854600654612a1f9190613a1d565b61154691906139e8565b6000818152600c6020526040902080546001600160a01b0319166001600160a01b038516179055612a5b838383613018565b6003546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90612a8f90869030908690600401613bcc565b600060405180830381600087803b158015612aa957600080fd5b505af1158015612abd573d6000803e3d6000fd5b50505050505050565b6000818152600c60205260409020546001600160a01b03848116911614612aff5760405162461bcd60e51b8152600401610ec490613bf0565b6000818152600c6020526040902080546001600160a01b0319169055612b268383836130b1565b6003546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90612a8f90309087908690600401613bcc565b600054610100900460ff16612b815760405162461bcd60e51b8152600401610ec490613b81565b612b9163ac2ba33360e01b6131ce565b600d8054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b836003811115612beb57612beb613573565b02179055505050565b600054610100900460ff16612c1b5760405162461bcd60e51b8152600401610ec490613b81565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055611332631ba050e960e21b6131ce565b600054610100900460ff16612c805760405162461bcd60e51b8152600401610ec490613b81565b611348633f7ab4d760e11b6131ce565b600054610100900460ff16612cb75760405162461bcd60e51b8152600401610ec490613b81565b600980546001600160401b03838116600160401b026001600160801b031990921690851617179055611332633a41ba5360e11b6131ce565b600054610100900460ff16612d165760405162461bcd60e51b8152600401610ec490613b81565b6006849055600780546001600160401b03838116600160801b02600160801b600160c01b0319868316600160401b026001600160801b031990941692881692909217929092171617905561267863c9f600a960e01b6131ce565b600054610100900460ff16612d975760405162461bcd60e51b8152600401610ec490613b81565b60088190556111a7632d5305cb60e21b6131ce565b600054610100900460ff16612dd35760405162461bcd60e51b8152600401610ec490613b81565b600d80546001600160401b0319166001600160401b0383161790556111a76317b2ef4360e31b6131ce565b6000838152600c60205260409020546001600160a01b0316612ecf576003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa158015612e65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e899190613c14565b6001600160a01b0316146118c95760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b6044820152606401610ec4565b6000838152600c60205260409020546001600160a01b038281169116146118c95760405162461bcd60e51b8152600401610ec490613bf0565b600d54426001600160401b03909116106118c95760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b6044820152606401610ec4565b60075442600160401b9091046001600160401b031610612fa35760405162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b6044820152606401610ec4565b600754612fb9906001600160401b031642613a57565b60008481526004602090815260408083206001600160a01b0387168452909152902060010154106118c95760405162461bcd60e51b8152602060048201526009602482015268544f4f5f4541524c5960b81b6044820152606401610ec4565b600954600160401b90046001600160401b0316613034826110a7565b6001600160401b0316106130825760405162461bcd60e51b815260206004820152601560248201527413505617d1155490551253d397d15610d151511151605a1b6044820152606401610ec4565b6000908152600a6020526040902080546001600160401b0319166001600160401b039290921691909117905550565b6000818152600a60205260409020546001600160401b03166131025760405162461bcd60e51b815260206004820152600a6024820152691393d517d4d51052d15160b21b6044820152606401610ec4565b6009546000828152600a602052604090205461312a916001600160401b0390811691166139a4565b6001600160401b0316826001600160401b031610156131845760405162461bcd60e51b815260206004820152601660248201527509c9ea8bea6a882968a88be989e9c8ebe8a9c9eaa8e960531b6044820152606401610ec4565b61318d816110a7565b6000918252600b6020908152604080842080546001600160401b03949094166001600160401b0319948516179055600a909152909120805490911690555050565b6001600160e01b031980821690036132275760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401610ec4565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60008083601f84011261326157600080fd5b5081356001600160401b0381111561327857600080fd5b6020830191508360208260051b850101111561329357600080fd5b9250929050565b6001600160a01b03811681146111a757600080fd5b80356132ba8161329a565b919050565b6000806000604084860312156132d457600080fd5b83356001600160401b038111156132ea57600080fd5b6132f68682870161324f565b909450925050602084013561330a8161329a565b809150509250925092565b60006020828403121561332757600080fd5b81356001600160e01b03198116811461155c57600080fd5b600060208083528351808285015260005b8181101561336c57858101830151858201604001528201613350565b8181111561337e576000604083870101525b50601f01601f1916929092016040019392505050565b6000602082840312156133a657600080fd5b5035919050565b600080602083850312156133c057600080fd5b82356001600160401b038111156133d657600080fd5b6133e28582860161324f565b90969095509350505050565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b0381118282101715613427576134276133ee565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613455576134556133ee565b604052919050565b6000806000806080858703121561347357600080fd5b843561347e8161329a565b935060208581013561348f8161329a565b93506040860135925060608601356001600160401b03808211156134b257600080fd5b818801915088601f8301126134c657600080fd5b8135818111156134d8576134d86133ee565b6134ea601f8201601f1916850161342d565b9150808252898482850101111561350057600080fd5b808484018584013760008482840101525080935050505092959194509250565b80356001600160401b03811681146132ba57600080fd5b60006020828403121561354957600080fd5b61155c82613520565b60006020828403121561356457600080fd5b81356004811061155c57600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106135ab57634e487b7160e01b600052602160045260246000fd5b91905290565b6020808252825182820181905260009190848201906040850190845b818110156135e9578351835292840192918401916001016135cd565b50909695505050505050565b6000806040838503121561360857600080fd5b82359150602083013561361a8161329a565b809150509250929050565b60006020828403121561363757600080fd5b813561155c8161329a565b6001600160a01b0391909116815260200190565b60008082840361016081121561366b57600080fd5b6101408082121561367b57600080fd5b613683613404565b915061368e856132af565b825261369c60208601613520565b60208301526136ad60408601613520565b60408301526136be60608601613520565b6060830152608085013560808301526136d960a08601613520565b60a08301526136ea60c08601613520565b60c08301526136fb60e08601613520565b60e08301526101008581013590830152610120613719818701613520565b818401525081935061372c8186016132af565b925050509250929050565b60008060006060848603121561374c57600080fd5b83356137578161329a565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b818110156135e9578351151583529284019291840191600101613788565b600080600080604085870312156137bc57600080fd5b84356001600160401b03808211156137d357600080fd5b6137df8883890161324f565b909650945060208701359150808211156137f857600080fd5b506138058782880161324f565b95989497509550505050565b6000806000806060858703121561382757600080fd5b84356001600160401b0381111561383d57600080fd5b6138498782880161324f565b909550935050602085013561385d8161329a565b9150604085013561386d8161329a565b939692955090935050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156138b7576138b761388e565b500190565b6000600182016138ce576138ce61388e565b5060010190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252600f908201526e1393d517d4d5105495115117d65155608a1b604082015260600190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b60006001600160401b038381169083168181101561399c5761399c61388e565b039392505050565b60006001600160401b038083168185168083038211156139c6576139c661388e565b01949350505050565b6000602082840312156139e157600080fd5b5051919050565b6000816000190483118215151615613a0257613a0261388e565b500290565b634e487b7160e01b600052601260045260246000fd5b600082613a2c57613a2c613a07565b500490565b60006001600160401b0380841680613a4b57613a4b613a07565b92169190910492915050565b600082821015613a6957613a6961388e565b500390565b6001600160a01b03929092168252602082015260400190565b600060208284031215613a9957600080fd5b8151801515811461155c57600080fd5b81835260006001600160fb1b03831115613ac257600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b87811015613b22578235613b058161329a565b6001600160a01b0316825260209283019290910190600101613af2565b508381036020850152613b36818688613aa9565b98975050505050505050565b600060018060a01b038089168352808816602084015260a06040840152613b6d60a084018789613aa9565b941660608301525060800152949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6020808252600a90820152692727aa2fa9aa20a5a2a960b11b604082015260600190565b600060208284031215613c2657600080fd5b815161155c8161329a56fe45524337323120437573746f6469616c205374616b696e6720456d697373696f6e2053747265616da2646970667358221220552c3879e5a2ec05c0df82a9c11774c3a8fbb8e74e7708aa8ed0b0ce01fb5f3964736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/presets/ERC721EqualEmissionStream":{"address":{"1":"0x2a89238074A3eF4cE606ed3f53CfE5C50CdD9299","3":"0xc21AC86C664015e9Eb122313cb520720e67a532b","4":"0x81EF8Abc586a85413434b88D5cB86A7c55713D35","5":"0xE07116Ab6e1599eF4991986D68E0377d705Ab455","25":"0x01d50c1438f38A9DD5906a92bdEC7efB60A7c584","56":"0xF8fA73a567812c638e3258144965c03680CD2D87","65":"0xae19F12838b3513246769Ed8636D565F75Dcb1c7","66":"0x91a90c18b6829688973dD1a14CD4a2824b2CD6Ff","97":"0x70492D215774d05f279b7C811399AEe2406d4c2D","137":"0xBF7d75fC371E46D805198f474f1105fcB3a52901","250":"0xFf3B2524F0BA31FdeA8DE0506F82978c3ce8fFe6","280":"0x92c5c286861fbd255803F2067C80c02D550adB25","4002":"0xFf3B2524F0BA31FdeA8DE0506F82978c3ce8fFe6","9000":"0xae19F12838b3513246769Ed8636D565F75Dcb1c7","42161":"0x2f75ce3BfF041d81d41AB6e403002A17151dFC24","43113":"0x2a89238074A3eF4cE606ed3f53CfE5C50CdD9299","43114":"0xaca3DC84080D4440CC526983027a89E0A16A73DD","421611":"0xD01F2668247FC1c7334591457dc1a8e3C6a5a8E4","arbitrumOne":"0x2f75ce3BfF041d81d41AB6e403002A17151dFC24","arbitrumTestnet":"0xD01F2668247FC1c7334591457dc1a8e3C6a5a8E4","avalanche":"0xaca3DC84080D4440CC526983027a89E0A16A73DD","avalancheFujiTestnet":"0x2a89238074A3eF4cE606ed3f53CfE5C50CdD9299","bsc":"0xF8fA73a567812c638e3258144965c03680CD2D87","bscTestnet":"0x70492D215774d05f279b7C811399AEe2406d4c2D","cronos":"0x01d50c1438f38A9DD5906a92bdEC7efB60A7c584","evmosTestnet":"0xae19F12838b3513246769Ed8636D565F75Dcb1c7","ftmTestnet":"0xFf3B2524F0BA31FdeA8DE0506F82978c3ce8fFe6","goerli":"0xE07116Ab6e1599eF4991986D68E0377d705Ab455","mainnet":"0x2a89238074A3eF4cE606ed3f53CfE5C50CdD9299","okcMainnet":"0x91a90c18b6829688973dD1a14CD4a2824b2CD6Ff","okcTestnet":"0xae19F12838b3513246769Ed8636D565F75Dcb1c7","opera":"0xFf3B2524F0BA31FdeA8DE0506F82978c3ce8fFe6","polygon":"0xBF7d75fC371E46D805198f474f1105fcB3a52901","rinkeby":"0x81EF8Abc586a85413434b88D5cB86A7c55713D35","ropsten":"0xc21AC86C664015e9Eb122313cb520720e67a532b","zksyncTestnet":"0x92c5c286861fbd255803F2067C80c02D550adB25"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721EqualEmissionStream","sourceName":"contracts/streams/ERC721/presets/ERC721EqualEmissionStream.sol","abi":[{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint256","name":"totalTickets","type":"uint256"},{"internalType":"uint256","name":"emissionRate","type":"uint256"},{"internalType":"uint64","name":"emissionTimeUnit","type":"uint64"},{"internalType":"uint64","name":"emissionStart","type":"uint64"},{"internalType":"uint64","name":"emissionEnd","type":"uint64"}],"internalType":"struct ERC721EqualEmissionStream.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimLockedUntil","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"calcUntil","type":"uint64"}],"name":"emissionAmountUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionEnd","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionStart","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionTimeUnit","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721EmissionReleaseExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721EqualSplitExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721LockableClaimExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint256","name":"totalTickets","type":"uint256"},{"internalType":"uint256","name":"emissionRate","type":"uint256"},{"internalType":"uint64","name":"emissionTimeUnit","type":"uint64"},{"internalType":"uint64","name":"emissionStart","type":"uint64"},{"internalType":"uint64","name":"emissionEnd","type":"uint64"}],"internalType":"struct ERC721EqualEmissionStream.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"rateByToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"calcUntil","type":"uint64"}],"name":"releasedAmountUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setClaimLockedUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionEnd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setEmissionRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionTimeUnit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setTotalTickets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTickets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162003303380380620033038339810160408190526200003491620005c1565b6200003f3362000057565b6001600255620000508133620000b2565b50620006dd565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620000d35750600054600160ff909116105b80620001035750620000f0306200023b60201b62001a951760201c565b15801562000103575060005460ff166001145b6200016c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000190576000805461ff0019166101001790555b6200019b8262000057565b620001a88260006200024a565b82516020840151620001bb919062000284565b620001df836060015184608001518560a001518660c00151620002ba60201b60201c565b6040830151620001ef90620002f8565b801562000236576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6001600160a01b03163b151590565b600054610100900460ff16620002745760405162461bcd60e51b815260040162000163906200067c565b62000280828262000330565b5050565b600054610100900460ff16620002ae5760405162461bcd60e51b815260040162000163906200067c565b620002808282620003d7565b600054610100900460ff16620002e45760405162461bcd60e51b815260040162000163906200067c565b620002f28484848462000441565b50505050565b600054610100900460ff16620003225760405162461bcd60e51b815260040162000163906200067c565b6200032d81620004cc565b50565b600054610100900460ff166200035a5760405162461bcd60e51b815260040162000163906200067c565b6200036c63ac2ba33360e01b62000508565b60098054600160401b600160e01b03198116680100000000000000006001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b836003811115620003ce57620003ce620006c7565b02179055505050565b600054610100900460ff16620004015760405162461bcd60e51b815260040162000163906200067c565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b0385161717905562000280631ba050e960e21b62000508565b600054610100900460ff166200046b5760405162461bcd60e51b815260040162000163906200067c565b6006849055600780546001600160401b03838116600160801b02600160801b600160c01b031986831668010000000000000000026001600160801b0319909416928816929092179290921716179055620002f263c9f600a960e01b62000508565b600054610100900460ff16620004f65760405162461bcd60e51b815260040162000163906200067c565b60088190556200032d632d5305cb60e21b5b6001600160e01b03198082169003620005645760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640162000163565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b80516001600160a01b0381168114620005a457600080fd5b919050565b80516001600160401b0381168114620005a457600080fd5b600060e08284031215620005d457600080fd5b60405160e081016001600160401b03811182821017156200060557634e487b7160e01b600052604160045260246000fd5b60405262000613836200058c565b81526200062360208401620005a9565b602082015260408301516040820152606083015160608201526200064a60808401620005a9565b60808201526200065d60a08401620005a9565b60a08201526200067060c08401620005a9565b60c08201529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b612c1680620006ed6000396000f3fe60806040526004361061028f5760003560e01c806389c6b8151161015657806389c6b815146107145780638da5cb5b146107345780639199690b146103dc578063968d9b2c1461075657806396afc450146107765780639edfe8301461078c578063a1bdb15e146107ac578063a1cf6493146107cc578063a86b21e81461080f578063aa02a74b1461082f578063aaf2f9991461084f578063ae890c0a1461086f578063af121f541461088f578063c0881849146108b0578063c0bb38ff146108e6578063c723955a14610906578063d1335b69146103dc578063d5ed4d5a1461091b578063d97314f51461093b578063da82b2271461095b578063dcbe353f14610970578063dd11247e14610997578063ddd5e1b2146109ad578063de6d6d96146109cd578063f2fde38b146109ed578063f389b6e414610a0d578063f4415ad614610a2d578063f66e38c214610a6557600080fd5b80630191c0af146102a857806301ffc9a7146102db57806306fdde031461030b57806314427a9614610360578063150b7a02146103985780631bc51b26146103dc5780631c725fdc146103f057806325289bad146104105780632890d033146104375780632c0e13131461044c5780632c2330671461046c5780632d00b5871461048c578063379607f5146104ba5780633b3f12e2146104da5780633d2dded5146104fa57806349561cb914610537578063513da9481461055857806354fd4d501461057f57806357dc48c8146105ae5780636057e0ec1461060257806361949636146106235780636ba4c13814610643578063715018a61461066357806378b094ca14610678578063790c0c73146106985780638368909c146106b8578063837fe140146106df57806384fd5ae0146106f457600080fd5b366102a357600034116102a157600080fd5b005b600080fd5b3480156102b457600080fd5b506102c86102c33660046123f7565b610a85565b6040519081526020015b60405180910390f35b3480156102e757600080fd5b506102fb6102f636600461244d565b610add565b60405190151581526020016102d2565b34801561031757600080fd5b506103536040518060400160405280601c81526020017b45524337323120457175616c20456d697373696f6e2053747265616d60201b81525081565b6040516102d29190612477565b34801561036c57600080fd5b50600954610380906001600160401b031681565b6040516001600160401b0390911681526020016102d2565b3480156103a457600080fd5b506103c36103b336600461253a565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016102d2565b3480156103e857600080fd5b5060016102fb565b3480156103fc57600080fd5b506102a161040b366004612614565b610b1d565b34801561041c57600080fd5b5060035461038090600160a01b90046001600160401b031681565b34801561044357600080fd5b506102c8610bac565b34801561045857600080fd5b506102a1610467366004612614565b610bbd565b34801561047857600080fd5b506102a161048736600461262f565b610c19565b34801561049857600080fd5b506009546104ad90600160f01b900460ff1681565b6040516102d29190612666565b3480156104c657600080fd5b506102a16104d536600461268e565b610c78565b3480156104e657600080fd5b506102c86104f53660046123f7565b610c86565b34801561050657600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc546102c8565b34801561054357600080fd5b506009546102fb90600160f81b900460ff1681565b34801561056457600080fd5b5060075461038090600160401b90046001600160401b031681565b34801561058b57600080fd5b5061035360405180604001604052806003815260200162302e3160e81b81525081565b3480156105ba57600080fd5b506105ed6105c93660046126a7565b60046020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016102d2565b34801561060e57600080fd5b506009546102fb90600160e01b900460ff1681565b34801561062f57600080fd5b50600754610380906001600160401b031681565b34801561064f57600080fd5b506102a161065e3660046126d7565b610d04565b34801561066f57600080fd5b506102a1610d15565b34801561068457600080fd5b506102a1610693366004612614565b610d29565b3480156106a457600080fd5b506102c86106b3366004612718565b610d8f565b3480156106c457600080fd5b5060075461038090600160801b90046001600160401b031681565b3480156106eb57600080fd5b506102a1610e53565b34801561070057600080fd5b506102c861070f3660046126d7565b610e9a565b34801561072057600080fd5b506102c861072f3660046126d7565b610eb9565b34801561074057600080fd5b50610749610ec7565b6040516102d29190612735565b34801561076257600080fd5b506102c861077136600461268e565b610edc565b34801561078257600080fd5b506102c860065481565b34801561079857600080fd5b506102c86107a7366004612614565b610ee9565b3480156107b857600080fd5b506102a16107c736600461268e565b610f2e565b3480156107d857600080fd5b506102c86107e73660046126a7565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b34801561081b57600080fd5b506102c861082a366004612614565b610f6d565b34801561083b57600080fd5b506102a161084a366004612749565b610fb3565b34801561085b57600080fd5b506102a161086a366004612614565b611114565b34801561087b57600080fd5b506102a161088a36600461268e565b61117b565b34801561089b57600080fd5b506009546102fb90600160e81b900460ff1681565b3480156108bc57600080fd5b506102c86108cb366004612718565b6001600160a01b031660009081526005602052604090205490565b3480156108f257600080fd5b506102a1610901366004612718565b6111ba565b34801561091257600080fd5b506102a1611218565b34801561092757600080fd5b50600354610749906001600160a01b031681565b34801561094757600080fd5b506102a1610956366004612614565b611279565b34801561096757600080fd5b506102a16112d5565b34801561097c57600080fd5b5060095461074990600160401b90046001600160a01b031681565b3480156109a357600080fd5b506102c860085481565b3480156109b957600080fd5b506102a16109c83660046126a7565b61131b565b3480156109d957600080fd5b506102a16109e83660046127f1565b611514565b3480156109f957600080fd5b506102a1610a08366004612718565b611762565b348015610a1957600080fd5b506102a1610a2836600461285c565b6117d8565b348015610a3957600080fd5b506102c8610a4836600461268e565b600090815260046020908152604080832083805290915290205490565b348015610a7157600080fd5b506102c8610a803660046126a7565b611a3d565b600080805b84811015610ad257610ab4868683818110610aa757610aa76128c3565b9050602002013585611a3d565b610abe90836128ef565b915080610aca81612907565b915050610a8a565b5090505b9392505050565b60006301ffc9a760e01b6001600160e01b031983161480610b1757506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b610b25611aa4565b6003546001600160401b03600160a01b909104811690821611610b7f5760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b60448201526064015b60405180910390fd5b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000610bb86000610d8f565b905090565b610bc5611aa4565b60035442600160a01b9091046001600160401b031610610bf75760405162461bcd60e51b8152600401610b7690612920565b600980546001600160401b0319166001600160401b0392909216919091179055565b610c21611aa4565b600954600160f81b900460ff1615610c4b5760405162461bcd60e51b8152600401610b7690612947565b6009805482919060ff60f01b1916600160f01b836003811115610c7057610c70612650565b021790555050565b610c8381600061131b565b50565b600080805b84811015610ad25760046000878784818110610ca957610ca96128c3565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b031681526020019081526020016000206000015482610cf091906128ef565b915080610cfc81612907565b915050610c8b565b610d1182826000336117d8565b5050565b610d1d611aa4565b610d276000611b03565b565b610d31611aa4565b60035442600160a01b9091046001600160401b031610610d635760405162461bcd60e51b8152600401610b7690612920565b600780546001600160401b03909216600160801b02600160801b600160c01b0319909216919091179055565b60006001600160a01b038216610dc3576001600160a01b038216600090815260056020526040902054610b179047906128ef565b6040516370a0823160e01b81526001600160a01b038316906370a0823190610def903090600401612735565b602060405180830381865afa158015610e0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e309190612967565b6001600160a01b038316600090815260056020526040902054610b1791906128ef565b610e5b611aa4565b600954600160e01b900460ff1615610e855760405162461bcd60e51b8152600401610b7690612947565b6009805460ff60e01b1916600160e01b179055565b60085460065460009190610eaf908490612980565b610ad691906129b5565b6000610ad683836000610c86565b6000546201000090046001600160a01b031690565b6000610b17826000611a3d565b6007546000906001600160401b0380821691610f0e91600160401b90910416846129c9565b610f1891906129f1565b6001600160401b0316600654610b179190612980565b610f36611aa4565b60035442600160a01b9091046001600160401b031610610f685760405162461bcd60e51b8152600401610b7690612920565b600655565b6007546006546000916001600160401b038082169291610f9691600160401b90910416856129c9565b6001600160401b0316610fa99190612980565b610b1791906129b5565b600054610100900460ff1615808015610fd35750600054600160ff909116105b80610ff45750610fe230611a95565b158015610ff4575060005460ff166001145b6110575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b76565b6000805460ff19166001179055801561107a576000805461ff0019166101001790555b61108382611b03565b61108e826000611b5e565b6110a083600001518460200151611b8f565b6110bc836060015184608001518560a001518660c00151611bc0565b6110c98360400151611bf9565b801561110f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61111c611aa4565b60035442600160a01b9091046001600160401b03161061114e5760405162461bcd60e51b8152600401610b7690612920565b600780546001600160401b03909216600160401b0267ffffffffffffffff60401b19909216919091179055565b611183611aa4565b60035442600160a01b9091046001600160401b0316106111b55760405162461bcd60e51b8152600401610b7690612920565b600855565b6111c2611aa4565b600954600160e01b900460ff16156111ec5760405162461bcd60e51b8152600401610b7690612947565b600980546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b611220611aa4565b600954600160f81b900460ff16156112625760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401610b76565b600980546001600160f81b0316600160f81b179055565b611281611aa4565b60035442600160a01b9091046001600160401b0316106112b35760405162461bcd60e51b8152600401610b7690612920565b600780546001600160401b0319166001600160401b0392909216919091179055565b6112dd611aa4565b6009805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b600280540361133c5760405162461bcd60e51b8152600401610b7690612a17565b600280553361134c838383611c29565b60006113588484611a3d565b90506000811161139d5760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b6044820152606401610b76565b60008481526004602090815260408083206001600160a01b0387168452909152812080548392906113cf9084906128ef565b909155505060008481526004602090815260408083206001600160a01b03871684528252808320426001909101556005909152812080548392906114149084906128ef565b90915550506001600160a01b03831661143f5761143a6001600160a01b03831682611c4a565b6114b2565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb9061146d9085908590600401612a4e565b6020604051808303816000875af115801561148c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b09190612a67565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b61151d33611d60565b600954600160401b90046001600160a01b03166115745760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401610b76565b600954600160e81b900460ff16156115ce5760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610b76565b60005b8381101561171e5760008585838181106115ed576115ed6128c3565b90506020020160208101906116029190612718565b6001600160a01b03160361164d57611648838383818110611625576116256128c3565b6009546001600160a01b03600160401b9091041692602090910201359050611c4a565b61170c565b84848281811061165f5761165f6128c3565b90506020020160208101906116749190612718565b6009546001600160a01b039182169163a9059cbb91600160401b9004168585858181106116a3576116a36128c3565b905060200201356040518363ffffffff1660e01b81526004016116c7929190612a4e565b6020604051808303816000875af11580156116e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170a9190612a67565b505b8061171681612907565b9150506115d1565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a5848484846040516117549493929190612abf565b60405180910390a150505050565b61176a611aa4565b6001600160a01b0381166117cf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b76565b610c8381611b03565b60028054036117f95760405162461bcd60e51b8152600401610b7690612a17565b600280556000805b848110156119295761182c86868381811061181e5761181e6128c3565b905060200201358585611c29565b6000611850878784818110611843576118436128c3565b9050602002013586611a3d565b9050801561191657806004600089898681811061186f5761186f6128c3565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b0316815260200190815260200160002060000160008282546118b991906128ef565b90915550429050600460008989868181106118d6576118d66128c3565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a16825290925290206001015561191381846128ef565b92505b508061192181612907565b915050611801565b506001600160a01b038316600090815260056020526040812080548392906119529084906128ef565b90915550506001600160a01b03831661197d576119786001600160a01b03831682611c4a565b6119f0565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906119ab9085908590600401612a4e565b6020604051808303816000875af11580156119ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ee9190612a67565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b1338387878786604051611a2996959493929190612b22565b60405180910390a150506001600255505050565b600080611a5d611a56611a4f85610d8f565b8686611eed565b8585611f75565b60008581526004602090815260408083206001600160a01b0388168452909152902054909150611a8d9082612b61565b949350505050565b6001600160a01b03163b151590565b33611aad610ec7565b6001600160a01b031614610d275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b76565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff16611b855760405162461bcd60e51b8152600401610b7690612b78565b610d118282611f85565b600054610100900460ff16611bb65760405162461bcd60e51b8152600401610b7690612b78565b610d11828261201f565b600054610100900460ff16611be75760405162461bcd60e51b8152600401610b7690612b78565b611bf384848484612084565b50505050565b600054610100900460ff16611c205760405162461bcd60e51b8152600401610b7690612b78565b610c8381612105565b611c34838383612141565b611c3f8383836121f6565b61110f838383612241565b80471015611c9a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610b76565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611ce7576040519150601f19603f3d011682016040523d82523d6000602084013e611cec565b606091505b505090508061110f5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610b76565b6003600954600160f01b900460ff166003811115611d8057611d80612650565b03611dbf5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401610b76565b6002600954600160f01b900460ff166003811115611ddf57611ddf612650565b03611de75750565b6001600954600160f01b900460ff166003811115611e0757611e07612650565b03611e6a576009546001600160a01b03828116600160401b9092041614610c835760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401610b76565b6000600954600160f01b900460ff166003811115611e8a57611e8a612650565b03610c8357806001600160a01b0316611ea1610ec7565b6001600160a01b031614610c835760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401610b76565b600754600090600160401b90046001600160401b0316421015611f1257506000610ad6565b600754600160801b90046001600160401b031615801590611f445750600754600160801b90046001600160401b031642115b15611f6c57600754611f6590600160801b90046001600160401b0316610ee9565b9050610ad6565b611f6542610ee9565b600060085484611a8d91906129b5565b600054610100900460ff16611fac5760405162461bcd60e51b8152600401610b7690612b78565b611fbc63ac2ba33360e01b612306565b60098054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b83600381111561201657612016612650565b02179055505050565b600054610100900460ff166120465760405162461bcd60e51b8152600401610b7690612b78565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055610d11631ba050e960e21b612306565b600054610100900460ff166120ab5760405162461bcd60e51b8152600401610b7690612b78565b6006849055600780546001600160401b03838116600160801b02600160801b600160c01b0319868316600160401b026001600160801b0319909416928816929092179290921716179055611bf363c9f600a960e01b612306565b600054610100900460ff1661212c5760405162461bcd60e51b8152600401610b7690612b78565b6008819055610c83632d5305cb60e21b612306565b6003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa15801561218c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b09190612bc3565b6001600160a01b03161461110f5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b6044820152606401610b76565b600954426001600160401b039091161061110f5760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b6044820152606401610b76565b60075442600160401b9091046001600160401b0316106122915760405162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b6044820152606401610b76565b6007546122a7906001600160401b031642612b61565b60008481526004602090815260408083206001600160a01b03871684529091529020600101541061110f5760405162461bcd60e51b8152602060048201526009602482015268544f4f5f4541524c5960b81b6044820152606401610b76565b6001600160e01b0319808216900361235f5760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401610b76565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60008083601f84011261239957600080fd5b5081356001600160401b038111156123b057600080fd5b6020830191508360208260051b85010111156123cb57600080fd5b9250929050565b6001600160a01b0381168114610c8357600080fd5b80356123f2816123d2565b919050565b60008060006040848603121561240c57600080fd5b83356001600160401b0381111561242257600080fd5b61242e86828701612387565b9094509250506020840135612442816123d2565b809150509250925092565b60006020828403121561245f57600080fd5b81356001600160e01b031981168114610ad657600080fd5b600060208083528351808285015260005b818110156124a457858101830151858201604001528201612488565b818111156124b6576000604083870101525b50601f01601f1916929092016040019392505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715612504576125046124cc565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612532576125326124cc565b604052919050565b6000806000806080858703121561255057600080fd5b843561255b816123d2565b935060208581013561256c816123d2565b93506040860135925060608601356001600160401b038082111561258f57600080fd5b818801915088601f8301126125a357600080fd5b8135818111156125b5576125b56124cc565b6125c7601f8201601f1916850161250a565b915080825289848285010111156125dd57600080fd5b808484018584013760008482840101525080935050505092959194509250565b80356001600160401b03811681146123f257600080fd5b60006020828403121561262657600080fd5b610ad6826125fd565b60006020828403121561264157600080fd5b813560048110610ad657600080fd5b634e487b7160e01b600052602160045260246000fd5b602081016004831061268857634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156126a057600080fd5b5035919050565b600080604083850312156126ba57600080fd5b8235915060208301356126cc816123d2565b809150509250929050565b600080602083850312156126ea57600080fd5b82356001600160401b0381111561270057600080fd5b61270c85828601612387565b90969095509350505050565b60006020828403121561272a57600080fd5b8135610ad6816123d2565b6001600160a01b0391909116815260200190565b60008082840361010081121561275e57600080fd5b60e081121561276c57600080fd5b506127756124e2565b8335612780816123d2565b815261278e602085016125fd565b602082015260408401356040820152606084013560608201526127b3608085016125fd565b60808201526127c460a085016125fd565b60a08201526127d560c085016125fd565b60c082015291506127e860e084016123e7565b90509250929050565b6000806000806040858703121561280757600080fd5b84356001600160401b038082111561281e57600080fd5b61282a88838901612387565b9096509450602087013591508082111561284357600080fd5b5061285087828801612387565b95989497509550505050565b6000806000806060858703121561287257600080fd5b84356001600160401b0381111561288857600080fd5b61289487828801612387565b90955093505060208501356128a8816123d2565b915060408501356128b8816123d2565b939692955090935050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115612902576129026128d9565b500190565b600060018201612919576129196128d9565b5060010190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b60006020828403121561297957600080fd5b5051919050565b600081600019048311821515161561299a5761299a6128d9565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826129c4576129c461299f565b500490565b60006001600160401b03838116908316818110156129e9576129e96128d9565b039392505050565b60006001600160401b0380841680612a0b57612a0b61299f565b92169190910492915050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b03929092168252602082015260400190565b600060208284031215612a7957600080fd5b81518015158114610ad657600080fd5b81835260006001600160fb1b03831115612aa257600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b87811015612b02578235612ae5816123d2565b6001600160a01b0316825260209283019290910190600101612ad2565b508381036020850152612b16818688612a89565b98975050505050505050565b600060018060a01b038089168352808816602084015260a06040840152612b4d60a084018789612a89565b941660608301525060800152949350505050565b600082821015612b7357612b736128d9565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208284031215612bd557600080fd5b8151610ad6816123d256fea2646970667358221220ee5538a130d54b989a5f058ed321f050781ac93d328b4fdb93740f18f2425dc164736f6c634300080f0033","deployedBytecode":"0x60806040526004361061028f5760003560e01c806389c6b8151161015657806389c6b815146107145780638da5cb5b146107345780639199690b146103dc578063968d9b2c1461075657806396afc450146107765780639edfe8301461078c578063a1bdb15e146107ac578063a1cf6493146107cc578063a86b21e81461080f578063aa02a74b1461082f578063aaf2f9991461084f578063ae890c0a1461086f578063af121f541461088f578063c0881849146108b0578063c0bb38ff146108e6578063c723955a14610906578063d1335b69146103dc578063d5ed4d5a1461091b578063d97314f51461093b578063da82b2271461095b578063dcbe353f14610970578063dd11247e14610997578063ddd5e1b2146109ad578063de6d6d96146109cd578063f2fde38b146109ed578063f389b6e414610a0d578063f4415ad614610a2d578063f66e38c214610a6557600080fd5b80630191c0af146102a857806301ffc9a7146102db57806306fdde031461030b57806314427a9614610360578063150b7a02146103985780631bc51b26146103dc5780631c725fdc146103f057806325289bad146104105780632890d033146104375780632c0e13131461044c5780632c2330671461046c5780632d00b5871461048c578063379607f5146104ba5780633b3f12e2146104da5780633d2dded5146104fa57806349561cb914610537578063513da9481461055857806354fd4d501461057f57806357dc48c8146105ae5780636057e0ec1461060257806361949636146106235780636ba4c13814610643578063715018a61461066357806378b094ca14610678578063790c0c73146106985780638368909c146106b8578063837fe140146106df57806384fd5ae0146106f457600080fd5b366102a357600034116102a157600080fd5b005b600080fd5b3480156102b457600080fd5b506102c86102c33660046123f7565b610a85565b6040519081526020015b60405180910390f35b3480156102e757600080fd5b506102fb6102f636600461244d565b610add565b60405190151581526020016102d2565b34801561031757600080fd5b506103536040518060400160405280601c81526020017b45524337323120457175616c20456d697373696f6e2053747265616d60201b81525081565b6040516102d29190612477565b34801561036c57600080fd5b50600954610380906001600160401b031681565b6040516001600160401b0390911681526020016102d2565b3480156103a457600080fd5b506103c36103b336600461253a565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016102d2565b3480156103e857600080fd5b5060016102fb565b3480156103fc57600080fd5b506102a161040b366004612614565b610b1d565b34801561041c57600080fd5b5060035461038090600160a01b90046001600160401b031681565b34801561044357600080fd5b506102c8610bac565b34801561045857600080fd5b506102a1610467366004612614565b610bbd565b34801561047857600080fd5b506102a161048736600461262f565b610c19565b34801561049857600080fd5b506009546104ad90600160f01b900460ff1681565b6040516102d29190612666565b3480156104c657600080fd5b506102a16104d536600461268e565b610c78565b3480156104e657600080fd5b506102c86104f53660046123f7565b610c86565b34801561050657600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc546102c8565b34801561054357600080fd5b506009546102fb90600160f81b900460ff1681565b34801561056457600080fd5b5060075461038090600160401b90046001600160401b031681565b34801561058b57600080fd5b5061035360405180604001604052806003815260200162302e3160e81b81525081565b3480156105ba57600080fd5b506105ed6105c93660046126a7565b60046020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016102d2565b34801561060e57600080fd5b506009546102fb90600160e01b900460ff1681565b34801561062f57600080fd5b50600754610380906001600160401b031681565b34801561064f57600080fd5b506102a161065e3660046126d7565b610d04565b34801561066f57600080fd5b506102a1610d15565b34801561068457600080fd5b506102a1610693366004612614565b610d29565b3480156106a457600080fd5b506102c86106b3366004612718565b610d8f565b3480156106c457600080fd5b5060075461038090600160801b90046001600160401b031681565b3480156106eb57600080fd5b506102a1610e53565b34801561070057600080fd5b506102c861070f3660046126d7565b610e9a565b34801561072057600080fd5b506102c861072f3660046126d7565b610eb9565b34801561074057600080fd5b50610749610ec7565b6040516102d29190612735565b34801561076257600080fd5b506102c861077136600461268e565b610edc565b34801561078257600080fd5b506102c860065481565b34801561079857600080fd5b506102c86107a7366004612614565b610ee9565b3480156107b857600080fd5b506102a16107c736600461268e565b610f2e565b3480156107d857600080fd5b506102c86107e73660046126a7565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b34801561081b57600080fd5b506102c861082a366004612614565b610f6d565b34801561083b57600080fd5b506102a161084a366004612749565b610fb3565b34801561085b57600080fd5b506102a161086a366004612614565b611114565b34801561087b57600080fd5b506102a161088a36600461268e565b61117b565b34801561089b57600080fd5b506009546102fb90600160e81b900460ff1681565b3480156108bc57600080fd5b506102c86108cb366004612718565b6001600160a01b031660009081526005602052604090205490565b3480156108f257600080fd5b506102a1610901366004612718565b6111ba565b34801561091257600080fd5b506102a1611218565b34801561092757600080fd5b50600354610749906001600160a01b031681565b34801561094757600080fd5b506102a1610956366004612614565b611279565b34801561096757600080fd5b506102a16112d5565b34801561097c57600080fd5b5060095461074990600160401b90046001600160a01b031681565b3480156109a357600080fd5b506102c860085481565b3480156109b957600080fd5b506102a16109c83660046126a7565b61131b565b3480156109d957600080fd5b506102a16109e83660046127f1565b611514565b3480156109f957600080fd5b506102a1610a08366004612718565b611762565b348015610a1957600080fd5b506102a1610a2836600461285c565b6117d8565b348015610a3957600080fd5b506102c8610a4836600461268e565b600090815260046020908152604080832083805290915290205490565b348015610a7157600080fd5b506102c8610a803660046126a7565b611a3d565b600080805b84811015610ad257610ab4868683818110610aa757610aa76128c3565b9050602002013585611a3d565b610abe90836128ef565b915080610aca81612907565b915050610a8a565b5090505b9392505050565b60006301ffc9a760e01b6001600160e01b031983161480610b1757506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b610b25611aa4565b6003546001600160401b03600160a01b909104811690821611610b7f5760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b60448201526064015b60405180910390fd5b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000610bb86000610d8f565b905090565b610bc5611aa4565b60035442600160a01b9091046001600160401b031610610bf75760405162461bcd60e51b8152600401610b7690612920565b600980546001600160401b0319166001600160401b0392909216919091179055565b610c21611aa4565b600954600160f81b900460ff1615610c4b5760405162461bcd60e51b8152600401610b7690612947565b6009805482919060ff60f01b1916600160f01b836003811115610c7057610c70612650565b021790555050565b610c8381600061131b565b50565b600080805b84811015610ad25760046000878784818110610ca957610ca96128c3565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b031681526020019081526020016000206000015482610cf091906128ef565b915080610cfc81612907565b915050610c8b565b610d1182826000336117d8565b5050565b610d1d611aa4565b610d276000611b03565b565b610d31611aa4565b60035442600160a01b9091046001600160401b031610610d635760405162461bcd60e51b8152600401610b7690612920565b600780546001600160401b03909216600160801b02600160801b600160c01b0319909216919091179055565b60006001600160a01b038216610dc3576001600160a01b038216600090815260056020526040902054610b179047906128ef565b6040516370a0823160e01b81526001600160a01b038316906370a0823190610def903090600401612735565b602060405180830381865afa158015610e0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e309190612967565b6001600160a01b038316600090815260056020526040902054610b1791906128ef565b610e5b611aa4565b600954600160e01b900460ff1615610e855760405162461bcd60e51b8152600401610b7690612947565b6009805460ff60e01b1916600160e01b179055565b60085460065460009190610eaf908490612980565b610ad691906129b5565b6000610ad683836000610c86565b6000546201000090046001600160a01b031690565b6000610b17826000611a3d565b6007546000906001600160401b0380821691610f0e91600160401b90910416846129c9565b610f1891906129f1565b6001600160401b0316600654610b179190612980565b610f36611aa4565b60035442600160a01b9091046001600160401b031610610f685760405162461bcd60e51b8152600401610b7690612920565b600655565b6007546006546000916001600160401b038082169291610f9691600160401b90910416856129c9565b6001600160401b0316610fa99190612980565b610b1791906129b5565b600054610100900460ff1615808015610fd35750600054600160ff909116105b80610ff45750610fe230611a95565b158015610ff4575060005460ff166001145b6110575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b76565b6000805460ff19166001179055801561107a576000805461ff0019166101001790555b61108382611b03565b61108e826000611b5e565b6110a083600001518460200151611b8f565b6110bc836060015184608001518560a001518660c00151611bc0565b6110c98360400151611bf9565b801561110f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61111c611aa4565b60035442600160a01b9091046001600160401b03161061114e5760405162461bcd60e51b8152600401610b7690612920565b600780546001600160401b03909216600160401b0267ffffffffffffffff60401b19909216919091179055565b611183611aa4565b60035442600160a01b9091046001600160401b0316106111b55760405162461bcd60e51b8152600401610b7690612920565b600855565b6111c2611aa4565b600954600160e01b900460ff16156111ec5760405162461bcd60e51b8152600401610b7690612947565b600980546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b611220611aa4565b600954600160f81b900460ff16156112625760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401610b76565b600980546001600160f81b0316600160f81b179055565b611281611aa4565b60035442600160a01b9091046001600160401b0316106112b35760405162461bcd60e51b8152600401610b7690612920565b600780546001600160401b0319166001600160401b0392909216919091179055565b6112dd611aa4565b6009805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b600280540361133c5760405162461bcd60e51b8152600401610b7690612a17565b600280553361134c838383611c29565b60006113588484611a3d565b90506000811161139d5760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b6044820152606401610b76565b60008481526004602090815260408083206001600160a01b0387168452909152812080548392906113cf9084906128ef565b909155505060008481526004602090815260408083206001600160a01b03871684528252808320426001909101556005909152812080548392906114149084906128ef565b90915550506001600160a01b03831661143f5761143a6001600160a01b03831682611c4a565b6114b2565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb9061146d9085908590600401612a4e565b6020604051808303816000875af115801561148c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b09190612a67565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b61151d33611d60565b600954600160401b90046001600160a01b03166115745760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401610b76565b600954600160e81b900460ff16156115ce5760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610b76565b60005b8381101561171e5760008585838181106115ed576115ed6128c3565b90506020020160208101906116029190612718565b6001600160a01b03160361164d57611648838383818110611625576116256128c3565b6009546001600160a01b03600160401b9091041692602090910201359050611c4a565b61170c565b84848281811061165f5761165f6128c3565b90506020020160208101906116749190612718565b6009546001600160a01b039182169163a9059cbb91600160401b9004168585858181106116a3576116a36128c3565b905060200201356040518363ffffffff1660e01b81526004016116c7929190612a4e565b6020604051808303816000875af11580156116e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170a9190612a67565b505b8061171681612907565b9150506115d1565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a5848484846040516117549493929190612abf565b60405180910390a150505050565b61176a611aa4565b6001600160a01b0381166117cf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b76565b610c8381611b03565b60028054036117f95760405162461bcd60e51b8152600401610b7690612a17565b600280556000805b848110156119295761182c86868381811061181e5761181e6128c3565b905060200201358585611c29565b6000611850878784818110611843576118436128c3565b9050602002013586611a3d565b9050801561191657806004600089898681811061186f5761186f6128c3565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b0316815260200190815260200160002060000160008282546118b991906128ef565b90915550429050600460008989868181106118d6576118d66128c3565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a16825290925290206001015561191381846128ef565b92505b508061192181612907565b915050611801565b506001600160a01b038316600090815260056020526040812080548392906119529084906128ef565b90915550506001600160a01b03831661197d576119786001600160a01b03831682611c4a565b6119f0565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906119ab9085908590600401612a4e565b6020604051808303816000875af11580156119ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ee9190612a67565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b1338387878786604051611a2996959493929190612b22565b60405180910390a150506001600255505050565b600080611a5d611a56611a4f85610d8f565b8686611eed565b8585611f75565b60008581526004602090815260408083206001600160a01b0388168452909152902054909150611a8d9082612b61565b949350505050565b6001600160a01b03163b151590565b33611aad610ec7565b6001600160a01b031614610d275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b76565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff16611b855760405162461bcd60e51b8152600401610b7690612b78565b610d118282611f85565b600054610100900460ff16611bb65760405162461bcd60e51b8152600401610b7690612b78565b610d11828261201f565b600054610100900460ff16611be75760405162461bcd60e51b8152600401610b7690612b78565b611bf384848484612084565b50505050565b600054610100900460ff16611c205760405162461bcd60e51b8152600401610b7690612b78565b610c8381612105565b611c34838383612141565b611c3f8383836121f6565b61110f838383612241565b80471015611c9a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610b76565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611ce7576040519150601f19603f3d011682016040523d82523d6000602084013e611cec565b606091505b505090508061110f5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610b76565b6003600954600160f01b900460ff166003811115611d8057611d80612650565b03611dbf5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401610b76565b6002600954600160f01b900460ff166003811115611ddf57611ddf612650565b03611de75750565b6001600954600160f01b900460ff166003811115611e0757611e07612650565b03611e6a576009546001600160a01b03828116600160401b9092041614610c835760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401610b76565b6000600954600160f01b900460ff166003811115611e8a57611e8a612650565b03610c8357806001600160a01b0316611ea1610ec7565b6001600160a01b031614610c835760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401610b76565b600754600090600160401b90046001600160401b0316421015611f1257506000610ad6565b600754600160801b90046001600160401b031615801590611f445750600754600160801b90046001600160401b031642115b15611f6c57600754611f6590600160801b90046001600160401b0316610ee9565b9050610ad6565b611f6542610ee9565b600060085484611a8d91906129b5565b600054610100900460ff16611fac5760405162461bcd60e51b8152600401610b7690612b78565b611fbc63ac2ba33360e01b612306565b60098054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b83600381111561201657612016612650565b02179055505050565b600054610100900460ff166120465760405162461bcd60e51b8152600401610b7690612b78565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055610d11631ba050e960e21b612306565b600054610100900460ff166120ab5760405162461bcd60e51b8152600401610b7690612b78565b6006849055600780546001600160401b03838116600160801b02600160801b600160c01b0319868316600160401b026001600160801b0319909416928816929092179290921716179055611bf363c9f600a960e01b612306565b600054610100900460ff1661212c5760405162461bcd60e51b8152600401610b7690612b78565b6008819055610c83632d5305cb60e21b612306565b6003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa15801561218c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b09190612bc3565b6001600160a01b03161461110f5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b6044820152606401610b76565b600954426001600160401b039091161061110f5760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b6044820152606401610b76565b60075442600160401b9091046001600160401b0316106122915760405162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b6044820152606401610b76565b6007546122a7906001600160401b031642612b61565b60008481526004602090815260408083206001600160a01b03871684529091529020600101541061110f5760405162461bcd60e51b8152602060048201526009602482015268544f4f5f4541524c5960b81b6044820152606401610b76565b6001600160e01b0319808216900361235f5760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401610b76565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60008083601f84011261239957600080fd5b5081356001600160401b038111156123b057600080fd5b6020830191508360208260051b85010111156123cb57600080fd5b9250929050565b6001600160a01b0381168114610c8357600080fd5b80356123f2816123d2565b919050565b60008060006040848603121561240c57600080fd5b83356001600160401b0381111561242257600080fd5b61242e86828701612387565b9094509250506020840135612442816123d2565b809150509250925092565b60006020828403121561245f57600080fd5b81356001600160e01b031981168114610ad657600080fd5b600060208083528351808285015260005b818110156124a457858101830151858201604001528201612488565b818111156124b6576000604083870101525b50601f01601f1916929092016040019392505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715612504576125046124cc565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612532576125326124cc565b604052919050565b6000806000806080858703121561255057600080fd5b843561255b816123d2565b935060208581013561256c816123d2565b93506040860135925060608601356001600160401b038082111561258f57600080fd5b818801915088601f8301126125a357600080fd5b8135818111156125b5576125b56124cc565b6125c7601f8201601f1916850161250a565b915080825289848285010111156125dd57600080fd5b808484018584013760008482840101525080935050505092959194509250565b80356001600160401b03811681146123f257600080fd5b60006020828403121561262657600080fd5b610ad6826125fd565b60006020828403121561264157600080fd5b813560048110610ad657600080fd5b634e487b7160e01b600052602160045260246000fd5b602081016004831061268857634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156126a057600080fd5b5035919050565b600080604083850312156126ba57600080fd5b8235915060208301356126cc816123d2565b809150509250929050565b600080602083850312156126ea57600080fd5b82356001600160401b0381111561270057600080fd5b61270c85828601612387565b90969095509350505050565b60006020828403121561272a57600080fd5b8135610ad6816123d2565b6001600160a01b0391909116815260200190565b60008082840361010081121561275e57600080fd5b60e081121561276c57600080fd5b506127756124e2565b8335612780816123d2565b815261278e602085016125fd565b602082015260408401356040820152606084013560608201526127b3608085016125fd565b60808201526127c460a085016125fd565b60a08201526127d560c085016125fd565b60c082015291506127e860e084016123e7565b90509250929050565b6000806000806040858703121561280757600080fd5b84356001600160401b038082111561281e57600080fd5b61282a88838901612387565b9096509450602087013591508082111561284357600080fd5b5061285087828801612387565b95989497509550505050565b6000806000806060858703121561287257600080fd5b84356001600160401b0381111561288857600080fd5b61289487828801612387565b90955093505060208501356128a8816123d2565b915060408501356128b8816123d2565b939692955090935050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115612902576129026128d9565b500190565b600060018201612919576129196128d9565b5060010190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b60006020828403121561297957600080fd5b5051919050565b600081600019048311821515161561299a5761299a6128d9565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826129c4576129c461299f565b500490565b60006001600160401b03838116908316818110156129e9576129e96128d9565b039392505050565b60006001600160401b0380841680612a0b57612a0b61299f565b92169190910492915050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b03929092168252602082015260400190565b600060208284031215612a7957600080fd5b81518015158114610ad657600080fd5b81835260006001600160fb1b03831115612aa257600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b87811015612b02578235612ae5816123d2565b6001600160a01b0316825260209283019290910190600101612ad2565b508381036020850152612b16818688612a89565b98975050505050505050565b600060018060a01b038089168352808816602084015260a06040840152612b4d60a084018789612a89565b941660608301525060800152949350505050565b600082821015612b7357612b736128d9565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208284031215612bd557600080fd5b8151610ad6816123d256fea2646970667358221220ee5538a130d54b989a5f058ed321f050781ac93d328b4fdb93740f18f2425dc164736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/presets/ERC721EqualInstantStream":{"address":{"1":"0xBB0AA646E8D63d920a7Ab1C96Ba082cbF075DcDA","3":"0x03EcE0a5f417eC136a78F8177De4699762389d2d","4":"0x2f6b1E887eA2d7624C285F2598122004F4Ed6476","5":"0xeD2d1FBE8A6e9e428A343D67088AC299EbCC1F18","25":"0x437f9E3A2EF9089Bf3C8A89599b40f62fA2Bb3F9","66":"0xA2E7c4793a038362406C9e750509f2EDB38092cC","137":"0xdcf439bFdA5C2a7563B670c2194fA12cD34F95B9","250":"0x97BA377E12dCA8a81b9d304F5e27D179E6ca1FBA","280":"0x023c4579aBACC3B5b68f616BF69b5B0ce8799Eb2","4002":"0x97BA377E12dCA8a81b9d304F5e27D179E6ca1FBA","43113":"0x3E368e34Ae2CD9F2617F397cE6B6310fE1cAEaed","43114":"0x2a89238074A3eF4cE606ed3f53CfE5C50CdD9299","421611":"0x355d2D09CF839D2CBBcdDf29198Fb3460ef0A3F5","arbitrumTestnet":"0x355d2D09CF839D2CBBcdDf29198Fb3460ef0A3F5","avalanche":"0x2a89238074A3eF4cE606ed3f53CfE5C50CdD9299","avalancheFujiTestnet":"0x3E368e34Ae2CD9F2617F397cE6B6310fE1cAEaed","cronos":"0x437f9E3A2EF9089Bf3C8A89599b40f62fA2Bb3F9","ftmTestnet":"0x97BA377E12dCA8a81b9d304F5e27D179E6ca1FBA","goerli":"0xeD2d1FBE8A6e9e428A343D67088AC299EbCC1F18","mainnet":"0xBB0AA646E8D63d920a7Ab1C96Ba082cbF075DcDA","okcMainnet":"0xA2E7c4793a038362406C9e750509f2EDB38092cC","opera":"0x97BA377E12dCA8a81b9d304F5e27D179E6ca1FBA","polygon":"0xdcf439bFdA5C2a7563B670c2194fA12cD34F95B9","rinkeby":"0x2f6b1E887eA2d7624C285F2598122004F4Ed6476","ropsten":"0x03EcE0a5f417eC136a78F8177De4699762389d2d","zksyncTestnet":"0x023c4579aBACC3B5b68f616BF69b5B0ce8799Eb2"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721EqualInstantStream","sourceName":"contracts/streams/ERC721/presets/ERC721EqualInstantStream.sol","abi":[{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint256","name":"totalTickets","type":"uint256"},{"internalType":"uint64","name":"claimLockedUntil","type":"uint64"}],"internalType":"struct ERC721EqualInstantStream.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimLockedUntil","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721EqualSplitExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721InstantReleaseExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721LockableClaimExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint256","name":"totalTickets","type":"uint256"},{"internalType":"uint64","name":"claimLockedUntil","type":"uint64"}],"internalType":"struct ERC721EqualInstantStream.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setClaimLockedUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setTotalTickets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTickets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162002c2a38038062002c2a833981016040819052620000349162000558565b6200003f3362000057565b6001600255620000508133620000b2565b5062000651565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620000d35750600054600160ff909116105b80620001035750620000f0306200022760201b620016971760201c565b15801562000103575060005460ff166001145b6200016c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000190576000805461ff0019166101001790555b6200019b8262000057565b620001a882600062000236565b82516020840151620001bb919062000270565b6040830151620001cb90620002a6565b6060830151620001db90620002de565b801562000222576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6001600160a01b03163b151590565b600054610100900460ff16620002605760405162461bcd60e51b81526004016200016390620005f0565b6200026c828262000313565b5050565b600054610100900460ff166200029a5760405162461bcd60e51b81526004016200016390620005f0565b6200026c8282620003ba565b600054610100900460ff16620002d05760405162461bcd60e51b81526004016200016390620005f0565b620002db8162000424565b50565b600054610100900460ff16620003085760405162461bcd60e51b81526004016200016390620005f0565b620002db8162000465565b600054610100900460ff166200033d5760405162461bcd60e51b81526004016200016390620005f0565b6200034f63ac2ba33360e01b620004b7565b60078054600160401b600160e01b03198116680100000000000000006001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b836003811115620003b157620003b16200063b565b02179055505050565b600054610100900460ff16620003e45760405162461bcd60e51b81526004016200016390620005f0565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b038516171790556200026c631ba050e960e21b620004b7565b600054610100900460ff166200044e5760405162461bcd60e51b81526004016200016390620005f0565b6006819055620002db632d5305cb60e21b620004b7565b600054610100900460ff166200048f5760405162461bcd60e51b81526004016200016390620005f0565b600780546001600160401b0319166001600160401b038316179055620002db6317b2ef4360e31b5b6001600160e01b03198082169003620005135760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640162000163565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b80516001600160401b03811681146200055357600080fd5b919050565b6000608082840312156200056b57600080fd5b604051608081016001600160401b03811182821017156200059c57634e487b7160e01b600052604160045260246000fd5b60405282516001600160a01b0381168114620005b757600080fd5b8152620005c7602084016200053b565b602082015260408301516040820152620005e4606084016200053b565b60608201529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b6125c980620006616000396000f3fe6080604052600436106102165760003560e01c8063790c0c731161011f578063790c0c73146105b7578063837fe140146105d757806389c6b815146105ec5780638da5cb5b1461060c5780639199690b146102e6578063968d9b2c1461062e5780639f1a2f061461064e578063a1cf64931461066e578063ae890c0a146106b1578063af121f54146106d1578063c0881849146106f2578063c0bb38ff14610728578063c723955a14610748578063d5ed4d5a1461075d578063da82b2271461077d578063dcbe353f14610792578063dd11247e146107b9578063ddd5e1b2146107cf578063de6d6d96146107ef578063f2fde38b1461080f578063f389b6e41461082f578063f4415ad61461084f578063f66e38c21461088757600080fd5b80630191c0af1461022f57806301ffc9a71461026257806306fdde031461029257806312599909146102e657806314427a96146102fa578063150b7a02146103325780631bc51b26146102e65780631c725fdc1461037657806325289bad146103965780632890d033146103bd5780632c0e1313146103d25780632c233067146103f25780632d00b58714610412578063379607f5146104405780633b3f12e2146104605780633d2dded51461048057806349561cb9146104bd57806354fd4d50146104de57806357dc48c81461050d5780636057e0ec146105615780636ba4c13814610582578063715018a6146105a257600080fd5b3661022a576000341161022857600080fd5b005b600080fd5b34801561023b57600080fd5b5061024f61024a366004611e59565b6108a7565b6040519081526020015b60405180910390f35b34801561026e57600080fd5b5061028261027d366004611eaf565b6108fd565b6040519015158152602001610259565b34801561029e57600080fd5b506102d96040518060400160405280601b81526020017a45524337323120457175616c20496e7374616e742053747265616d60281b81525081565b6040516102599190611ed9565b3480156102f257600080fd5b506001610282565b34801561030657600080fd5b5060075461031a906001600160401b031681565b6040516001600160401b039091168152602001610259565b34801561033e57600080fd5b5061035d61034d366004611f74565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610259565b34801561038257600080fd5b50610228610391366004612053565b61093d565b3480156103a257600080fd5b5060035461031a90600160a01b90046001600160401b031681565b3480156103c957600080fd5b5061024f6109cc565b3480156103de57600080fd5b506102286103ed366004612053565b6109dd565b3480156103fe57600080fd5b5061022861040d36600461206e565b610a39565b34801561041e57600080fd5b5060075461043390600160f01b900460ff1681565b60405161025991906120a5565b34801561044c57600080fd5b5061022861045b3660046120cd565b610a98565b34801561046c57600080fd5b5061024f61047b366004611e59565b610aa6565b34801561048c57600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461024f565b3480156104c957600080fd5b5060075461028290600160f81b900460ff1681565b3480156104ea57600080fd5b506102d960405180604001604052806003815260200162302e3160e81b81525081565b34801561051957600080fd5b5061054c6105283660046120e6565b60046020908152600092835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610259565b34801561056d57600080fd5b5060075461028290600160e01b900460ff1681565b34801561058e57600080fd5b5061022861059d366004612116565b610b24565b3480156105ae57600080fd5b50610228610b35565b3480156105c357600080fd5b5061024f6105d2366004612157565b610b49565b3480156105e357600080fd5b50610228610c0d565b3480156105f857600080fd5b5061024f610607366004612116565b610c54565b34801561061857600080fd5b50610621610c69565b6040516102599190612174565b34801561063a57600080fd5b5061024f6106493660046120cd565b610c7e565b34801561065a57600080fd5b50610228610669366004612188565b610c8b565b34801561067a57600080fd5b5061024f6106893660046120e6565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b3480156106bd57600080fd5b506102286106cc3660046120cd565b610ddd565b3480156106dd57600080fd5b5060075461028290600160e81b900460ff1681565b3480156106fe57600080fd5b5061024f61070d366004612157565b6001600160a01b031660009081526005602052604090205490565b34801561073457600080fd5b50610228610743366004612157565b610e1c565b34801561075457600080fd5b50610228610e7a565b34801561076957600080fd5b50600354610621906001600160a01b031681565b34801561078957600080fd5b50610228610edb565b34801561079e57600080fd5b5060075461062190600160401b90046001600160a01b031681565b3480156107c557600080fd5b5061024f60065481565b3480156107db57600080fd5b506102286107ea3660046120e6565b610f21565b3480156107fb57600080fd5b5061022861080a366004612219565b61111a565b34801561081b57600080fd5b5061022861082a366004612157565b611368565b34801561083b57600080fd5b5061022861084a366004612284565b6113de565b34801561085b57600080fd5b5061024f61086a3660046120cd565b600090815260046020908152604080832083805290915290205490565b34801561089357600080fd5b5061024f6108a23660046120e6565b611643565b600080805b848110156108f4576108d68686838181106108c9576108c96122eb565b9050602002013585611643565b6108e09083612317565b9150806108ec8161232f565b9150506108ac565b50949350505050565b60006301ffc9a760e01b6001600160e01b03198316148061093757506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b6109456116a6565b6003546001600160401b03600160a01b90910481169082161161099f5760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b60448201526064015b60405180910390fd5b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b60006109d86000610b49565b905090565b6109e56116a6565b60035442600160a01b9091046001600160401b031610610a175760405162461bcd60e51b815260040161099690612348565b600780546001600160401b0319166001600160401b0392909216919091179055565b610a416116a6565b600754600160f81b900460ff1615610a6b5760405162461bcd60e51b81526004016109969061236f565b6007805482919060ff60f01b1916600160f01b836003811115610a9057610a9061208f565b021790555050565b610aa3816000610f21565b50565b600080805b848110156108f45760046000878784818110610ac957610ac96122eb565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b031681526020019081526020016000206000015482610b109190612317565b915080610b1c8161232f565b915050610aab565b610b3182826000336113de565b5050565b610b3d6116a6565b610b476000611705565b565b60006001600160a01b038216610b7d576001600160a01b038216600090815260056020526040902054610937904790612317565b6040516370a0823160e01b81526001600160a01b038316906370a0823190610ba9903090600401612174565b602060405180830381865afa158015610bc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bea919061238f565b6001600160a01b0383166000908152600560205260409020546109379190612317565b610c156116a6565b600754600160e01b900460ff1615610c3f5760405162461bcd60e51b81526004016109969061236f565b6007805460ff60e01b1916600160e01b179055565b6000610c6283836000610aa6565b9392505050565b6000546201000090046001600160a01b031690565b6000610937826000611643565b600054610100900460ff1615808015610cab5750600054600160ff909116105b80610ccc5750610cba30611697565b158015610ccc575060005460ff166001145b610d2f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610996565b6000805460ff191660011790558015610d52576000805461ff0019166101001790555b610d5b82611705565b610d66826000611760565b610d7883600001518460200151611791565b610d8583604001516117c2565b610d9283606001516117f2565b8015610dd8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610de56116a6565b60035442600160a01b9091046001600160401b031610610e175760405162461bcd60e51b815260040161099690612348565b600655565b610e246116a6565b600754600160e01b900460ff1615610e4e5760405162461bcd60e51b81526004016109969061236f565b600780546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b610e826116a6565b600754600160f81b900460ff1615610ec45760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401610996565b600780546001600160f81b0316600160f81b179055565b610ee36116a6565b6007805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b6002805403610f425760405162461bcd60e51b8152600401610996906123a8565b6002805533610f52838383611822565b6000610f5e8484611643565b905060008111610fa35760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b6044820152606401610996565b60008481526004602090815260408083206001600160a01b038716845290915281208054839290610fd5908490612317565b909155505060008481526004602090815260408083206001600160a01b038716845282528083204260019091015560059091528120805483929061101a908490612317565b90915550506001600160a01b038316611045576110406001600160a01b03831682611838565b6110b8565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb9061107390859085906004016123df565b6020604051808303816000875af1158015611092573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b691906123f8565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b6111233361194e565b600754600160401b90046001600160a01b031661117a5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401610996565b600754600160e81b900460ff16156111d45760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610996565b60005b838110156113245760008585838181106111f3576111f36122eb565b90506020020160208101906112089190612157565b6001600160a01b0316036112535761124e83838381811061122b5761122b6122eb565b6007546001600160a01b03600160401b9091041692602090910201359050611838565b611312565b848482818110611265576112656122eb565b905060200201602081019061127a9190612157565b6007546001600160a01b039182169163a9059cbb91600160401b9004168585858181106112a9576112a96122eb565b905060200201356040518363ffffffff1660e01b81526004016112cd9291906123df565b6020604051808303816000875af11580156112ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131091906123f8565b505b8061131c8161232f565b9150506111d7565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a58484848460405161135a9493929190612450565b60405180910390a150505050565b6113706116a6565b6001600160a01b0381166113d55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610996565b610aa381611705565b60028054036113ff5760405162461bcd60e51b8152600401610996906123a8565b600280556000805b8481101561152f57611432868683818110611424576114246122eb565b905060200201358585611822565b6000611456878784818110611449576114496122eb565b9050602002013586611643565b9050801561151c578060046000898986818110611475576114756122eb565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b0316815260200190815260200160002060000160008282546114bf9190612317565b90915550429050600460008989868181106114dc576114dc6122eb565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a1682529092529020600101556115198184612317565b92505b50806115278161232f565b915050611407565b506001600160a01b03831660009081526005602052604081208054839290611558908490612317565b90915550506001600160a01b0383166115835761157e6001600160a01b03831682611838565b6115f6565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906115b190859085906004016123df565b6020604051808303816000875af11580156115d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f491906123f8565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b133838787878660405161162f969594939291906124b3565b60405180910390a150506001600255505050565b60008061165f61165861165585610b49565b90565b8585611adb565b60008581526004602090815260408083206001600160a01b038816845290915290205490915061168f90826124f2565b949350505050565b6001600160a01b03163b151590565b336116af610c69565b6001600160a01b031614610b475760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610996565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff166117875760405162461bcd60e51b815260040161099690612509565b610b318282611aeb565b600054610100900460ff166117b85760405162461bcd60e51b815260040161099690612509565b610b318282611b85565b600054610100900460ff166117e95760405162461bcd60e51b815260040161099690612509565b610aa381611bea565b600054610100900460ff166118195760405162461bcd60e51b815260040161099690612509565b610aa381611c26565b61182d838383611c78565b610dd8838383611d2d565b804710156118885760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610996565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146118d5576040519150601f19603f3d011682016040523d82523d6000602084013e6118da565b606091505b5050905080610dd85760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610996565b6003600754600160f01b900460ff16600381111561196e5761196e61208f565b036119ad5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401610996565b6002600754600160f01b900460ff1660038111156119cd576119cd61208f565b036119d55750565b6001600754600160f01b900460ff1660038111156119f5576119f561208f565b03611a58576007546001600160a01b03828116600160401b9092041614610aa35760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401610996565b6000600754600160f01b900460ff166003811115611a7857611a7861208f565b03610aa357806001600160a01b0316611a8f610c69565b6001600160a01b031614610aa35760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401610996565b60006006548461168f9190612554565b600054610100900460ff16611b125760405162461bcd60e51b815260040161099690612509565b611b2263ac2ba33360e01b611d78565b60078054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b836003811115611b7c57611b7c61208f565b02179055505050565b600054610100900460ff16611bac5760405162461bcd60e51b815260040161099690612509565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055610b31631ba050e960e21b611d78565b600054610100900460ff16611c115760405162461bcd60e51b815260040161099690612509565b6006819055610aa3632d5305cb60e21b611d78565b600054610100900460ff16611c4d5760405162461bcd60e51b815260040161099690612509565b600780546001600160401b0319166001600160401b038316179055610aa36317b2ef4360e31b611d78565b6003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa158015611cc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce79190612576565b6001600160a01b031614610dd85760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b6044820152606401610996565b600754426001600160401b0390911610610dd85760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b6044820152606401610996565b6001600160e01b03198082169003611dd15760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401610996565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60008083601f840112611e0b57600080fd5b5081356001600160401b03811115611e2257600080fd5b6020830191508360208260051b8501011115611e3d57600080fd5b9250929050565b6001600160a01b0381168114610aa357600080fd5b600080600060408486031215611e6e57600080fd5b83356001600160401b03811115611e8457600080fd5b611e9086828701611df9565b9094509250506020840135611ea481611e44565b809150509250925092565b600060208284031215611ec157600080fd5b81356001600160e01b031981168114610c6257600080fd5b600060208083528351808285015260005b81811015611f0657858101830151858201604001528201611eea565b81811115611f18576000604083870101525b50601f01601f1916929092016040019392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611f6c57611f6c611f2e565b604052919050565b60008060008060808587031215611f8a57600080fd5b8435611f9581611e44565b9350602085810135611fa681611e44565b93506040860135925060608601356001600160401b0380821115611fc957600080fd5b818801915088601f830112611fdd57600080fd5b813581811115611fef57611fef611f2e565b612001601f8201601f19168501611f44565b9150808252898482850101111561201757600080fd5b808484018584013760008482840101525080935050505092959194509250565b80356001600160401b038116811461204e57600080fd5b919050565b60006020828403121561206557600080fd5b610c6282612037565b60006020828403121561208057600080fd5b813560048110610c6257600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106120c757634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156120df57600080fd5b5035919050565b600080604083850312156120f957600080fd5b82359150602083013561210b81611e44565b809150509250929050565b6000806020838503121561212957600080fd5b82356001600160401b0381111561213f57600080fd5b61214b85828601611df9565b90969095509350505050565b60006020828403121561216957600080fd5b8135610c6281611e44565b6001600160a01b0391909116815260200190565b60008082840360a081121561219c57600080fd5b60808112156121aa57600080fd5b50604051608081018181106001600160401b03821117156121cd576121cd611f2e565b60405283356121db81611e44565b81526121e960208501612037565b60208201526040840135604082015261220460608501612037565b60608201529150608083013561210b81611e44565b6000806000806040858703121561222f57600080fd5b84356001600160401b038082111561224657600080fd5b61225288838901611df9565b9096509450602087013591508082111561226b57600080fd5b5061227887828801611df9565b95989497509550505050565b6000806000806060858703121561229a57600080fd5b84356001600160401b038111156122b057600080fd5b6122bc87828801611df9565b90955093505060208501356122d081611e44565b915060408501356122e081611e44565b939692955090935050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561232a5761232a612301565b500190565b60006001820161234157612341612301565b5060010190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b6000602082840312156123a157600080fd5b5051919050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b03929092168252602082015260400190565b60006020828403121561240a57600080fd5b81518015158114610c6257600080fd5b81835260006001600160fb1b0383111561243357600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b8781101561249357823561247681611e44565b6001600160a01b0316825260209283019290910190600101612463565b5083810360208501526124a781868861241a565b98975050505050505050565b600060018060a01b038089168352808816602084015260a060408401526124de60a08401878961241a565b941660608301525060800152949350505050565b60008282101561250457612504612301565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008261257157634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561258857600080fd5b8151610c6281611e4456fea2646970667358221220f004f74535c85ca5512391ab9cec687efad6e2f7955e28367f4447cc8e1fb5d664736f6c634300080f0033","deployedBytecode":"0x6080604052600436106102165760003560e01c8063790c0c731161011f578063790c0c73146105b7578063837fe140146105d757806389c6b815146105ec5780638da5cb5b1461060c5780639199690b146102e6578063968d9b2c1461062e5780639f1a2f061461064e578063a1cf64931461066e578063ae890c0a146106b1578063af121f54146106d1578063c0881849146106f2578063c0bb38ff14610728578063c723955a14610748578063d5ed4d5a1461075d578063da82b2271461077d578063dcbe353f14610792578063dd11247e146107b9578063ddd5e1b2146107cf578063de6d6d96146107ef578063f2fde38b1461080f578063f389b6e41461082f578063f4415ad61461084f578063f66e38c21461088757600080fd5b80630191c0af1461022f57806301ffc9a71461026257806306fdde031461029257806312599909146102e657806314427a96146102fa578063150b7a02146103325780631bc51b26146102e65780631c725fdc1461037657806325289bad146103965780632890d033146103bd5780632c0e1313146103d25780632c233067146103f25780632d00b58714610412578063379607f5146104405780633b3f12e2146104605780633d2dded51461048057806349561cb9146104bd57806354fd4d50146104de57806357dc48c81461050d5780636057e0ec146105615780636ba4c13814610582578063715018a6146105a257600080fd5b3661022a576000341161022857600080fd5b005b600080fd5b34801561023b57600080fd5b5061024f61024a366004611e59565b6108a7565b6040519081526020015b60405180910390f35b34801561026e57600080fd5b5061028261027d366004611eaf565b6108fd565b6040519015158152602001610259565b34801561029e57600080fd5b506102d96040518060400160405280601b81526020017a45524337323120457175616c20496e7374616e742053747265616d60281b81525081565b6040516102599190611ed9565b3480156102f257600080fd5b506001610282565b34801561030657600080fd5b5060075461031a906001600160401b031681565b6040516001600160401b039091168152602001610259565b34801561033e57600080fd5b5061035d61034d366004611f74565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610259565b34801561038257600080fd5b50610228610391366004612053565b61093d565b3480156103a257600080fd5b5060035461031a90600160a01b90046001600160401b031681565b3480156103c957600080fd5b5061024f6109cc565b3480156103de57600080fd5b506102286103ed366004612053565b6109dd565b3480156103fe57600080fd5b5061022861040d36600461206e565b610a39565b34801561041e57600080fd5b5060075461043390600160f01b900460ff1681565b60405161025991906120a5565b34801561044c57600080fd5b5061022861045b3660046120cd565b610a98565b34801561046c57600080fd5b5061024f61047b366004611e59565b610aa6565b34801561048c57600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461024f565b3480156104c957600080fd5b5060075461028290600160f81b900460ff1681565b3480156104ea57600080fd5b506102d960405180604001604052806003815260200162302e3160e81b81525081565b34801561051957600080fd5b5061054c6105283660046120e6565b60046020908152600092835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610259565b34801561056d57600080fd5b5060075461028290600160e01b900460ff1681565b34801561058e57600080fd5b5061022861059d366004612116565b610b24565b3480156105ae57600080fd5b50610228610b35565b3480156105c357600080fd5b5061024f6105d2366004612157565b610b49565b3480156105e357600080fd5b50610228610c0d565b3480156105f857600080fd5b5061024f610607366004612116565b610c54565b34801561061857600080fd5b50610621610c69565b6040516102599190612174565b34801561063a57600080fd5b5061024f6106493660046120cd565b610c7e565b34801561065a57600080fd5b50610228610669366004612188565b610c8b565b34801561067a57600080fd5b5061024f6106893660046120e6565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b3480156106bd57600080fd5b506102286106cc3660046120cd565b610ddd565b3480156106dd57600080fd5b5060075461028290600160e81b900460ff1681565b3480156106fe57600080fd5b5061024f61070d366004612157565b6001600160a01b031660009081526005602052604090205490565b34801561073457600080fd5b50610228610743366004612157565b610e1c565b34801561075457600080fd5b50610228610e7a565b34801561076957600080fd5b50600354610621906001600160a01b031681565b34801561078957600080fd5b50610228610edb565b34801561079e57600080fd5b5060075461062190600160401b90046001600160a01b031681565b3480156107c557600080fd5b5061024f60065481565b3480156107db57600080fd5b506102286107ea3660046120e6565b610f21565b3480156107fb57600080fd5b5061022861080a366004612219565b61111a565b34801561081b57600080fd5b5061022861082a366004612157565b611368565b34801561083b57600080fd5b5061022861084a366004612284565b6113de565b34801561085b57600080fd5b5061024f61086a3660046120cd565b600090815260046020908152604080832083805290915290205490565b34801561089357600080fd5b5061024f6108a23660046120e6565b611643565b600080805b848110156108f4576108d68686838181106108c9576108c96122eb565b9050602002013585611643565b6108e09083612317565b9150806108ec8161232f565b9150506108ac565b50949350505050565b60006301ffc9a760e01b6001600160e01b03198316148061093757506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b6109456116a6565b6003546001600160401b03600160a01b90910481169082161161099f5760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b60448201526064015b60405180910390fd5b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b60006109d86000610b49565b905090565b6109e56116a6565b60035442600160a01b9091046001600160401b031610610a175760405162461bcd60e51b815260040161099690612348565b600780546001600160401b0319166001600160401b0392909216919091179055565b610a416116a6565b600754600160f81b900460ff1615610a6b5760405162461bcd60e51b81526004016109969061236f565b6007805482919060ff60f01b1916600160f01b836003811115610a9057610a9061208f565b021790555050565b610aa3816000610f21565b50565b600080805b848110156108f45760046000878784818110610ac957610ac96122eb565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b031681526020019081526020016000206000015482610b109190612317565b915080610b1c8161232f565b915050610aab565b610b3182826000336113de565b5050565b610b3d6116a6565b610b476000611705565b565b60006001600160a01b038216610b7d576001600160a01b038216600090815260056020526040902054610937904790612317565b6040516370a0823160e01b81526001600160a01b038316906370a0823190610ba9903090600401612174565b602060405180830381865afa158015610bc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bea919061238f565b6001600160a01b0383166000908152600560205260409020546109379190612317565b610c156116a6565b600754600160e01b900460ff1615610c3f5760405162461bcd60e51b81526004016109969061236f565b6007805460ff60e01b1916600160e01b179055565b6000610c6283836000610aa6565b9392505050565b6000546201000090046001600160a01b031690565b6000610937826000611643565b600054610100900460ff1615808015610cab5750600054600160ff909116105b80610ccc5750610cba30611697565b158015610ccc575060005460ff166001145b610d2f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610996565b6000805460ff191660011790558015610d52576000805461ff0019166101001790555b610d5b82611705565b610d66826000611760565b610d7883600001518460200151611791565b610d8583604001516117c2565b610d9283606001516117f2565b8015610dd8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610de56116a6565b60035442600160a01b9091046001600160401b031610610e175760405162461bcd60e51b815260040161099690612348565b600655565b610e246116a6565b600754600160e01b900460ff1615610e4e5760405162461bcd60e51b81526004016109969061236f565b600780546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b610e826116a6565b600754600160f81b900460ff1615610ec45760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401610996565b600780546001600160f81b0316600160f81b179055565b610ee36116a6565b6007805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b6002805403610f425760405162461bcd60e51b8152600401610996906123a8565b6002805533610f52838383611822565b6000610f5e8484611643565b905060008111610fa35760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b6044820152606401610996565b60008481526004602090815260408083206001600160a01b038716845290915281208054839290610fd5908490612317565b909155505060008481526004602090815260408083206001600160a01b038716845282528083204260019091015560059091528120805483929061101a908490612317565b90915550506001600160a01b038316611045576110406001600160a01b03831682611838565b6110b8565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb9061107390859085906004016123df565b6020604051808303816000875af1158015611092573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b691906123f8565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b6111233361194e565b600754600160401b90046001600160a01b031661117a5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401610996565b600754600160e81b900460ff16156111d45760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610996565b60005b838110156113245760008585838181106111f3576111f36122eb565b90506020020160208101906112089190612157565b6001600160a01b0316036112535761124e83838381811061122b5761122b6122eb565b6007546001600160a01b03600160401b9091041692602090910201359050611838565b611312565b848482818110611265576112656122eb565b905060200201602081019061127a9190612157565b6007546001600160a01b039182169163a9059cbb91600160401b9004168585858181106112a9576112a96122eb565b905060200201356040518363ffffffff1660e01b81526004016112cd9291906123df565b6020604051808303816000875af11580156112ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131091906123f8565b505b8061131c8161232f565b9150506111d7565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a58484848460405161135a9493929190612450565b60405180910390a150505050565b6113706116a6565b6001600160a01b0381166113d55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610996565b610aa381611705565b60028054036113ff5760405162461bcd60e51b8152600401610996906123a8565b600280556000805b8481101561152f57611432868683818110611424576114246122eb565b905060200201358585611822565b6000611456878784818110611449576114496122eb565b9050602002013586611643565b9050801561151c578060046000898986818110611475576114756122eb565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b0316815260200190815260200160002060000160008282546114bf9190612317565b90915550429050600460008989868181106114dc576114dc6122eb565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a1682529092529020600101556115198184612317565b92505b50806115278161232f565b915050611407565b506001600160a01b03831660009081526005602052604081208054839290611558908490612317565b90915550506001600160a01b0383166115835761157e6001600160a01b03831682611838565b6115f6565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906115b190859085906004016123df565b6020604051808303816000875af11580156115d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f491906123f8565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b133838787878660405161162f969594939291906124b3565b60405180910390a150506001600255505050565b60008061165f61165861165585610b49565b90565b8585611adb565b60008581526004602090815260408083206001600160a01b038816845290915290205490915061168f90826124f2565b949350505050565b6001600160a01b03163b151590565b336116af610c69565b6001600160a01b031614610b475760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610996565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff166117875760405162461bcd60e51b815260040161099690612509565b610b318282611aeb565b600054610100900460ff166117b85760405162461bcd60e51b815260040161099690612509565b610b318282611b85565b600054610100900460ff166117e95760405162461bcd60e51b815260040161099690612509565b610aa381611bea565b600054610100900460ff166118195760405162461bcd60e51b815260040161099690612509565b610aa381611c26565b61182d838383611c78565b610dd8838383611d2d565b804710156118885760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610996565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146118d5576040519150601f19603f3d011682016040523d82523d6000602084013e6118da565b606091505b5050905080610dd85760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610996565b6003600754600160f01b900460ff16600381111561196e5761196e61208f565b036119ad5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401610996565b6002600754600160f01b900460ff1660038111156119cd576119cd61208f565b036119d55750565b6001600754600160f01b900460ff1660038111156119f5576119f561208f565b03611a58576007546001600160a01b03828116600160401b9092041614610aa35760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401610996565b6000600754600160f01b900460ff166003811115611a7857611a7861208f565b03610aa357806001600160a01b0316611a8f610c69565b6001600160a01b031614610aa35760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401610996565b60006006548461168f9190612554565b600054610100900460ff16611b125760405162461bcd60e51b815260040161099690612509565b611b2263ac2ba33360e01b611d78565b60078054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b836003811115611b7c57611b7c61208f565b02179055505050565b600054610100900460ff16611bac5760405162461bcd60e51b815260040161099690612509565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055610b31631ba050e960e21b611d78565b600054610100900460ff16611c115760405162461bcd60e51b815260040161099690612509565b6006819055610aa3632d5305cb60e21b611d78565b600054610100900460ff16611c4d5760405162461bcd60e51b815260040161099690612509565b600780546001600160401b0319166001600160401b038316179055610aa36317b2ef4360e31b611d78565b6003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa158015611cc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce79190612576565b6001600160a01b031614610dd85760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b6044820152606401610996565b600754426001600160401b0390911610610dd85760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b6044820152606401610996565b6001600160e01b03198082169003611dd15760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401610996565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60008083601f840112611e0b57600080fd5b5081356001600160401b03811115611e2257600080fd5b6020830191508360208260051b8501011115611e3d57600080fd5b9250929050565b6001600160a01b0381168114610aa357600080fd5b600080600060408486031215611e6e57600080fd5b83356001600160401b03811115611e8457600080fd5b611e9086828701611df9565b9094509250506020840135611ea481611e44565b809150509250925092565b600060208284031215611ec157600080fd5b81356001600160e01b031981168114610c6257600080fd5b600060208083528351808285015260005b81811015611f0657858101830151858201604001528201611eea565b81811115611f18576000604083870101525b50601f01601f1916929092016040019392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611f6c57611f6c611f2e565b604052919050565b60008060008060808587031215611f8a57600080fd5b8435611f9581611e44565b9350602085810135611fa681611e44565b93506040860135925060608601356001600160401b0380821115611fc957600080fd5b818801915088601f830112611fdd57600080fd5b813581811115611fef57611fef611f2e565b612001601f8201601f19168501611f44565b9150808252898482850101111561201757600080fd5b808484018584013760008482840101525080935050505092959194509250565b80356001600160401b038116811461204e57600080fd5b919050565b60006020828403121561206557600080fd5b610c6282612037565b60006020828403121561208057600080fd5b813560048110610c6257600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106120c757634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156120df57600080fd5b5035919050565b600080604083850312156120f957600080fd5b82359150602083013561210b81611e44565b809150509250929050565b6000806020838503121561212957600080fd5b82356001600160401b0381111561213f57600080fd5b61214b85828601611df9565b90969095509350505050565b60006020828403121561216957600080fd5b8135610c6281611e44565b6001600160a01b0391909116815260200190565b60008082840360a081121561219c57600080fd5b60808112156121aa57600080fd5b50604051608081018181106001600160401b03821117156121cd576121cd611f2e565b60405283356121db81611e44565b81526121e960208501612037565b60208201526040840135604082015261220460608501612037565b60608201529150608083013561210b81611e44565b6000806000806040858703121561222f57600080fd5b84356001600160401b038082111561224657600080fd5b61225288838901611df9565b9096509450602087013591508082111561226b57600080fd5b5061227887828801611df9565b95989497509550505050565b6000806000806060858703121561229a57600080fd5b84356001600160401b038111156122b057600080fd5b6122bc87828801611df9565b90955093505060208501356122d081611e44565b915060408501356122e081611e44565b939692955090935050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561232a5761232a612301565b500190565b60006001820161234157612341612301565b5060010190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b6000602082840312156123a157600080fd5b5051919050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b03929092168252602082015260400190565b60006020828403121561240a57600080fd5b81518015158114610c6257600080fd5b81835260006001600160fb1b0383111561243357600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b8781101561249357823561247681611e44565b6001600160a01b0316825260209283019290910190600101612463565b5083810360208501526124a781868861241a565b98975050505050505050565b600060018060a01b038089168352808816602084015260a060408401526124de60a08401878961241a565b941660608301525060800152949350505050565b60008282101561250457612504612301565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008261257157634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561258857600080fd5b8151610c6281611e4456fea2646970667358221220f004f74535c85ca5512391ab9cec687efad6e2f7955e28367f4447cc8e1fb5d664736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/presets/ERC721EqualVestingStream":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721EqualVestingStream","sourceName":"contracts/streams/ERC721/presets/ERC721EqualVestingStream.sol","abi":[{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"},{"internalType":"uint64","name":"durationSeconds","type":"uint64"},{"internalType":"uint256","name":"totalTickets","type":"uint256"},{"internalType":"uint64","name":"claimLockedUntil","type":"uint64"}],"internalType":"struct ERC721EqualVestingStream.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimLockedUntil","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721EqualSplitExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721LockableClaimExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721VestingReleaseExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"},{"internalType":"uint64","name":"durationSeconds","type":"uint64"},{"internalType":"uint256","name":"totalTickets","type":"uint256"},{"internalType":"uint64","name":"claimLockedUntil","type":"uint64"}],"internalType":"struct ERC721EqualVestingStream.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setClaimLockedUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setTotalTickets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setVestingDurationSeconds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setVestingStartTimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTickets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vestingDurationSeconds","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vestingStartTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x60806040523480156200001157600080fd5b506040516200302738038062003027833981016040819052620000349162000629565b6200003f3362000057565b6001600255620000508133620000b2565b506200073b565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620000d35750600054600160ff909116105b80620001035750620000f0306200024160201b620018231760201c565b15801562000103575060005460ff166001145b6200016c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000190576000805461ff0019166101001790555b6200019b8262000057565b620001a882600062000250565b82516020840151620001bb91906200028a565b620001d583604001518460600151620002c060201b60201c565b6080830151620001e590620002f6565b60a0830151620001f5906200032e565b80156200023c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6001600160a01b03163b151590565b600054610100900460ff166200027a5760405162461bcd60e51b81526004016200016390620006da565b62000286828262000363565b5050565b600054610100900460ff16620002b45760405162461bcd60e51b81526004016200016390620006da565b6200028682826200040a565b600054610100900460ff16620002ea5760405162461bcd60e51b81526004016200016390620006da565b62000286828262000474565b600054610100900460ff16620003205760405162461bcd60e51b81526004016200016390620006da565b6200032b81620004dd565b50565b600054610100900460ff16620003585760405162461bcd60e51b81526004016200016390620006da565b6200032b816200051e565b600054610100900460ff166200038d5760405162461bcd60e51b81526004016200016390620006da565b6200039f63ac2ba33360e01b62000570565b60088054600160401b600160e01b03198116680100000000000000006001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b83600381111562000401576200040162000725565b02179055505050565b600054610100900460ff16620004345760405162461bcd60e51b81526004016200016390620006da565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b0385161717905562000286631ba050e960e21b62000570565b600054610100900460ff166200049e5760405162461bcd60e51b81526004016200016390620006da565b600680546001600160401b0383811668010000000000000000026001600160801b0319909216908516171790556200028663d1bdccff60e01b62000570565b600054610100900460ff16620005075760405162461bcd60e51b81526004016200016390620006da565b60078190556200032b632d5305cb60e21b62000570565b600054610100900460ff16620005485760405162461bcd60e51b81526004016200016390620006da565b600880546001600160401b0319166001600160401b0383161790556200032b6317b2ef4360e31b5b6001600160e01b03198082169003620005cc5760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640162000163565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b80516001600160a01b03811681146200060c57600080fd5b919050565b80516001600160401b03811681146200060c57600080fd5b600060c082840312156200063c57600080fd5b60405160c081016001600160401b03811182821017156200066d57634e487b7160e01b600052604160045260246000fd5b6040526200067b83620005f4565b81526200068b6020840162000611565b60208201526200069e6040840162000611565b6040820152620006b16060840162000611565b606082015260808301516080820152620006ce60a0840162000611565b60a08201529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b6128dc806200074b6000396000f3fe6080604052600436106102425760003560e01c8063790c0c7311610135578063790c0c731461062a578063837fe1401461064a57806389c6b8151461065f5780638da5cb5b1461067f5780639199690b1461038e578063968d9b2c146106a1578063a1cf6493146106c1578063ae890c0a14610704578063af121f5414610724578063c088184914610745578063c0bb38ff1461077b578063c723955a1461079b578063d5ed4d5a146107b0578063d6ddd21b146107d0578063da82b227146107f0578063dcbe353f14610805578063dd11247e1461082c578063ddd5e1b214610842578063de6d6d9614610862578063e2f3ad6614610882578063e3860742146108a2578063f2fde38b146108c2578063f389b6e4146108e2578063f4415ad614610902578063f66e38c21461093a57600080fd5b80630191c0af1461025b57806301ffc9a71461028e57806306fdde03146102be57806314427a9614610312578063150b7a021461034a5780631bc51b261461038e5780631c725fdc146103a257806325289bad146103c25780632890d033146103e95780632c0e1313146103fe5780632c2330671461041e5780632d00b5871461043e578063379607f51461046c5780633b3f12e21461048c5780633d2dded5146104ac578063471b0163146104e957806349561cb91461050957806354fd4d501461052a57806357dc48c8146105595780635f1bf3a0146105ad5780636057e0ec146105d45780636ba4c138146105f5578063715018a6146106155780637520cade1461038e57600080fd5b36610256576000341161025457600080fd5b005b600080fd5b34801561026757600080fd5b5061027b610276366004612100565b61095a565b6040519081526020015b60405180910390f35b34801561029a57600080fd5b506102ae6102a9366004612156565b6109b2565b6040519015158152602001610285565b3480156102ca57600080fd5b506103056040518060400160405280601b81526020017a45524337323120457175616c2056657374696e672053747265616d60281b81525081565b6040516102859190612180565b34801561031e57600080fd5b50600854610332906001600160401b031681565b6040516001600160401b039091168152602001610285565b34801561035657600080fd5b5061037561036536600461221b565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610285565b34801561039a57600080fd5b5060016102ae565b3480156103ae57600080fd5b506102546103bd3660046122fa565b6109f2565b3480156103ce57600080fd5b5060035461033290600160a01b90046001600160401b031681565b3480156103f557600080fd5b5061027b610a81565b34801561040a57600080fd5b506102546104193660046122fa565b610a92565b34801561042a57600080fd5b50610254610439366004612315565b610aee565b34801561044a57600080fd5b5060085461045f90600160f01b900460ff1681565b604051610285919061234c565b34801561047857600080fd5b50610254610487366004612374565b610b4d565b34801561049857600080fd5b5061027b6104a7366004612100565b610b5b565b3480156104b857600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461027b565b3480156104f557600080fd5b506102546105043660046122fa565b610bd9565b34801561051557600080fd5b506008546102ae90600160f81b900460ff1681565b34801561053657600080fd5b5061030560405180604001604052806003815260200162302e3160e81b81525081565b34801561056557600080fd5b5061059861057436600461238d565b60046020908152600092835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610285565b3480156105b957600080fd5b5060065461033290600160401b90046001600160401b031681565b3480156105e057600080fd5b506008546102ae90600160e01b900460ff1681565b34801561060157600080fd5b506102546106103660046123bd565b610c40565b34801561062157600080fd5b50610254610c51565b34801561063657600080fd5b5061027b6106453660046123fe565b610c65565b34801561065657600080fd5b50610254610d29565b34801561066b57600080fd5b5061027b61067a3660046123bd565b610d70565b34801561068b57600080fd5b50610694610d7e565b604051610285919061241b565b3480156106ad57600080fd5b5061027b6106bc366004612374565b610d93565b3480156106cd57600080fd5b5061027b6106dc36600461238d565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b34801561071057600080fd5b5061025461071f366004612374565b610da0565b34801561073057600080fd5b506008546102ae90600160e81b900460ff1681565b34801561075157600080fd5b5061027b6107603660046123fe565b6001600160a01b031660009081526005602052604090205490565b34801561078757600080fd5b506102546107963660046123fe565b610ddf565b3480156107a757600080fd5b50610254610e3d565b3480156107bc57600080fd5b50600354610694906001600160a01b031681565b3480156107dc57600080fd5b50600654610332906001600160401b031681565b3480156107fc57600080fd5b50610254610e9e565b34801561081157600080fd5b5060085461069490600160401b90046001600160a01b031681565b34801561083857600080fd5b5061027b60075481565b34801561084e57600080fd5b5061025461085d36600461238d565b610ee4565b34801561086e57600080fd5b5061025461087d36600461242f565b6110dd565b34801561088e57600080fd5b5061025461089d36600461249a565b611330565b3480156108ae57600080fd5b506102546108bd3660046122fa565b611494565b3480156108ce57600080fd5b506102546108dd3660046123fe565b6114f0565b3480156108ee57600080fd5b506102546108fd36600461254d565b611566565b34801561090e57600080fd5b5061027b61091d366004612374565b600090815260046020908152604080832083805290915290205490565b34801561094657600080fd5b5061027b61095536600461238d565b6117cb565b600080805b848110156109a75761098986868381811061097c5761097c6125b4565b90506020020135856117cb565b61099390836125e0565b91508061099f816125f8565b91505061095f565b5090505b9392505050565b60006301ffc9a760e01b6001600160e01b0319831614806109ec57506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b6109fa611832565b6003546001600160401b03600160a01b909104811690821611610a545760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b60448201526064015b60405180910390fd5b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000610a8d6000610c65565b905090565b610a9a611832565b60035442600160a01b9091046001600160401b031610610acc5760405162461bcd60e51b8152600401610a4b90612611565b600880546001600160401b0319166001600160401b0392909216919091179055565b610af6611832565b600854600160f81b900460ff1615610b205760405162461bcd60e51b8152600401610a4b90612638565b6008805482919060ff60f01b1916600160f01b836003811115610b4557610b45612336565b021790555050565b610b58816000610ee4565b50565b600080805b848110156109a75760046000878784818110610b7e57610b7e6125b4565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b031681526020019081526020016000206000015482610bc591906125e0565b915080610bd1816125f8565b915050610b60565b610be1611832565b60035442600160a01b9091046001600160401b031610610c135760405162461bcd60e51b8152600401610a4b90612611565b600680546001600160401b03909216600160401b0267ffffffffffffffff60401b19909216919091179055565b610c4d8282600033611566565b5050565b610c59611832565b610c636000611891565b565b60006001600160a01b038216610c99576001600160a01b0382166000908152600560205260409020546109ec9047906125e0565b6040516370a0823160e01b81526001600160a01b038316906370a0823190610cc590309060040161241b565b602060405180830381865afa158015610ce2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d069190612658565b6001600160a01b0383166000908152600560205260409020546109ec91906125e0565b610d31611832565b600854600160e01b900460ff1615610d5b5760405162461bcd60e51b8152600401610a4b90612638565b6008805460ff60e01b1916600160e01b179055565b60006109ab83836000610b5b565b6000546201000090046001600160a01b031690565b60006109ec8260006117cb565b610da8611832565b60035442600160a01b9091046001600160401b031610610dda5760405162461bcd60e51b8152600401610a4b90612611565b600755565b610de7611832565b600854600160e01b900460ff1615610e115760405162461bcd60e51b8152600401610a4b90612638565b600880546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b610e45611832565b600854600160f81b900460ff1615610e875760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401610a4b565b600880546001600160f81b0316600160f81b179055565b610ea6611832565b6008805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b6002805403610f055760405162461bcd60e51b8152600401610a4b90612671565b6002805533610f158383836118ec565b6000610f2184846117cb565b905060008111610f665760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b6044820152606401610a4b565b60008481526004602090815260408083206001600160a01b038716845290915281208054839290610f989084906125e0565b909155505060008481526004602090815260408083206001600160a01b0387168452825280832042600190910155600590915281208054839290610fdd9084906125e0565b90915550506001600160a01b038316611008576110036001600160a01b03831682611902565b61107b565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb9061103690859085906004016126a8565b6020604051808303816000875af1158015611055573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107991906126c1565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b6110e633611a18565b600854600160401b90046001600160a01b031661113d5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401610a4b565b600854600160e81b900460ff16156111975760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610a4b565b60005b838110156112ec5760008585838181106111b6576111b66125b4565b90506020020160208101906111cb91906123fe565b6001600160a01b031603611216576112118383838181106111ee576111ee6125b4565b6008546001600160a01b03600160401b9091041692602090910201359050611902565b6112da565b848482818110611228576112286125b4565b905060200201602081019061123d91906123fe565b6001600160a01b031663a9059cbb60088054906101000a90046001600160a01b0316858585818110611271576112716125b4565b905060200201356040518363ffffffff1660e01b81526004016112959291906126a8565b6020604051808303816000875af11580156112b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d891906126c1565b505b806112e4816125f8565b91505061119a565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a5848484846040516113229493929190612719565b60405180910390a150505050565b600054610100900460ff16158080156113505750600054600160ff909116105b80611371575061135f30611823565b158015611371575060005460ff166001145b6113d45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610a4b565b6000805460ff1916600117905580156113f7576000805461ff0019166101001790555b61140082611891565b61140b826000611ba5565b61141d83600001518460200151611bd6565b61142f83604001518460600151611c07565b61143c8360800151611c38565b6114498360a00151611c68565b801561148f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61149c611832565b60035442600160a01b9091046001600160401b0316106114ce5760405162461bcd60e51b8152600401610a4b90612611565b600680546001600160401b0319166001600160401b0392909216919091179055565b6114f8611832565b6001600160a01b03811661155d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a4b565b610b5881611891565b60028054036115875760405162461bcd60e51b8152600401610a4b90612671565b600280556000805b848110156116b7576115ba8686838181106115ac576115ac6125b4565b9050602002013585856118ec565b60006115de8787848181106115d1576115d16125b4565b90506020020135866117cb565b905080156116a45780600460008989868181106115fd576115fd6125b4565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b03168152602001908152602001600020600001600082825461164791906125e0565b9091555042905060046000898986818110611664576116646125b4565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a1682529092529020600101556116a181846125e0565b92505b50806116af816125f8565b91505061158f565b506001600160a01b038316600090815260056020526040812080548392906116e09084906125e0565b90915550506001600160a01b03831661170b576117066001600160a01b03831682611902565b61177e565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb9061173990859085906004016126a8565b6020604051808303816000875af1158015611758573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177c91906126c1565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b13383878787866040516117b79695949392919061277c565b60405180910390a150506001600255505050565b6000806117eb6117e46117dd85610c65565b8686611c98565b8585611d27565b60008581526004602090815260408083206001600160a01b038816845290915290205490915061181b90826127bb565b949350505050565b6001600160a01b03163b151590565b3361183b610d7e565b6001600160a01b031614610c635760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a4b565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6118f7838383611d37565b61148f838383611dec565b804710156119525760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610a4b565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461199f576040519150601f19603f3d011682016040523d82523d6000602084013e6119a4565b606091505b505090508061148f5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610a4b565b6003600854600160f01b900460ff166003811115611a3857611a38612336565b03611a775760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401610a4b565b6002600854600160f01b900460ff166003811115611a9757611a97612336565b03611a9f5750565b6001600854600160f01b900460ff166003811115611abf57611abf612336565b03611b22576008546001600160a01b03828116600160401b9092041614610b585760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401610a4b565b6000600854600160f01b900460ff166003811115611b4257611b42612336565b03610b5857806001600160a01b0316611b59610d7e565b6001600160a01b031614610b585760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401610a4b565b600054610100900460ff16611bcc5760405162461bcd60e51b8152600401610a4b906127d2565b610c4d8282611e37565b600054610100900460ff16611bfd5760405162461bcd60e51b8152600401610a4b906127d2565b610c4d8282611ed1565b600054610100900460ff16611c2e5760405162461bcd60e51b8152600401610a4b906127d2565b610c4d8282611f36565b600054610100900460ff16611c5f5760405162461bcd60e51b8152600401610a4b906127d2565b610b5881611f95565b600054610100900460ff16611c8f5760405162461bcd60e51b8152600401610a4b906127d2565b610b5881611fd1565b6006546000906001600160401b0316421015611cb6575060006109ab565b600654611cd5906001600160401b03600160401b82048116911661281d565b6001600160401b0316421115611cec5750826109ab565b6006546001600160401b03600160401b8204811691611d0c9116426127bb565b611d169086612848565b611d209190612867565b90506109ab565b60006007548461181b9190612867565b6003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa158015611d82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da69190612889565b6001600160a01b03161461148f5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b6044820152606401610a4b565b600854426001600160401b039091161061148f5760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b6044820152606401610a4b565b600054610100900460ff16611e5e5760405162461bcd60e51b8152600401610a4b906127d2565b611e6e63ac2ba33360e01b61201f565b60088054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b836003811115611ec857611ec8612336565b02179055505050565b600054610100900460ff16611ef85760405162461bcd60e51b8152600401610a4b906127d2565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055610c4d631ba050e960e21b61201f565b600054610100900460ff16611f5d5760405162461bcd60e51b8152600401610a4b906127d2565b600680546001600160401b03838116600160401b026001600160801b031990921690851617179055610c4d63d1bdccff60e01b61201f565b600054610100900460ff16611fbc5760405162461bcd60e51b8152600401610a4b906127d2565b6007819055610b58632d5305cb60e21b61201f565b600054610100900460ff16611ff85760405162461bcd60e51b8152600401610a4b906127d2565b600880546001600160401b0319166001600160401b038316179055610b586317b2ef4360e31b5b6001600160e01b031980821690036120785760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401610a4b565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60008083601f8401126120b257600080fd5b5081356001600160401b038111156120c957600080fd5b6020830191508360208260051b85010111156120e457600080fd5b9250929050565b6001600160a01b0381168114610b5857600080fd5b60008060006040848603121561211557600080fd5b83356001600160401b0381111561212b57600080fd5b612137868287016120a0565b909450925050602084013561214b816120eb565b809150509250925092565b60006020828403121561216857600080fd5b81356001600160e01b0319811681146109ab57600080fd5b600060208083528351808285015260005b818110156121ad57858101830151858201604001528201612191565b818111156121bf576000604083870101525b50601f01601f1916929092016040019392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612213576122136121d5565b604052919050565b6000806000806080858703121561223157600080fd5b843561223c816120eb565b935060208581013561224d816120eb565b93506040860135925060608601356001600160401b038082111561227057600080fd5b818801915088601f83011261228457600080fd5b813581811115612296576122966121d5565b6122a8601f8201601f191685016121eb565b915080825289848285010111156122be57600080fd5b808484018584013760008482840101525080935050505092959194509250565b80356001600160401b03811681146122f557600080fd5b919050565b60006020828403121561230c57600080fd5b6109ab826122de565b60006020828403121561232757600080fd5b8135600481106109ab57600080fd5b634e487b7160e01b600052602160045260246000fd5b602081016004831061236e57634e487b7160e01b600052602160045260246000fd5b91905290565b60006020828403121561238657600080fd5b5035919050565b600080604083850312156123a057600080fd5b8235915060208301356123b2816120eb565b809150509250929050565b600080602083850312156123d057600080fd5b82356001600160401b038111156123e657600080fd5b6123f2858286016120a0565b90969095509350505050565b60006020828403121561241057600080fd5b81356109ab816120eb565b6001600160a01b0391909116815260200190565b6000806000806040858703121561244557600080fd5b84356001600160401b038082111561245c57600080fd5b612468888389016120a0565b9096509450602087013591508082111561248157600080fd5b5061248e878288016120a0565b95989497509550505050565b60008082840360e08112156124ae57600080fd5b60c08112156124bc57600080fd5b5060405160c081018181106001600160401b03821117156124df576124df6121d5565b60405283356124ed816120eb565b81526124fb602085016122de565b602082015261250c604085016122de565b604082015261251d606085016122de565b60608201526080840135608082015261253860a085016122de565b60a0820152915060c08301356123b2816120eb565b6000806000806060858703121561256357600080fd5b84356001600160401b0381111561257957600080fd5b612585878288016120a0565b9095509350506020850135612599816120eb565b915060408501356125a9816120eb565b939692955090935050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156125f3576125f36125ca565b500190565b60006001820161260a5761260a6125ca565b5060010190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b60006020828403121561266a57600080fd5b5051919050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b03929092168252602082015260400190565b6000602082840312156126d357600080fd5b815180151581146109ab57600080fd5b81835260006001600160fb1b038311156126fc57600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b8781101561275c57823561273f816120eb565b6001600160a01b031682526020928301929091019060010161272c565b5083810360208501526127708186886126e3565b98975050505050505050565b600060018060a01b038089168352808816602084015260a060408401526127a760a0840187896126e3565b941660608301525060800152949350505050565b6000828210156127cd576127cd6125ca565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006001600160401b0380831681851680830382111561283f5761283f6125ca565b01949350505050565b6000816000190483118215151615612862576128626125ca565b500290565b60008261288457634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561289b57600080fd5b81516109ab816120eb56fea2646970667358221220b4db9461245b0f6b1074188ef89e3a5ed4c6e573276342e079eaceadfbfa326464736f6c634300080f0033","deployedBytecode":"0x6080604052600436106102425760003560e01c8063790c0c7311610135578063790c0c731461062a578063837fe1401461064a57806389c6b8151461065f5780638da5cb5b1461067f5780639199690b1461038e578063968d9b2c146106a1578063a1cf6493146106c1578063ae890c0a14610704578063af121f5414610724578063c088184914610745578063c0bb38ff1461077b578063c723955a1461079b578063d5ed4d5a146107b0578063d6ddd21b146107d0578063da82b227146107f0578063dcbe353f14610805578063dd11247e1461082c578063ddd5e1b214610842578063de6d6d9614610862578063e2f3ad6614610882578063e3860742146108a2578063f2fde38b146108c2578063f389b6e4146108e2578063f4415ad614610902578063f66e38c21461093a57600080fd5b80630191c0af1461025b57806301ffc9a71461028e57806306fdde03146102be57806314427a9614610312578063150b7a021461034a5780631bc51b261461038e5780631c725fdc146103a257806325289bad146103c25780632890d033146103e95780632c0e1313146103fe5780632c2330671461041e5780632d00b5871461043e578063379607f51461046c5780633b3f12e21461048c5780633d2dded5146104ac578063471b0163146104e957806349561cb91461050957806354fd4d501461052a57806357dc48c8146105595780635f1bf3a0146105ad5780636057e0ec146105d45780636ba4c138146105f5578063715018a6146106155780637520cade1461038e57600080fd5b36610256576000341161025457600080fd5b005b600080fd5b34801561026757600080fd5b5061027b610276366004612100565b61095a565b6040519081526020015b60405180910390f35b34801561029a57600080fd5b506102ae6102a9366004612156565b6109b2565b6040519015158152602001610285565b3480156102ca57600080fd5b506103056040518060400160405280601b81526020017a45524337323120457175616c2056657374696e672053747265616d60281b81525081565b6040516102859190612180565b34801561031e57600080fd5b50600854610332906001600160401b031681565b6040516001600160401b039091168152602001610285565b34801561035657600080fd5b5061037561036536600461221b565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610285565b34801561039a57600080fd5b5060016102ae565b3480156103ae57600080fd5b506102546103bd3660046122fa565b6109f2565b3480156103ce57600080fd5b5060035461033290600160a01b90046001600160401b031681565b3480156103f557600080fd5b5061027b610a81565b34801561040a57600080fd5b506102546104193660046122fa565b610a92565b34801561042a57600080fd5b50610254610439366004612315565b610aee565b34801561044a57600080fd5b5060085461045f90600160f01b900460ff1681565b604051610285919061234c565b34801561047857600080fd5b50610254610487366004612374565b610b4d565b34801561049857600080fd5b5061027b6104a7366004612100565b610b5b565b3480156104b857600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461027b565b3480156104f557600080fd5b506102546105043660046122fa565b610bd9565b34801561051557600080fd5b506008546102ae90600160f81b900460ff1681565b34801561053657600080fd5b5061030560405180604001604052806003815260200162302e3160e81b81525081565b34801561056557600080fd5b5061059861057436600461238d565b60046020908152600092835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610285565b3480156105b957600080fd5b5060065461033290600160401b90046001600160401b031681565b3480156105e057600080fd5b506008546102ae90600160e01b900460ff1681565b34801561060157600080fd5b506102546106103660046123bd565b610c40565b34801561062157600080fd5b50610254610c51565b34801561063657600080fd5b5061027b6106453660046123fe565b610c65565b34801561065657600080fd5b50610254610d29565b34801561066b57600080fd5b5061027b61067a3660046123bd565b610d70565b34801561068b57600080fd5b50610694610d7e565b604051610285919061241b565b3480156106ad57600080fd5b5061027b6106bc366004612374565b610d93565b3480156106cd57600080fd5b5061027b6106dc36600461238d565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b34801561071057600080fd5b5061025461071f366004612374565b610da0565b34801561073057600080fd5b506008546102ae90600160e81b900460ff1681565b34801561075157600080fd5b5061027b6107603660046123fe565b6001600160a01b031660009081526005602052604090205490565b34801561078757600080fd5b506102546107963660046123fe565b610ddf565b3480156107a757600080fd5b50610254610e3d565b3480156107bc57600080fd5b50600354610694906001600160a01b031681565b3480156107dc57600080fd5b50600654610332906001600160401b031681565b3480156107fc57600080fd5b50610254610e9e565b34801561081157600080fd5b5060085461069490600160401b90046001600160a01b031681565b34801561083857600080fd5b5061027b60075481565b34801561084e57600080fd5b5061025461085d36600461238d565b610ee4565b34801561086e57600080fd5b5061025461087d36600461242f565b6110dd565b34801561088e57600080fd5b5061025461089d36600461249a565b611330565b3480156108ae57600080fd5b506102546108bd3660046122fa565b611494565b3480156108ce57600080fd5b506102546108dd3660046123fe565b6114f0565b3480156108ee57600080fd5b506102546108fd36600461254d565b611566565b34801561090e57600080fd5b5061027b61091d366004612374565b600090815260046020908152604080832083805290915290205490565b34801561094657600080fd5b5061027b61095536600461238d565b6117cb565b600080805b848110156109a75761098986868381811061097c5761097c6125b4565b90506020020135856117cb565b61099390836125e0565b91508061099f816125f8565b91505061095f565b5090505b9392505050565b60006301ffc9a760e01b6001600160e01b0319831614806109ec57506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b6109fa611832565b6003546001600160401b03600160a01b909104811690821611610a545760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b60448201526064015b60405180910390fd5b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000610a8d6000610c65565b905090565b610a9a611832565b60035442600160a01b9091046001600160401b031610610acc5760405162461bcd60e51b8152600401610a4b90612611565b600880546001600160401b0319166001600160401b0392909216919091179055565b610af6611832565b600854600160f81b900460ff1615610b205760405162461bcd60e51b8152600401610a4b90612638565b6008805482919060ff60f01b1916600160f01b836003811115610b4557610b45612336565b021790555050565b610b58816000610ee4565b50565b600080805b848110156109a75760046000878784818110610b7e57610b7e6125b4565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b031681526020019081526020016000206000015482610bc591906125e0565b915080610bd1816125f8565b915050610b60565b610be1611832565b60035442600160a01b9091046001600160401b031610610c135760405162461bcd60e51b8152600401610a4b90612611565b600680546001600160401b03909216600160401b0267ffffffffffffffff60401b19909216919091179055565b610c4d8282600033611566565b5050565b610c59611832565b610c636000611891565b565b60006001600160a01b038216610c99576001600160a01b0382166000908152600560205260409020546109ec9047906125e0565b6040516370a0823160e01b81526001600160a01b038316906370a0823190610cc590309060040161241b565b602060405180830381865afa158015610ce2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d069190612658565b6001600160a01b0383166000908152600560205260409020546109ec91906125e0565b610d31611832565b600854600160e01b900460ff1615610d5b5760405162461bcd60e51b8152600401610a4b90612638565b6008805460ff60e01b1916600160e01b179055565b60006109ab83836000610b5b565b6000546201000090046001600160a01b031690565b60006109ec8260006117cb565b610da8611832565b60035442600160a01b9091046001600160401b031610610dda5760405162461bcd60e51b8152600401610a4b90612611565b600755565b610de7611832565b600854600160e01b900460ff1615610e115760405162461bcd60e51b8152600401610a4b90612638565b600880546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b610e45611832565b600854600160f81b900460ff1615610e875760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401610a4b565b600880546001600160f81b0316600160f81b179055565b610ea6611832565b6008805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b6002805403610f055760405162461bcd60e51b8152600401610a4b90612671565b6002805533610f158383836118ec565b6000610f2184846117cb565b905060008111610f665760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b6044820152606401610a4b565b60008481526004602090815260408083206001600160a01b038716845290915281208054839290610f989084906125e0565b909155505060008481526004602090815260408083206001600160a01b0387168452825280832042600190910155600590915281208054839290610fdd9084906125e0565b90915550506001600160a01b038316611008576110036001600160a01b03831682611902565b61107b565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb9061103690859085906004016126a8565b6020604051808303816000875af1158015611055573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107991906126c1565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b6110e633611a18565b600854600160401b90046001600160a01b031661113d5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401610a4b565b600854600160e81b900460ff16156111975760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610a4b565b60005b838110156112ec5760008585838181106111b6576111b66125b4565b90506020020160208101906111cb91906123fe565b6001600160a01b031603611216576112118383838181106111ee576111ee6125b4565b6008546001600160a01b03600160401b9091041692602090910201359050611902565b6112da565b848482818110611228576112286125b4565b905060200201602081019061123d91906123fe565b6001600160a01b031663a9059cbb60088054906101000a90046001600160a01b0316858585818110611271576112716125b4565b905060200201356040518363ffffffff1660e01b81526004016112959291906126a8565b6020604051808303816000875af11580156112b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d891906126c1565b505b806112e4816125f8565b91505061119a565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a5848484846040516113229493929190612719565b60405180910390a150505050565b600054610100900460ff16158080156113505750600054600160ff909116105b80611371575061135f30611823565b158015611371575060005460ff166001145b6113d45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610a4b565b6000805460ff1916600117905580156113f7576000805461ff0019166101001790555b61140082611891565b61140b826000611ba5565b61141d83600001518460200151611bd6565b61142f83604001518460600151611c07565b61143c8360800151611c38565b6114498360a00151611c68565b801561148f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61149c611832565b60035442600160a01b9091046001600160401b0316106114ce5760405162461bcd60e51b8152600401610a4b90612611565b600680546001600160401b0319166001600160401b0392909216919091179055565b6114f8611832565b6001600160a01b03811661155d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a4b565b610b5881611891565b60028054036115875760405162461bcd60e51b8152600401610a4b90612671565b600280556000805b848110156116b7576115ba8686838181106115ac576115ac6125b4565b9050602002013585856118ec565b60006115de8787848181106115d1576115d16125b4565b90506020020135866117cb565b905080156116a45780600460008989868181106115fd576115fd6125b4565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b03168152602001908152602001600020600001600082825461164791906125e0565b9091555042905060046000898986818110611664576116646125b4565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a1682529092529020600101556116a181846125e0565b92505b50806116af816125f8565b91505061158f565b506001600160a01b038316600090815260056020526040812080548392906116e09084906125e0565b90915550506001600160a01b03831661170b576117066001600160a01b03831682611902565b61177e565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb9061173990859085906004016126a8565b6020604051808303816000875af1158015611758573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177c91906126c1565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b13383878787866040516117b79695949392919061277c565b60405180910390a150506001600255505050565b6000806117eb6117e46117dd85610c65565b8686611c98565b8585611d27565b60008581526004602090815260408083206001600160a01b038816845290915290205490915061181b90826127bb565b949350505050565b6001600160a01b03163b151590565b3361183b610d7e565b6001600160a01b031614610c635760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a4b565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6118f7838383611d37565b61148f838383611dec565b804710156119525760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610a4b565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461199f576040519150601f19603f3d011682016040523d82523d6000602084013e6119a4565b606091505b505090508061148f5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610a4b565b6003600854600160f01b900460ff166003811115611a3857611a38612336565b03611a775760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401610a4b565b6002600854600160f01b900460ff166003811115611a9757611a97612336565b03611a9f5750565b6001600854600160f01b900460ff166003811115611abf57611abf612336565b03611b22576008546001600160a01b03828116600160401b9092041614610b585760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401610a4b565b6000600854600160f01b900460ff166003811115611b4257611b42612336565b03610b5857806001600160a01b0316611b59610d7e565b6001600160a01b031614610b585760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401610a4b565b600054610100900460ff16611bcc5760405162461bcd60e51b8152600401610a4b906127d2565b610c4d8282611e37565b600054610100900460ff16611bfd5760405162461bcd60e51b8152600401610a4b906127d2565b610c4d8282611ed1565b600054610100900460ff16611c2e5760405162461bcd60e51b8152600401610a4b906127d2565b610c4d8282611f36565b600054610100900460ff16611c5f5760405162461bcd60e51b8152600401610a4b906127d2565b610b5881611f95565b600054610100900460ff16611c8f5760405162461bcd60e51b8152600401610a4b906127d2565b610b5881611fd1565b6006546000906001600160401b0316421015611cb6575060006109ab565b600654611cd5906001600160401b03600160401b82048116911661281d565b6001600160401b0316421115611cec5750826109ab565b6006546001600160401b03600160401b8204811691611d0c9116426127bb565b611d169086612848565b611d209190612867565b90506109ab565b60006007548461181b9190612867565b6003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa158015611d82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da69190612889565b6001600160a01b03161461148f5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b6044820152606401610a4b565b600854426001600160401b039091161061148f5760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b6044820152606401610a4b565b600054610100900460ff16611e5e5760405162461bcd60e51b8152600401610a4b906127d2565b611e6e63ac2ba33360e01b61201f565b60088054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b836003811115611ec857611ec8612336565b02179055505050565b600054610100900460ff16611ef85760405162461bcd60e51b8152600401610a4b906127d2565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055610c4d631ba050e960e21b61201f565b600054610100900460ff16611f5d5760405162461bcd60e51b8152600401610a4b906127d2565b600680546001600160401b03838116600160401b026001600160801b031990921690851617179055610c4d63d1bdccff60e01b61201f565b600054610100900460ff16611fbc5760405162461bcd60e51b8152600401610a4b906127d2565b6007819055610b58632d5305cb60e21b61201f565b600054610100900460ff16611ff85760405162461bcd60e51b8152600401610a4b906127d2565b600880546001600160401b0319166001600160401b038316179055610b586317b2ef4360e31b5b6001600160e01b031980821690036120785760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401610a4b565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60008083601f8401126120b257600080fd5b5081356001600160401b038111156120c957600080fd5b6020830191508360208260051b85010111156120e457600080fd5b9250929050565b6001600160a01b0381168114610b5857600080fd5b60008060006040848603121561211557600080fd5b83356001600160401b0381111561212b57600080fd5b612137868287016120a0565b909450925050602084013561214b816120eb565b809150509250925092565b60006020828403121561216857600080fd5b81356001600160e01b0319811681146109ab57600080fd5b600060208083528351808285015260005b818110156121ad57858101830151858201604001528201612191565b818111156121bf576000604083870101525b50601f01601f1916929092016040019392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612213576122136121d5565b604052919050565b6000806000806080858703121561223157600080fd5b843561223c816120eb565b935060208581013561224d816120eb565b93506040860135925060608601356001600160401b038082111561227057600080fd5b818801915088601f83011261228457600080fd5b813581811115612296576122966121d5565b6122a8601f8201601f191685016121eb565b915080825289848285010111156122be57600080fd5b808484018584013760008482840101525080935050505092959194509250565b80356001600160401b03811681146122f557600080fd5b919050565b60006020828403121561230c57600080fd5b6109ab826122de565b60006020828403121561232757600080fd5b8135600481106109ab57600080fd5b634e487b7160e01b600052602160045260246000fd5b602081016004831061236e57634e487b7160e01b600052602160045260246000fd5b91905290565b60006020828403121561238657600080fd5b5035919050565b600080604083850312156123a057600080fd5b8235915060208301356123b2816120eb565b809150509250929050565b600080602083850312156123d057600080fd5b82356001600160401b038111156123e657600080fd5b6123f2858286016120a0565b90969095509350505050565b60006020828403121561241057600080fd5b81356109ab816120eb565b6001600160a01b0391909116815260200190565b6000806000806040858703121561244557600080fd5b84356001600160401b038082111561245c57600080fd5b612468888389016120a0565b9096509450602087013591508082111561248157600080fd5b5061248e878288016120a0565b95989497509550505050565b60008082840360e08112156124ae57600080fd5b60c08112156124bc57600080fd5b5060405160c081018181106001600160401b03821117156124df576124df6121d5565b60405283356124ed816120eb565b81526124fb602085016122de565b602082015261250c604085016122de565b604082015261251d606085016122de565b60608201526080840135608082015261253860a085016122de565b60a0820152915060c08301356123b2816120eb565b6000806000806060858703121561256357600080fd5b84356001600160401b0381111561257957600080fd5b612585878288016120a0565b9095509350506020850135612599816120eb565b915060408501356125a9816120eb565b939692955090935050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156125f3576125f36125ca565b500190565b60006001820161260a5761260a6125ca565b5060010190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b60006020828403121561266a57600080fd5b5051919050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b03929092168252602082015260400190565b6000602082840312156126d357600080fd5b815180151581146109ab57600080fd5b81835260006001600160fb1b038311156126fc57600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b8781101561275c57823561273f816120eb565b6001600160a01b031682526020928301929091019060010161272c565b5083810360208501526127708186886126e3565b98975050505050505050565b600060018060a01b038089168352808816602084015260a060408401526127a760a0840187896126e3565b941660608301525060800152949350505050565b6000828210156127cd576127cd6125ca565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006001600160401b0380831681851680830382111561283f5761283f6125ca565b01949350505050565b6000816000190483118215151615612862576128626125ca565b500290565b60008261288457634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561289b57600080fd5b81516109ab816120eb56fea2646970667358221220b4db9461245b0f6b1074188ef89e3a5ed4c6e573276342e079eaceadfbfa326464736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/presets/ERC721LockedStakingEmissionStream":{"address":{"1":"0x8043d592263311ccCaAeeC871Df6ad1e127A52E1","3":"0xFf7CBd71bDdc5a51BF68054e2F4f0b7DF9273E1b","4":"0xD3827cD70300c37f7399e69178EAE9e951b7F025","5":"0x9d938a88094296ff207966671bBCAF14Bf28286f","25":"0xb2edC1E98b147137D7f6894403E163236bc6FffC","56":"0x27F848F575D9EDBc10c874825CCE379b19e9D155","65":"0x1dc99a44b07f1790647087D789173991DFa5EE65","66":"0x2670ABe7b5B65549A6b24Ea1d7ccF0175dAEE0B2","97":"0x180442ebd727fE663aC280CeF7AC4F6902414603","137":"0x06a404890116C9D28Ec9f8B76B07F11c2ECAc125","250":"0xaca3DC84080D4440CC526983027a89E0A16A73DD","280":"0xE001A1a37EA75788fC8E5324aeCeE58151F79b35","4002":"0xaca3DC84080D4440CC526983027a89E0A16A73DD","9000":"0x1dc99a44b07f1790647087D789173991DFa5EE65","42161":"0xd59375B90526C16a007a779c15A844627fdBe716","43113":"0x8043d592263311ccCaAeeC871Df6ad1e127A52E1","43114":"0x97BA377E12dCA8a81b9d304F5e27D179E6ca1FBA","421611":"0xE949eBA5548cCAfc29612a41916DcAE6a56ed877","arbitrumOne":"0xd59375B90526C16a007a779c15A844627fdBe716","arbitrumTestnet":"0xE949eBA5548cCAfc29612a41916DcAE6a56ed877","avalanche":"0x97BA377E12dCA8a81b9d304F5e27D179E6ca1FBA","avalancheFujiTestnet":"0x8043d592263311ccCaAeeC871Df6ad1e127A52E1","bsc":"0x27F848F575D9EDBc10c874825CCE379b19e9D155","bscTestnet":"0x180442ebd727fE663aC280CeF7AC4F6902414603","cronos":"0xb2edC1E98b147137D7f6894403E163236bc6FffC","evmosTestnet":"0x1dc99a44b07f1790647087D789173991DFa5EE65","ftmTestnet":"0xaca3DC84080D4440CC526983027a89E0A16A73DD","goerli":"0x9d938a88094296ff207966671bBCAF14Bf28286f","mainnet":"0x8043d592263311ccCaAeeC871Df6ad1e127A52E1","okcMainnet":"0x2670ABe7b5B65549A6b24Ea1d7ccF0175dAEE0B2","okcTestnet":"0x1dc99a44b07f1790647087D789173991DFa5EE65","opera":"0xaca3DC84080D4440CC526983027a89E0A16A73DD","polygon":"0x06a404890116C9D28Ec9f8B76B07F11c2ECAc125","rinkeby":"0xD3827cD70300c37f7399e69178EAE9e951b7F025","ropsten":"0xFf7CBd71bDdc5a51BF68054e2F4f0b7DF9273E1b","zksyncTestnet":"0xE001A1a37EA75788fC8E5324aeCeE58151F79b35"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721LockedStakingEmissionStream","sourceName":"contracts/streams/ERC721/presets/ERC721LockedStakingEmissionStream.sol","abi":[{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint64","name":"minStakingDuration","type":"uint64"},{"internalType":"uint64","name":"maxStakingTotalDurations","type":"uint64"},{"internalType":"uint256","name":"emissionRate","type":"uint256"},{"internalType":"uint64","name":"emissionTimeUnit","type":"uint64"},{"internalType":"uint64","name":"emissionStart","type":"uint64"},{"internalType":"uint64","name":"emissionEnd","type":"uint64"},{"internalType":"uint256","name":"totalTickets","type":"uint256"},{"internalType":"uint64","name":"claimLockedUntil","type":"uint64"}],"internalType":"struct ERC721LockedStakingEmissionStream.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimLockedUntil","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"calcUntil","type":"uint64"}],"name":"emissionAmountUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionEnd","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionStart","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionTimeUnit","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721EmissionReleaseExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721EqualSplitExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721LockableClaimExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721LockedStakingExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721StakingExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint64","name":"minStakingDuration","type":"uint64"},{"internalType":"uint64","name":"maxStakingTotalDurations","type":"uint64"},{"internalType":"uint256","name":"emissionRate","type":"uint256"},{"internalType":"uint64","name":"emissionTimeUnit","type":"uint64"},{"internalType":"uint64","name":"emissionStart","type":"uint64"},{"internalType":"uint64","name":"emissionEnd","type":"uint64"},{"internalType":"uint256","name":"totalTickets","type":"uint256"},{"internalType":"uint64","name":"claimLockedUntil","type":"uint64"}],"internalType":"struct ERC721LockedStakingEmissionStream.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lastStakingTime","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxStakingTotalDurations","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minStakingDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"rateByToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"calcUntil","type":"uint64"}],"name":"releasedAmountUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"rewardAmountByToken","outputs":[{"internalType":"uint256","name":"total","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"rewardAmountByToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"savedStakedDurations","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setClaimLockedUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionEnd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setEmissionRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionTimeUnit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setMaxStakingTotalDurations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setMinStakingDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setTotalTickets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"totalStakedDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"totalStakedDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTickets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"unlockingTime","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"unlockingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x60806040523480156200001157600080fd5b50604051620044c1380380620044c1833981016040819052620000349162000798565b6200003f3362000057565b6001600255620000508133620000b2565b50620008c6565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620000d35750600054600160ff909116105b80620001035750620000f0306200026760201b620023071760201c565b15801562000103575060005460ff166001145b6200016c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000190576000805461ff0019166101001790555b6200019b8262000057565b620001a882600062000276565b82516020840151620001bb9190620002b0565b620001d583604001518460600151620002e660201b60201c565b620001f983608001518460a001518560c001518660e001516200032660201b60201c565b6101008301516200020a9062000364565b6101208301516200021b906200039c565b801562000262576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6001600160a01b03163b151590565b600054610100900460ff16620002a05760405162461bcd60e51b8152600401620001639062000865565b620002ac8282620003d1565b5050565b600054610100900460ff16620002da5760405162461bcd60e51b8152600401620001639062000865565b620002ac828262000478565b600054610100900460ff16620003105760405162461bcd60e51b8152600401620001639062000865565b6200031a620004e2565b620002ac828262000520565b600054610100900460ff16620003505760405162461bcd60e51b8152600401620001639062000865565b6200035e8484848462000589565b50505050565b600054610100900460ff166200038e5760405162461bcd60e51b8152600401620001639062000865565b620003998162000614565b50565b600054610100900460ff16620003c65760405162461bcd60e51b8152600401620001639062000865565b620003998162000655565b600054610100900460ff16620003fb5760405162461bcd60e51b8152600401620001639062000865565b6200040d63ac2ba33360e01b620006a7565b600c8054600160401b600160e01b03198116680100000000000000006001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b8360038111156200046f576200046f620008b0565b02179055505050565b600054610100900460ff16620004a25760405162461bcd60e51b8152600401620001639062000865565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055620002ac631ba050e960e21b620006a7565b600054610100900460ff166200050c5760405162461bcd60e51b8152600401620001639062000865565b6200051e63d664280160e01b620006a7565b565b600054610100900460ff166200054a5760405162461bcd60e51b8152600401620001639062000865565b600980546001600160401b0383811668010000000000000000026001600160801b031990921690851617179055620002ac633a41ba5360e11b620006a7565b600054610100900460ff16620005b35760405162461bcd60e51b8152600401620001639062000865565b6006849055600780546001600160401b03838116600160801b02600160801b600160c01b031986831668010000000000000000026001600160801b03199094169288169290921792909217161790556200035e63c9f600a960e01b620006a7565b600054610100900460ff166200063e5760405162461bcd60e51b8152600401620001639062000865565b600881905562000399632d5305cb60e21b620006a7565b600054610100900460ff166200067f5760405162461bcd60e51b8152600401620001639062000865565b600c80546001600160401b0319166001600160401b038316179055620003996317b2ef4360e31b5b6001600160e01b03198082169003620007035760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640162000163565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60405161014081016001600160401b03811182821017156200075d57634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b03811681146200077b57600080fd5b919050565b80516001600160401b03811681146200077b57600080fd5b60006101408284031215620007ac57600080fd5b620007b66200072b565b620007c18362000763565b8152620007d16020840162000780565b6020820152620007e46040840162000780565b6040820152620007f76060840162000780565b6060820152608083015160808201526200081460a0840162000780565b60a08201526200082760c0840162000780565b60c08201526200083a60e0840162000780565b60e082015261010083810151908201526101206200085a81850162000780565b908201529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b613beb80620008d66000396000f3fe6080604052600436106103755760003560e01c80638da5cb5b116101c9578063d0d6641d116100fe578063d0d6641d14610b67578063d1335b691461053b578063d4244f2414610b87578063d5ed4d5a14610bae578063d66428011461053b578063d97314f514610bce578063da82b22714610bee578063dcbe353f14610c03578063dd11247e14610c2a578063dda8820f1461053b578063ddd5e1b214610c40578063de6d6d9614610c60578063de76a67614610c80578063e449f34114610ca0578063f2fde38b14610cc0578063f389b6e414610ce0578063f4415ad614610d00578063f593dfc814610d38578063f66e38c214610d5857600080fd5b80638da5cb5b146109205780639199690b1461053b578063968d9b2c1461094257806396afc450146109625780639edfe83014610978578063a1bdb15e14610998578063a1cf6493146109b8578063a5549bc6146109fb578063a5b23be714610a1b578063a694fc3a14610a3b578063a86b21e814610a5b578063a8a67c8c14610a7b578063aaf2f99914610a9b578063ae890c0a14610abb578063af121f5414610adb578063c088184914610afc578063c0bb38ff14610b32578063c723955a14610b5257600080fd5b8063379607f5116102aa578063379607f5146106595780633a73f7d6146106795780633b3f12e2146106995780633d2dded5146106b957806349561cb9146106f65780634abb4c4914610717578063513da9481461074457806354fd4d501461076b57806357dc48c81461079a5780636057e0ec146107ee578063619496361461080f5780636ba4c1381461082f578063715018a61461084f57806378b094ca14610864578063790c0c73146108845780638368909c146108a4578063837fe140146108cb57806384fd5ae0146108e057806389c6b8151461090057600080fd5b80630191c0af1461038e57806301ffc9a7146103c157806306fdde03146103f157806308289dbe1461041357806308ae7e54146104615780630c805a44146104815780630fbf0a93146104b757806314427a96146104d7578063150b7a02146104f75780631bc51b261461053b5780631c725fdc1461054f57806325289bad1461056f5780632890d033146105965780632c0e1313146105ab5780632c233067146105cb5780632d00b587146105eb5780632e17de781461061957806333abcdbd1461063957600080fd5b36610389576000341161038757600080fd5b005b600080fd5b34801561039a57600080fd5b506103ae6103a9366004613298565b610d78565b6040519081526020015b60405180910390f35b3480156103cd57600080fd5b506103e16103dc3660046132ee565b610dce565b60405190151581526020016103b8565b3480156103fd57600080fd5b50610406610e0e565b6040516103b89190613318565b34801561041f57600080fd5b5061044961042e36600461336d565b600b602052600090815260409020546001600160401b031681565b6040516001600160401b0390911681526020016103b8565b34801561046d57600080fd5b50600954610449906001600160401b031681565b34801561048d57600080fd5b5061044961049c36600461336d565b600a602052600090815260409020546001600160401b031681565b3480156104c357600080fd5b506103876104d2366004613386565b610e2a565b3480156104e357600080fd5b50600c54610449906001600160401b031681565b34801561050357600080fd5b50610522610512366004613436565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016103b8565b34801561054757600080fd5b5060016103e1565b34801561055b57600080fd5b5061038761056a366004613510565b610ea2565b34801561057b57600080fd5b5060035461044990600160a01b90046001600160401b031681565b3480156105a257600080fd5b506103ae610f2c565b3480156105b757600080fd5b506103876105c6366004613510565b610f3d565b3480156105d757600080fd5b506103876105e636600461352b565b610f99565b3480156105f757600080fd5b50600c5461060c90600160f01b900460ff1681565b6040516103b89190613562565b34801561062557600080fd5b5061038761063436600461336d565b610ff8565b34801561064557600080fd5b5061044961065436600461336d565b61102e565b34801561066557600080fd5b5061038761067436600461336d565b611123565b34801561068557600080fd5b506103ae610694366004613386565b611131565b3480156106a557600080fd5b506103ae6106b4366004613298565b611183565b3480156106c557600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc546103ae565b34801561070257600080fd5b50600c546103e190600160f81b900460ff1681565b34801561072357600080fd5b50610737610732366004613386565b611201565b6040516103b8919061358a565b34801561075057600080fd5b5060075461044990600160401b90046001600160401b031681565b34801561077757600080fd5b5061040660405180604001604052806003815260200162302e3160e81b81525081565b3480156107a657600080fd5b506107d96107b53660046135ce565b60046020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016103b8565b3480156107fa57600080fd5b50600c546103e190600160e01b900460ff1681565b34801561081b57600080fd5b50600754610449906001600160401b031681565b34801561083b57600080fd5b5061038761084a366004613386565b6112ac565b34801561085b57600080fd5b506103876112bd565b34801561087057600080fd5b5061038761087f366004613510565b6112d1565b34801561089057600080fd5b506103ae61089f3660046135fe565b611337565b3480156108b057600080fd5b5060075461044990600160801b90046001600160401b031681565b3480156108d757600080fd5b506103876113fb565b3480156108ec57600080fd5b506103ae6108fb366004613386565b611442565b34801561090c57600080fd5b506103ae61091b366004613386565b6114d5565b34801561092c57600080fd5b506109356114ea565b6040516103b8919061361b565b34801561094e57600080fd5b506103ae61095d36600461336d565b6114ff565b34801561096e57600080fd5b506103ae60065481565b34801561098457600080fd5b506103ae610993366004613510565b61150c565b3480156109a457600080fd5b506103876109b336600461336d565b611551565b3480156109c457600080fd5b506103ae6109d33660046135ce565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b348015610a0757600080fd5b50610387610a16366004613510565b611590565b348015610a2757600080fd5b506103ae610a3636600461336d565b6115ec565b348015610a4757600080fd5b50610387610a5636600461336d565b611632565b348015610a6757600080fd5b506103ae610a76366004613510565b611697565b348015610a8757600080fd5b50610387610a9636600461362f565b6116d3565b348015610aa757600080fd5b50610387610ab6366004613510565b611855565b348015610ac757600080fd5b50610387610ad636600461336d565b6118bb565b348015610ae757600080fd5b50600c546103e190600160e81b900460ff1681565b348015610b0857600080fd5b506103ae610b173660046135fe565b6001600160a01b031660009081526005602052604090205490565b348015610b3e57600080fd5b50610387610b4d3660046135fe565b6118fa565b348015610b5e57600080fd5b50610387611958565b348015610b7357600080fd5b506103ae610b8236600461336d565b6119b9565b348015610b9357600080fd5b5060095461044990600160401b90046001600160401b031681565b348015610bba57600080fd5b50600354610935906001600160a01b031681565b348015610bda57600080fd5b50610387610be9366004613510565b611a13565b348015610bfa57600080fd5b50610387611a6f565b348015610c0f57600080fd5b50600c5461093590600160401b90046001600160a01b031681565b348015610c3657600080fd5b506103ae60085481565b348015610c4c57600080fd5b50610387610c5b3660046135ce565b611ab5565b348015610c6c57600080fd5b50610387610c7b366004613710565b611cae565b348015610c8c57600080fd5b50610449610c9b366004613386565b611efc565b348015610cac57600080fd5b50610387610cbb366004613386565b611f48565b348015610ccc57600080fd5b50610387610cdb3660046135fe565b611f77565b348015610cec57600080fd5b50610387610cfb36600461377b565b611fed565b348015610d0c57600080fd5b506103ae610d1b36600461336d565b600090815260046020908152604080832083805290915290205490565b348015610d4457600080fd5b50610387610d53366004613510565b612252565b348015610d6457600080fd5b506103ae610d733660046135ce565b6122b8565b600080805b84811015610dc557610da7868683818110610d9a57610d9a6137e2565b90506020020135856122b8565b610db1908361380e565b915080610dbd81613826565b915050610d7d565b50949350505050565b60006301ffc9a760e01b6001600160e01b031983161480610e0857506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b604051806060016040528060258152602001613b916025913981565b6002805403610e545760405162461bcd60e51b8152600401610e4b9061383f565b60405180910390fd5b600280556007546001600160401b03600160401b9091048116429091161015610e8f5760405162461bcd60e51b8152600401610e4b90613876565b610e998282612316565b50506001600255565b610eaa612388565b6003546001600160401b03600160a01b909104811690821611610eff5760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b6044820152606401610e4b565b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000610f386000611337565b905090565b610f45612388565b60035442600160a01b9091046001600160401b031610610f775760405162461bcd60e51b8152600401610e4b9061389f565b600c80546001600160401b0319166001600160401b0392909216919091179055565b610fa1612388565b600c54600160f81b900460ff1615610fcb5760405162461bcd60e51b8152600401610e4b906138c6565b600c805482919060ff60f01b1916600160f01b836003811115610ff057610ff061354c565b021790555050565b60028054036110195760405162461bcd60e51b8152600401610e4b9061383f565b60028055611026816123e7565b506001600255565b6000818152600b6020908152604080832054600a9092528220546001600160401b039182169116156110eb576000611064612452565b905042816001600160401b0316111561107a5750425b6000848152600a60205260409020546001600160401b0316156110e9576000848152600a60205260409020546001600160401b0390811690821611156110e9576000848152600a60205260409020546110dc906001600160401b0316826138e6565b6110e6908361390e565b91505b505b6009546001600160401b03600160401b90910481169082161115610e085750600954600160401b90046001600160401b031692915050565b61112e816000611ab5565b50565b6000805b8281101561117c5761115e848483818110611152576111526137e2565b905060200201356115ec565b611168908361380e565b91508061117481613826565b915050611135565b5092915050565b600080805b84811015610dc557600460008787848181106111a6576111a66137e2565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060000154826111ed919061380e565b9150806111f981613826565b915050611188565b60606000826001600160401b0381111561121d5761121d6133c7565b604051908082528060200260200182016040528015611246578160200160208202803683370190505b50905060005b838110156112a457611275858583818110611269576112696137e2565b905060200201356119b9565b828281518110611287576112876137e2565b60209081029190910101528061129c81613826565b91505061124c565b509392505050565b6112b98282600033611fed565b5050565b6112c5612388565b6112cf6000612490565b565b6112d9612388565b60035442600160a01b9091046001600160401b03161061130b5760405162461bcd60e51b8152600401610e4b9061389f565b600780546001600160401b03909216600160801b02600160801b600160c01b0319909216919091179055565b60006001600160a01b03821661136b576001600160a01b038216600090815260056020526040902054610e0890479061380e565b6040516370a0823160e01b81526001600160a01b038316906370a082319061139790309060040161361b565b602060405180830381865afa1580156113b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d89190613939565b6001600160a01b038316600090815260056020526040902054610e08919061380e565b611403612388565b600c54600160e01b900460ff161561142d5760405162461bcd60e51b8152600401610e4b906138c6565b600c805460ff60e01b1916600160e01b179055565b60008060005b838110156114b1576000600a6000878785818110611468576114686137e2565b60209081029290920135835250810191909152604001600020546001600160401b0316111561149f578161149b81613826565b9250505b806114a981613826565b915050611448565b50600854816006546114c39190613952565b6114cd9190613987565b949350505050565b60006114e383836000611183565b9392505050565b6000546201000090046001600160a01b031690565b6000610e088260006122b8565b6007546000906001600160401b038082169161153191600160401b90910416846138e6565b61153b919061399b565b6001600160401b0316600654610e089190613952565b611559612388565b60035442600160a01b9091046001600160401b03161061158b5760405162461bcd60e51b8152600401610e4b9061389f565b600655565b611598612388565b60035442600160a01b9091046001600160401b0316106115ca5760405162461bcd60e51b8152600401610e4b9061389f565b600980546001600160401b0319166001600160401b0392909216919091179055565b6007546008546000916001600160401b0316906116088461102e565b6001600160401b031660065461161e9190613952565b6116289190613987565b610e089190613987565b60028054036116535760405162461bcd60e51b8152600401610e4b9061383f565b600280556007546001600160401b03600160401b909104811642909116101561168e5760405162461bcd60e51b8152600401610e4b90613876565b611026816124eb565b6007546006546000916001600160401b0380821692916116c091600160401b90910416856138e6565b6001600160401b03166116289190613952565b600054610100900460ff16158080156116f35750600054600160ff909116105b80611714575061170230612307565b158015611714575060005460ff166001145b6117775760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610e4b565b6000805460ff19166001179055801561179a576000805461ff0019166101001790555b6117a382612490565b6117ae826000612525565b6117c083600001518460200151612556565b6117d283604001518460600151612587565b6117ee83608001518460a001518560c001518660e001516125c0565b6117fc8361010001516125f9565b61180a836101200151612629565b8015611850576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61185d612388565b60035442600160a01b9091046001600160401b03161061188f5760405162461bcd60e51b8152600401610e4b9061389f565b600780546001600160401b03909216600160401b02600160401b600160801b0319909216919091179055565b6118c3612388565b60035442600160a01b9091046001600160401b0316106118f55760405162461bcd60e51b8152600401610e4b9061389f565b600855565b611902612388565b600c54600160e01b900460ff161561192c5760405162461bcd60e51b8152600401610e4b906138c6565b600c80546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b611960612388565b600c54600160f81b900460ff16156119a25760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401610e4b565b600c80546001600160f81b0316600160f81b179055565b6000818152600a60205260408120546001600160401b03166119dc576000611a04565b6009546000838152600a6020526040902054611a04916001600160401b03908116911661390e565b6001600160401b031692915050565b611a1b612388565b60035442600160a01b9091046001600160401b031610611a4d5760405162461bcd60e51b8152600401610e4b9061389f565b600780546001600160401b0319166001600160401b0392909216919091179055565b611a77612388565b600c805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b6002805403611ad65760405162461bcd60e51b8152600401610e4b9061383f565b6002805533611ae6838383612659565b6000611af284846122b8565b905060008111611b375760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b6044820152606401610e4b565b60008481526004602090815260408083206001600160a01b038716845290915281208054839290611b6990849061380e565b909155505060008481526004602090815260408083206001600160a01b0387168452825280832042600190910155600590915281208054839290611bae90849061380e565b90915550506001600160a01b038316611bd957611bd46001600160a01b0383168261267a565b611c4c565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb90611c0790859085906004016139c1565b6020604051808303816000875af1158015611c26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4a91906139da565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b611cb733612790565b600c54600160401b90046001600160a01b0316611d0e5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401610e4b565b600c54600160e81b900460ff1615611d685760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610e4b565b60005b83811015611eb8576000858583818110611d8757611d876137e2565b9050602002016020810190611d9c91906135fe565b6001600160a01b031603611de757611de2838383818110611dbf57611dbf6137e2565b600c546001600160a01b03600160401b909104169260209091020135905061267a565b611ea6565b848482818110611df957611df96137e2565b9050602002016020810190611e0e91906135fe565b600c546001600160a01b039182169163a9059cbb91600160401b900416858585818110611e3d57611e3d6137e2565b905060200201356040518363ffffffff1660e01b8152600401611e619291906139c1565b6020604051808303816000875af1158015611e80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea491906139da565b505b80611eb081613826565b915050611d6b565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a584848484604051611eee9493929190613a32565b60405180910390a150505050565b600080805b838110156112a457611f2a858583818110611f1e57611f1e6137e2565b9050602002013561102e565b611f34908361390e565b915080611f4081613826565b915050611f01565b6002805403611f695760405162461bcd60e51b8152600401610e4b9061383f565b60028055610e99828261291d565b611f7f612388565b6001600160a01b038116611fe45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610e4b565b61112e81612490565b600280540361200e5760405162461bcd60e51b8152600401610e4b9061383f565b600280556000805b8481101561213e57612041868683818110612033576120336137e2565b905060200201358585612659565b6000612065878784818110612058576120586137e2565b90506020020135866122b8565b9050801561212b578060046000898986818110612084576120846137e2565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b0316815260200190815260200160002060000160008282546120ce919061380e565b90915550429050600460008989868181106120eb576120eb6137e2565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a168252909252902060010155612128818461380e565b92505b508061213681613826565b915050612016565b506001600160a01b0383166000908152600560205260408120805483929061216790849061380e565b90915550506001600160a01b0383166121925761218d6001600160a01b0383168261267a565b612205565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906121c090859085906004016139c1565b6020604051808303816000875af11580156121df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220391906139da565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b133838787878660405161223e96959493929190613a95565b60405180910390a150506001600255505050565b61225a612388565b60035442600160a01b9091046001600160401b03161061228c5760405162461bcd60e51b8152600401610e4b9061389f565b600980546001600160401b03909216600160401b02600160401b600160801b0319909216919091179055565b6000806122d76122d06122ca85611337565b50600090565b8585612959565b60008581526004602090815260408083206001600160a01b03881684529091529020549091506114cd9082613ad4565b6001600160a01b03163b151590565b612320828261299e565b6003546040516342cb086360e11b81526001600160a01b039091169063859610c6906123529085908590600401613aeb565b600060405180830381600087803b15801561236c57600080fd5b505af1158015612380573d6000803e3d6000fd5b505050505050565b336123916114ea565b6001600160a01b0316146112cf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e4b565b6123f0816129e0565b600354604051636198e33960e01b8152600481018390526001600160a01b0390911690636198e339906024015b600060405180830381600087803b15801561243757600080fd5b505af115801561244b573d6000803e3d6000fd5b5050505050565b600754600090600160801b90046001600160401b0316156124845750600754600160801b90046001600160401b031690565b506001600160401b0390565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6124f4816129eb565b6003546040516337519c1960e21b8152600481018390526001600160a01b039091169063dd4670649060240161241d565b600054610100900460ff1661254c5760405162461bcd60e51b8152600401610e4b90613aff565b6112b982826129f6565b600054610100900460ff1661257d5760405162461bcd60e51b8152600401610e4b90613aff565b6112b98282612a90565b600054610100900460ff166125ae5760405162461bcd60e51b8152600401610e4b90613aff565b6125b6612af5565b6112b98282612b2c565b600054610100900460ff166125e75760405162461bcd60e51b8152600401610e4b90613aff565b6125f384848484612b8b565b50505050565b600054610100900460ff166126205760405162461bcd60e51b8152600401610e4b90613aff565b61112e81612c0c565b600054610100900460ff166126505760405162461bcd60e51b8152600401610e4b90613aff565b61112e81612c48565b612664838383612c9a565b61266f838383612d4f565b611850838383612d9a565b804710156126ca5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610e4b565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612717576040519150601f19603f3d011682016040523d82523d6000602084013e61271c565b606091505b50509050806118505760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610e4b565b6003600c54600160f01b900460ff1660038111156127b0576127b061354c565b036127ef5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401610e4b565b6002600c54600160f01b900460ff16600381111561280f5761280f61354c565b036128175750565b6001600c54600160f01b900460ff1660038111156128375761283761354c565b0361289a57600c546001600160a01b03828116600160401b909204161461112e5760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401610e4b565b6000600c54600160f01b900460ff1660038111156128ba576128ba61354c565b0361112e57806001600160a01b03166128d16114ea565b6001600160a01b03161461112e5760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401610e4b565b6129278282612e5f565b600354604051635d36598f60e01b81526001600160a01b0390911690635d36598f906123529085908590600401613aeb565b6007546000906001600160401b03166129718461102e565b61297b919061399b565b6001600160401b03166008546006546129949190613987565b6114cd9190613952565b334260005b8381101561244b576129ce83838787858181106129c2576129c26137e2565b90506020020135612ea1565b806129d881613826565b9150506129a3565b61112e334283612f49565b61112e334283612ea1565b600054610100900460ff16612a1d5760405162461bcd60e51b8152600401610e4b90613aff565b612a2d63ac2ba33360e01b612ff1565b600c8054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b836003811115612a8757612a8761354c565b02179055505050565b600054610100900460ff16612ab75760405162461bcd60e51b8152600401610e4b90613aff565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b038516171790556112b9631ba050e960e21b612ff1565b600054610100900460ff16612b1c5760405162461bcd60e51b8152600401610e4b90613aff565b6112cf63d664280160e01b612ff1565b600054610100900460ff16612b535760405162461bcd60e51b8152600401610e4b90613aff565b600980546001600160401b03838116600160401b026001600160801b0319909216908516171790556112b9633a41ba5360e11b612ff1565b600054610100900460ff16612bb25760405162461bcd60e51b8152600401610e4b90613aff565b6006849055600780546001600160401b03838116600160801b02600160801b600160c01b0319868316600160401b026001600160801b03199094169288169290921792909217161790556125f363c9f600a960e01b612ff1565b600054610100900460ff16612c335760405162461bcd60e51b8152600401610e4b90613aff565b600881905561112e632d5305cb60e21b612ff1565b600054610100900460ff16612c6f5760405162461bcd60e51b8152600401610e4b90613aff565b600c80546001600160401b0319166001600160401b03831617905561112e6317b2ef4360e31b612ff1565b6003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa158015612ce5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d099190613b4a565b6001600160a01b0316146118505760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b6044820152606401610e4b565b600c54426001600160401b03909116106118505760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b6044820152606401610e4b565b60075442600160401b9091046001600160401b031610612dea5760405162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b6044820152606401610e4b565b600754612e00906001600160401b031642613ad4565b60008481526004602090815260408083206001600160a01b0387168452909152902060010154106118505760405162461bcd60e51b8152602060048201526009602482015268544f4f5f4541524c5960b81b6044820152606401610e4b565b334260005b8381101561244b57612e8f8383878785818110612e8357612e836137e2565b90506020020135612f49565b80612e9981613826565b915050612e64565b6003546040516331a9108f60e11b8152600481018390526001600160a01b0390911690636352211e90602401602060405180830381865afa158015612eea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f0e9190613b4a565b6001600160a01b0316836001600160a01b031614612f3e5760405162461bcd60e51b8152600401610e4b90613b67565b611850838383613072565b6003546040516331a9108f60e11b8152600481018390526001600160a01b0390911690636352211e90602401602060405180830381865afa158015612f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb69190613b4a565b6001600160a01b0316836001600160a01b031614612fe65760405162461bcd60e51b8152600401610e4b90613b67565b61185083838361310b565b6001600160e01b0319808216900361304a5760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401610e4b565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b600954600160401b90046001600160401b031661308e8261102e565b6001600160401b0316106130dc5760405162461bcd60e51b815260206004820152601560248201527413505617d1155490551253d397d15610d151511151605a1b6044820152606401610e4b565b6000908152600a6020526040902080546001600160401b0319166001600160401b039290921691909117905550565b6000818152600a60205260409020546001600160401b031661315c5760405162461bcd60e51b815260206004820152600a6024820152691393d517d4d51052d15160b21b6044820152606401610e4b565b6009546000828152600a6020526040902054613184916001600160401b03908116911661390e565b6001600160401b0316826001600160401b031610156131de5760405162461bcd60e51b815260206004820152601660248201527509c9ea8bea6a882968a88be989e9c8ebe8a9c9eaa8e960531b6044820152606401610e4b565b6131e78161102e565b6000918252600b6020908152604080842080546001600160401b03949094166001600160401b0319948516179055600a909152909120805490911690555050565b60008083601f84011261323a57600080fd5b5081356001600160401b0381111561325157600080fd5b6020830191508360208260051b850101111561326c57600080fd5b9250929050565b6001600160a01b038116811461112e57600080fd5b803561329381613273565b919050565b6000806000604084860312156132ad57600080fd5b83356001600160401b038111156132c357600080fd5b6132cf86828701613228565b90945092505060208401356132e381613273565b809150509250925092565b60006020828403121561330057600080fd5b81356001600160e01b0319811681146114e357600080fd5b600060208083528351808285015260005b8181101561334557858101830151858201604001528201613329565b81811115613357576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561337f57600080fd5b5035919050565b6000806020838503121561339957600080fd5b82356001600160401b038111156133af57600080fd5b6133bb85828601613228565b90969095509350505050565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b0381118282101715613400576134006133c7565b60405290565b604051601f8201601f191681016001600160401b038111828210171561342e5761342e6133c7565b604052919050565b6000806000806080858703121561344c57600080fd5b843561345781613273565b935060208581013561346881613273565b93506040860135925060608601356001600160401b038082111561348b57600080fd5b818801915088601f83011261349f57600080fd5b8135818111156134b1576134b16133c7565b6134c3601f8201601f19168501613406565b915080825289848285010111156134d957600080fd5b808484018584013760008482840101525080935050505092959194509250565b80356001600160401b038116811461329357600080fd5b60006020828403121561352257600080fd5b6114e3826134f9565b60006020828403121561353d57600080fd5b8135600481106114e357600080fd5b634e487b7160e01b600052602160045260246000fd5b602081016004831061358457634e487b7160e01b600052602160045260246000fd5b91905290565b6020808252825182820181905260009190848201906040850190845b818110156135c2578351835292840192918401916001016135a6565b50909695505050505050565b600080604083850312156135e157600080fd5b8235915060208301356135f381613273565b809150509250929050565b60006020828403121561361057600080fd5b81356114e381613273565b6001600160a01b0391909116815260200190565b60008082840361016081121561364457600080fd5b6101408082121561365457600080fd5b61365c6133dd565b915061366785613288565b8252613675602086016134f9565b6020830152613686604086016134f9565b6040830152613697606086016134f9565b6060830152608085013560808301526136b260a086016134f9565b60a08301526136c360c086016134f9565b60c08301526136d460e086016134f9565b60e083015261010085810135908301526101206136f28187016134f9565b8184015250819350613705818601613288565b925050509250929050565b6000806000806040858703121561372657600080fd5b84356001600160401b038082111561373d57600080fd5b61374988838901613228565b9096509450602087013591508082111561376257600080fd5b5061376f87828801613228565b95989497509550505050565b6000806000806060858703121561379157600080fd5b84356001600160401b038111156137a757600080fd5b6137b387828801613228565b90955093505060208501356137c781613273565b915060408501356137d781613273565b939692955090935050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115613821576138216137f8565b500190565b600060018201613838576138386137f8565b5060010190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252600f908201526e1393d517d4d5105495115117d65155608a1b604082015260600190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b60006001600160401b0383811690831681811015613906576139066137f8565b039392505050565b60006001600160401b03808316818516808303821115613930576139306137f8565b01949350505050565b60006020828403121561394b57600080fd5b5051919050565b600081600019048311821515161561396c5761396c6137f8565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261399657613996613971565b500490565b60006001600160401b03808416806139b5576139b5613971565b92169190910492915050565b6001600160a01b03929092168252602082015260400190565b6000602082840312156139ec57600080fd5b815180151581146114e357600080fd5b81835260006001600160fb1b03831115613a1557600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b87811015613a75578235613a5881613273565b6001600160a01b0316825260209283019290910190600101613a45565b508381036020850152613a898186886139fc565b98975050505050505050565b600060018060a01b038089168352808816602084015260a06040840152613ac060a0840187896139fc565b941660608301525060800152949350505050565b600082821015613ae657613ae66137f8565b500390565b6020815260006114cd6020830184866139fc565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208284031215613b5c57600080fd5b81516114e381613273565b6020808252600f908201526e2727aa2faa27a5a2a72fa7aba722a960891b60408201526060019056fe455243373231204c6f636b6564205374616b696e6720456d697373696f6e2053747265616da26469706673582212208f25add58955fb37bf1a2c1165d774e3f40c6cebc48664da09c1cd40c8cce2a364736f6c634300080f0033","deployedBytecode":"0x6080604052600436106103755760003560e01c80638da5cb5b116101c9578063d0d6641d116100fe578063d0d6641d14610b67578063d1335b691461053b578063d4244f2414610b87578063d5ed4d5a14610bae578063d66428011461053b578063d97314f514610bce578063da82b22714610bee578063dcbe353f14610c03578063dd11247e14610c2a578063dda8820f1461053b578063ddd5e1b214610c40578063de6d6d9614610c60578063de76a67614610c80578063e449f34114610ca0578063f2fde38b14610cc0578063f389b6e414610ce0578063f4415ad614610d00578063f593dfc814610d38578063f66e38c214610d5857600080fd5b80638da5cb5b146109205780639199690b1461053b578063968d9b2c1461094257806396afc450146109625780639edfe83014610978578063a1bdb15e14610998578063a1cf6493146109b8578063a5549bc6146109fb578063a5b23be714610a1b578063a694fc3a14610a3b578063a86b21e814610a5b578063a8a67c8c14610a7b578063aaf2f99914610a9b578063ae890c0a14610abb578063af121f5414610adb578063c088184914610afc578063c0bb38ff14610b32578063c723955a14610b5257600080fd5b8063379607f5116102aa578063379607f5146106595780633a73f7d6146106795780633b3f12e2146106995780633d2dded5146106b957806349561cb9146106f65780634abb4c4914610717578063513da9481461074457806354fd4d501461076b57806357dc48c81461079a5780636057e0ec146107ee578063619496361461080f5780636ba4c1381461082f578063715018a61461084f57806378b094ca14610864578063790c0c73146108845780638368909c146108a4578063837fe140146108cb57806384fd5ae0146108e057806389c6b8151461090057600080fd5b80630191c0af1461038e57806301ffc9a7146103c157806306fdde03146103f157806308289dbe1461041357806308ae7e54146104615780630c805a44146104815780630fbf0a93146104b757806314427a96146104d7578063150b7a02146104f75780631bc51b261461053b5780631c725fdc1461054f57806325289bad1461056f5780632890d033146105965780632c0e1313146105ab5780632c233067146105cb5780632d00b587146105eb5780632e17de781461061957806333abcdbd1461063957600080fd5b36610389576000341161038757600080fd5b005b600080fd5b34801561039a57600080fd5b506103ae6103a9366004613298565b610d78565b6040519081526020015b60405180910390f35b3480156103cd57600080fd5b506103e16103dc3660046132ee565b610dce565b60405190151581526020016103b8565b3480156103fd57600080fd5b50610406610e0e565b6040516103b89190613318565b34801561041f57600080fd5b5061044961042e36600461336d565b600b602052600090815260409020546001600160401b031681565b6040516001600160401b0390911681526020016103b8565b34801561046d57600080fd5b50600954610449906001600160401b031681565b34801561048d57600080fd5b5061044961049c36600461336d565b600a602052600090815260409020546001600160401b031681565b3480156104c357600080fd5b506103876104d2366004613386565b610e2a565b3480156104e357600080fd5b50600c54610449906001600160401b031681565b34801561050357600080fd5b50610522610512366004613436565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016103b8565b34801561054757600080fd5b5060016103e1565b34801561055b57600080fd5b5061038761056a366004613510565b610ea2565b34801561057b57600080fd5b5060035461044990600160a01b90046001600160401b031681565b3480156105a257600080fd5b506103ae610f2c565b3480156105b757600080fd5b506103876105c6366004613510565b610f3d565b3480156105d757600080fd5b506103876105e636600461352b565b610f99565b3480156105f757600080fd5b50600c5461060c90600160f01b900460ff1681565b6040516103b89190613562565b34801561062557600080fd5b5061038761063436600461336d565b610ff8565b34801561064557600080fd5b5061044961065436600461336d565b61102e565b34801561066557600080fd5b5061038761067436600461336d565b611123565b34801561068557600080fd5b506103ae610694366004613386565b611131565b3480156106a557600080fd5b506103ae6106b4366004613298565b611183565b3480156106c557600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc546103ae565b34801561070257600080fd5b50600c546103e190600160f81b900460ff1681565b34801561072357600080fd5b50610737610732366004613386565b611201565b6040516103b8919061358a565b34801561075057600080fd5b5060075461044990600160401b90046001600160401b031681565b34801561077757600080fd5b5061040660405180604001604052806003815260200162302e3160e81b81525081565b3480156107a657600080fd5b506107d96107b53660046135ce565b60046020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016103b8565b3480156107fa57600080fd5b50600c546103e190600160e01b900460ff1681565b34801561081b57600080fd5b50600754610449906001600160401b031681565b34801561083b57600080fd5b5061038761084a366004613386565b6112ac565b34801561085b57600080fd5b506103876112bd565b34801561087057600080fd5b5061038761087f366004613510565b6112d1565b34801561089057600080fd5b506103ae61089f3660046135fe565b611337565b3480156108b057600080fd5b5060075461044990600160801b90046001600160401b031681565b3480156108d757600080fd5b506103876113fb565b3480156108ec57600080fd5b506103ae6108fb366004613386565b611442565b34801561090c57600080fd5b506103ae61091b366004613386565b6114d5565b34801561092c57600080fd5b506109356114ea565b6040516103b8919061361b565b34801561094e57600080fd5b506103ae61095d36600461336d565b6114ff565b34801561096e57600080fd5b506103ae60065481565b34801561098457600080fd5b506103ae610993366004613510565b61150c565b3480156109a457600080fd5b506103876109b336600461336d565b611551565b3480156109c457600080fd5b506103ae6109d33660046135ce565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b348015610a0757600080fd5b50610387610a16366004613510565b611590565b348015610a2757600080fd5b506103ae610a3636600461336d565b6115ec565b348015610a4757600080fd5b50610387610a5636600461336d565b611632565b348015610a6757600080fd5b506103ae610a76366004613510565b611697565b348015610a8757600080fd5b50610387610a9636600461362f565b6116d3565b348015610aa757600080fd5b50610387610ab6366004613510565b611855565b348015610ac757600080fd5b50610387610ad636600461336d565b6118bb565b348015610ae757600080fd5b50600c546103e190600160e81b900460ff1681565b348015610b0857600080fd5b506103ae610b173660046135fe565b6001600160a01b031660009081526005602052604090205490565b348015610b3e57600080fd5b50610387610b4d3660046135fe565b6118fa565b348015610b5e57600080fd5b50610387611958565b348015610b7357600080fd5b506103ae610b8236600461336d565b6119b9565b348015610b9357600080fd5b5060095461044990600160401b90046001600160401b031681565b348015610bba57600080fd5b50600354610935906001600160a01b031681565b348015610bda57600080fd5b50610387610be9366004613510565b611a13565b348015610bfa57600080fd5b50610387611a6f565b348015610c0f57600080fd5b50600c5461093590600160401b90046001600160a01b031681565b348015610c3657600080fd5b506103ae60085481565b348015610c4c57600080fd5b50610387610c5b3660046135ce565b611ab5565b348015610c6c57600080fd5b50610387610c7b366004613710565b611cae565b348015610c8c57600080fd5b50610449610c9b366004613386565b611efc565b348015610cac57600080fd5b50610387610cbb366004613386565b611f48565b348015610ccc57600080fd5b50610387610cdb3660046135fe565b611f77565b348015610cec57600080fd5b50610387610cfb36600461377b565b611fed565b348015610d0c57600080fd5b506103ae610d1b36600461336d565b600090815260046020908152604080832083805290915290205490565b348015610d4457600080fd5b50610387610d53366004613510565b612252565b348015610d6457600080fd5b506103ae610d733660046135ce565b6122b8565b600080805b84811015610dc557610da7868683818110610d9a57610d9a6137e2565b90506020020135856122b8565b610db1908361380e565b915080610dbd81613826565b915050610d7d565b50949350505050565b60006301ffc9a760e01b6001600160e01b031983161480610e0857506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b604051806060016040528060258152602001613b916025913981565b6002805403610e545760405162461bcd60e51b8152600401610e4b9061383f565b60405180910390fd5b600280556007546001600160401b03600160401b9091048116429091161015610e8f5760405162461bcd60e51b8152600401610e4b90613876565b610e998282612316565b50506001600255565b610eaa612388565b6003546001600160401b03600160a01b909104811690821611610eff5760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b6044820152606401610e4b565b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000610f386000611337565b905090565b610f45612388565b60035442600160a01b9091046001600160401b031610610f775760405162461bcd60e51b8152600401610e4b9061389f565b600c80546001600160401b0319166001600160401b0392909216919091179055565b610fa1612388565b600c54600160f81b900460ff1615610fcb5760405162461bcd60e51b8152600401610e4b906138c6565b600c805482919060ff60f01b1916600160f01b836003811115610ff057610ff061354c565b021790555050565b60028054036110195760405162461bcd60e51b8152600401610e4b9061383f565b60028055611026816123e7565b506001600255565b6000818152600b6020908152604080832054600a9092528220546001600160401b039182169116156110eb576000611064612452565b905042816001600160401b0316111561107a5750425b6000848152600a60205260409020546001600160401b0316156110e9576000848152600a60205260409020546001600160401b0390811690821611156110e9576000848152600a60205260409020546110dc906001600160401b0316826138e6565b6110e6908361390e565b91505b505b6009546001600160401b03600160401b90910481169082161115610e085750600954600160401b90046001600160401b031692915050565b61112e816000611ab5565b50565b6000805b8281101561117c5761115e848483818110611152576111526137e2565b905060200201356115ec565b611168908361380e565b91508061117481613826565b915050611135565b5092915050565b600080805b84811015610dc557600460008787848181106111a6576111a66137e2565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060000154826111ed919061380e565b9150806111f981613826565b915050611188565b60606000826001600160401b0381111561121d5761121d6133c7565b604051908082528060200260200182016040528015611246578160200160208202803683370190505b50905060005b838110156112a457611275858583818110611269576112696137e2565b905060200201356119b9565b828281518110611287576112876137e2565b60209081029190910101528061129c81613826565b91505061124c565b509392505050565b6112b98282600033611fed565b5050565b6112c5612388565b6112cf6000612490565b565b6112d9612388565b60035442600160a01b9091046001600160401b03161061130b5760405162461bcd60e51b8152600401610e4b9061389f565b600780546001600160401b03909216600160801b02600160801b600160c01b0319909216919091179055565b60006001600160a01b03821661136b576001600160a01b038216600090815260056020526040902054610e0890479061380e565b6040516370a0823160e01b81526001600160a01b038316906370a082319061139790309060040161361b565b602060405180830381865afa1580156113b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d89190613939565b6001600160a01b038316600090815260056020526040902054610e08919061380e565b611403612388565b600c54600160e01b900460ff161561142d5760405162461bcd60e51b8152600401610e4b906138c6565b600c805460ff60e01b1916600160e01b179055565b60008060005b838110156114b1576000600a6000878785818110611468576114686137e2565b60209081029290920135835250810191909152604001600020546001600160401b0316111561149f578161149b81613826565b9250505b806114a981613826565b915050611448565b50600854816006546114c39190613952565b6114cd9190613987565b949350505050565b60006114e383836000611183565b9392505050565b6000546201000090046001600160a01b031690565b6000610e088260006122b8565b6007546000906001600160401b038082169161153191600160401b90910416846138e6565b61153b919061399b565b6001600160401b0316600654610e089190613952565b611559612388565b60035442600160a01b9091046001600160401b03161061158b5760405162461bcd60e51b8152600401610e4b9061389f565b600655565b611598612388565b60035442600160a01b9091046001600160401b0316106115ca5760405162461bcd60e51b8152600401610e4b9061389f565b600980546001600160401b0319166001600160401b0392909216919091179055565b6007546008546000916001600160401b0316906116088461102e565b6001600160401b031660065461161e9190613952565b6116289190613987565b610e089190613987565b60028054036116535760405162461bcd60e51b8152600401610e4b9061383f565b600280556007546001600160401b03600160401b909104811642909116101561168e5760405162461bcd60e51b8152600401610e4b90613876565b611026816124eb565b6007546006546000916001600160401b0380821692916116c091600160401b90910416856138e6565b6001600160401b03166116289190613952565b600054610100900460ff16158080156116f35750600054600160ff909116105b80611714575061170230612307565b158015611714575060005460ff166001145b6117775760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610e4b565b6000805460ff19166001179055801561179a576000805461ff0019166101001790555b6117a382612490565b6117ae826000612525565b6117c083600001518460200151612556565b6117d283604001518460600151612587565b6117ee83608001518460a001518560c001518660e001516125c0565b6117fc8361010001516125f9565b61180a836101200151612629565b8015611850576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61185d612388565b60035442600160a01b9091046001600160401b03161061188f5760405162461bcd60e51b8152600401610e4b9061389f565b600780546001600160401b03909216600160401b02600160401b600160801b0319909216919091179055565b6118c3612388565b60035442600160a01b9091046001600160401b0316106118f55760405162461bcd60e51b8152600401610e4b9061389f565b600855565b611902612388565b600c54600160e01b900460ff161561192c5760405162461bcd60e51b8152600401610e4b906138c6565b600c80546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b611960612388565b600c54600160f81b900460ff16156119a25760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401610e4b565b600c80546001600160f81b0316600160f81b179055565b6000818152600a60205260408120546001600160401b03166119dc576000611a04565b6009546000838152600a6020526040902054611a04916001600160401b03908116911661390e565b6001600160401b031692915050565b611a1b612388565b60035442600160a01b9091046001600160401b031610611a4d5760405162461bcd60e51b8152600401610e4b9061389f565b600780546001600160401b0319166001600160401b0392909216919091179055565b611a77612388565b600c805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b6002805403611ad65760405162461bcd60e51b8152600401610e4b9061383f565b6002805533611ae6838383612659565b6000611af284846122b8565b905060008111611b375760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b6044820152606401610e4b565b60008481526004602090815260408083206001600160a01b038716845290915281208054839290611b6990849061380e565b909155505060008481526004602090815260408083206001600160a01b0387168452825280832042600190910155600590915281208054839290611bae90849061380e565b90915550506001600160a01b038316611bd957611bd46001600160a01b0383168261267a565b611c4c565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb90611c0790859085906004016139c1565b6020604051808303816000875af1158015611c26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4a91906139da565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b611cb733612790565b600c54600160401b90046001600160a01b0316611d0e5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401610e4b565b600c54600160e81b900460ff1615611d685760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610e4b565b60005b83811015611eb8576000858583818110611d8757611d876137e2565b9050602002016020810190611d9c91906135fe565b6001600160a01b031603611de757611de2838383818110611dbf57611dbf6137e2565b600c546001600160a01b03600160401b909104169260209091020135905061267a565b611ea6565b848482818110611df957611df96137e2565b9050602002016020810190611e0e91906135fe565b600c546001600160a01b039182169163a9059cbb91600160401b900416858585818110611e3d57611e3d6137e2565b905060200201356040518363ffffffff1660e01b8152600401611e619291906139c1565b6020604051808303816000875af1158015611e80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea491906139da565b505b80611eb081613826565b915050611d6b565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a584848484604051611eee9493929190613a32565b60405180910390a150505050565b600080805b838110156112a457611f2a858583818110611f1e57611f1e6137e2565b9050602002013561102e565b611f34908361390e565b915080611f4081613826565b915050611f01565b6002805403611f695760405162461bcd60e51b8152600401610e4b9061383f565b60028055610e99828261291d565b611f7f612388565b6001600160a01b038116611fe45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610e4b565b61112e81612490565b600280540361200e5760405162461bcd60e51b8152600401610e4b9061383f565b600280556000805b8481101561213e57612041868683818110612033576120336137e2565b905060200201358585612659565b6000612065878784818110612058576120586137e2565b90506020020135866122b8565b9050801561212b578060046000898986818110612084576120846137e2565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b0316815260200190815260200160002060000160008282546120ce919061380e565b90915550429050600460008989868181106120eb576120eb6137e2565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a168252909252902060010155612128818461380e565b92505b508061213681613826565b915050612016565b506001600160a01b0383166000908152600560205260408120805483929061216790849061380e565b90915550506001600160a01b0383166121925761218d6001600160a01b0383168261267a565b612205565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906121c090859085906004016139c1565b6020604051808303816000875af11580156121df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220391906139da565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b133838787878660405161223e96959493929190613a95565b60405180910390a150506001600255505050565b61225a612388565b60035442600160a01b9091046001600160401b03161061228c5760405162461bcd60e51b8152600401610e4b9061389f565b600980546001600160401b03909216600160401b02600160401b600160801b0319909216919091179055565b6000806122d76122d06122ca85611337565b50600090565b8585612959565b60008581526004602090815260408083206001600160a01b03881684529091529020549091506114cd9082613ad4565b6001600160a01b03163b151590565b612320828261299e565b6003546040516342cb086360e11b81526001600160a01b039091169063859610c6906123529085908590600401613aeb565b600060405180830381600087803b15801561236c57600080fd5b505af1158015612380573d6000803e3d6000fd5b505050505050565b336123916114ea565b6001600160a01b0316146112cf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e4b565b6123f0816129e0565b600354604051636198e33960e01b8152600481018390526001600160a01b0390911690636198e339906024015b600060405180830381600087803b15801561243757600080fd5b505af115801561244b573d6000803e3d6000fd5b5050505050565b600754600090600160801b90046001600160401b0316156124845750600754600160801b90046001600160401b031690565b506001600160401b0390565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6124f4816129eb565b6003546040516337519c1960e21b8152600481018390526001600160a01b039091169063dd4670649060240161241d565b600054610100900460ff1661254c5760405162461bcd60e51b8152600401610e4b90613aff565b6112b982826129f6565b600054610100900460ff1661257d5760405162461bcd60e51b8152600401610e4b90613aff565b6112b98282612a90565b600054610100900460ff166125ae5760405162461bcd60e51b8152600401610e4b90613aff565b6125b6612af5565b6112b98282612b2c565b600054610100900460ff166125e75760405162461bcd60e51b8152600401610e4b90613aff565b6125f384848484612b8b565b50505050565b600054610100900460ff166126205760405162461bcd60e51b8152600401610e4b90613aff565b61112e81612c0c565b600054610100900460ff166126505760405162461bcd60e51b8152600401610e4b90613aff565b61112e81612c48565b612664838383612c9a565b61266f838383612d4f565b611850838383612d9a565b804710156126ca5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610e4b565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612717576040519150601f19603f3d011682016040523d82523d6000602084013e61271c565b606091505b50509050806118505760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610e4b565b6003600c54600160f01b900460ff1660038111156127b0576127b061354c565b036127ef5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401610e4b565b6002600c54600160f01b900460ff16600381111561280f5761280f61354c565b036128175750565b6001600c54600160f01b900460ff1660038111156128375761283761354c565b0361289a57600c546001600160a01b03828116600160401b909204161461112e5760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401610e4b565b6000600c54600160f01b900460ff1660038111156128ba576128ba61354c565b0361112e57806001600160a01b03166128d16114ea565b6001600160a01b03161461112e5760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401610e4b565b6129278282612e5f565b600354604051635d36598f60e01b81526001600160a01b0390911690635d36598f906123529085908590600401613aeb565b6007546000906001600160401b03166129718461102e565b61297b919061399b565b6001600160401b03166008546006546129949190613987565b6114cd9190613952565b334260005b8381101561244b576129ce83838787858181106129c2576129c26137e2565b90506020020135612ea1565b806129d881613826565b9150506129a3565b61112e334283612f49565b61112e334283612ea1565b600054610100900460ff16612a1d5760405162461bcd60e51b8152600401610e4b90613aff565b612a2d63ac2ba33360e01b612ff1565b600c8054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b836003811115612a8757612a8761354c565b02179055505050565b600054610100900460ff16612ab75760405162461bcd60e51b8152600401610e4b90613aff565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b038516171790556112b9631ba050e960e21b612ff1565b600054610100900460ff16612b1c5760405162461bcd60e51b8152600401610e4b90613aff565b6112cf63d664280160e01b612ff1565b600054610100900460ff16612b535760405162461bcd60e51b8152600401610e4b90613aff565b600980546001600160401b03838116600160401b026001600160801b0319909216908516171790556112b9633a41ba5360e11b612ff1565b600054610100900460ff16612bb25760405162461bcd60e51b8152600401610e4b90613aff565b6006849055600780546001600160401b03838116600160801b02600160801b600160c01b0319868316600160401b026001600160801b03199094169288169290921792909217161790556125f363c9f600a960e01b612ff1565b600054610100900460ff16612c335760405162461bcd60e51b8152600401610e4b90613aff565b600881905561112e632d5305cb60e21b612ff1565b600054610100900460ff16612c6f5760405162461bcd60e51b8152600401610e4b90613aff565b600c80546001600160401b0319166001600160401b03831617905561112e6317b2ef4360e31b612ff1565b6003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa158015612ce5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d099190613b4a565b6001600160a01b0316146118505760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b6044820152606401610e4b565b600c54426001600160401b03909116106118505760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b6044820152606401610e4b565b60075442600160401b9091046001600160401b031610612dea5760405162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b6044820152606401610e4b565b600754612e00906001600160401b031642613ad4565b60008481526004602090815260408083206001600160a01b0387168452909152902060010154106118505760405162461bcd60e51b8152602060048201526009602482015268544f4f5f4541524c5960b81b6044820152606401610e4b565b334260005b8381101561244b57612e8f8383878785818110612e8357612e836137e2565b90506020020135612f49565b80612e9981613826565b915050612e64565b6003546040516331a9108f60e11b8152600481018390526001600160a01b0390911690636352211e90602401602060405180830381865afa158015612eea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f0e9190613b4a565b6001600160a01b0316836001600160a01b031614612f3e5760405162461bcd60e51b8152600401610e4b90613b67565b611850838383613072565b6003546040516331a9108f60e11b8152600481018390526001600160a01b0390911690636352211e90602401602060405180830381865afa158015612f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb69190613b4a565b6001600160a01b0316836001600160a01b031614612fe65760405162461bcd60e51b8152600401610e4b90613b67565b61185083838361310b565b6001600160e01b0319808216900361304a5760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401610e4b565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b600954600160401b90046001600160401b031661308e8261102e565b6001600160401b0316106130dc5760405162461bcd60e51b815260206004820152601560248201527413505617d1155490551253d397d15610d151511151605a1b6044820152606401610e4b565b6000908152600a6020526040902080546001600160401b0319166001600160401b039290921691909117905550565b6000818152600a60205260409020546001600160401b031661315c5760405162461bcd60e51b815260206004820152600a6024820152691393d517d4d51052d15160b21b6044820152606401610e4b565b6009546000828152600a6020526040902054613184916001600160401b03908116911661390e565b6001600160401b0316826001600160401b031610156131de5760405162461bcd60e51b815260206004820152601660248201527509c9ea8bea6a882968a88be989e9c8ebe8a9c9eaa8e960531b6044820152606401610e4b565b6131e78161102e565b6000918252600b6020908152604080842080546001600160401b03949094166001600160401b0319948516179055600a909152909120805490911690555050565b60008083601f84011261323a57600080fd5b5081356001600160401b0381111561325157600080fd5b6020830191508360208260051b850101111561326c57600080fd5b9250929050565b6001600160a01b038116811461112e57600080fd5b803561329381613273565b919050565b6000806000604084860312156132ad57600080fd5b83356001600160401b038111156132c357600080fd5b6132cf86828701613228565b90945092505060208401356132e381613273565b809150509250925092565b60006020828403121561330057600080fd5b81356001600160e01b0319811681146114e357600080fd5b600060208083528351808285015260005b8181101561334557858101830151858201604001528201613329565b81811115613357576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561337f57600080fd5b5035919050565b6000806020838503121561339957600080fd5b82356001600160401b038111156133af57600080fd5b6133bb85828601613228565b90969095509350505050565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b0381118282101715613400576134006133c7565b60405290565b604051601f8201601f191681016001600160401b038111828210171561342e5761342e6133c7565b604052919050565b6000806000806080858703121561344c57600080fd5b843561345781613273565b935060208581013561346881613273565b93506040860135925060608601356001600160401b038082111561348b57600080fd5b818801915088601f83011261349f57600080fd5b8135818111156134b1576134b16133c7565b6134c3601f8201601f19168501613406565b915080825289848285010111156134d957600080fd5b808484018584013760008482840101525080935050505092959194509250565b80356001600160401b038116811461329357600080fd5b60006020828403121561352257600080fd5b6114e3826134f9565b60006020828403121561353d57600080fd5b8135600481106114e357600080fd5b634e487b7160e01b600052602160045260246000fd5b602081016004831061358457634e487b7160e01b600052602160045260246000fd5b91905290565b6020808252825182820181905260009190848201906040850190845b818110156135c2578351835292840192918401916001016135a6565b50909695505050505050565b600080604083850312156135e157600080fd5b8235915060208301356135f381613273565b809150509250929050565b60006020828403121561361057600080fd5b81356114e381613273565b6001600160a01b0391909116815260200190565b60008082840361016081121561364457600080fd5b6101408082121561365457600080fd5b61365c6133dd565b915061366785613288565b8252613675602086016134f9565b6020830152613686604086016134f9565b6040830152613697606086016134f9565b6060830152608085013560808301526136b260a086016134f9565b60a08301526136c360c086016134f9565b60c08301526136d460e086016134f9565b60e083015261010085810135908301526101206136f28187016134f9565b8184015250819350613705818601613288565b925050509250929050565b6000806000806040858703121561372657600080fd5b84356001600160401b038082111561373d57600080fd5b61374988838901613228565b9096509450602087013591508082111561376257600080fd5b5061376f87828801613228565b95989497509550505050565b6000806000806060858703121561379157600080fd5b84356001600160401b038111156137a757600080fd5b6137b387828801613228565b90955093505060208501356137c781613273565b915060408501356137d781613273565b939692955090935050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115613821576138216137f8565b500190565b600060018201613838576138386137f8565b5060010190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252600f908201526e1393d517d4d5105495115117d65155608a1b604082015260600190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b60006001600160401b0383811690831681811015613906576139066137f8565b039392505050565b60006001600160401b03808316818516808303821115613930576139306137f8565b01949350505050565b60006020828403121561394b57600080fd5b5051919050565b600081600019048311821515161561396c5761396c6137f8565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261399657613996613971565b500490565b60006001600160401b03808416806139b5576139b5613971565b92169190910492915050565b6001600160a01b03929092168252602082015260400190565b6000602082840312156139ec57600080fd5b815180151581146114e357600080fd5b81835260006001600160fb1b03831115613a1557600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b87811015613a75578235613a5881613273565b6001600160a01b0316825260209283019290910190600101613a45565b508381036020850152613a898186886139fc565b98975050505050505050565b600060018060a01b038089168352808816602084015260a06040840152613ac060a0840187896139fc565b941660608301525060800152949350505050565b600082821015613ae657613ae66137f8565b500390565b6020815260006114cd6020830184866139fc565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208284031215613b5c57600080fd5b81516114e381613273565b6020808252600f908201526e2727aa2faa27a5a2a72fa7aba722a960891b60408201526060019056fe455243373231204c6f636b6564205374616b696e6720456d697373696f6e2053747265616da26469706673582212208f25add58955fb37bf1a2c1165d774e3f40c6cebc48664da09c1cd40c8cce2a364736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/presets/ERC721ShareEmissionStream":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721ShareEmissionStream","sourceName":"contracts/streams/ERC721/presets/ERC721ShareEmissionStream.sol","abi":[{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint256","name":"emissionRate","type":"uint256"},{"internalType":"uint64","name":"emissionTimeUnit","type":"uint64"},{"internalType":"uint64","name":"emissionStart","type":"uint64"},{"internalType":"uint64","name":"emissionEnd","type":"uint64"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"uint64","name":"claimLockedUntil","type":"uint64"}],"internalType":"struct ERC721ShareEmissionStream.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"prevShares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newShares","type":"uint256"}],"name":"SharesUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimLockedUntil","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"calcUntil","type":"uint64"}],"name":"emissionAmountUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionEnd","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionStart","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionTimeUnit","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"getSharesByTokens","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721EmissionReleaseExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721LockableClaimExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721ShareSplitExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint256","name":"emissionRate","type":"uint256"},{"internalType":"uint64","name":"emissionTimeUnit","type":"uint64"},{"internalType":"uint64","name":"emissionStart","type":"uint64"},{"internalType":"uint64","name":"emissionEnd","type":"uint64"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"uint64","name":"claimLockedUntil","type":"uint64"}],"internalType":"struct ERC721ShareEmissionStream.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"rateByToken","outputs":[{"internalType":"uint256","name":"totalRate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"calcUntil","type":"uint64"}],"name":"releasedAmountUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setClaimLockedUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionEnd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setEmissionRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionTimeUnit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_shares","type":"uint256[]"}],"name":"setSharesForTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"shares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162003b8b38038062003b8b83398101604081905262000034916200087a565b6200003f3362000057565b6001600255620000508133620000b2565b5062000a75565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620000d35750600054600160ff909116105b80620001035750620000f0306200025760201b62001c411760201c565b15801562000103575060005460ff166001145b6200016c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000190576000805461ff0019166101001790555b6200019b8262000057565b620001a882600062000266565b82516020840151620001bb9190620002a0565b620001df8360400151846060015185608001518660a00151620002d660201b60201c565b620001f98360c001518460e001516200031460201b60201c565b6101008301516200020a906200034a565b801562000252576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b6001600160a01b03163b151590565b600054610100900460ff16620002905760405162461bcd60e51b8152600401620001639062000997565b6200029c828262000382565b5050565b600054610100900460ff16620002ca5760405162461bcd60e51b8152600401620001639062000997565b6200029c828262000429565b600054610100900460ff16620003005760405162461bcd60e51b8152600401620001639062000997565b6200030e8484848462000493565b50505050565b600054610100900460ff166200033e5760405162461bcd60e51b8152600401620001639062000997565b6200029c82826200051e565b600054610100900460ff16620003745760405162461bcd60e51b8152600401620001639062000997565b6200037f81620005a9565b50565b600054610100900460ff16620003ac5760405162461bcd60e51b8152600401620001639062000997565b620003be63ac2ba33360e01b620005fb565b600a8054600160401b600160e01b03198116680100000000000000006001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b836003811115620004205762000420620009e2565b02179055505050565b600054610100900460ff16620004535760405162461bcd60e51b8152600401620001639062000997565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b038516171790556200029c631ba050e960e21b620005fb565b600054610100900460ff16620004bd5760405162461bcd60e51b8152600401620001639062000997565b6006849055600780546001600160401b03838116600160801b02600160801b600160c01b031986831668010000000000000000026001600160801b03199094169288169290921792909217161790556200030e63c9f600a960e01b620005fb565b600054610100900460ff16620005485760405162461bcd60e51b8152600401620001639062000997565b81518151146200058b5760405162461bcd60e51b815260206004820152600d60248201526c082a48ea6be9a92a69a82a8869609b1b604482015260640162000163565b6200059782826200067f565b6200029c6333c7a33f60e11b620005fb565b600054610100900460ff16620005d35760405162461bcd60e51b8152600401620001639062000997565b600a80546001600160401b0319166001600160401b0383161790556200037f6317b2ef4360e31b5b6001600160e01b03198082169003620006575760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640162000163565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60005b81518110156200025257620006d6838281518110620006a557620006a5620009f8565b6020026020010151838381518110620006c257620006c2620009f8565b6020026020010151620006eb60201b60201c565b80620006e28162000a24565b91505062000682565b600082815260096020526040902080549082905560085481906200071190849062000a40565b6200071d919062000a5b565b60085560408051848152602081018390529081018390527ff81b1f9d8b5d36a5a67d13006a8b091a9b63e2a38b331d315d99c6daefd2ddcc9060600162000249565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b03811182821017156200079b576200079b6200075f565b60405290565b80516001600160a01b0381168114620007b957600080fd5b919050565b80516001600160401b0381168114620007b957600080fd5b600082601f830112620007e857600080fd5b815160206001600160401b03808311156200080757620008076200075f565b8260051b604051601f19603f830116810181811084821117156200082f576200082f6200075f565b6040529384528581018301938381019250878511156200084e57600080fd5b83870191505b848210156200086f5781518352918301919083019062000854565b979650505050505050565b6000602082840312156200088d57600080fd5b81516001600160401b0380821115620008a557600080fd5b908301906101208286031215620008bb57600080fd5b620008c562000775565b620008d083620007a1565b8152620008e060208401620007be565b602082015260408301516040820152620008fd60608401620007be565b60608201526200091060808401620007be565b60808201526200092360a08401620007be565b60a082015260c0830151828111156200093b57600080fd5b6200094987828601620007d6565b60c08301525060e0830151828111156200096257600080fd5b6200097087828601620007d6565b60e083015250610100915062000988828401620007be565b91810191909152949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820162000a395762000a3962000a0e565b5060010190565b6000821982111562000a565762000a5662000a0e565b500190565b60008282101562000a705762000a7062000a0e565b500390565b6131068062000a856000396000f3fe6080604052600436106102a55760003560e01c806384fd5ae01161016157806384fd5ae01461076657806389c6b815146107865780638da5cb5b146107a65780638fc852b1146107c85780639199690b146107e8578063968d9b2c146107fc57806396afc4501461081c5780639edfe83014610832578063a1bdb15e14610852578063a1cf649314610872578063a86b21e8146108b5578063a8b46d87146107e8578063aaf2f999146108d5578063af121f54146108f5578063c088184914610916578063c0bb38ff1461094c578063c723955a1461096c578063d1335b69146107e8578063d5ed4d5a14610981578063d97314f5146109a1578063da82b227146109c1578063dcbe353f146109d6578063ddd5e1b2146109fd578063de6d6d9614610a1d578063f2fde38b14610a3d578063f389b6e414610a5d578063f4415ad614610a7d578063f66e38c214610ab5578063f685d74614610ad557600080fd5b80630191c0af146102be57806301ffc9a7146102f157806306fdde031461032157806314427a9614610376578063150b7a02146103ae5780631c725fdc146103f257806325289bad146104125780632890d033146104395780632c0e13131461044e5780632c2330671461046e5780632d00b5871461048e578063379607f5146104bc5780633a98ef39146104dc5780633b3f12e2146104f25780633d2dded51461051257806340f379481461054f57806349561cb91461057c578063513da9481461059d57806354fd4d50146105c457806357a858fc146105f357806357dc48c8146106205780636057e0ec1461067457806361949636146106955780636ba4c138146106b5578063715018a6146106d557806378b094ca146106ea578063790c0c731461070a5780638368909c1461072a578063837fe1401461075157600080fd5b366102b957600034116102b757600080fd5b005b600080fd5b3480156102ca57600080fd5b506102de6102d936600461272a565b610af5565b6040519081526020015b60405180910390f35b3480156102fd57600080fd5b5061031161030c366004612780565b610b4d565b60405190151581526020016102e8565b34801561032d57600080fd5b506103696040518060400160405280601c81526020017b45524337323120536861726520456d697373696f6e2053747265616d60201b81525081565b6040516102e891906127aa565b34801561038257600080fd5b50600a54610396906001600160401b031681565b6040516001600160401b0390911681526020016102e8565b3480156103ba57600080fd5b506103d96103c936600461286e565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016102e8565b3480156103fe57600080fd5b506102b761040d366004612948565b610b8d565b34801561041e57600080fd5b5060035461039690600160a01b90046001600160401b031681565b34801561044557600080fd5b506102de610c1c565b34801561045a57600080fd5b506102b7610469366004612948565b610c2d565b34801561047a57600080fd5b506102b7610489366004612963565b610c89565b34801561049a57600080fd5b50600a546104af90600160f01b900460ff1681565b6040516102e8919061299a565b3480156104c857600080fd5b506102b76104d73660046129c2565b610ce8565b3480156104e857600080fd5b506102de60085481565b3480156104fe57600080fd5b506102de61050d36600461272a565b610cf6565b34801561051e57600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc546102de565b34801561055b57600080fd5b5061056f61056a3660046129db565b610d74565b6040516102e89190612a1c565b34801561058857600080fd5b50600a5461031190600160f81b900460ff1681565b3480156105a957600080fd5b5060075461039690600160401b90046001600160401b031681565b3480156105d057600080fd5b5061036960405180604001604052806003815260200162302e3160e81b81525081565b3480156105ff57600080fd5b506102de61060e3660046129c2565b60096020526000908152604090205481565b34801561062c57600080fd5b5061065f61063b366004612a60565b60046020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016102e8565b34801561068057600080fd5b50600a5461031190600160e01b900460ff1681565b3480156106a157600080fd5b50600754610396906001600160401b031681565b3480156106c157600080fd5b506102b76106d03660046129db565b610e2b565b3480156106e157600080fd5b506102b7610e3c565b3480156106f657600080fd5b506102b7610705366004612948565b610e50565b34801561071657600080fd5b506102de610725366004612a90565b610eb6565b34801561073657600080fd5b5060075461039690600160801b90046001600160401b031681565b34801561075d57600080fd5b506102b7610f7a565b34801561077257600080fd5b506102de6107813660046129db565b610fc1565b34801561079257600080fd5b506102de6107a13660046129db565b61102b565b3480156107b257600080fd5b506107bb611039565b6040516102e89190612aad565b3480156107d457600080fd5b506102b76107e3366004612b40565b61104e565b3480156107f457600080fd5b506001610311565b34801561080857600080fd5b506102de6108173660046129c2565b6110b3565b34801561082857600080fd5b506102de60065481565b34801561083e57600080fd5b506102de61084d366004612948565b6110c0565b34801561085e57600080fd5b506102b761086d3660046129c2565b611105565b34801561087e57600080fd5b506102de61088d366004612a60565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b3480156108c157600080fd5b506102de6108d0366004612948565b611144565b3480156108e157600080fd5b506102b76108f0366004612948565b61118a565b34801561090157600080fd5b50600a5461031190600160e81b900460ff1681565b34801561092257600080fd5b506102de610931366004612a90565b6001600160a01b031660009081526005602052604090205490565b34801561095857600080fd5b506102b7610967366004612a90565b6111f1565b34801561097857600080fd5b506102b761124f565b34801561098d57600080fd5b506003546107bb906001600160a01b031681565b3480156109ad57600080fd5b506102b76109bc366004612948565b6112b0565b3480156109cd57600080fd5b506102b761130c565b3480156109e257600080fd5b50600a546107bb90600160401b90046001600160a01b031681565b348015610a0957600080fd5b506102b7610a18366004612a60565b611352565b348015610a2957600080fd5b506102b7610a38366004612ba3565b61154b565b348015610a4957600080fd5b506102b7610a58366004612a90565b611799565b348015610a6957600080fd5b506102b7610a78366004612c0e565b61180f565b348015610a8957600080fd5b506102de610a983660046129c2565b600090815260046020908152604080832083805290915290205490565b348015610ac157600080fd5b506102de610ad0366004612a60565b611a74565b348015610ae157600080fd5b506102b7610af0366004612c75565b611acc565b600080805b84811015610b4257610b24868683818110610b1757610b17612d8c565b9050602002013585611a74565b610b2e9083612db8565b915080610b3a81612dd0565b915050610afa565b5090505b9392505050565b60006301ffc9a760e01b6001600160e01b031983161480610b8757506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b610b95611c50565b6003546001600160401b03600160a01b909104811690821611610bef5760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b60448201526064015b60405180910390fd5b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000610c286000610eb6565b905090565b610c35611c50565b60035442600160a01b9091046001600160401b031610610c675760405162461bcd60e51b8152600401610be690612de9565b600a80546001600160401b0319166001600160401b0392909216919091179055565b610c91611c50565b600a54600160f81b900460ff1615610cbb5760405162461bcd60e51b8152600401610be690612e10565b600a805482919060ff60f01b1916600160f01b836003811115610ce057610ce0612984565b021790555050565b610cf3816000611352565b50565b600080805b84811015610b425760046000878784818110610d1957610d19612d8c565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b031681526020019081526020016000206000015482610d609190612db8565b915080610d6c81612dd0565b915050610cfb565b60606000826001600160401b03811115610d9057610d906127ff565b604051908082528060200260200182016040528015610db9578160200160208202803683370190505b50905060005b8151811015610e235760096000868684818110610dde57610dde612d8c565b90506020020135815260200190815260200160002054828281518110610e0657610e06612d8c565b602090810291909101015280610e1b81612dd0565b915050610dbf565b509392505050565b610e38828260003361180f565b5050565b610e44611c50565b610e4e6000611caf565b565b610e58611c50565b60035442600160a01b9091046001600160401b031610610e8a5760405162461bcd60e51b8152600401610be690612de9565b600780546001600160401b03909216600160801b02600160801b600160c01b0319909216919091179055565b60006001600160a01b038216610eea576001600160a01b038216600090815260056020526040902054610b87904790612db8565b6040516370a0823160e01b81526001600160a01b038316906370a0823190610f16903090600401612aad565b602060405180830381865afa158015610f33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f579190612e30565b6001600160a01b038316600090815260056020526040902054610b879190612db8565b610f82611c50565b600a54600160e01b900460ff1615610fac5760405162461bcd60e51b8152600401610be690612e10565b600a805460ff60e01b1916600160e01b179055565b6000805b828110156110245760096000858584818110610fe357610fe3612d8c565b905060200201358152602001908152602001600020546006546110069190612e5f565b6110109083612db8565b91508061101c81612dd0565b915050610fc5565b5092915050565b6000610b4683836000610cf6565b6000546201000090046001600160a01b031690565b611056611c50565b81518151146110775760405162461bcd60e51b8152600401610be690612e73565b60035442600160a01b9091046001600160401b0316106110a95760405162461bcd60e51b8152600401610be690612de9565b610e388282611d0a565b6000610b87826000611a74565b6007546000906001600160401b03808216916110e591600160401b9091041684612e9a565b6110ef9190612ec2565b6001600160401b0316600654610b879190612ee8565b61110d611c50565b60035442600160a01b9091046001600160401b03161061113f5760405162461bcd60e51b8152600401610be690612de9565b600655565b6007546006546000916001600160401b03808216929161116d91600160401b9091041685612e9a565b6001600160401b03166111809190612ee8565b610b879190612e5f565b611192611c50565b60035442600160a01b9091046001600160401b0316106111c45760405162461bcd60e51b8152600401610be690612de9565b600780546001600160401b03909216600160401b0267ffffffffffffffff60401b19909216919091179055565b6111f9611c50565b600a54600160e01b900460ff16156112235760405162461bcd60e51b8152600401610be690612e10565b600a80546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b611257611c50565b600a54600160f81b900460ff16156112995760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401610be6565b600a80546001600160f81b0316600160f81b179055565b6112b8611c50565b60035442600160a01b9091046001600160401b0316106112ea5760405162461bcd60e51b8152600401610be690612de9565b600780546001600160401b0319166001600160401b0392909216919091179055565b611314611c50565b600a805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b60028054036113735760405162461bcd60e51b8152600401610be690612f07565b6002805533611383838383611d64565b600061138f8484611a74565b9050600081116113d45760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b6044820152606401610be6565b60008481526004602090815260408083206001600160a01b038716845290915281208054839290611406908490612db8565b909155505060008481526004602090815260408083206001600160a01b038716845282528083204260019091015560059091528120805483929061144b908490612db8565b90915550506001600160a01b038316611476576114716001600160a01b03831682611d85565b6114e9565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906114a49085908590600401612f3e565b6020604051808303816000875af11580156114c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e79190612f57565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b61155433611e9b565b600a54600160401b90046001600160a01b03166115ab5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401610be6565b600a54600160e81b900460ff16156116055760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610be6565b60005b8381101561175557600085858381811061162457611624612d8c565b90506020020160208101906116399190612a90565b6001600160a01b0316036116845761167f83838381811061165c5761165c612d8c565b600a546001600160a01b03600160401b9091041692602090910201359050611d85565b611743565b84848281811061169657611696612d8c565b90506020020160208101906116ab9190612a90565b600a546001600160a01b039182169163a9059cbb91600160401b9004168585858181106116da576116da612d8c565b905060200201356040518363ffffffff1660e01b81526004016116fe929190612f3e565b6020604051808303816000875af115801561171d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117419190612f57565b505b8061174d81612dd0565b915050611608565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a58484848460405161178b9493929190612faf565b60405180910390a150505050565b6117a1611c50565b6001600160a01b0381166118065760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610be6565b610cf381611caf565b60028054036118305760405162461bcd60e51b8152600401610be690612f07565b600280556000805b848110156119605761186386868381811061185557611855612d8c565b905060200201358585611d64565b600061188787878481811061187a5761187a612d8c565b9050602002013586611a74565b9050801561194d5780600460008989868181106118a6576118a6612d8c565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b0316815260200190815260200160002060000160008282546118f09190612db8565b909155504290506004600089898681811061190d5761190d612d8c565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a16825290925290206001015561194a8184612db8565b92505b508061195881612dd0565b915050611838565b506001600160a01b03831660009081526005602052604081208054839290611989908490612db8565b90915550506001600160a01b0383166119b4576119af6001600160a01b03831682611d85565b611a27565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906119e29085908590600401612f3e565b6020604051808303816000875af1158015611a01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a259190612f57565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b1338387878786604051611a6096959493929190613012565b60405180910390a150506001600255505050565b600080611a94611a8d611a8685610eb6565b8686612028565b85856120b0565b60008581526004602090815260408083206001600160a01b0388168452909152902054909150611ac49082613051565b949350505050565b600054610100900460ff1615808015611aec5750600054600160ff909116105b80611b0d5750611afb30611c41565b158015611b0d575060005460ff166001145b611b705760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610be6565b6000805460ff191660011790558015611b93576000805461ff0019166101001790555b611b9c82611caf565b611ba78260006120d9565b611bb98360000151846020015161210a565b611bd58360400151846060015185608001518660a0015161213b565b611be78360c001518460e00151612174565b611bf58361010001516121a5565b8015611c3c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b6001600160a01b03163b151590565b33611c59611039565b6001600160a01b031614610e4e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be6565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b60005b8151811015611c3c57611d52838281518110611d2b57611d2b612d8c565b6020026020010151838381518110611d4557611d45612d8c565b60200260200101516121d5565b80611d5c81612dd0565b915050611d0d565b611d6f838383612244565b611d7a8383836122f9565b611c3c838383612344565b80471015611dd55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610be6565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611e22576040519150601f19603f3d011682016040523d82523d6000602084013e611e27565b606091505b5050905080611c3c5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610be6565b6003600a54600160f01b900460ff166003811115611ebb57611ebb612984565b03611efa5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401610be6565b6002600a54600160f01b900460ff166003811115611f1a57611f1a612984565b03611f225750565b6001600a54600160f01b900460ff166003811115611f4257611f42612984565b03611fa557600a546001600160a01b03828116600160401b9092041614610cf35760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401610be6565b6000600a54600160f01b900460ff166003811115611fc557611fc5612984565b03610cf357806001600160a01b0316611fdc611039565b6001600160a01b031614610cf35760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401610be6565b600754600090600160401b90046001600160401b031642101561204d57506000610b46565b600754600160801b90046001600160401b03161580159061207f5750600754600160801b90046001600160401b031642115b156120a7576007546120a090600160801b90046001600160401b03166110c0565b9050610b46565b6120a0426110c0565b6008546000838152600960205260408120549091906120cf9086612ee8565b611ac49190612e5f565b600054610100900460ff166121005760405162461bcd60e51b8152600401610be690613068565b610e388282612409565b600054610100900460ff166121315760405162461bcd60e51b8152600401610be690613068565b610e3882826124a3565b600054610100900460ff166121625760405162461bcd60e51b8152600401610be690613068565b61216e84848484612508565b50505050565b600054610100900460ff1661219b5760405162461bcd60e51b8152600401610be690613068565b610e388282612589565b600054610100900460ff166121cc5760405162461bcd60e51b8152600401610be690613068565b610cf3816125eb565b600082815260096020526040902080549082905560085481906121f9908490612db8565b6122039190613051565b60085560408051848152602081018390529081018390527ff81b1f9d8b5d36a5a67d13006a8b091a9b63e2a38b331d315d99c6daefd2ddcc90606001611c33565b6003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa15801561228f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b391906130b3565b6001600160a01b031614611c3c5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b6044820152606401610be6565b600a54426001600160401b0390911610611c3c5760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b6044820152606401610be6565b60075442600160401b9091046001600160401b0316106123945760405162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b6044820152606401610be6565b6007546123aa906001600160401b031642613051565b60008481526004602090815260408083206001600160a01b038716845290915290206001015410611c3c5760405162461bcd60e51b8152602060048201526009602482015268544f4f5f4541524c5960b81b6044820152606401610be6565b600054610100900460ff166124305760405162461bcd60e51b8152600401610be690613068565b61244063ac2ba33360e01b612639565b600a8054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b83600381111561249a5761249a612984565b02179055505050565b600054610100900460ff166124ca5760405162461bcd60e51b8152600401610be690613068565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055610e38631ba050e960e21b612639565b600054610100900460ff1661252f5760405162461bcd60e51b8152600401610be690613068565b6006849055600780546001600160401b03838116600160801b02600160801b600160c01b0319868316600160401b026001600160801b031990941692881692909217929092171617905561216e63c9f600a960e01b612639565b600054610100900460ff166125b05760405162461bcd60e51b8152600401610be690613068565b81518151146125d15760405162461bcd60e51b8152600401610be690612e73565b6125db8282611d0a565b610e386333c7a33f60e11b612639565b600054610100900460ff166126125760405162461bcd60e51b8152600401610be690613068565b600a80546001600160401b0319166001600160401b038316179055610cf36317b2ef4360e31b5b6001600160e01b031980821690036126925760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401610be6565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60008083601f8401126126cc57600080fd5b5081356001600160401b038111156126e357600080fd5b6020830191508360208260051b85010111156126fe57600080fd5b9250929050565b6001600160a01b0381168114610cf357600080fd5b803561272581612705565b919050565b60008060006040848603121561273f57600080fd5b83356001600160401b0381111561275557600080fd5b612761868287016126ba565b909450925050602084013561277581612705565b809150509250925092565b60006020828403121561279257600080fd5b81356001600160e01b031981168114610b4657600080fd5b600060208083528351808285015260005b818110156127d7578581018301518582016040015282016127bb565b818111156127e9576000604083870101525b50601f01601f1916929092016040019392505050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715612838576128386127ff565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612866576128666127ff565b604052919050565b6000806000806080858703121561288457600080fd5b843561288f81612705565b93506020858101356128a081612705565b93506040860135925060608601356001600160401b03808211156128c357600080fd5b818801915088601f8301126128d757600080fd5b8135818111156128e9576128e96127ff565b6128fb601f8201601f1916850161283e565b9150808252898482850101111561291157600080fd5b808484018584013760008482840101525080935050505092959194509250565b80356001600160401b038116811461272557600080fd5b60006020828403121561295a57600080fd5b610b4682612931565b60006020828403121561297557600080fd5b813560048110610b4657600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106129bc57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156129d457600080fd5b5035919050565b600080602083850312156129ee57600080fd5b82356001600160401b03811115612a0457600080fd5b612a10858286016126ba565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b81811015612a5457835183529284019291840191600101612a38565b50909695505050505050565b60008060408385031215612a7357600080fd5b823591506020830135612a8581612705565b809150509250929050565b600060208284031215612aa257600080fd5b8135610b4681612705565b6001600160a01b0391909116815260200190565b600082601f830112612ad257600080fd5b813560206001600160401b03821115612aed57612aed6127ff565b8160051b612afc82820161283e565b9283528481018201928281019087851115612b1657600080fd5b83870192505b84831015612b3557823582529183019190830190612b1c565b979650505050505050565b60008060408385031215612b5357600080fd5b82356001600160401b0380821115612b6a57600080fd5b612b7686838701612ac1565b93506020850135915080821115612b8c57600080fd5b50612b9985828601612ac1565b9150509250929050565b60008060008060408587031215612bb957600080fd5b84356001600160401b0380821115612bd057600080fd5b612bdc888389016126ba565b90965094506020870135915080821115612bf557600080fd5b50612c02878288016126ba565b95989497509550505050565b60008060008060608587031215612c2457600080fd5b84356001600160401b03811115612c3a57600080fd5b612c46878288016126ba565b9095509350506020850135612c5a81612705565b91506040850135612c6a81612705565b939692955090935050565b60008060408385031215612c8857600080fd5b82356001600160401b0380821115612c9f57600080fd5b908401906101208287031215612cb457600080fd5b612cbc612815565b612cc58361271a565b8152612cd360208401612931565b602082015260408301356040820152612cee60608401612931565b6060820152612cff60808401612931565b6080820152612d1060a08401612931565b60a082015260c083013582811115612d2757600080fd5b612d3388828601612ac1565b60c08301525060e083013582811115612d4b57600080fd5b612d5788828601612ac1565b60e0830152506101009150612d6d828401612931565b82820152809450505050612d836020840161271a565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115612dcb57612dcb612da2565b500190565b600060018201612de257612de2612da2565b5060010190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b600060208284031215612e4257600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600082612e6e57612e6e612e49565b500490565b6020808252600d908201526c082a48ea6be9a92a69a82a8869609b1b604082015260600190565b60006001600160401b0383811690831681811015612eba57612eba612da2565b039392505050565b60006001600160401b0380841680612edc57612edc612e49565b92169190910492915050565b6000816000190483118215151615612f0257612f02612da2565b500290565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b03929092168252602082015260400190565b600060208284031215612f6957600080fd5b81518015158114610b4657600080fd5b81835260006001600160fb1b03831115612f9257600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b87811015612ff2578235612fd581612705565b6001600160a01b0316825260209283019290910190600101612fc2565b508381036020850152613006818688612f79565b98975050505050505050565b600060018060a01b038089168352808816602084015260a0604084015261303d60a084018789612f79565b941660608301525060800152949350505050565b60008282101561306357613063612da2565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000602082840312156130c557600080fd5b8151610b468161270556fea2646970667358221220ddf9a9669766f1f409fe847aa01974c11ecaf7a5840b9995f80a334f80bff6ce64736f6c634300080f0033","deployedBytecode":"0x6080604052600436106102a55760003560e01c806384fd5ae01161016157806384fd5ae01461076657806389c6b815146107865780638da5cb5b146107a65780638fc852b1146107c85780639199690b146107e8578063968d9b2c146107fc57806396afc4501461081c5780639edfe83014610832578063a1bdb15e14610852578063a1cf649314610872578063a86b21e8146108b5578063a8b46d87146107e8578063aaf2f999146108d5578063af121f54146108f5578063c088184914610916578063c0bb38ff1461094c578063c723955a1461096c578063d1335b69146107e8578063d5ed4d5a14610981578063d97314f5146109a1578063da82b227146109c1578063dcbe353f146109d6578063ddd5e1b2146109fd578063de6d6d9614610a1d578063f2fde38b14610a3d578063f389b6e414610a5d578063f4415ad614610a7d578063f66e38c214610ab5578063f685d74614610ad557600080fd5b80630191c0af146102be57806301ffc9a7146102f157806306fdde031461032157806314427a9614610376578063150b7a02146103ae5780631c725fdc146103f257806325289bad146104125780632890d033146104395780632c0e13131461044e5780632c2330671461046e5780632d00b5871461048e578063379607f5146104bc5780633a98ef39146104dc5780633b3f12e2146104f25780633d2dded51461051257806340f379481461054f57806349561cb91461057c578063513da9481461059d57806354fd4d50146105c457806357a858fc146105f357806357dc48c8146106205780636057e0ec1461067457806361949636146106955780636ba4c138146106b5578063715018a6146106d557806378b094ca146106ea578063790c0c731461070a5780638368909c1461072a578063837fe1401461075157600080fd5b366102b957600034116102b757600080fd5b005b600080fd5b3480156102ca57600080fd5b506102de6102d936600461272a565b610af5565b6040519081526020015b60405180910390f35b3480156102fd57600080fd5b5061031161030c366004612780565b610b4d565b60405190151581526020016102e8565b34801561032d57600080fd5b506103696040518060400160405280601c81526020017b45524337323120536861726520456d697373696f6e2053747265616d60201b81525081565b6040516102e891906127aa565b34801561038257600080fd5b50600a54610396906001600160401b031681565b6040516001600160401b0390911681526020016102e8565b3480156103ba57600080fd5b506103d96103c936600461286e565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016102e8565b3480156103fe57600080fd5b506102b761040d366004612948565b610b8d565b34801561041e57600080fd5b5060035461039690600160a01b90046001600160401b031681565b34801561044557600080fd5b506102de610c1c565b34801561045a57600080fd5b506102b7610469366004612948565b610c2d565b34801561047a57600080fd5b506102b7610489366004612963565b610c89565b34801561049a57600080fd5b50600a546104af90600160f01b900460ff1681565b6040516102e8919061299a565b3480156104c857600080fd5b506102b76104d73660046129c2565b610ce8565b3480156104e857600080fd5b506102de60085481565b3480156104fe57600080fd5b506102de61050d36600461272a565b610cf6565b34801561051e57600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc546102de565b34801561055b57600080fd5b5061056f61056a3660046129db565b610d74565b6040516102e89190612a1c565b34801561058857600080fd5b50600a5461031190600160f81b900460ff1681565b3480156105a957600080fd5b5060075461039690600160401b90046001600160401b031681565b3480156105d057600080fd5b5061036960405180604001604052806003815260200162302e3160e81b81525081565b3480156105ff57600080fd5b506102de61060e3660046129c2565b60096020526000908152604090205481565b34801561062c57600080fd5b5061065f61063b366004612a60565b60046020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016102e8565b34801561068057600080fd5b50600a5461031190600160e01b900460ff1681565b3480156106a157600080fd5b50600754610396906001600160401b031681565b3480156106c157600080fd5b506102b76106d03660046129db565b610e2b565b3480156106e157600080fd5b506102b7610e3c565b3480156106f657600080fd5b506102b7610705366004612948565b610e50565b34801561071657600080fd5b506102de610725366004612a90565b610eb6565b34801561073657600080fd5b5060075461039690600160801b90046001600160401b031681565b34801561075d57600080fd5b506102b7610f7a565b34801561077257600080fd5b506102de6107813660046129db565b610fc1565b34801561079257600080fd5b506102de6107a13660046129db565b61102b565b3480156107b257600080fd5b506107bb611039565b6040516102e89190612aad565b3480156107d457600080fd5b506102b76107e3366004612b40565b61104e565b3480156107f457600080fd5b506001610311565b34801561080857600080fd5b506102de6108173660046129c2565b6110b3565b34801561082857600080fd5b506102de60065481565b34801561083e57600080fd5b506102de61084d366004612948565b6110c0565b34801561085e57600080fd5b506102b761086d3660046129c2565b611105565b34801561087e57600080fd5b506102de61088d366004612a60565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b3480156108c157600080fd5b506102de6108d0366004612948565b611144565b3480156108e157600080fd5b506102b76108f0366004612948565b61118a565b34801561090157600080fd5b50600a5461031190600160e81b900460ff1681565b34801561092257600080fd5b506102de610931366004612a90565b6001600160a01b031660009081526005602052604090205490565b34801561095857600080fd5b506102b7610967366004612a90565b6111f1565b34801561097857600080fd5b506102b761124f565b34801561098d57600080fd5b506003546107bb906001600160a01b031681565b3480156109ad57600080fd5b506102b76109bc366004612948565b6112b0565b3480156109cd57600080fd5b506102b761130c565b3480156109e257600080fd5b50600a546107bb90600160401b90046001600160a01b031681565b348015610a0957600080fd5b506102b7610a18366004612a60565b611352565b348015610a2957600080fd5b506102b7610a38366004612ba3565b61154b565b348015610a4957600080fd5b506102b7610a58366004612a90565b611799565b348015610a6957600080fd5b506102b7610a78366004612c0e565b61180f565b348015610a8957600080fd5b506102de610a983660046129c2565b600090815260046020908152604080832083805290915290205490565b348015610ac157600080fd5b506102de610ad0366004612a60565b611a74565b348015610ae157600080fd5b506102b7610af0366004612c75565b611acc565b600080805b84811015610b4257610b24868683818110610b1757610b17612d8c565b9050602002013585611a74565b610b2e9083612db8565b915080610b3a81612dd0565b915050610afa565b5090505b9392505050565b60006301ffc9a760e01b6001600160e01b031983161480610b8757506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b610b95611c50565b6003546001600160401b03600160a01b909104811690821611610bef5760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b60448201526064015b60405180910390fd5b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000610c286000610eb6565b905090565b610c35611c50565b60035442600160a01b9091046001600160401b031610610c675760405162461bcd60e51b8152600401610be690612de9565b600a80546001600160401b0319166001600160401b0392909216919091179055565b610c91611c50565b600a54600160f81b900460ff1615610cbb5760405162461bcd60e51b8152600401610be690612e10565b600a805482919060ff60f01b1916600160f01b836003811115610ce057610ce0612984565b021790555050565b610cf3816000611352565b50565b600080805b84811015610b425760046000878784818110610d1957610d19612d8c565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b031681526020019081526020016000206000015482610d609190612db8565b915080610d6c81612dd0565b915050610cfb565b60606000826001600160401b03811115610d9057610d906127ff565b604051908082528060200260200182016040528015610db9578160200160208202803683370190505b50905060005b8151811015610e235760096000868684818110610dde57610dde612d8c565b90506020020135815260200190815260200160002054828281518110610e0657610e06612d8c565b602090810291909101015280610e1b81612dd0565b915050610dbf565b509392505050565b610e38828260003361180f565b5050565b610e44611c50565b610e4e6000611caf565b565b610e58611c50565b60035442600160a01b9091046001600160401b031610610e8a5760405162461bcd60e51b8152600401610be690612de9565b600780546001600160401b03909216600160801b02600160801b600160c01b0319909216919091179055565b60006001600160a01b038216610eea576001600160a01b038216600090815260056020526040902054610b87904790612db8565b6040516370a0823160e01b81526001600160a01b038316906370a0823190610f16903090600401612aad565b602060405180830381865afa158015610f33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f579190612e30565b6001600160a01b038316600090815260056020526040902054610b879190612db8565b610f82611c50565b600a54600160e01b900460ff1615610fac5760405162461bcd60e51b8152600401610be690612e10565b600a805460ff60e01b1916600160e01b179055565b6000805b828110156110245760096000858584818110610fe357610fe3612d8c565b905060200201358152602001908152602001600020546006546110069190612e5f565b6110109083612db8565b91508061101c81612dd0565b915050610fc5565b5092915050565b6000610b4683836000610cf6565b6000546201000090046001600160a01b031690565b611056611c50565b81518151146110775760405162461bcd60e51b8152600401610be690612e73565b60035442600160a01b9091046001600160401b0316106110a95760405162461bcd60e51b8152600401610be690612de9565b610e388282611d0a565b6000610b87826000611a74565b6007546000906001600160401b03808216916110e591600160401b9091041684612e9a565b6110ef9190612ec2565b6001600160401b0316600654610b879190612ee8565b61110d611c50565b60035442600160a01b9091046001600160401b03161061113f5760405162461bcd60e51b8152600401610be690612de9565b600655565b6007546006546000916001600160401b03808216929161116d91600160401b9091041685612e9a565b6001600160401b03166111809190612ee8565b610b879190612e5f565b611192611c50565b60035442600160a01b9091046001600160401b0316106111c45760405162461bcd60e51b8152600401610be690612de9565b600780546001600160401b03909216600160401b0267ffffffffffffffff60401b19909216919091179055565b6111f9611c50565b600a54600160e01b900460ff16156112235760405162461bcd60e51b8152600401610be690612e10565b600a80546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b611257611c50565b600a54600160f81b900460ff16156112995760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401610be6565b600a80546001600160f81b0316600160f81b179055565b6112b8611c50565b60035442600160a01b9091046001600160401b0316106112ea5760405162461bcd60e51b8152600401610be690612de9565b600780546001600160401b0319166001600160401b0392909216919091179055565b611314611c50565b600a805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b60028054036113735760405162461bcd60e51b8152600401610be690612f07565b6002805533611383838383611d64565b600061138f8484611a74565b9050600081116113d45760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b6044820152606401610be6565b60008481526004602090815260408083206001600160a01b038716845290915281208054839290611406908490612db8565b909155505060008481526004602090815260408083206001600160a01b038716845282528083204260019091015560059091528120805483929061144b908490612db8565b90915550506001600160a01b038316611476576114716001600160a01b03831682611d85565b6114e9565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906114a49085908590600401612f3e565b6020604051808303816000875af11580156114c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e79190612f57565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b61155433611e9b565b600a54600160401b90046001600160a01b03166115ab5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401610be6565b600a54600160e81b900460ff16156116055760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610be6565b60005b8381101561175557600085858381811061162457611624612d8c565b90506020020160208101906116399190612a90565b6001600160a01b0316036116845761167f83838381811061165c5761165c612d8c565b600a546001600160a01b03600160401b9091041692602090910201359050611d85565b611743565b84848281811061169657611696612d8c565b90506020020160208101906116ab9190612a90565b600a546001600160a01b039182169163a9059cbb91600160401b9004168585858181106116da576116da612d8c565b905060200201356040518363ffffffff1660e01b81526004016116fe929190612f3e565b6020604051808303816000875af115801561171d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117419190612f57565b505b8061174d81612dd0565b915050611608565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a58484848460405161178b9493929190612faf565b60405180910390a150505050565b6117a1611c50565b6001600160a01b0381166118065760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610be6565b610cf381611caf565b60028054036118305760405162461bcd60e51b8152600401610be690612f07565b600280556000805b848110156119605761186386868381811061185557611855612d8c565b905060200201358585611d64565b600061188787878481811061187a5761187a612d8c565b9050602002013586611a74565b9050801561194d5780600460008989868181106118a6576118a6612d8c565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b0316815260200190815260200160002060000160008282546118f09190612db8565b909155504290506004600089898681811061190d5761190d612d8c565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a16825290925290206001015561194a8184612db8565b92505b508061195881612dd0565b915050611838565b506001600160a01b03831660009081526005602052604081208054839290611989908490612db8565b90915550506001600160a01b0383166119b4576119af6001600160a01b03831682611d85565b611a27565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906119e29085908590600401612f3e565b6020604051808303816000875af1158015611a01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a259190612f57565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b1338387878786604051611a6096959493929190613012565b60405180910390a150506001600255505050565b600080611a94611a8d611a8685610eb6565b8686612028565b85856120b0565b60008581526004602090815260408083206001600160a01b0388168452909152902054909150611ac49082613051565b949350505050565b600054610100900460ff1615808015611aec5750600054600160ff909116105b80611b0d5750611afb30611c41565b158015611b0d575060005460ff166001145b611b705760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610be6565b6000805460ff191660011790558015611b93576000805461ff0019166101001790555b611b9c82611caf565b611ba78260006120d9565b611bb98360000151846020015161210a565b611bd58360400151846060015185608001518660a0015161213b565b611be78360c001518460e00151612174565b611bf58361010001516121a5565b8015611c3c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b6001600160a01b03163b151590565b33611c59611039565b6001600160a01b031614610e4e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be6565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b60005b8151811015611c3c57611d52838281518110611d2b57611d2b612d8c565b6020026020010151838381518110611d4557611d45612d8c565b60200260200101516121d5565b80611d5c81612dd0565b915050611d0d565b611d6f838383612244565b611d7a8383836122f9565b611c3c838383612344565b80471015611dd55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610be6565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611e22576040519150601f19603f3d011682016040523d82523d6000602084013e611e27565b606091505b5050905080611c3c5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610be6565b6003600a54600160f01b900460ff166003811115611ebb57611ebb612984565b03611efa5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401610be6565b6002600a54600160f01b900460ff166003811115611f1a57611f1a612984565b03611f225750565b6001600a54600160f01b900460ff166003811115611f4257611f42612984565b03611fa557600a546001600160a01b03828116600160401b9092041614610cf35760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401610be6565b6000600a54600160f01b900460ff166003811115611fc557611fc5612984565b03610cf357806001600160a01b0316611fdc611039565b6001600160a01b031614610cf35760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401610be6565b600754600090600160401b90046001600160401b031642101561204d57506000610b46565b600754600160801b90046001600160401b03161580159061207f5750600754600160801b90046001600160401b031642115b156120a7576007546120a090600160801b90046001600160401b03166110c0565b9050610b46565b6120a0426110c0565b6008546000838152600960205260408120549091906120cf9086612ee8565b611ac49190612e5f565b600054610100900460ff166121005760405162461bcd60e51b8152600401610be690613068565b610e388282612409565b600054610100900460ff166121315760405162461bcd60e51b8152600401610be690613068565b610e3882826124a3565b600054610100900460ff166121625760405162461bcd60e51b8152600401610be690613068565b61216e84848484612508565b50505050565b600054610100900460ff1661219b5760405162461bcd60e51b8152600401610be690613068565b610e388282612589565b600054610100900460ff166121cc5760405162461bcd60e51b8152600401610be690613068565b610cf3816125eb565b600082815260096020526040902080549082905560085481906121f9908490612db8565b6122039190613051565b60085560408051848152602081018390529081018390527ff81b1f9d8b5d36a5a67d13006a8b091a9b63e2a38b331d315d99c6daefd2ddcc90606001611c33565b6003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa15801561228f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b391906130b3565b6001600160a01b031614611c3c5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b6044820152606401610be6565b600a54426001600160401b0390911610611c3c5760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b6044820152606401610be6565b60075442600160401b9091046001600160401b0316106123945760405162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b6044820152606401610be6565b6007546123aa906001600160401b031642613051565b60008481526004602090815260408083206001600160a01b038716845290915290206001015410611c3c5760405162461bcd60e51b8152602060048201526009602482015268544f4f5f4541524c5960b81b6044820152606401610be6565b600054610100900460ff166124305760405162461bcd60e51b8152600401610be690613068565b61244063ac2ba33360e01b612639565b600a8054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b83600381111561249a5761249a612984565b02179055505050565b600054610100900460ff166124ca5760405162461bcd60e51b8152600401610be690613068565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055610e38631ba050e960e21b612639565b600054610100900460ff1661252f5760405162461bcd60e51b8152600401610be690613068565b6006849055600780546001600160401b03838116600160801b02600160801b600160c01b0319868316600160401b026001600160801b031990941692881692909217929092171617905561216e63c9f600a960e01b612639565b600054610100900460ff166125b05760405162461bcd60e51b8152600401610be690613068565b81518151146125d15760405162461bcd60e51b8152600401610be690612e73565b6125db8282611d0a565b610e386333c7a33f60e11b612639565b600054610100900460ff166126125760405162461bcd60e51b8152600401610be690613068565b600a80546001600160401b0319166001600160401b038316179055610cf36317b2ef4360e31b5b6001600160e01b031980821690036126925760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401610be6565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60008083601f8401126126cc57600080fd5b5081356001600160401b038111156126e357600080fd5b6020830191508360208260051b85010111156126fe57600080fd5b9250929050565b6001600160a01b0381168114610cf357600080fd5b803561272581612705565b919050565b60008060006040848603121561273f57600080fd5b83356001600160401b0381111561275557600080fd5b612761868287016126ba565b909450925050602084013561277581612705565b809150509250925092565b60006020828403121561279257600080fd5b81356001600160e01b031981168114610b4657600080fd5b600060208083528351808285015260005b818110156127d7578581018301518582016040015282016127bb565b818111156127e9576000604083870101525b50601f01601f1916929092016040019392505050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715612838576128386127ff565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612866576128666127ff565b604052919050565b6000806000806080858703121561288457600080fd5b843561288f81612705565b93506020858101356128a081612705565b93506040860135925060608601356001600160401b03808211156128c357600080fd5b818801915088601f8301126128d757600080fd5b8135818111156128e9576128e96127ff565b6128fb601f8201601f1916850161283e565b9150808252898482850101111561291157600080fd5b808484018584013760008482840101525080935050505092959194509250565b80356001600160401b038116811461272557600080fd5b60006020828403121561295a57600080fd5b610b4682612931565b60006020828403121561297557600080fd5b813560048110610b4657600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106129bc57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156129d457600080fd5b5035919050565b600080602083850312156129ee57600080fd5b82356001600160401b03811115612a0457600080fd5b612a10858286016126ba565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b81811015612a5457835183529284019291840191600101612a38565b50909695505050505050565b60008060408385031215612a7357600080fd5b823591506020830135612a8581612705565b809150509250929050565b600060208284031215612aa257600080fd5b8135610b4681612705565b6001600160a01b0391909116815260200190565b600082601f830112612ad257600080fd5b813560206001600160401b03821115612aed57612aed6127ff565b8160051b612afc82820161283e565b9283528481018201928281019087851115612b1657600080fd5b83870192505b84831015612b3557823582529183019190830190612b1c565b979650505050505050565b60008060408385031215612b5357600080fd5b82356001600160401b0380821115612b6a57600080fd5b612b7686838701612ac1565b93506020850135915080821115612b8c57600080fd5b50612b9985828601612ac1565b9150509250929050565b60008060008060408587031215612bb957600080fd5b84356001600160401b0380821115612bd057600080fd5b612bdc888389016126ba565b90965094506020870135915080821115612bf557600080fd5b50612c02878288016126ba565b95989497509550505050565b60008060008060608587031215612c2457600080fd5b84356001600160401b03811115612c3a57600080fd5b612c46878288016126ba565b9095509350506020850135612c5a81612705565b91506040850135612c6a81612705565b939692955090935050565b60008060408385031215612c8857600080fd5b82356001600160401b0380821115612c9f57600080fd5b908401906101208287031215612cb457600080fd5b612cbc612815565b612cc58361271a565b8152612cd360208401612931565b602082015260408301356040820152612cee60608401612931565b6060820152612cff60808401612931565b6080820152612d1060a08401612931565b60a082015260c083013582811115612d2757600080fd5b612d3388828601612ac1565b60c08301525060e083013582811115612d4b57600080fd5b612d5788828601612ac1565b60e0830152506101009150612d6d828401612931565b82820152809450505050612d836020840161271a565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115612dcb57612dcb612da2565b500190565b600060018201612de257612de2612da2565b5060010190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b600060208284031215612e4257600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600082612e6e57612e6e612e49565b500490565b6020808252600d908201526c082a48ea6be9a92a69a82a8869609b1b604082015260600190565b60006001600160401b0383811690831681811015612eba57612eba612da2565b039392505050565b60006001600160401b0380841680612edc57612edc612e49565b92169190910492915050565b6000816000190483118215151615612f0257612f02612da2565b500290565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b03929092168252602082015260400190565b600060208284031215612f6957600080fd5b81518015158114610b4657600080fd5b81835260006001600160fb1b03831115612f9257600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b87811015612ff2578235612fd581612705565b6001600160a01b0316825260209283019290910190600101612fc2565b508381036020850152613006818688612f79565b98975050505050505050565b600060018060a01b038089168352808816602084015260a0604084015261303d60a084018789612f79565b941660608301525060800152949350505050565b60008282101561306357613063612da2565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000602082840312156130c557600080fd5b8151610b468161270556fea2646970667358221220ddf9a9669766f1f409fe847aa01974c11ecaf7a5840b9995f80a334f80bff6ce64736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/presets/ERC721ShareInstantStream":{"address":{"1":"0x5082a0AAffd7A82B16A15b6Ef42774A94527E69B","3":"0x2f6ccd01759b3DB70e15f29fa647873Ed6bD42E3","4":"0x8eDba367b8E43C7AD6Fcd1A1E49f774579170b35","5":"0x2ccF63FE5613d729E4bc7edAb240aba09B2A703b","25":"0x35F6B1d81aED96Ae0019bdec354a80E99219bEc5","56":"0x1dc99a44b07f1790647087D789173991DFa5EE65","65":"0xF8fA73a567812c638e3258144965c03680CD2D87","66":"0xdb2730fBef4d69d28Bb16d0C071Fca42ED59bE00","97":"0xe0F561A9C77c04092593Ff88370D703F239B4f7f","137":"0x17DF0F10FB59B270Bf207986282911fF450CE674","250":"0xF8ABF0b720378bb25b3f73c01BDBd1A7EC558FB6","280":"0x487C19e46b954F202F4311e5FB326C9b55C9B626","4002":"0xF8ABF0b720378bb25b3f73c01BDBd1A7EC558FB6","9000":"0xF8fA73a567812c638e3258144965c03680CD2D87","42161":"0xd90D65411bab7126E1Ffc6293B4db8E40Ae2da3c","43113":"0x5082a0AAffd7A82B16A15b6Ef42774A94527E69B","43114":"0xa878c0aeAaA76Ec7A370b76Ac5BcAc4364eD60e1","421611":"0xf0bC1455b81Cd9eFa6C89eF3ee304345450530A8","arbitrumOne":"0xd90D65411bab7126E1Ffc6293B4db8E40Ae2da3c","arbitrumTestnet":"0xf0bC1455b81Cd9eFa6C89eF3ee304345450530A8","avalanche":"0xa878c0aeAaA76Ec7A370b76Ac5BcAc4364eD60e1","avalancheFujiTestnet":"0x5082a0AAffd7A82B16A15b6Ef42774A94527E69B","bsc":"0x1dc99a44b07f1790647087D789173991DFa5EE65","bscTestnet":"0xe0F561A9C77c04092593Ff88370D703F239B4f7f","cronos":"0x35F6B1d81aED96Ae0019bdec354a80E99219bEc5","evmosTestnet":"0xF8fA73a567812c638e3258144965c03680CD2D87","ftmTestnet":"0xF8ABF0b720378bb25b3f73c01BDBd1A7EC558FB6","goerli":"0x2ccF63FE5613d729E4bc7edAb240aba09B2A703b","mainnet":"0x5082a0AAffd7A82B16A15b6Ef42774A94527E69B","okcMainnet":"0xdb2730fBef4d69d28Bb16d0C071Fca42ED59bE00","okcTestnet":"0xF8fA73a567812c638e3258144965c03680CD2D87","opera":"0xF8ABF0b720378bb25b3f73c01BDBd1A7EC558FB6","polygon":"0x17DF0F10FB59B270Bf207986282911fF450CE674","rinkeby":"0x8eDba367b8E43C7AD6Fcd1A1E49f774579170b35","ropsten":"0x2f6ccd01759b3DB70e15f29fa647873Ed6bD42E3","zksyncTestnet":"0x487C19e46b954F202F4311e5FB326C9b55C9B626"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721ShareInstantStream","sourceName":"contracts/streams/ERC721/presets/ERC721ShareInstantStream.sol","abi":[{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"uint64","name":"claimLockedUntil","type":"uint64"}],"internalType":"struct ERC721ShareInstantStream.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"prevShares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newShares","type":"uint256"}],"name":"SharesUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimLockedUntil","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"getSharesByTokens","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721InstantReleaseExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721LockableClaimExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721ShareSplitExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"uint64","name":"claimLockedUntil","type":"uint64"}],"internalType":"struct ERC721ShareInstantStream.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setClaimLockedUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_shares","type":"uint256[]"}],"name":"setSharesForTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"shares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x60806040523480156200001157600080fd5b506040516200343b3803806200343b8339810160408190526200003491620007ef565b6200003f3362000057565b6001600255620000508133620000b2565b50620009ae565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620000d35750600054600160ff909116105b80620001035750620000f0306200023c60201b620017f71760201c565b15801562000103575060005460ff166001145b6200016c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000190576000805461ff0019166101001790555b6200019b8262000057565b620001a88260006200024b565b82516020840151620001bb919062000285565b620001c5620002bb565b620001df83604001518460600151620002f160201b60201c565b6080830151620001ef9062000327565b801562000237576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b6001600160a01b03163b151590565b600054610100900460ff16620002755760405162461bcd60e51b81526004016200016390620008d0565b6200028182826200035f565b5050565b600054610100900460ff16620002af5760405162461bcd60e51b81526004016200016390620008d0565b62000281828262000406565b600054610100900460ff16620002e55760405162461bcd60e51b81526004016200016390620008d0565b620002ef62000470565b565b600054610100900460ff166200031b5760405162461bcd60e51b81526004016200016390620008d0565b620002818282620004ac565b600054610100900460ff16620003515760405162461bcd60e51b81526004016200016390620008d0565b6200035c8162000537565b50565b600054610100900460ff16620003895760405162461bcd60e51b81526004016200016390620008d0565b6200039b63ac2ba33360e01b62000589565b60088054600160401b600160e01b03198116680100000000000000006001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b836003811115620003fd57620003fd6200091b565b02179055505050565b600054610100900460ff16620004305760405162461bcd60e51b81526004016200016390620008d0565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b0385161717905562000281631ba050e960e21b62000589565b600054610100900460ff166200049a5760405162461bcd60e51b81526004016200016390620008d0565b620002ef631259990960e01b62000589565b600054610100900460ff16620004d65760405162461bcd60e51b81526004016200016390620008d0565b8151815114620005195760405162461bcd60e51b815260206004820152600d60248201526c082a48ea6be9a92a69a82a8869609b1b604482015260640162000163565b6200052582826200060d565b620002816333c7a33f60e11b62000589565b600054610100900460ff16620005615760405162461bcd60e51b81526004016200016390620008d0565b600880546001600160401b0319166001600160401b0383161790556200035c6317b2ef4360e31b5b6001600160e01b03198082169003620005e55760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640162000163565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60005b815181101562000237576200066483828151811062000633576200063362000931565b602002602001015183838151811062000650576200065062000931565b60200260200101516200067960201b60201c565b8062000670816200095d565b91505062000610565b600082815260076020526040902080549082905560065481906200069f90849062000979565b620006ab919062000994565b60065560408051848152602081018390529081018390527ff81b1f9d8b5d36a5a67d13006a8b091a9b63e2a38b331d315d99c6daefd2ddcc906060016200022e565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b0381118282101715620007285762000728620006ed565b60405290565b80516001600160401b03811681146200074657600080fd5b919050565b600082601f8301126200075d57600080fd5b815160206001600160401b03808311156200077c576200077c620006ed565b8260051b604051601f19603f83011681018181108482111715620007a457620007a4620006ed565b604052938452858101830193838101925087851115620007c357600080fd5b83870191505b84821015620007e457815183529183019190830190620007c9565b979650505050505050565b6000602082840312156200080257600080fd5b81516001600160401b03808211156200081a57600080fd5b9083019060a082860312156200082f57600080fd5b6200083962000703565b82516001600160a01b03811681146200085157600080fd5b815262000861602084016200072e565b60208201526040830151828111156200087957600080fd5b62000887878286016200074b565b604083015250606083015182811115620008a057600080fd5b620008ae878286016200074b565b606083015250620008c2608084016200072e565b608082015295945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820162000972576200097262000947565b5060010190565b600082198211156200098f576200098f62000947565b500190565b600082821015620009a957620009a962000947565b500390565b612a7d80620009be6000396000f3fe60806040526004361061022c5760003560e01c80636ba4c1381161012a5780636ba4c13814610628578063715018a614610648578063790c0c731461065d578063837fe1401461067d57806389c6b815146106925780638da5cb5b146106b25780638fc852b1146106d45780639199690b1461031c578063968d9b2c146106f4578063a1cf649314610714578063a8b46d871461031c578063af121f5414610757578063c088184914610778578063c0bb38ff146107ae578063c723955a146107ce578063d5ed4d5a146107e3578063da82b22714610803578063dcbe353f14610818578063ddd5e1b21461083f578063de6d6d961461085f578063f2fde38b1461087f578063f389b6e41461089f578063f4415ad6146108bf578063f66e38c2146108f757600080fd5b8063016b2798146102455780630191c0af1461026557806301ffc9a71461029857806306fdde03146102c8578063125999091461031c57806314427a9614610330578063150b7a02146103685780631c725fdc146103ac57806325289bad146103cc5780632890d033146103f35780632c0e1313146104085780632c233067146104285780632d00b58714610448578063379607f5146104765780633a98ef39146104965780633b3f12e2146104ac5780633d2dded5146104cc57806340f379481461050957806349561cb91461053657806354fd4d501461055757806357a858fc1461058657806357dc48c8146105b35780636057e0ec1461060757600080fd5b36610240576000341161023e57600080fd5b005b600080fd5b34801561025157600080fd5b5061023e6102603660046121f1565b610917565b34801561027157600080fd5b50610285610280366004612313565b610a7c565b6040519081526020015b60405180910390f35b3480156102a457600080fd5b506102b86102b3366004612369565b610ad2565b604051901515815260200161028f565b3480156102d457600080fd5b5061030f6040518060400160405280601b81526020017a45524337323120536861726520496e7374616e742053747265616d60281b81525081565b60405161028f9190612393565b34801561032857600080fd5b5060016102b8565b34801561033c57600080fd5b50600854610350906001600160401b031681565b6040516001600160401b03909116815260200161028f565b34801561037457600080fd5b506103936103833660046123e8565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161028f565b3480156103b857600080fd5b5061023e6103c73660046124ab565b610b12565b3480156103d857600080fd5b5060035461035090600160a01b90046001600160401b031681565b3480156103ff57600080fd5b50610285610b9c565b34801561041457600080fd5b5061023e6104233660046124ab565b610bad565b34801561043457600080fd5b5061023e6104433660046124c6565b610c09565b34801561045457600080fd5b5060085461046990600160f01b900460ff1681565b60405161028f91906124fd565b34801561048257600080fd5b5061023e610491366004612525565b610c68565b3480156104a257600080fd5b5061028560065481565b3480156104b857600080fd5b506102856104c7366004612313565b610c76565b3480156104d857600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc54610285565b34801561051557600080fd5b5061052961052436600461253e565b610cf4565b60405161028f919061257f565b34801561054257600080fd5b506008546102b890600160f81b900460ff1681565b34801561056357600080fd5b5061030f60405180604001604052806003815260200162302e3160e81b81525081565b34801561059257600080fd5b506102856105a1366004612525565b60076020526000908152604090205481565b3480156105bf57600080fd5b506105f26105ce3660046125c3565b60046020908152600092835260408084209091529082529020805460019091015482565b6040805192835260208301919091520161028f565b34801561061357600080fd5b506008546102b890600160e01b900460ff1681565b34801561063457600080fd5b5061023e61064336600461253e565b610dab565b34801561065457600080fd5b5061023e610dbc565b34801561066957600080fd5b506102856106783660046125f3565b610dd0565b34801561068957600080fd5b5061023e610e94565b34801561069e57600080fd5b506102856106ad36600461253e565b610edb565b3480156106be57600080fd5b506106c7610ef0565b60405161028f9190612610565b3480156106e057600080fd5b5061023e6106ef366004612624565b610f05565b34801561070057600080fd5b5061028561070f366004612525565b610f6a565b34801561072057600080fd5b5061028561072f3660046125c3565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b34801561076357600080fd5b506008546102b890600160e81b900460ff1681565b34801561078457600080fd5b506102856107933660046125f3565b6001600160a01b031660009081526005602052604090205490565b3480156107ba57600080fd5b5061023e6107c93660046125f3565b610f77565b3480156107da57600080fd5b5061023e610fd5565b3480156107ef57600080fd5b506003546106c7906001600160a01b031681565b34801561080f57600080fd5b5061023e611036565b34801561082457600080fd5b506008546106c790600160401b90046001600160a01b031681565b34801561084b57600080fd5b5061023e61085a3660046125c3565b61107c565b34801561086b57600080fd5b5061023e61087a366004612687565b611275565b34801561088b57600080fd5b5061023e61089a3660046125f3565b6114c8565b3480156108ab57600080fd5b5061023e6108ba3660046126f2565b61153e565b3480156108cb57600080fd5b506102856108da366004612525565b600090815260046020908152604080832083805290915290205490565b34801561090357600080fd5b506102856109123660046125c3565b6117a3565b600054610100900460ff16158080156109375750600054600160ff909116105b806109585750610946306117f7565b158015610958575060005460ff166001145b6109c05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156109e3576000805461ff0019166101001790555b6109ec82611806565b6109f7826000611861565b610a0983600001518460200151611892565b610a116118c3565b610a23836040015184606001516118f2565b610a308360800151611923565b8015610a77576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b600080805b84811015610ac957610aab868683818110610a9e57610a9e612759565b90506020020135856117a3565b610ab59083612785565b915080610ac18161279d565b915050610a81565b50949350505050565b60006301ffc9a760e01b6001600160e01b031983161480610b0c57506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b610b1a611953565b6003546001600160401b03600160a01b909104811690821611610b6f5760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b60448201526064016109b7565b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000610ba86000610dd0565b905090565b610bb5611953565b60035442600160a01b9091046001600160401b031610610be75760405162461bcd60e51b81526004016109b7906127b6565b600880546001600160401b0319166001600160401b0392909216919091179055565b610c11611953565b600854600160f81b900460ff1615610c3b5760405162461bcd60e51b81526004016109b7906127dd565b6008805482919060ff60f01b1916600160f01b836003811115610c6057610c606124e7565b021790555050565b610c7381600061107c565b50565b600080805b84811015610ac95760046000878784818110610c9957610c99612759565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b031681526020019081526020016000206000015482610ce09190612785565b915080610cec8161279d565b915050610c7b565b60606000826001600160401b03811115610d1057610d106120c8565b604051908082528060200260200182016040528015610d39578160200160208202803683370190505b50905060005b8151811015610da35760076000868684818110610d5e57610d5e612759565b90506020020135815260200190815260200160002054828281518110610d8657610d86612759565b602090810291909101015280610d9b8161279d565b915050610d3f565b509392505050565b610db8828260003361153e565b5050565b610dc4611953565b610dce6000611806565b565b60006001600160a01b038216610e04576001600160a01b038216600090815260056020526040902054610b0c904790612785565b6040516370a0823160e01b81526001600160a01b038316906370a0823190610e30903090600401612610565b602060405180830381865afa158015610e4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7191906127fd565b6001600160a01b038316600090815260056020526040902054610b0c9190612785565b610e9c611953565b600854600160e01b900460ff1615610ec65760405162461bcd60e51b81526004016109b7906127dd565b6008805460ff60e01b1916600160e01b179055565b6000610ee983836000610c76565b9392505050565b6000546201000090046001600160a01b031690565b610f0d611953565b8151815114610f2e5760405162461bcd60e51b81526004016109b790612816565b60035442600160a01b9091046001600160401b031610610f605760405162461bcd60e51b81526004016109b7906127b6565b610db882826119b2565b6000610b0c8260006117a3565b610f7f611953565b600854600160e01b900460ff1615610fa95760405162461bcd60e51b81526004016109b7906127dd565b600880546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b610fdd611953565b600854600160f81b900460ff161561101f5760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b60448201526064016109b7565b600880546001600160f81b0316600160f81b179055565b61103e611953565b6008805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b600280540361109d5760405162461bcd60e51b81526004016109b79061283d565b60028055336110ad838383611a0c565b60006110b984846117a3565b9050600081116110fe5760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b60448201526064016109b7565b60008481526004602090815260408083206001600160a01b038716845290915281208054839290611130908490612785565b909155505060008481526004602090815260408083206001600160a01b0387168452825280832042600190910155600590915281208054839290611175908490612785565b90915550506001600160a01b0383166111a05761119b6001600160a01b03831682611a22565b611213565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906111ce9085908590600401612874565b6020604051808303816000875af11580156111ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611211919061288d565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b61127e33611b38565b600854600160401b90046001600160a01b03166112d55760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b60448201526064016109b7565b600854600160e81b900460ff161561132f5760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b454460448201526064016109b7565b60005b8381101561148457600085858381811061134e5761134e612759565b905060200201602081019061136391906125f3565b6001600160a01b0316036113ae576113a983838381811061138657611386612759565b6008546001600160a01b03600160401b9091041692602090910201359050611a22565b611472565b8484828181106113c0576113c0612759565b90506020020160208101906113d591906125f3565b6001600160a01b031663a9059cbb60088054906101000a90046001600160a01b031685858581811061140957611409612759565b905060200201356040518363ffffffff1660e01b815260040161142d929190612874565b6020604051808303816000875af115801561144c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611470919061288d565b505b8061147c8161279d565b915050611332565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a5848484846040516114ba94939291906128e5565b60405180910390a150505050565b6114d0611953565b6001600160a01b0381166115355760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109b7565b610c7381611806565b600280540361155f5760405162461bcd60e51b81526004016109b79061283d565b600280556000805b8481101561168f5761159286868381811061158457611584612759565b905060200201358585611a0c565b60006115b68787848181106115a9576115a9612759565b90506020020135866117a3565b9050801561167c5780600460008989868181106115d5576115d5612759565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b03168152602001908152602001600020600001600082825461161f9190612785565b909155504290506004600089898681811061163c5761163c612759565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a1682529092529020600101556116798184612785565b92505b50806116878161279d565b915050611567565b506001600160a01b038316600090815260056020526040812080548392906116b8908490612785565b90915550506001600160a01b0383166116e3576116de6001600160a01b03831682611a22565b611756565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906117119085908590600401612874565b6020604051808303816000875af1158015611730573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611754919061288d565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b133838787878660405161178f96959493929190612948565b60405180910390a150506001600255505050565b6000806117bf6117b86117b585610dd0565b90565b8585611cc5565b60008581526004602090815260408083206001600160a01b03881684529091529020549091506117ef9082612987565b949350505050565b6001600160a01b03163b151590565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff166118885760405162461bcd60e51b81526004016109b79061299e565b610db88282611cee565b600054610100900460ff166118b95760405162461bcd60e51b81526004016109b79061299e565b610db88282611d88565b600054610100900460ff166118ea5760405162461bcd60e51b81526004016109b79061299e565b610dce611ded565b600054610100900460ff166119195760405162461bcd60e51b81526004016109b79061299e565b610db88282611e24565b600054610100900460ff1661194a5760405162461bcd60e51b81526004016109b79061299e565b610c7381611e86565b3361195c610ef0565b6001600160a01b031614610dce5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109b7565b60005b8151811015610a77576119fa8382815181106119d3576119d3612759565b60200260200101518383815181106119ed576119ed612759565b6020026020010151611ed8565b80611a048161279d565b9150506119b5565b611a17838383611f47565b610a77838383611ffc565b80471015611a725760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016109b7565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611abf576040519150601f19603f3d011682016040523d82523d6000602084013e611ac4565b606091505b5050905080610a775760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b60648201526084016109b7565b6003600854600160f01b900460ff166003811115611b5857611b586124e7565b03611b975760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b60448201526064016109b7565b6002600854600160f01b900460ff166003811115611bb757611bb76124e7565b03611bbf5750565b6001600854600160f01b900460ff166003811115611bdf57611bdf6124e7565b03611c42576008546001600160a01b03828116600160401b9092041614610c735760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b60448201526064016109b7565b6000600854600160f01b900460ff166003811115611c6257611c626124e7565b03610c7357806001600160a01b0316611c79610ef0565b6001600160a01b031614610c735760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b60448201526064016109b7565b600654600083815260076020526040812054909190611ce490866129e9565b6117ef9190612a08565b600054610100900460ff16611d155760405162461bcd60e51b81526004016109b79061299e565b611d2563ac2ba33360e01b612047565b60088054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b836003811115611d7f57611d7f6124e7565b02179055505050565b600054610100900460ff16611daf5760405162461bcd60e51b81526004016109b79061299e565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055610db8631ba050e960e21b612047565b600054610100900460ff16611e145760405162461bcd60e51b81526004016109b79061299e565b610dce631259990960e01b612047565b600054610100900460ff16611e4b5760405162461bcd60e51b81526004016109b79061299e565b8151815114611e6c5760405162461bcd60e51b81526004016109b790612816565b611e7682826119b2565b610db86333c7a33f60e11b612047565b600054610100900460ff16611ead5760405162461bcd60e51b81526004016109b79061299e565b600880546001600160401b0319166001600160401b038316179055610c736317b2ef4360e31b612047565b60008281526007602052604090208054908290556006548190611efc908490612785565b611f069190612987565b60065560408051848152602081018390529081018390527ff81b1f9d8b5d36a5a67d13006a8b091a9b63e2a38b331d315d99c6daefd2ddcc90606001610a6e565b6003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa158015611f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb69190612a2a565b6001600160a01b031614610a775760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b60448201526064016109b7565b600854426001600160401b0390911610610a775760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b60448201526064016109b7565b6001600160e01b031980821690036120a05760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b60448201526064016109b7565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b0381118282101715612100576121006120c8565b60405290565b604051601f8201601f191681016001600160401b038111828210171561212e5761212e6120c8565b604052919050565b6001600160a01b0381168114610c7357600080fd5b803561215681612136565b919050565b80356001600160401b038116811461215657600080fd5b600082601f83011261218357600080fd5b813560206001600160401b0382111561219e5761219e6120c8565b8160051b6121ad828201612106565b92835284810182019282810190878511156121c757600080fd5b83870192505b848310156121e6578235825291830191908301906121cd565b979650505050505050565b6000806040838503121561220457600080fd5b82356001600160401b038082111561221b57600080fd5b9084019060a0828703121561222f57600080fd5b6122376120de565b823561224281612136565b81526122506020840161215b565b602082015260408301358281111561226757600080fd5b61227388828601612172565b60408301525060608301358281111561228b57600080fd5b61229788828601612172565b6060830152506122a96080840161215b565b608082015293506122bf9150506020840161214b565b90509250929050565b60008083601f8401126122da57600080fd5b5081356001600160401b038111156122f157600080fd5b6020830191508360208260051b850101111561230c57600080fd5b9250929050565b60008060006040848603121561232857600080fd5b83356001600160401b0381111561233e57600080fd5b61234a868287016122c8565b909450925050602084013561235e81612136565b809150509250925092565b60006020828403121561237b57600080fd5b81356001600160e01b031981168114610ee957600080fd5b600060208083528351808285015260005b818110156123c0578581018301518582016040015282016123a4565b818111156123d2576000604083870101525b50601f01601f1916929092016040019392505050565b600080600080608085870312156123fe57600080fd5b843561240981612136565b935060208581013561241a81612136565b93506040860135925060608601356001600160401b038082111561243d57600080fd5b818801915088601f83011261245157600080fd5b813581811115612463576124636120c8565b612475601f8201601f19168501612106565b9150808252898482850101111561248b57600080fd5b808484018584013760008482840101525080935050505092959194509250565b6000602082840312156124bd57600080fd5b610ee98261215b565b6000602082840312156124d857600080fd5b813560048110610ee957600080fd5b634e487b7160e01b600052602160045260246000fd5b602081016004831061251f57634e487b7160e01b600052602160045260246000fd5b91905290565b60006020828403121561253757600080fd5b5035919050565b6000806020838503121561255157600080fd5b82356001600160401b0381111561256757600080fd5b612573858286016122c8565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156125b75783518352928401929184019160010161259b565b50909695505050505050565b600080604083850312156125d657600080fd5b8235915060208301356125e881612136565b809150509250929050565b60006020828403121561260557600080fd5b8135610ee981612136565b6001600160a01b0391909116815260200190565b6000806040838503121561263757600080fd5b82356001600160401b038082111561264e57600080fd5b61265a86838701612172565b9350602085013591508082111561267057600080fd5b5061267d85828601612172565b9150509250929050565b6000806000806040858703121561269d57600080fd5b84356001600160401b03808211156126b457600080fd5b6126c0888389016122c8565b909650945060208701359150808211156126d957600080fd5b506126e6878288016122c8565b95989497509550505050565b6000806000806060858703121561270857600080fd5b84356001600160401b0381111561271e57600080fd5b61272a878288016122c8565b909550935050602085013561273e81612136565b9150604085013561274e81612136565b939692955090935050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156127985761279861276f565b500190565b6000600182016127af576127af61276f565b5060010190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b60006020828403121561280f57600080fd5b5051919050565b6020808252600d908201526c082a48ea6be9a92a69a82a8869609b1b604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b03929092168252602082015260400190565b60006020828403121561289f57600080fd5b81518015158114610ee957600080fd5b81835260006001600160fb1b038311156128c857600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b8781101561292857823561290b81612136565b6001600160a01b03168252602092830192909101906001016128f8565b50838103602085015261293c8186886128af565b98975050505050505050565b600060018060a01b038089168352808816602084015260a0604084015261297360a0840187896128af565b941660608301525060800152949350505050565b6000828210156129995761299961276f565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000816000190483118215151615612a0357612a0361276f565b500290565b600082612a2557634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612a3c57600080fd5b8151610ee98161213656fea2646970667358221220d26a6df42722932791ecb63792dc24ad30f801677c1065e87325297eddf1585864736f6c634300080f0033","deployedBytecode":"0x60806040526004361061022c5760003560e01c80636ba4c1381161012a5780636ba4c13814610628578063715018a614610648578063790c0c731461065d578063837fe1401461067d57806389c6b815146106925780638da5cb5b146106b25780638fc852b1146106d45780639199690b1461031c578063968d9b2c146106f4578063a1cf649314610714578063a8b46d871461031c578063af121f5414610757578063c088184914610778578063c0bb38ff146107ae578063c723955a146107ce578063d5ed4d5a146107e3578063da82b22714610803578063dcbe353f14610818578063ddd5e1b21461083f578063de6d6d961461085f578063f2fde38b1461087f578063f389b6e41461089f578063f4415ad6146108bf578063f66e38c2146108f757600080fd5b8063016b2798146102455780630191c0af1461026557806301ffc9a71461029857806306fdde03146102c8578063125999091461031c57806314427a9614610330578063150b7a02146103685780631c725fdc146103ac57806325289bad146103cc5780632890d033146103f35780632c0e1313146104085780632c233067146104285780632d00b58714610448578063379607f5146104765780633a98ef39146104965780633b3f12e2146104ac5780633d2dded5146104cc57806340f379481461050957806349561cb91461053657806354fd4d501461055757806357a858fc1461058657806357dc48c8146105b35780636057e0ec1461060757600080fd5b36610240576000341161023e57600080fd5b005b600080fd5b34801561025157600080fd5b5061023e6102603660046121f1565b610917565b34801561027157600080fd5b50610285610280366004612313565b610a7c565b6040519081526020015b60405180910390f35b3480156102a457600080fd5b506102b86102b3366004612369565b610ad2565b604051901515815260200161028f565b3480156102d457600080fd5b5061030f6040518060400160405280601b81526020017a45524337323120536861726520496e7374616e742053747265616d60281b81525081565b60405161028f9190612393565b34801561032857600080fd5b5060016102b8565b34801561033c57600080fd5b50600854610350906001600160401b031681565b6040516001600160401b03909116815260200161028f565b34801561037457600080fd5b506103936103833660046123e8565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161028f565b3480156103b857600080fd5b5061023e6103c73660046124ab565b610b12565b3480156103d857600080fd5b5060035461035090600160a01b90046001600160401b031681565b3480156103ff57600080fd5b50610285610b9c565b34801561041457600080fd5b5061023e6104233660046124ab565b610bad565b34801561043457600080fd5b5061023e6104433660046124c6565b610c09565b34801561045457600080fd5b5060085461046990600160f01b900460ff1681565b60405161028f91906124fd565b34801561048257600080fd5b5061023e610491366004612525565b610c68565b3480156104a257600080fd5b5061028560065481565b3480156104b857600080fd5b506102856104c7366004612313565b610c76565b3480156104d857600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc54610285565b34801561051557600080fd5b5061052961052436600461253e565b610cf4565b60405161028f919061257f565b34801561054257600080fd5b506008546102b890600160f81b900460ff1681565b34801561056357600080fd5b5061030f60405180604001604052806003815260200162302e3160e81b81525081565b34801561059257600080fd5b506102856105a1366004612525565b60076020526000908152604090205481565b3480156105bf57600080fd5b506105f26105ce3660046125c3565b60046020908152600092835260408084209091529082529020805460019091015482565b6040805192835260208301919091520161028f565b34801561061357600080fd5b506008546102b890600160e01b900460ff1681565b34801561063457600080fd5b5061023e61064336600461253e565b610dab565b34801561065457600080fd5b5061023e610dbc565b34801561066957600080fd5b506102856106783660046125f3565b610dd0565b34801561068957600080fd5b5061023e610e94565b34801561069e57600080fd5b506102856106ad36600461253e565b610edb565b3480156106be57600080fd5b506106c7610ef0565b60405161028f9190612610565b3480156106e057600080fd5b5061023e6106ef366004612624565b610f05565b34801561070057600080fd5b5061028561070f366004612525565b610f6a565b34801561072057600080fd5b5061028561072f3660046125c3565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b34801561076357600080fd5b506008546102b890600160e81b900460ff1681565b34801561078457600080fd5b506102856107933660046125f3565b6001600160a01b031660009081526005602052604090205490565b3480156107ba57600080fd5b5061023e6107c93660046125f3565b610f77565b3480156107da57600080fd5b5061023e610fd5565b3480156107ef57600080fd5b506003546106c7906001600160a01b031681565b34801561080f57600080fd5b5061023e611036565b34801561082457600080fd5b506008546106c790600160401b90046001600160a01b031681565b34801561084b57600080fd5b5061023e61085a3660046125c3565b61107c565b34801561086b57600080fd5b5061023e61087a366004612687565b611275565b34801561088b57600080fd5b5061023e61089a3660046125f3565b6114c8565b3480156108ab57600080fd5b5061023e6108ba3660046126f2565b61153e565b3480156108cb57600080fd5b506102856108da366004612525565b600090815260046020908152604080832083805290915290205490565b34801561090357600080fd5b506102856109123660046125c3565b6117a3565b600054610100900460ff16158080156109375750600054600160ff909116105b806109585750610946306117f7565b158015610958575060005460ff166001145b6109c05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156109e3576000805461ff0019166101001790555b6109ec82611806565b6109f7826000611861565b610a0983600001518460200151611892565b610a116118c3565b610a23836040015184606001516118f2565b610a308360800151611923565b8015610a77576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b600080805b84811015610ac957610aab868683818110610a9e57610a9e612759565b90506020020135856117a3565b610ab59083612785565b915080610ac18161279d565b915050610a81565b50949350505050565b60006301ffc9a760e01b6001600160e01b031983161480610b0c57506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b610b1a611953565b6003546001600160401b03600160a01b909104811690821611610b6f5760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b60448201526064016109b7565b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000610ba86000610dd0565b905090565b610bb5611953565b60035442600160a01b9091046001600160401b031610610be75760405162461bcd60e51b81526004016109b7906127b6565b600880546001600160401b0319166001600160401b0392909216919091179055565b610c11611953565b600854600160f81b900460ff1615610c3b5760405162461bcd60e51b81526004016109b7906127dd565b6008805482919060ff60f01b1916600160f01b836003811115610c6057610c606124e7565b021790555050565b610c7381600061107c565b50565b600080805b84811015610ac95760046000878784818110610c9957610c99612759565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b031681526020019081526020016000206000015482610ce09190612785565b915080610cec8161279d565b915050610c7b565b60606000826001600160401b03811115610d1057610d106120c8565b604051908082528060200260200182016040528015610d39578160200160208202803683370190505b50905060005b8151811015610da35760076000868684818110610d5e57610d5e612759565b90506020020135815260200190815260200160002054828281518110610d8657610d86612759565b602090810291909101015280610d9b8161279d565b915050610d3f565b509392505050565b610db8828260003361153e565b5050565b610dc4611953565b610dce6000611806565b565b60006001600160a01b038216610e04576001600160a01b038216600090815260056020526040902054610b0c904790612785565b6040516370a0823160e01b81526001600160a01b038316906370a0823190610e30903090600401612610565b602060405180830381865afa158015610e4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7191906127fd565b6001600160a01b038316600090815260056020526040902054610b0c9190612785565b610e9c611953565b600854600160e01b900460ff1615610ec65760405162461bcd60e51b81526004016109b7906127dd565b6008805460ff60e01b1916600160e01b179055565b6000610ee983836000610c76565b9392505050565b6000546201000090046001600160a01b031690565b610f0d611953565b8151815114610f2e5760405162461bcd60e51b81526004016109b790612816565b60035442600160a01b9091046001600160401b031610610f605760405162461bcd60e51b81526004016109b7906127b6565b610db882826119b2565b6000610b0c8260006117a3565b610f7f611953565b600854600160e01b900460ff1615610fa95760405162461bcd60e51b81526004016109b7906127dd565b600880546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b610fdd611953565b600854600160f81b900460ff161561101f5760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b60448201526064016109b7565b600880546001600160f81b0316600160f81b179055565b61103e611953565b6008805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b600280540361109d5760405162461bcd60e51b81526004016109b79061283d565b60028055336110ad838383611a0c565b60006110b984846117a3565b9050600081116110fe5760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b60448201526064016109b7565b60008481526004602090815260408083206001600160a01b038716845290915281208054839290611130908490612785565b909155505060008481526004602090815260408083206001600160a01b0387168452825280832042600190910155600590915281208054839290611175908490612785565b90915550506001600160a01b0383166111a05761119b6001600160a01b03831682611a22565b611213565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906111ce9085908590600401612874565b6020604051808303816000875af11580156111ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611211919061288d565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b61127e33611b38565b600854600160401b90046001600160a01b03166112d55760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b60448201526064016109b7565b600854600160e81b900460ff161561132f5760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b454460448201526064016109b7565b60005b8381101561148457600085858381811061134e5761134e612759565b905060200201602081019061136391906125f3565b6001600160a01b0316036113ae576113a983838381811061138657611386612759565b6008546001600160a01b03600160401b9091041692602090910201359050611a22565b611472565b8484828181106113c0576113c0612759565b90506020020160208101906113d591906125f3565b6001600160a01b031663a9059cbb60088054906101000a90046001600160a01b031685858581811061140957611409612759565b905060200201356040518363ffffffff1660e01b815260040161142d929190612874565b6020604051808303816000875af115801561144c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611470919061288d565b505b8061147c8161279d565b915050611332565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a5848484846040516114ba94939291906128e5565b60405180910390a150505050565b6114d0611953565b6001600160a01b0381166115355760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109b7565b610c7381611806565b600280540361155f5760405162461bcd60e51b81526004016109b79061283d565b600280556000805b8481101561168f5761159286868381811061158457611584612759565b905060200201358585611a0c565b60006115b68787848181106115a9576115a9612759565b90506020020135866117a3565b9050801561167c5780600460008989868181106115d5576115d5612759565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b03168152602001908152602001600020600001600082825461161f9190612785565b909155504290506004600089898681811061163c5761163c612759565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a1682529092529020600101556116798184612785565b92505b50806116878161279d565b915050611567565b506001600160a01b038316600090815260056020526040812080548392906116b8908490612785565b90915550506001600160a01b0383166116e3576116de6001600160a01b03831682611a22565b611756565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906117119085908590600401612874565b6020604051808303816000875af1158015611730573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611754919061288d565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b133838787878660405161178f96959493929190612948565b60405180910390a150506001600255505050565b6000806117bf6117b86117b585610dd0565b90565b8585611cc5565b60008581526004602090815260408083206001600160a01b03881684529091529020549091506117ef9082612987565b949350505050565b6001600160a01b03163b151590565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff166118885760405162461bcd60e51b81526004016109b79061299e565b610db88282611cee565b600054610100900460ff166118b95760405162461bcd60e51b81526004016109b79061299e565b610db88282611d88565b600054610100900460ff166118ea5760405162461bcd60e51b81526004016109b79061299e565b610dce611ded565b600054610100900460ff166119195760405162461bcd60e51b81526004016109b79061299e565b610db88282611e24565b600054610100900460ff1661194a5760405162461bcd60e51b81526004016109b79061299e565b610c7381611e86565b3361195c610ef0565b6001600160a01b031614610dce5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109b7565b60005b8151811015610a77576119fa8382815181106119d3576119d3612759565b60200260200101518383815181106119ed576119ed612759565b6020026020010151611ed8565b80611a048161279d565b9150506119b5565b611a17838383611f47565b610a77838383611ffc565b80471015611a725760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016109b7565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611abf576040519150601f19603f3d011682016040523d82523d6000602084013e611ac4565b606091505b5050905080610a775760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b60648201526084016109b7565b6003600854600160f01b900460ff166003811115611b5857611b586124e7565b03611b975760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b60448201526064016109b7565b6002600854600160f01b900460ff166003811115611bb757611bb76124e7565b03611bbf5750565b6001600854600160f01b900460ff166003811115611bdf57611bdf6124e7565b03611c42576008546001600160a01b03828116600160401b9092041614610c735760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b60448201526064016109b7565b6000600854600160f01b900460ff166003811115611c6257611c626124e7565b03610c7357806001600160a01b0316611c79610ef0565b6001600160a01b031614610c735760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b60448201526064016109b7565b600654600083815260076020526040812054909190611ce490866129e9565b6117ef9190612a08565b600054610100900460ff16611d155760405162461bcd60e51b81526004016109b79061299e565b611d2563ac2ba33360e01b612047565b60088054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b836003811115611d7f57611d7f6124e7565b02179055505050565b600054610100900460ff16611daf5760405162461bcd60e51b81526004016109b79061299e565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055610db8631ba050e960e21b612047565b600054610100900460ff16611e145760405162461bcd60e51b81526004016109b79061299e565b610dce631259990960e01b612047565b600054610100900460ff16611e4b5760405162461bcd60e51b81526004016109b79061299e565b8151815114611e6c5760405162461bcd60e51b81526004016109b790612816565b611e7682826119b2565b610db86333c7a33f60e11b612047565b600054610100900460ff16611ead5760405162461bcd60e51b81526004016109b79061299e565b600880546001600160401b0319166001600160401b038316179055610c736317b2ef4360e31b612047565b60008281526007602052604090208054908290556006548190611efc908490612785565b611f069190612987565b60065560408051848152602081018390529081018390527ff81b1f9d8b5d36a5a67d13006a8b091a9b63e2a38b331d315d99c6daefd2ddcc90606001610a6e565b6003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa158015611f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb69190612a2a565b6001600160a01b031614610a775760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b60448201526064016109b7565b600854426001600160401b0390911610610a775760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b60448201526064016109b7565b6001600160e01b031980821690036120a05760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b60448201526064016109b7565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b0381118282101715612100576121006120c8565b60405290565b604051601f8201601f191681016001600160401b038111828210171561212e5761212e6120c8565b604052919050565b6001600160a01b0381168114610c7357600080fd5b803561215681612136565b919050565b80356001600160401b038116811461215657600080fd5b600082601f83011261218357600080fd5b813560206001600160401b0382111561219e5761219e6120c8565b8160051b6121ad828201612106565b92835284810182019282810190878511156121c757600080fd5b83870192505b848310156121e6578235825291830191908301906121cd565b979650505050505050565b6000806040838503121561220457600080fd5b82356001600160401b038082111561221b57600080fd5b9084019060a0828703121561222f57600080fd5b6122376120de565b823561224281612136565b81526122506020840161215b565b602082015260408301358281111561226757600080fd5b61227388828601612172565b60408301525060608301358281111561228b57600080fd5b61229788828601612172565b6060830152506122a96080840161215b565b608082015293506122bf9150506020840161214b565b90509250929050565b60008083601f8401126122da57600080fd5b5081356001600160401b038111156122f157600080fd5b6020830191508360208260051b850101111561230c57600080fd5b9250929050565b60008060006040848603121561232857600080fd5b83356001600160401b0381111561233e57600080fd5b61234a868287016122c8565b909450925050602084013561235e81612136565b809150509250925092565b60006020828403121561237b57600080fd5b81356001600160e01b031981168114610ee957600080fd5b600060208083528351808285015260005b818110156123c0578581018301518582016040015282016123a4565b818111156123d2576000604083870101525b50601f01601f1916929092016040019392505050565b600080600080608085870312156123fe57600080fd5b843561240981612136565b935060208581013561241a81612136565b93506040860135925060608601356001600160401b038082111561243d57600080fd5b818801915088601f83011261245157600080fd5b813581811115612463576124636120c8565b612475601f8201601f19168501612106565b9150808252898482850101111561248b57600080fd5b808484018584013760008482840101525080935050505092959194509250565b6000602082840312156124bd57600080fd5b610ee98261215b565b6000602082840312156124d857600080fd5b813560048110610ee957600080fd5b634e487b7160e01b600052602160045260246000fd5b602081016004831061251f57634e487b7160e01b600052602160045260246000fd5b91905290565b60006020828403121561253757600080fd5b5035919050565b6000806020838503121561255157600080fd5b82356001600160401b0381111561256757600080fd5b612573858286016122c8565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156125b75783518352928401929184019160010161259b565b50909695505050505050565b600080604083850312156125d657600080fd5b8235915060208301356125e881612136565b809150509250929050565b60006020828403121561260557600080fd5b8135610ee981612136565b6001600160a01b0391909116815260200190565b6000806040838503121561263757600080fd5b82356001600160401b038082111561264e57600080fd5b61265a86838701612172565b9350602085013591508082111561267057600080fd5b5061267d85828601612172565b9150509250929050565b6000806000806040858703121561269d57600080fd5b84356001600160401b03808211156126b457600080fd5b6126c0888389016122c8565b909650945060208701359150808211156126d957600080fd5b506126e6878288016122c8565b95989497509550505050565b6000806000806060858703121561270857600080fd5b84356001600160401b0381111561271e57600080fd5b61272a878288016122c8565b909550935050602085013561273e81612136565b9150604085013561274e81612136565b939692955090935050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156127985761279861276f565b500190565b6000600182016127af576127af61276f565b5060010190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b60006020828403121561280f57600080fd5b5051919050565b6020808252600d908201526c082a48ea6be9a92a69a82a8869609b1b604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b03929092168252602082015260400190565b60006020828403121561289f57600080fd5b81518015158114610ee957600080fd5b81835260006001600160fb1b038311156128c857600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b8781101561292857823561290b81612136565b6001600160a01b03168252602092830192909101906001016128f8565b50838103602085015261293c8186886128af565b98975050505050505050565b600060018060a01b038089168352808816602084015260a0604084015261297360a0840187896128af565b941660608301525060800152949350505050565b6000828210156129995761299961276f565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000816000190483118215151615612a0357612a0361276f565b500290565b600082612a2557634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612a3c57600080fd5b8151610ee98161213656fea2646970667358221220d26a6df42722932791ecb63792dc24ad30f801677c1065e87325297eddf1585864736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/presets/ERC721ShareVestingStream":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721ShareVestingStream","sourceName":"contracts/streams/ERC721/presets/ERC721ShareVestingStream.sol","abi":[{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"},{"internalType":"uint64","name":"durationSeconds","type":"uint64"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"uint64","name":"claimLockedUntil","type":"uint64"}],"internalType":"struct ERC721ShareVestingStream.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"prevShares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newShares","type":"uint256"}],"name":"SharesUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimLockedUntil","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"getSharesByTokens","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721LockableClaimExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721ShareSplitExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721VestingReleaseExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"},{"internalType":"uint64","name":"durationSeconds","type":"uint64"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"uint64","name":"claimLockedUntil","type":"uint64"}],"internalType":"struct ERC721ShareVestingStream.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setClaimLockedUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_shares","type":"uint256[]"}],"name":"setSharesForTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setVestingDurationSeconds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setVestingStartTimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"shares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vestingDurationSeconds","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vestingStartTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x60806040523480156200001157600080fd5b506040516200372338038062003723833981016040819052620000349162000844565b6200003f3362000057565b6001600255620000508133620000b2565b5062000a1c565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620000d35750600054600160ff909116105b80620001035750620000f0306200024c60201b620019711760201c565b15801562000103575060005460ff166001145b6200016c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000190576000805461ff0019166101001790555b6200019b8262000057565b620001a88260006200025b565b82516020840151620001bb919062000295565b620001d583604001518460600151620002cb60201b60201c565b620001ef83608001518460a001516200030160201b60201c565b60c0830151620001ff9062000337565b801562000247576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b6001600160a01b03163b151590565b600054610100900460ff16620002855760405162461bcd60e51b815260040162000163906200093e565b6200029182826200036f565b5050565b600054610100900460ff16620002bf5760405162461bcd60e51b815260040162000163906200093e565b62000291828262000416565b600054610100900460ff16620002f55760405162461bcd60e51b815260040162000163906200093e565b62000291828262000480565b600054610100900460ff166200032b5760405162461bcd60e51b815260040162000163906200093e565b620002918282620004e9565b600054610100900460ff16620003615760405162461bcd60e51b815260040162000163906200093e565b6200036c8162000574565b50565b600054610100900460ff16620003995760405162461bcd60e51b815260040162000163906200093e565b620003ab63ac2ba33360e01b620005c6565b60098054600160401b600160e01b03198116680100000000000000006001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b8360038111156200040d576200040d62000989565b02179055505050565b600054610100900460ff16620004405760405162461bcd60e51b815260040162000163906200093e565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b0385161717905562000291631ba050e960e21b620005c6565b600054610100900460ff16620004aa5760405162461bcd60e51b815260040162000163906200093e565b600680546001600160401b0383811668010000000000000000026001600160801b0319909216908516171790556200029163d1bdccff60e01b620005c6565b600054610100900460ff16620005135760405162461bcd60e51b815260040162000163906200093e565b8151815114620005565760405162461bcd60e51b815260206004820152600d60248201526c082a48ea6be9a92a69a82a8869609b1b604482015260640162000163565b6200056282826200064a565b620002916333c7a33f60e11b620005c6565b600054610100900460ff166200059e5760405162461bcd60e51b815260040162000163906200093e565b600980546001600160401b0319166001600160401b0383161790556200036c6317b2ef4360e31b5b6001600160e01b03198082169003620006225760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640162000163565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60005b81518110156200024757620006a18382815181106200067057620006706200099f565b60200260200101518383815181106200068d576200068d6200099f565b6020026020010151620006b660201b60201c565b80620006ad81620009cb565b9150506200064d565b60008281526008602052604090208054908290556007548190620006dc908490620009e7565b620006e8919062000a02565b60075560408051848152602081018390529081018390527ff81b1f9d8b5d36a5a67d13006a8b091a9b63e2a38b331d315d99c6daefd2ddcc906060016200023e565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b03811182821017156200076557620007656200072a565b60405290565b80516001600160a01b03811681146200078357600080fd5b919050565b80516001600160401b03811681146200078357600080fd5b600082601f830112620007b257600080fd5b815160206001600160401b0380831115620007d157620007d16200072a565b8260051b604051601f19603f83011681018181108482111715620007f957620007f96200072a565b6040529384528581018301938381019250878511156200081857600080fd5b83870191505b8482101562000839578151835291830191908301906200081e565b979650505050505050565b6000602082840312156200085757600080fd5b81516001600160401b03808211156200086f57600080fd5b9083019060e082860312156200088457600080fd5b6200088e62000740565b62000899836200076b565b8152620008a96020840162000788565b6020820152620008bc6040840162000788565b6040820152620008cf6060840162000788565b6060820152608083015182811115620008e757600080fd5b620008f587828601620007a0565b60808301525060a0830151828111156200090e57600080fd5b6200091c87828601620007a0565b60a0830152506200093060c0840162000788565b60c082015295945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201620009e057620009e0620009b5565b5060010190565b60008219821115620009fd57620009fd620009b5565b500190565b60008282101562000a175762000a17620009b5565b500390565b612cf78062000a2c6000396000f3fe6080604052600436106102585760003560e01c80637520cade116101405780637520cade1461069c578063790c0c73146106b0578063837fe140146106d057806389c6b815146106e55780638da5cb5b146107055780638fc852b1146107275780639199690b1461069c578063968d9b2c14610747578063a1cf649314610767578063a8b46d871461069c578063af121f54146107aa578063c0881849146107cb578063c0bb38ff14610801578063c723955a14610821578063d5ed4d5a14610836578063d6ddd21b14610856578063da82b22714610876578063dcbe353f1461088b578063ddd5e1b2146108b2578063de6d6d96146108d2578063e3860742146108f2578063f2fde38b14610912578063f389b6e414610932578063f4415ad614610952578063f66e38c21461098a578063fb5a2907146109aa57600080fd5b80630191c0af1461027157806301ffc9a7146102a457806306fdde03146102d457806314427a9614610328578063150b7a02146103605780631c725fdc146103a457806325289bad146103c45780632890d033146103eb5780632c0e1313146104005780632c233067146104205780632d00b58714610440578063379607f51461046e5780633a98ef391461048e5780633b3f12e2146104a45780633d2dded5146104c457806340f3794814610501578063471b01631461052e57806349561cb91461054e57806354fd4d501461056f57806357a858fc1461059e57806357dc48c8146105cb5780635f1bf3a01461061f5780636057e0ec146106465780636ba4c13814610667578063715018a61461068757600080fd5b3661026c576000341161026a57600080fd5b005b600080fd5b34801561027d57600080fd5b5061029161028c366004612367565b6109ca565b6040519081526020015b60405180910390f35b3480156102b057600080fd5b506102c46102bf3660046123bd565b610a22565b604051901515815260200161029b565b3480156102e057600080fd5b5061031b6040518060400160405280601b81526020017a4552433732312053686172652056657374696e672053747265616d60281b81525081565b60405161029b91906123e7565b34801561033457600080fd5b50600954610348906001600160401b031681565b6040516001600160401b03909116815260200161029b565b34801561036c57600080fd5b5061038b61037b3660046124aa565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161029b565b3480156103b057600080fd5b5061026a6103bf366004612584565b610a62565b3480156103d057600080fd5b5060035461034890600160a01b90046001600160401b031681565b3480156103f757600080fd5b50610291610af1565b34801561040c57600080fd5b5061026a61041b366004612584565b610b02565b34801561042c57600080fd5b5061026a61043b36600461259f565b610b5e565b34801561044c57600080fd5b5060095461046190600160f01b900460ff1681565b60405161029b91906125d6565b34801561047a57600080fd5b5061026a6104893660046125fe565b610bbd565b34801561049a57600080fd5b5061029160075481565b3480156104b057600080fd5b506102916104bf366004612367565b610bcb565b3480156104d057600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc54610291565b34801561050d57600080fd5b5061052161051c366004612617565b610c49565b60405161029b9190612658565b34801561053a57600080fd5b5061026a610549366004612584565b610d00565b34801561055a57600080fd5b506009546102c490600160f81b900460ff1681565b34801561057b57600080fd5b5061031b60405180604001604052806003815260200162302e3160e81b81525081565b3480156105aa57600080fd5b506102916105b93660046125fe565b60086020526000908152604090205481565b3480156105d757600080fd5b5061060a6105e636600461269c565b60046020908152600092835260408084209091529082529020805460019091015482565b6040805192835260208301919091520161029b565b34801561062b57600080fd5b5060065461034890600160401b90046001600160401b031681565b34801561065257600080fd5b506009546102c490600160e01b900460ff1681565b34801561067357600080fd5b5061026a610682366004612617565b610d67565b34801561069357600080fd5b5061026a610d78565b3480156106a857600080fd5b5060016102c4565b3480156106bc57600080fd5b506102916106cb3660046126cc565b610d8c565b3480156106dc57600080fd5b5061026a610e50565b3480156106f157600080fd5b50610291610700366004612617565b610e97565b34801561071157600080fd5b5061071a610ea5565b60405161029b91906126e9565b34801561073357600080fd5b5061026a61074236600461277c565b610eba565b34801561075357600080fd5b506102916107623660046125fe565b610f1f565b34801561077357600080fd5b5061029161078236600461269c565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b3480156107b657600080fd5b506009546102c490600160e81b900460ff1681565b3480156107d757600080fd5b506102916107e63660046126cc565b6001600160a01b031660009081526005602052604090205490565b34801561080d57600080fd5b5061026a61081c3660046126cc565b610f2c565b34801561082d57600080fd5b5061026a610f8a565b34801561084257600080fd5b5060035461071a906001600160a01b031681565b34801561086257600080fd5b50600654610348906001600160401b031681565b34801561088257600080fd5b5061026a610feb565b34801561089757600080fd5b5060095461071a90600160401b90046001600160a01b031681565b3480156108be57600080fd5b5061026a6108cd36600461269c565b611031565b3480156108de57600080fd5b5061026a6108ed3660046127df565b61122a565b3480156108fe57600080fd5b5061026a61090d366004612584565b611478565b34801561091e57600080fd5b5061026a61092d3660046126cc565b6114d4565b34801561093e57600080fd5b5061026a61094d36600461284a565b61154a565b34801561095e57600080fd5b5061029161096d3660046125fe565b600090815260046020908152604080832083805290915290205490565b34801561099657600080fd5b506102916109a536600461269c565b6117af565b3480156109b657600080fd5b5061026a6109c53660046128b1565b611807565b600080805b84811015610a17576109f98686838181106109ec576109ec6129a8565b90506020020135856117af565b610a0390836129d4565b915080610a0f816129ec565b9150506109cf565b5090505b9392505050565b60006301ffc9a760e01b6001600160e01b031983161480610a5c57506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b610a6a611980565b6003546001600160401b03600160a01b909104811690821611610ac45760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b60448201526064015b60405180910390fd5b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000610afd6000610d8c565b905090565b610b0a611980565b60035442600160a01b9091046001600160401b031610610b3c5760405162461bcd60e51b8152600401610abb90612a05565b600980546001600160401b0319166001600160401b0392909216919091179055565b610b66611980565b600954600160f81b900460ff1615610b905760405162461bcd60e51b8152600401610abb90612a2c565b6009805482919060ff60f01b1916600160f01b836003811115610bb557610bb56125c0565b021790555050565b610bc8816000611031565b50565b600080805b84811015610a175760046000878784818110610bee57610bee6129a8565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b031681526020019081526020016000206000015482610c3591906129d4565b915080610c41816129ec565b915050610bd0565b60606000826001600160401b03811115610c6557610c6561243c565b604051908082528060200260200182016040528015610c8e578160200160208202803683370190505b50905060005b8151811015610cf85760086000868684818110610cb357610cb36129a8565b90506020020135815260200190815260200160002054828281518110610cdb57610cdb6129a8565b602090810291909101015280610cf0816129ec565b915050610c94565b509392505050565b610d08611980565b60035442600160a01b9091046001600160401b031610610d3a5760405162461bcd60e51b8152600401610abb90612a05565b600680546001600160401b03909216600160401b0267ffffffffffffffff60401b19909216919091179055565b610d74828260003361154a565b5050565b610d80611980565b610d8a60006119df565b565b60006001600160a01b038216610dc0576001600160a01b038216600090815260056020526040902054610a5c9047906129d4565b6040516370a0823160e01b81526001600160a01b038316906370a0823190610dec9030906004016126e9565b602060405180830381865afa158015610e09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2d9190612a4c565b6001600160a01b038316600090815260056020526040902054610a5c91906129d4565b610e58611980565b600954600160e01b900460ff1615610e825760405162461bcd60e51b8152600401610abb90612a2c565b6009805460ff60e01b1916600160e01b179055565b6000610a1b83836000610bcb565b6000546201000090046001600160a01b031690565b610ec2611980565b8151815114610ee35760405162461bcd60e51b8152600401610abb90612a65565b60035442600160a01b9091046001600160401b031610610f155760405162461bcd60e51b8152600401610abb90612a05565b610d748282611a3a565b6000610a5c8260006117af565b610f34611980565b600954600160e01b900460ff1615610f5e5760405162461bcd60e51b8152600401610abb90612a2c565b600980546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b610f92611980565b600954600160f81b900460ff1615610fd45760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401610abb565b600980546001600160f81b0316600160f81b179055565b610ff3611980565b6009805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b60028054036110525760405162461bcd60e51b8152600401610abb90612a8c565b6002805533611062838383611a94565b600061106e84846117af565b9050600081116110b35760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b6044820152606401610abb565b60008481526004602090815260408083206001600160a01b0387168452909152812080548392906110e59084906129d4565b909155505060008481526004602090815260408083206001600160a01b038716845282528083204260019091015560059091528120805483929061112a9084906129d4565b90915550506001600160a01b038316611155576111506001600160a01b03831682611aaa565b6111c8565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906111839085908590600401612ac3565b6020604051808303816000875af11580156111a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c69190612adc565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b61123333611bc0565b600954600160401b90046001600160a01b031661128a5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401610abb565b600954600160e81b900460ff16156112e45760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610abb565b60005b83811015611434576000858583818110611303576113036129a8565b905060200201602081019061131891906126cc565b6001600160a01b0316036113635761135e83838381811061133b5761133b6129a8565b6009546001600160a01b03600160401b9091041692602090910201359050611aaa565b611422565b848482818110611375576113756129a8565b905060200201602081019061138a91906126cc565b6009546001600160a01b039182169163a9059cbb91600160401b9004168585858181106113b9576113b96129a8565b905060200201356040518363ffffffff1660e01b81526004016113dd929190612ac3565b6020604051808303816000875af11580156113fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114209190612adc565b505b8061142c816129ec565b9150506112e7565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a58484848460405161146a9493929190612b34565b60405180910390a150505050565b611480611980565b60035442600160a01b9091046001600160401b0316106114b25760405162461bcd60e51b8152600401610abb90612a05565b600680546001600160401b0319166001600160401b0392909216919091179055565b6114dc611980565b6001600160a01b0381166115415760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abb565b610bc8816119df565b600280540361156b5760405162461bcd60e51b8152600401610abb90612a8c565b600280556000805b8481101561169b5761159e868683818110611590576115906129a8565b905060200201358585611a94565b60006115c28787848181106115b5576115b56129a8565b90506020020135866117af565b905080156116885780600460008989868181106115e1576115e16129a8565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b03168152602001908152602001600020600001600082825461162b91906129d4565b9091555042905060046000898986818110611648576116486129a8565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a16825290925290206001015561168581846129d4565b92505b5080611693816129ec565b915050611573565b506001600160a01b038316600090815260056020526040812080548392906116c49084906129d4565b90915550506001600160a01b0383166116ef576116ea6001600160a01b03831682611aaa565b611762565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb9061171d9085908590600401612ac3565b6020604051808303816000875af115801561173c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117609190612adc565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b133838787878660405161179b96959493929190612b97565b60405180910390a150506001600255505050565b6000806117cf6117c86117c185610d8c565b8686611d4d565b8585611ddc565b60008581526004602090815260408083206001600160a01b03881684529091529020549091506117ff9082612bd6565b949350505050565b600054610100900460ff16158080156118275750600054600160ff909116105b80611848575061183630611971565b158015611848575060005460ff166001145b6118ab5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610abb565b6000805460ff1916600117905580156118ce576000805461ff0019166101001790555b6118d7826119df565b6118e2826000611e05565b6118f483600001518460200151611e36565b61190683604001518460600151611e67565b61191883608001518460a00151611e98565b6119258360c00151611ec9565b801561196c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b6001600160a01b03163b151590565b33611989610ea5565b6001600160a01b031614610d8a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610abb565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b60005b815181101561196c57611a82838281518110611a5b57611a5b6129a8565b6020026020010151838381518110611a7557611a756129a8565b6020026020010151611ef9565b80611a8c816129ec565b915050611a3d565b611a9f838383611f68565b61196c83838361201d565b80471015611afa5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610abb565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611b47576040519150601f19603f3d011682016040523d82523d6000602084013e611b4c565b606091505b505090508061196c5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610abb565b6003600954600160f01b900460ff166003811115611be057611be06125c0565b03611c1f5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401610abb565b6002600954600160f01b900460ff166003811115611c3f57611c3f6125c0565b03611c475750565b6001600954600160f01b900460ff166003811115611c6757611c676125c0565b03611cca576009546001600160a01b03828116600160401b9092041614610bc85760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401610abb565b6000600954600160f01b900460ff166003811115611cea57611cea6125c0565b03610bc857806001600160a01b0316611d01610ea5565b6001600160a01b031614610bc85760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401610abb565b6006546000906001600160401b0316421015611d6b57506000610a1b565b600654611d8a906001600160401b03600160401b820481169116612bed565b6001600160401b0316421115611da1575082610a1b565b6006546001600160401b03600160401b8204811691611dc1911642612bd6565b611dcb9086612c18565b611dd59190612c37565b9050610a1b565b600754600083815260086020526040812054909190611dfb9086612c18565b6117ff9190612c37565b600054610100900460ff16611e2c5760405162461bcd60e51b8152600401610abb90612c59565b610d748282612068565b600054610100900460ff16611e5d5760405162461bcd60e51b8152600401610abb90612c59565b610d748282612102565b600054610100900460ff16611e8e5760405162461bcd60e51b8152600401610abb90612c59565b610d748282612167565b600054610100900460ff16611ebf5760405162461bcd60e51b8152600401610abb90612c59565b610d7482826121c6565b600054610100900460ff16611ef05760405162461bcd60e51b8152600401610abb90612c59565b610bc881612228565b60008281526008602052604090208054908290556007548190611f1d9084906129d4565b611f279190612bd6565b60075560408051848152602081018390529081018390527ff81b1f9d8b5d36a5a67d13006a8b091a9b63e2a38b331d315d99c6daefd2ddcc90606001611963565b6003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa158015611fb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd79190612ca4565b6001600160a01b03161461196c5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b6044820152606401610abb565b600954426001600160401b039091161061196c5760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b6044820152606401610abb565b600054610100900460ff1661208f5760405162461bcd60e51b8152600401610abb90612c59565b61209f63ac2ba33360e01b612276565b60098054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b8360038111156120f9576120f96125c0565b02179055505050565b600054610100900460ff166121295760405162461bcd60e51b8152600401610abb90612c59565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055610d74631ba050e960e21b612276565b600054610100900460ff1661218e5760405162461bcd60e51b8152600401610abb90612c59565b600680546001600160401b03838116600160401b026001600160801b031990921690851617179055610d7463d1bdccff60e01b612276565b600054610100900460ff166121ed5760405162461bcd60e51b8152600401610abb90612c59565b815181511461220e5760405162461bcd60e51b8152600401610abb90612a65565b6122188282611a3a565b610d746333c7a33f60e11b612276565b600054610100900460ff1661224f5760405162461bcd60e51b8152600401610abb90612c59565b600980546001600160401b0319166001600160401b038316179055610bc86317b2ef4360e31b5b6001600160e01b031980821690036122cf5760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401610abb565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60008083601f84011261230957600080fd5b5081356001600160401b0381111561232057600080fd5b6020830191508360208260051b850101111561233b57600080fd5b9250929050565b6001600160a01b0381168114610bc857600080fd5b803561236281612342565b919050565b60008060006040848603121561237c57600080fd5b83356001600160401b0381111561239257600080fd5b61239e868287016122f7565b90945092505060208401356123b281612342565b809150509250925092565b6000602082840312156123cf57600080fd5b81356001600160e01b031981168114610a1b57600080fd5b600060208083528351808285015260005b81811015612414578581018301518582016040015282016123f8565b81811115612426576000604083870101525b50601f01601f1916929092016040019392505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b03811182821017156124745761247461243c565b60405290565b604051601f8201601f191681016001600160401b03811182821017156124a2576124a261243c565b604052919050565b600080600080608085870312156124c057600080fd5b84356124cb81612342565b93506020858101356124dc81612342565b93506040860135925060608601356001600160401b03808211156124ff57600080fd5b818801915088601f83011261251357600080fd5b8135818111156125255761252561243c565b612537601f8201601f1916850161247a565b9150808252898482850101111561254d57600080fd5b808484018584013760008482840101525080935050505092959194509250565b80356001600160401b038116811461236257600080fd5b60006020828403121561259657600080fd5b610a1b8261256d565b6000602082840312156125b157600080fd5b813560048110610a1b57600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106125f857634e487b7160e01b600052602160045260246000fd5b91905290565b60006020828403121561261057600080fd5b5035919050565b6000806020838503121561262a57600080fd5b82356001600160401b0381111561264057600080fd5b61264c858286016122f7565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b8181101561269057835183529284019291840191600101612674565b50909695505050505050565b600080604083850312156126af57600080fd5b8235915060208301356126c181612342565b809150509250929050565b6000602082840312156126de57600080fd5b8135610a1b81612342565b6001600160a01b0391909116815260200190565b600082601f83011261270e57600080fd5b813560206001600160401b038211156127295761272961243c565b8160051b61273882820161247a565b928352848101820192828101908785111561275257600080fd5b83870192505b8483101561277157823582529183019190830190612758565b979650505050505050565b6000806040838503121561278f57600080fd5b82356001600160401b03808211156127a657600080fd5b6127b2868387016126fd565b935060208501359150808211156127c857600080fd5b506127d5858286016126fd565b9150509250929050565b600080600080604085870312156127f557600080fd5b84356001600160401b038082111561280c57600080fd5b612818888389016122f7565b9096509450602087013591508082111561283157600080fd5b5061283e878288016122f7565b95989497509550505050565b6000806000806060858703121561286057600080fd5b84356001600160401b0381111561287657600080fd5b612882878288016122f7565b909550935050602085013561289681612342565b915060408501356128a681612342565b939692955090935050565b600080604083850312156128c457600080fd5b82356001600160401b03808211156128db57600080fd5b9084019060e082870312156128ef57600080fd5b6128f7612452565b61290083612357565b815261290e6020840161256d565b602082015261291f6040840161256d565b60408201526129306060840161256d565b606082015260808301358281111561294757600080fd5b612953888286016126fd565b60808301525060a08301358281111561296b57600080fd5b612977888286016126fd565b60a08301525061298960c0840161256d565b60c0820152935061299f91505060208401612357565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156129e7576129e76129be565b500190565b6000600182016129fe576129fe6129be565b5060010190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b600060208284031215612a5e57600080fd5b5051919050565b6020808252600d908201526c082a48ea6be9a92a69a82a8869609b1b604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b03929092168252602082015260400190565b600060208284031215612aee57600080fd5b81518015158114610a1b57600080fd5b81835260006001600160fb1b03831115612b1757600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b87811015612b77578235612b5a81612342565b6001600160a01b0316825260209283019290910190600101612b47565b508381036020850152612b8b818688612afe565b98975050505050505050565b600060018060a01b038089168352808816602084015260a06040840152612bc260a084018789612afe565b941660608301525060800152949350505050565b600082821015612be857612be86129be565b500390565b60006001600160401b03808316818516808303821115612c0f57612c0f6129be565b01949350505050565b6000816000190483118215151615612c3257612c326129be565b500290565b600082612c5457634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208284031215612cb657600080fd5b8151610a1b8161234256fea2646970667358221220aa0f7b1dc42a060eeb08e1ee69ce071b7e224ff4298e79adce21e3261466f41964736f6c634300080f0033","deployedBytecode":"0x6080604052600436106102585760003560e01c80637520cade116101405780637520cade1461069c578063790c0c73146106b0578063837fe140146106d057806389c6b815146106e55780638da5cb5b146107055780638fc852b1146107275780639199690b1461069c578063968d9b2c14610747578063a1cf649314610767578063a8b46d871461069c578063af121f54146107aa578063c0881849146107cb578063c0bb38ff14610801578063c723955a14610821578063d5ed4d5a14610836578063d6ddd21b14610856578063da82b22714610876578063dcbe353f1461088b578063ddd5e1b2146108b2578063de6d6d96146108d2578063e3860742146108f2578063f2fde38b14610912578063f389b6e414610932578063f4415ad614610952578063f66e38c21461098a578063fb5a2907146109aa57600080fd5b80630191c0af1461027157806301ffc9a7146102a457806306fdde03146102d457806314427a9614610328578063150b7a02146103605780631c725fdc146103a457806325289bad146103c45780632890d033146103eb5780632c0e1313146104005780632c233067146104205780632d00b58714610440578063379607f51461046e5780633a98ef391461048e5780633b3f12e2146104a45780633d2dded5146104c457806340f3794814610501578063471b01631461052e57806349561cb91461054e57806354fd4d501461056f57806357a858fc1461059e57806357dc48c8146105cb5780635f1bf3a01461061f5780636057e0ec146106465780636ba4c13814610667578063715018a61461068757600080fd5b3661026c576000341161026a57600080fd5b005b600080fd5b34801561027d57600080fd5b5061029161028c366004612367565b6109ca565b6040519081526020015b60405180910390f35b3480156102b057600080fd5b506102c46102bf3660046123bd565b610a22565b604051901515815260200161029b565b3480156102e057600080fd5b5061031b6040518060400160405280601b81526020017a4552433732312053686172652056657374696e672053747265616d60281b81525081565b60405161029b91906123e7565b34801561033457600080fd5b50600954610348906001600160401b031681565b6040516001600160401b03909116815260200161029b565b34801561036c57600080fd5b5061038b61037b3660046124aa565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161029b565b3480156103b057600080fd5b5061026a6103bf366004612584565b610a62565b3480156103d057600080fd5b5060035461034890600160a01b90046001600160401b031681565b3480156103f757600080fd5b50610291610af1565b34801561040c57600080fd5b5061026a61041b366004612584565b610b02565b34801561042c57600080fd5b5061026a61043b36600461259f565b610b5e565b34801561044c57600080fd5b5060095461046190600160f01b900460ff1681565b60405161029b91906125d6565b34801561047a57600080fd5b5061026a6104893660046125fe565b610bbd565b34801561049a57600080fd5b5061029160075481565b3480156104b057600080fd5b506102916104bf366004612367565b610bcb565b3480156104d057600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc54610291565b34801561050d57600080fd5b5061052161051c366004612617565b610c49565b60405161029b9190612658565b34801561053a57600080fd5b5061026a610549366004612584565b610d00565b34801561055a57600080fd5b506009546102c490600160f81b900460ff1681565b34801561057b57600080fd5b5061031b60405180604001604052806003815260200162302e3160e81b81525081565b3480156105aa57600080fd5b506102916105b93660046125fe565b60086020526000908152604090205481565b3480156105d757600080fd5b5061060a6105e636600461269c565b60046020908152600092835260408084209091529082529020805460019091015482565b6040805192835260208301919091520161029b565b34801561062b57600080fd5b5060065461034890600160401b90046001600160401b031681565b34801561065257600080fd5b506009546102c490600160e01b900460ff1681565b34801561067357600080fd5b5061026a610682366004612617565b610d67565b34801561069357600080fd5b5061026a610d78565b3480156106a857600080fd5b5060016102c4565b3480156106bc57600080fd5b506102916106cb3660046126cc565b610d8c565b3480156106dc57600080fd5b5061026a610e50565b3480156106f157600080fd5b50610291610700366004612617565b610e97565b34801561071157600080fd5b5061071a610ea5565b60405161029b91906126e9565b34801561073357600080fd5b5061026a61074236600461277c565b610eba565b34801561075357600080fd5b506102916107623660046125fe565b610f1f565b34801561077357600080fd5b5061029161078236600461269c565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b3480156107b657600080fd5b506009546102c490600160e81b900460ff1681565b3480156107d757600080fd5b506102916107e63660046126cc565b6001600160a01b031660009081526005602052604090205490565b34801561080d57600080fd5b5061026a61081c3660046126cc565b610f2c565b34801561082d57600080fd5b5061026a610f8a565b34801561084257600080fd5b5060035461071a906001600160a01b031681565b34801561086257600080fd5b50600654610348906001600160401b031681565b34801561088257600080fd5b5061026a610feb565b34801561089757600080fd5b5060095461071a90600160401b90046001600160a01b031681565b3480156108be57600080fd5b5061026a6108cd36600461269c565b611031565b3480156108de57600080fd5b5061026a6108ed3660046127df565b61122a565b3480156108fe57600080fd5b5061026a61090d366004612584565b611478565b34801561091e57600080fd5b5061026a61092d3660046126cc565b6114d4565b34801561093e57600080fd5b5061026a61094d36600461284a565b61154a565b34801561095e57600080fd5b5061029161096d3660046125fe565b600090815260046020908152604080832083805290915290205490565b34801561099657600080fd5b506102916109a536600461269c565b6117af565b3480156109b657600080fd5b5061026a6109c53660046128b1565b611807565b600080805b84811015610a17576109f98686838181106109ec576109ec6129a8565b90506020020135856117af565b610a0390836129d4565b915080610a0f816129ec565b9150506109cf565b5090505b9392505050565b60006301ffc9a760e01b6001600160e01b031983161480610a5c57506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b610a6a611980565b6003546001600160401b03600160a01b909104811690821611610ac45760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b60448201526064015b60405180910390fd5b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000610afd6000610d8c565b905090565b610b0a611980565b60035442600160a01b9091046001600160401b031610610b3c5760405162461bcd60e51b8152600401610abb90612a05565b600980546001600160401b0319166001600160401b0392909216919091179055565b610b66611980565b600954600160f81b900460ff1615610b905760405162461bcd60e51b8152600401610abb90612a2c565b6009805482919060ff60f01b1916600160f01b836003811115610bb557610bb56125c0565b021790555050565b610bc8816000611031565b50565b600080805b84811015610a175760046000878784818110610bee57610bee6129a8565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b031681526020019081526020016000206000015482610c3591906129d4565b915080610c41816129ec565b915050610bd0565b60606000826001600160401b03811115610c6557610c6561243c565b604051908082528060200260200182016040528015610c8e578160200160208202803683370190505b50905060005b8151811015610cf85760086000868684818110610cb357610cb36129a8565b90506020020135815260200190815260200160002054828281518110610cdb57610cdb6129a8565b602090810291909101015280610cf0816129ec565b915050610c94565b509392505050565b610d08611980565b60035442600160a01b9091046001600160401b031610610d3a5760405162461bcd60e51b8152600401610abb90612a05565b600680546001600160401b03909216600160401b0267ffffffffffffffff60401b19909216919091179055565b610d74828260003361154a565b5050565b610d80611980565b610d8a60006119df565b565b60006001600160a01b038216610dc0576001600160a01b038216600090815260056020526040902054610a5c9047906129d4565b6040516370a0823160e01b81526001600160a01b038316906370a0823190610dec9030906004016126e9565b602060405180830381865afa158015610e09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2d9190612a4c565b6001600160a01b038316600090815260056020526040902054610a5c91906129d4565b610e58611980565b600954600160e01b900460ff1615610e825760405162461bcd60e51b8152600401610abb90612a2c565b6009805460ff60e01b1916600160e01b179055565b6000610a1b83836000610bcb565b6000546201000090046001600160a01b031690565b610ec2611980565b8151815114610ee35760405162461bcd60e51b8152600401610abb90612a65565b60035442600160a01b9091046001600160401b031610610f155760405162461bcd60e51b8152600401610abb90612a05565b610d748282611a3a565b6000610a5c8260006117af565b610f34611980565b600954600160e01b900460ff1615610f5e5760405162461bcd60e51b8152600401610abb90612a2c565b600980546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b610f92611980565b600954600160f81b900460ff1615610fd45760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401610abb565b600980546001600160f81b0316600160f81b179055565b610ff3611980565b6009805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b60028054036110525760405162461bcd60e51b8152600401610abb90612a8c565b6002805533611062838383611a94565b600061106e84846117af565b9050600081116110b35760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b6044820152606401610abb565b60008481526004602090815260408083206001600160a01b0387168452909152812080548392906110e59084906129d4565b909155505060008481526004602090815260408083206001600160a01b038716845282528083204260019091015560059091528120805483929061112a9084906129d4565b90915550506001600160a01b038316611155576111506001600160a01b03831682611aaa565b6111c8565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906111839085908590600401612ac3565b6020604051808303816000875af11580156111a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c69190612adc565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b61123333611bc0565b600954600160401b90046001600160a01b031661128a5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401610abb565b600954600160e81b900460ff16156112e45760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610abb565b60005b83811015611434576000858583818110611303576113036129a8565b905060200201602081019061131891906126cc565b6001600160a01b0316036113635761135e83838381811061133b5761133b6129a8565b6009546001600160a01b03600160401b9091041692602090910201359050611aaa565b611422565b848482818110611375576113756129a8565b905060200201602081019061138a91906126cc565b6009546001600160a01b039182169163a9059cbb91600160401b9004168585858181106113b9576113b96129a8565b905060200201356040518363ffffffff1660e01b81526004016113dd929190612ac3565b6020604051808303816000875af11580156113fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114209190612adc565b505b8061142c816129ec565b9150506112e7565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a58484848460405161146a9493929190612b34565b60405180910390a150505050565b611480611980565b60035442600160a01b9091046001600160401b0316106114b25760405162461bcd60e51b8152600401610abb90612a05565b600680546001600160401b0319166001600160401b0392909216919091179055565b6114dc611980565b6001600160a01b0381166115415760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abb565b610bc8816119df565b600280540361156b5760405162461bcd60e51b8152600401610abb90612a8c565b600280556000805b8481101561169b5761159e868683818110611590576115906129a8565b905060200201358585611a94565b60006115c28787848181106115b5576115b56129a8565b90506020020135866117af565b905080156116885780600460008989868181106115e1576115e16129a8565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b03168152602001908152602001600020600001600082825461162b91906129d4565b9091555042905060046000898986818110611648576116486129a8565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a16825290925290206001015561168581846129d4565b92505b5080611693816129ec565b915050611573565b506001600160a01b038316600090815260056020526040812080548392906116c49084906129d4565b90915550506001600160a01b0383166116ef576116ea6001600160a01b03831682611aaa565b611762565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb9061171d9085908590600401612ac3565b6020604051808303816000875af115801561173c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117609190612adc565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b133838787878660405161179b96959493929190612b97565b60405180910390a150506001600255505050565b6000806117cf6117c86117c185610d8c565b8686611d4d565b8585611ddc565b60008581526004602090815260408083206001600160a01b03881684529091529020549091506117ff9082612bd6565b949350505050565b600054610100900460ff16158080156118275750600054600160ff909116105b80611848575061183630611971565b158015611848575060005460ff166001145b6118ab5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610abb565b6000805460ff1916600117905580156118ce576000805461ff0019166101001790555b6118d7826119df565b6118e2826000611e05565b6118f483600001518460200151611e36565b61190683604001518460600151611e67565b61191883608001518460a00151611e98565b6119258360c00151611ec9565b801561196c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b6001600160a01b03163b151590565b33611989610ea5565b6001600160a01b031614610d8a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610abb565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b60005b815181101561196c57611a82838281518110611a5b57611a5b6129a8565b6020026020010151838381518110611a7557611a756129a8565b6020026020010151611ef9565b80611a8c816129ec565b915050611a3d565b611a9f838383611f68565b61196c83838361201d565b80471015611afa5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610abb565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611b47576040519150601f19603f3d011682016040523d82523d6000602084013e611b4c565b606091505b505090508061196c5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610abb565b6003600954600160f01b900460ff166003811115611be057611be06125c0565b03611c1f5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401610abb565b6002600954600160f01b900460ff166003811115611c3f57611c3f6125c0565b03611c475750565b6001600954600160f01b900460ff166003811115611c6757611c676125c0565b03611cca576009546001600160a01b03828116600160401b9092041614610bc85760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401610abb565b6000600954600160f01b900460ff166003811115611cea57611cea6125c0565b03610bc857806001600160a01b0316611d01610ea5565b6001600160a01b031614610bc85760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401610abb565b6006546000906001600160401b0316421015611d6b57506000610a1b565b600654611d8a906001600160401b03600160401b820481169116612bed565b6001600160401b0316421115611da1575082610a1b565b6006546001600160401b03600160401b8204811691611dc1911642612bd6565b611dcb9086612c18565b611dd59190612c37565b9050610a1b565b600754600083815260086020526040812054909190611dfb9086612c18565b6117ff9190612c37565b600054610100900460ff16611e2c5760405162461bcd60e51b8152600401610abb90612c59565b610d748282612068565b600054610100900460ff16611e5d5760405162461bcd60e51b8152600401610abb90612c59565b610d748282612102565b600054610100900460ff16611e8e5760405162461bcd60e51b8152600401610abb90612c59565b610d748282612167565b600054610100900460ff16611ebf5760405162461bcd60e51b8152600401610abb90612c59565b610d7482826121c6565b600054610100900460ff16611ef05760405162461bcd60e51b8152600401610abb90612c59565b610bc881612228565b60008281526008602052604090208054908290556007548190611f1d9084906129d4565b611f279190612bd6565b60075560408051848152602081018390529081018390527ff81b1f9d8b5d36a5a67d13006a8b091a9b63e2a38b331d315d99c6daefd2ddcc90606001611963565b6003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa158015611fb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd79190612ca4565b6001600160a01b03161461196c5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b6044820152606401610abb565b600954426001600160401b039091161061196c5760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b6044820152606401610abb565b600054610100900460ff1661208f5760405162461bcd60e51b8152600401610abb90612c59565b61209f63ac2ba33360e01b612276565b60098054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b8360038111156120f9576120f96125c0565b02179055505050565b600054610100900460ff166121295760405162461bcd60e51b8152600401610abb90612c59565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055610d74631ba050e960e21b612276565b600054610100900460ff1661218e5760405162461bcd60e51b8152600401610abb90612c59565b600680546001600160401b03838116600160401b026001600160801b031990921690851617179055610d7463d1bdccff60e01b612276565b600054610100900460ff166121ed5760405162461bcd60e51b8152600401610abb90612c59565b815181511461220e5760405162461bcd60e51b8152600401610abb90612a65565b6122188282611a3a565b610d746333c7a33f60e11b612276565b600054610100900460ff1661224f5760405162461bcd60e51b8152600401610abb90612c59565b600980546001600160401b0319166001600160401b038316179055610bc86317b2ef4360e31b5b6001600160e01b031980821690036122cf5760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401610abb565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60008083601f84011261230957600080fd5b5081356001600160401b0381111561232057600080fd5b6020830191508360208260051b850101111561233b57600080fd5b9250929050565b6001600160a01b0381168114610bc857600080fd5b803561236281612342565b919050565b60008060006040848603121561237c57600080fd5b83356001600160401b0381111561239257600080fd5b61239e868287016122f7565b90945092505060208401356123b281612342565b809150509250925092565b6000602082840312156123cf57600080fd5b81356001600160e01b031981168114610a1b57600080fd5b600060208083528351808285015260005b81811015612414578581018301518582016040015282016123f8565b81811115612426576000604083870101525b50601f01601f1916929092016040019392505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b03811182821017156124745761247461243c565b60405290565b604051601f8201601f191681016001600160401b03811182821017156124a2576124a261243c565b604052919050565b600080600080608085870312156124c057600080fd5b84356124cb81612342565b93506020858101356124dc81612342565b93506040860135925060608601356001600160401b03808211156124ff57600080fd5b818801915088601f83011261251357600080fd5b8135818111156125255761252561243c565b612537601f8201601f1916850161247a565b9150808252898482850101111561254d57600080fd5b808484018584013760008482840101525080935050505092959194509250565b80356001600160401b038116811461236257600080fd5b60006020828403121561259657600080fd5b610a1b8261256d565b6000602082840312156125b157600080fd5b813560048110610a1b57600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106125f857634e487b7160e01b600052602160045260246000fd5b91905290565b60006020828403121561261057600080fd5b5035919050565b6000806020838503121561262a57600080fd5b82356001600160401b0381111561264057600080fd5b61264c858286016122f7565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b8181101561269057835183529284019291840191600101612674565b50909695505050505050565b600080604083850312156126af57600080fd5b8235915060208301356126c181612342565b809150509250929050565b6000602082840312156126de57600080fd5b8135610a1b81612342565b6001600160a01b0391909116815260200190565b600082601f83011261270e57600080fd5b813560206001600160401b038211156127295761272961243c565b8160051b61273882820161247a565b928352848101820192828101908785111561275257600080fd5b83870192505b8483101561277157823582529183019190830190612758565b979650505050505050565b6000806040838503121561278f57600080fd5b82356001600160401b03808211156127a657600080fd5b6127b2868387016126fd565b935060208501359150808211156127c857600080fd5b506127d5858286016126fd565b9150509250929050565b600080600080604085870312156127f557600080fd5b84356001600160401b038082111561280c57600080fd5b612818888389016122f7565b9096509450602087013591508082111561283157600080fd5b5061283e878288016122f7565b95989497509550505050565b6000806000806060858703121561286057600080fd5b84356001600160401b0381111561287657600080fd5b612882878288016122f7565b909550935050602085013561289681612342565b915060408501356128a681612342565b939692955090935050565b600080604083850312156128c457600080fd5b82356001600160401b03808211156128db57600080fd5b9084019060e082870312156128ef57600080fd5b6128f7612452565b61290083612357565b815261290e6020840161256d565b602082015261291f6040840161256d565b60408201526129306060840161256d565b606082015260808301358281111561294757600080fd5b612953888286016126fd565b60808301525060a08301358281111561296b57600080fd5b612977888286016126fd565b60a08301525061298960c0840161256d565b60c0820152935061299f91505060208401612357565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156129e7576129e76129be565b500190565b6000600182016129fe576129fe6129be565b5060010190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b600060208284031215612a5e57600080fd5b5051919050565b6020808252600d908201526c082a48ea6be9a92a69a82a8869609b1b604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b03929092168252602082015260400190565b600060208284031215612aee57600080fd5b81518015158114610a1b57600080fd5b81835260006001600160fb1b03831115612b1757600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b87811015612b77578235612b5a81612342565b6001600160a01b0316825260209283019290910190600101612b47565b508381036020850152612b8b818688612afe565b98975050505050505050565b600060018060a01b038089168352808816602084015260a06040840152612bc260a084018789612afe565b941660608301525060800152949350505050565b600082821015612be857612be86129be565b500390565b60006001600160401b03808316818516808303821115612c0f57612c0f6129be565b01949350505050565b6000816000190483118215151615612c3257612c326129be565b500290565b600082612c5457634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208284031215612cb657600080fd5b8151610a1b8161234256fea2646970667358221220aa0f7b1dc42a060eeb08e1ee69ce071b7e224ff4298e79adce21e3261466f41964736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"test/TestERC20":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"TestERC20","sourceName":"contracts/test/TestERC20.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b5060405180604001604052806009815260200168119b185a5c95195cdd60ba1b8152506040518060400160405280600381526020016246545360e81b815250816003908161005e9190610112565b50600461006b8282610112565b5050506101d1565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009d57607f821691505b6020821081036100bd57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010d57600081815260208120601f850160051c810160208610156100ea5750805b601f850160051c820191505b81811015610109578281556001016100f6565b5050505b505050565b81516001600160401b0381111561012b5761012b610073565b61013f816101398454610089565b846100c3565b602080601f831160018114610174576000841561015c5750858301515b600019600386901b1c1916600185901b178555610109565b600085815260208120601f198616915b828110156101a357888601518255948401946001909101908401610184565b50858210156101c15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610983806101e06000396000f3fe608060405234801561001057600080fd5b50600436106100a45760003560e01c806306fdde03146100a9578063095ea7b3146100c757806318160ddd146100ea57806323b872dd146100fc578063313ce5671461010f578063395093511461011e57806340c10f191461013157806370a082311461014657806395d89b411461016f578063a457c2d714610177578063a9059cbb1461018a578063dd62ed3e1461019d575b600080fd5b6100b16101b0565b6040516100be91906107c1565b60405180910390f35b6100da6100d5366004610832565b610242565b60405190151581526020016100be565b6002545b6040519081526020016100be565b6100da61010a36600461085c565b61025a565b604051601281526020016100be565b6100da61012c366004610832565b61027e565b61014461013f366004610832565b6102a0565b005b6100ee610154366004610898565b6001600160a01b031660009081526020819052604090205490565b6100b16102ae565b6100da610185366004610832565b6102bd565b6100da610198366004610832565b61033d565b6100ee6101ab3660046108ba565b61034b565b6060600380546101bf906108ed565b80601f01602080910402602001604051908101604052809291908181526020018280546101eb906108ed565b80156102385780601f1061020d57610100808354040283529160200191610238565b820191906000526020600020905b81548152906001019060200180831161021b57829003601f168201915b5050505050905090565b600033610250818585610376565b5060019392505050565b60003361026885828561049a565b610273858585610514565b506001949350505050565b600033610250818585610291838361034b565b61029b9190610927565b610376565b6102aa82826106e2565b5050565b6060600480546101bf906108ed565b600033816102cb828661034b565b9050838110156103305760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102738286868403610376565b600033610250818585610514565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103d85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610327565b6001600160a01b0382166104395760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610327565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006104a6848461034b565b9050600019811461050e57818110156105015760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610327565b61050e8484848403610376565b50505050565b6001600160a01b0383166105785760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610327565b6001600160a01b0382166105da5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610327565b6001600160a01b038316600090815260208190526040902054818110156106525760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610327565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610689908490610927565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106d591815260200190565b60405180910390a361050e565b6001600160a01b0382166107385760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610327565b806002600082825461074a9190610927565b90915550506001600160a01b03821660009081526020819052604081208054839290610777908490610927565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600060208083528351808285015260005b818110156107ee578581018301518582016040015282016107d2565b81811115610800576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461082d57600080fd5b919050565b6000806040838503121561084557600080fd5b61084e83610816565b946020939093013593505050565b60008060006060848603121561087157600080fd5b61087a84610816565b925061088860208501610816565b9150604084013590509250925092565b6000602082840312156108aa57600080fd5b6108b382610816565b9392505050565b600080604083850312156108cd57600080fd5b6108d683610816565b91506108e460208401610816565b90509250929050565b600181811c9082168061090157607f821691505b60208210810361092157634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561094857634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220638c874dab3731636a634e155fb170c73c711f8ec5239cff04647e9f50d24a4364736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100a45760003560e01c806306fdde03146100a9578063095ea7b3146100c757806318160ddd146100ea57806323b872dd146100fc578063313ce5671461010f578063395093511461011e57806340c10f191461013157806370a082311461014657806395d89b411461016f578063a457c2d714610177578063a9059cbb1461018a578063dd62ed3e1461019d575b600080fd5b6100b16101b0565b6040516100be91906107c1565b60405180910390f35b6100da6100d5366004610832565b610242565b60405190151581526020016100be565b6002545b6040519081526020016100be565b6100da61010a36600461085c565b61025a565b604051601281526020016100be565b6100da61012c366004610832565b61027e565b61014461013f366004610832565b6102a0565b005b6100ee610154366004610898565b6001600160a01b031660009081526020819052604090205490565b6100b16102ae565b6100da610185366004610832565b6102bd565b6100da610198366004610832565b61033d565b6100ee6101ab3660046108ba565b61034b565b6060600380546101bf906108ed565b80601f01602080910402602001604051908101604052809291908181526020018280546101eb906108ed565b80156102385780601f1061020d57610100808354040283529160200191610238565b820191906000526020600020905b81548152906001019060200180831161021b57829003601f168201915b5050505050905090565b600033610250818585610376565b5060019392505050565b60003361026885828561049a565b610273858585610514565b506001949350505050565b600033610250818585610291838361034b565b61029b9190610927565b610376565b6102aa82826106e2565b5050565b6060600480546101bf906108ed565b600033816102cb828661034b565b9050838110156103305760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102738286868403610376565b600033610250818585610514565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103d85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610327565b6001600160a01b0382166104395760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610327565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006104a6848461034b565b9050600019811461050e57818110156105015760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610327565b61050e8484848403610376565b50505050565b6001600160a01b0383166105785760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610327565b6001600160a01b0382166105da5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610327565b6001600160a01b038316600090815260208190526040902054818110156106525760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610327565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610689908490610927565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106d591815260200190565b60405180910390a361050e565b6001600160a01b0382166107385760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610327565b806002600082825461074a9190610927565b90915550506001600160a01b03821660009081526020819052604081208054839290610777908490610927565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600060208083528351808285015260005b818110156107ee578581018301518582016040015282016107d2565b81811115610800576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461082d57600080fd5b919050565b6000806040838503121561084557600080fd5b61084e83610816565b946020939093013593505050565b60008060006060848603121561087157600080fd5b61087a84610816565b925061088860208501610816565b9150604084013590509250925092565b6000602082840312156108aa57600080fd5b6108b382610816565b9392505050565b600080604083850312156108cd57600080fd5b6108d683610816565b91506108e460208401610816565b90509250929050565b600181811c9082168061090157607f821691505b60208210810361092157634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561094857634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220638c874dab3731636a634e155fb170c73c711f8ec5239cff04647e9f50d24a4364736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"test/TestERC721":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"TestERC721","sourceName":"contracts/test/TestERC721.sol","abi":[{"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":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"},{"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":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"address","name":"to","type":"address"},{"internalType":"uint256","name":"total","type":"uint256"}],"name":"mintBulk","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"mintExact","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"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":"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":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405180604001604052806009815260200168119b185a5c95195cdd60ba1b8152506040518060400160405280600381526020016246545360e81b81525081600090816200006191906200011e565b5060016200007082826200011e565b505050620001ea565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000a457607f821691505b602082108103620000c557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200011957600081815260208120601f850160051c81016020861015620000f45750805b601f850160051c820191505b81811015620001155782815560010162000100565b5050505b505050565b81516001600160401b038111156200013a576200013a62000079565b62000152816200014b84546200008f565b84620000cb565b602080601f8311600181146200018a5760008415620001715750858301515b600019600386901b1c1916600185901b17855562000115565b600085815260208120601f198616915b82811015620001bb578886015182559484019460019091019084016200019a565b5085821015620001da5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6116c580620001fa6000396000f3fe608060405234801561001057600080fd5b50600436106100e65760003560e01c806301ffc9a7146100eb57806306fdde0314610113578063081812fc14610128578063095ea7b31461015357806318160ddd1461016857806323b872dd1461017a5780632f745c591461018d57806342842e0e146101a05780634f6ccce7146101b35780636352211e146101c657806370a08231146101d957806395d89b41146101ec578063a22cb465146101f4578063b88d4fde14610207578063bca4d1661461021a578063c80120f11461022d578063c87b56dd14610240578063e985e9c514610253575b600080fd5b6100fe6100f9366004611194565b610266565b60405190151581526020015b60405180910390f35b61011b610277565b60405161010a9190611209565b61013b61013636600461121c565b610309565b6040516001600160a01b03909116815260200161010a565b610166610161366004611251565b610330565b005b6008545b60405190815260200161010a565b61016661018836600461127b565b61044a565b61016c61019b366004611251565b61047b565b6101666101ae36600461127b565b610511565b61016c6101c136600461121c565b61052c565b61013b6101d436600461121c565b6105bf565b61016c6101e73660046112b7565b6105f4565b61011b61067a565b6101666102023660046112d2565b610689565b610166610215366004611324565b610698565b6100fe610228366004611251565b6106d0565b6100fe61023b366004611251565b61070a565b61011b61024e36600461121c565b61071f565b6100fe6102613660046113ff565b610793565b6000610271826107c1565b92915050565b60606000805461028690611432565b80601f01602080910402602001604051908101604052809291908181526020018280546102b290611432565b80156102ff5780601f106102d4576101008083540402835291602001916102ff565b820191906000526020600020905b8154815290600101906020018083116102e257829003601f168201915b5050505050905090565b6000610314826107e6565b506000908152600460205260409020546001600160a01b031690565b600061033b826105bf565b9050806001600160a01b0316836001600160a01b0316036103ad5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103c957506103c98133610793565b61043b5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016103a4565b610445838361080e565b505050565b610454338261087c565b6104705760405162461bcd60e51b81526004016103a49061146c565b6104458383836108db565b6000610486836105f4565b82106104e85760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016103a4565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b61044583838360405180602001604052806000815250610698565b600061053760085490565b821061059a5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016103a4565b600882815481106105ad576105ad6114ba565b90600052602060002001549050919050565b6000818152600260205260408120546001600160a01b0316806102715760405162461bcd60e51b81526004016103a4906114d0565b60006001600160a01b03821661065e5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103a4565b506001600160a01b031660009081526003602052604090205490565b60606001805461028690611432565b610694338383610a82565b5050565b6106a2338361087c565b6106be5760405162461bcd60e51b81526004016103a49061146c565b6106ca84848484610b4c565b50505050565b6000805b82811015610700576106ee846106e960085490565b610b7f565b806106f881611518565b9150506106d4565b5060019392505050565b60006107168383610b7f565b50600192915050565b606061072a826107e6565b600061074160408051602081019091526000815290565b90506000815111610761576040518060200160405280600081525061078c565b8061076b84610cbd565b60405160200161077c929190611531565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b0319821663780e9d6360e01b1480610271575061027182610dbd565b6107ef81610e0d565b61080b5760405162461bcd60e51b81526004016103a4906114d0565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610843826105bf565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610888836105bf565b9050806001600160a01b0316846001600160a01b031614806108af57506108af8185610793565b806108d35750836001600160a01b03166108c884610309565b6001600160a01b0316145b949350505050565b826001600160a01b03166108ee826105bf565b6001600160a01b0316146109525760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103a4565b6001600160a01b0382166109b45760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103a4565b6109bf838383610e2a565b6109ca60008261080e565b6001600160a01b03831660009081526003602052604081208054600192906109f3908490611560565b90915550506001600160a01b0382166000908152600360205260408120805460019290610a21908490611577565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b031603610adf5760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b60448201526064016103a4565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610b578484846108db565b610b6384848484610e35565b6106ca5760405162461bcd60e51b81526004016103a49061158f565b6001600160a01b038216610bd55760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016103a4565b610bde81610e0d565b15610c2a5760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b60448201526064016103a4565b610c3660008383610e2a565b6001600160a01b0382166000908152600360205260408120805460019290610c5f908490611577565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b606081600003610ce45750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610d0e5780610cf881611518565b9150610d079050600a836115f7565b9150610ce8565b6000816001600160401b03811115610d2857610d2861130e565b6040519080825280601f01601f191660200182016040528015610d52576020820181803683370190505b5090505b84156108d357610d67600183611560565b9150610d74600a8661160b565b610d7f906030611577565b60f81b818381518110610d9457610d946114ba565b60200101906001600160f81b031916908160001a905350610db6600a866115f7565b9450610d56565b60006001600160e01b031982166380ac58cd60e01b1480610dee57506001600160e01b03198216635b5e139f60e01b145b8061027157506301ffc9a760e01b6001600160e01b0319831614610271565b6000908152600260205260409020546001600160a01b0316151590565b610445838383610f36565b60006001600160a01b0384163b15610f2b57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610e7990339089908890889060040161161f565b6020604051808303816000875af1925050508015610eb4575060408051601f3d908101601f19168201909252610eb19181019061165c565b60015b610f11573d808015610ee2576040519150601f19603f3d011682016040523d82523d6000602084013e610ee7565b606091505b508051600003610f095760405162461bcd60e51b81526004016103a49061158f565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506108d3565b506001949350505050565b6001600160a01b038316610f9157610f8c81600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b610fb4565b816001600160a01b0316836001600160a01b031614610fb457610fb48382610fee565b6001600160a01b038216610fcb576104458161108b565b826001600160a01b0316826001600160a01b03161461044557610445828261113a565b60006001610ffb846105f4565b6110059190611560565b600083815260076020526040902054909150808214611058576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b60085460009061109d90600190611560565b600083815260096020526040812054600880549394509092849081106110c5576110c56114ba565b9060005260206000200154905080600883815481106110e6576110e66114ba565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061111e5761111e611679565b6001900381819060005260206000200160009055905550505050565b6000611145836105f4565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160e01b03198116811461080b57600080fd5b6000602082840312156111a657600080fd5b813561078c8161117e565b60005b838110156111cc5781810151838201526020016111b4565b838111156106ca5750506000910152565b600081518084526111f58160208601602086016111b1565b601f01601f19169290920160200192915050565b60208152600061078c60208301846111dd565b60006020828403121561122e57600080fd5b5035919050565b80356001600160a01b038116811461124c57600080fd5b919050565b6000806040838503121561126457600080fd5b61126d83611235565b946020939093013593505050565b60008060006060848603121561129057600080fd5b61129984611235565b92506112a760208501611235565b9150604084013590509250925092565b6000602082840312156112c957600080fd5b61078c82611235565b600080604083850312156112e557600080fd5b6112ee83611235565b91506020830135801515811461130357600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561133a57600080fd5b61134385611235565b935061135160208601611235565b92506040850135915060608501356001600160401b038082111561137457600080fd5b818701915087601f83011261138857600080fd5b81358181111561139a5761139a61130e565b604051601f8201601f19908116603f011681019083821181831017156113c2576113c261130e565b816040528281528a60208487010111156113db57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561141257600080fd5b61141b83611235565b915061142960208401611235565b90509250929050565b600181811c9082168061144657607f821691505b60208210810361146657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60006001820161152a5761152a611502565b5060010190565b600083516115438184602088016111b1565b8351908301906115578183602088016111b1565b01949350505050565b60008282101561157257611572611502565b500390565b6000821982111561158a5761158a611502565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082611606576116066115e1565b500490565b60008261161a5761161a6115e1565b500690565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611652908301846111dd565b9695505050505050565b60006020828403121561166e57600080fd5b815161078c8161117e565b634e487b7160e01b600052603160045260246000fdfea26469706673582212208a3df3c648bd00c35bd65b9ccc698db60e3feb20061d92b4d48b5020193895b064736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100e65760003560e01c806301ffc9a7146100eb57806306fdde0314610113578063081812fc14610128578063095ea7b31461015357806318160ddd1461016857806323b872dd1461017a5780632f745c591461018d57806342842e0e146101a05780634f6ccce7146101b35780636352211e146101c657806370a08231146101d957806395d89b41146101ec578063a22cb465146101f4578063b88d4fde14610207578063bca4d1661461021a578063c80120f11461022d578063c87b56dd14610240578063e985e9c514610253575b600080fd5b6100fe6100f9366004611194565b610266565b60405190151581526020015b60405180910390f35b61011b610277565b60405161010a9190611209565b61013b61013636600461121c565b610309565b6040516001600160a01b03909116815260200161010a565b610166610161366004611251565b610330565b005b6008545b60405190815260200161010a565b61016661018836600461127b565b61044a565b61016c61019b366004611251565b61047b565b6101666101ae36600461127b565b610511565b61016c6101c136600461121c565b61052c565b61013b6101d436600461121c565b6105bf565b61016c6101e73660046112b7565b6105f4565b61011b61067a565b6101666102023660046112d2565b610689565b610166610215366004611324565b610698565b6100fe610228366004611251565b6106d0565b6100fe61023b366004611251565b61070a565b61011b61024e36600461121c565b61071f565b6100fe6102613660046113ff565b610793565b6000610271826107c1565b92915050565b60606000805461028690611432565b80601f01602080910402602001604051908101604052809291908181526020018280546102b290611432565b80156102ff5780601f106102d4576101008083540402835291602001916102ff565b820191906000526020600020905b8154815290600101906020018083116102e257829003601f168201915b5050505050905090565b6000610314826107e6565b506000908152600460205260409020546001600160a01b031690565b600061033b826105bf565b9050806001600160a01b0316836001600160a01b0316036103ad5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103c957506103c98133610793565b61043b5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016103a4565b610445838361080e565b505050565b610454338261087c565b6104705760405162461bcd60e51b81526004016103a49061146c565b6104458383836108db565b6000610486836105f4565b82106104e85760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016103a4565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b61044583838360405180602001604052806000815250610698565b600061053760085490565b821061059a5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016103a4565b600882815481106105ad576105ad6114ba565b90600052602060002001549050919050565b6000818152600260205260408120546001600160a01b0316806102715760405162461bcd60e51b81526004016103a4906114d0565b60006001600160a01b03821661065e5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103a4565b506001600160a01b031660009081526003602052604090205490565b60606001805461028690611432565b610694338383610a82565b5050565b6106a2338361087c565b6106be5760405162461bcd60e51b81526004016103a49061146c565b6106ca84848484610b4c565b50505050565b6000805b82811015610700576106ee846106e960085490565b610b7f565b806106f881611518565b9150506106d4565b5060019392505050565b60006107168383610b7f565b50600192915050565b606061072a826107e6565b600061074160408051602081019091526000815290565b90506000815111610761576040518060200160405280600081525061078c565b8061076b84610cbd565b60405160200161077c929190611531565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b0319821663780e9d6360e01b1480610271575061027182610dbd565b6107ef81610e0d565b61080b5760405162461bcd60e51b81526004016103a4906114d0565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610843826105bf565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610888836105bf565b9050806001600160a01b0316846001600160a01b031614806108af57506108af8185610793565b806108d35750836001600160a01b03166108c884610309565b6001600160a01b0316145b949350505050565b826001600160a01b03166108ee826105bf565b6001600160a01b0316146109525760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103a4565b6001600160a01b0382166109b45760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103a4565b6109bf838383610e2a565b6109ca60008261080e565b6001600160a01b03831660009081526003602052604081208054600192906109f3908490611560565b90915550506001600160a01b0382166000908152600360205260408120805460019290610a21908490611577565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b031603610adf5760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b60448201526064016103a4565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610b578484846108db565b610b6384848484610e35565b6106ca5760405162461bcd60e51b81526004016103a49061158f565b6001600160a01b038216610bd55760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016103a4565b610bde81610e0d565b15610c2a5760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b60448201526064016103a4565b610c3660008383610e2a565b6001600160a01b0382166000908152600360205260408120805460019290610c5f908490611577565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b606081600003610ce45750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610d0e5780610cf881611518565b9150610d079050600a836115f7565b9150610ce8565b6000816001600160401b03811115610d2857610d2861130e565b6040519080825280601f01601f191660200182016040528015610d52576020820181803683370190505b5090505b84156108d357610d67600183611560565b9150610d74600a8661160b565b610d7f906030611577565b60f81b818381518110610d9457610d946114ba565b60200101906001600160f81b031916908160001a905350610db6600a866115f7565b9450610d56565b60006001600160e01b031982166380ac58cd60e01b1480610dee57506001600160e01b03198216635b5e139f60e01b145b8061027157506301ffc9a760e01b6001600160e01b0319831614610271565b6000908152600260205260409020546001600160a01b0316151590565b610445838383610f36565b60006001600160a01b0384163b15610f2b57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610e7990339089908890889060040161161f565b6020604051808303816000875af1925050508015610eb4575060408051601f3d908101601f19168201909252610eb19181019061165c565b60015b610f11573d808015610ee2576040519150601f19603f3d011682016040523d82523d6000602084013e610ee7565b606091505b508051600003610f095760405162461bcd60e51b81526004016103a49061158f565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506108d3565b506001949350505050565b6001600160a01b038316610f9157610f8c81600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b610fb4565b816001600160a01b0316836001600160a01b031614610fb457610fb48382610fee565b6001600160a01b038216610fcb576104458161108b565b826001600160a01b0316826001600160a01b03161461044557610445828261113a565b60006001610ffb846105f4565b6110059190611560565b600083815260076020526040902054909150808214611058576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b60085460009061109d90600190611560565b600083815260096020526040812054600880549394509092849081106110c5576110c56114ba565b9060005260206000200154905080600883815481106110e6576110e66114ba565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061111e5761111e611679565b6001900381819060005260206000200160009055905550505050565b6000611145836105f4565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160e01b03198116811461080b57600080fd5b6000602082840312156111a657600080fd5b813561078c8161117e565b60005b838110156111cc5781810151838201526020016111b4565b838111156106ca5750506000910152565b600081518084526111f58160208601602086016111b1565b601f01601f19169290920160200192915050565b60208152600061078c60208301846111dd565b60006020828403121561122e57600080fd5b5035919050565b80356001600160a01b038116811461124c57600080fd5b919050565b6000806040838503121561126457600080fd5b61126d83611235565b946020939093013593505050565b60008060006060848603121561129057600080fd5b61129984611235565b92506112a760208501611235565b9150604084013590509250925092565b6000602082840312156112c957600080fd5b61078c82611235565b600080604083850312156112e557600080fd5b6112ee83611235565b91506020830135801515811461130357600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561133a57600080fd5b61134385611235565b935061135160208601611235565b92506040850135915060608501356001600160401b038082111561137457600080fd5b818701915087601f83011261138857600080fd5b81358181111561139a5761139a61130e565b604051601f8201601f19908116603f011681019083821181831017156113c2576113c261130e565b816040528281528a60208487010111156113db57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561141257600080fd5b61141b83611235565b915061142960208401611235565b90509250929050565b600181811c9082168061144657607f821691505b60208210810361146657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60006001820161152a5761152a611502565b5060010190565b600083516115438184602088016111b1565b8351908301906115578183602088016111b1565b01949350505050565b60008282101561157257611572611502565b500390565b6000821982111561158a5761158a611502565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082611606576116066115e1565b500490565b60008261161a5761161a6115e1565b500690565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611652908301846111dd565b9695505050505050565b60006020828403121561166e57600080fd5b815161078c8161117e565b634e487b7160e01b600052603160045260246000fdfea26469706673582212208a3df3c648bd00c35bd65b9ccc698db60e3feb20061d92b4d48b5020193895b064736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"tokens/extensions/ERC20RoleBasedLockingExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20RoleBasedLockingExtension","sourceName":"contracts/tokens/extensions/ERC20RoleBasedLockingExtension.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TRANSFER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"canTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockForAll","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"tokens/extensions/ERC20RoleBasedLockingExtensionInterface":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20RoleBasedLockingExtensionInterface","sourceName":"contracts/tokens/extensions/ERC20RoleBasedLockingExtension.sol","abi":[{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"canTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockForAll","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"tokens/presets/ERC20BasicToken":{"address":{"1":"0xb91057014bFB01df21e541335a78D930266f7869","3":"0xEE122C46dFd680194268E614928b6dCD621aa533","4":"0x0FEe7a8A54Afb8eFeF1EFF735Ca5F5Cff264e5D9","5":"0x102B9F9D28A46f0AdbC562FdC333f5CBe3aBcA27","25":"0x26aaa1F0Be85042402C97766EAC22357AeCCEbc6","56":"0xb2edC1E98b147137D7f6894403E163236bc6FffC","65":"0x35F6B1d81aED96Ae0019bdec354a80E99219bEc5","66":"0xad0B69e01dC4F051e23F247F2EA41dFCBe3a78b1","97":"0xa2b85F51affCAa00EFf599805407781C582d3d7F","137":"0x876f2Ade3C3CD75C90D86FA674BC50D66F25e474","250":"0x2a89238074A3eF4cE606ed3f53CfE5C50CdD9299","280":"0xa1CbEC852b9b6FE5F8B690bc0e102C291de6256C","4002":"0x2a89238074A3eF4cE606ed3f53CfE5C50CdD9299","9000":"0x35F6B1d81aED96Ae0019bdec354a80E99219bEc5","42161":"0xe69E05f4f2b86aA996d76b43A407a93d3Fa84345","43113":"0xBB0AA646E8D63d920a7Ab1C96Ba082cbF075DcDA","43114":"0x8043d592263311ccCaAeeC871Df6ad1e127A52E1","421611":"0x73fb9dDfA54EC7d0fecC22c88B8e9E98a2C1bF78","arbitrumOne":"0xe69E05f4f2b86aA996d76b43A407a93d3Fa84345","arbitrumTestnet":"0x73fb9dDfA54EC7d0fecC22c88B8e9E98a2C1bF78","avalanche":"0x8043d592263311ccCaAeeC871Df6ad1e127A52E1","avalancheFujiTestnet":"0xBB0AA646E8D63d920a7Ab1C96Ba082cbF075DcDA","bsc":"0xb2edC1E98b147137D7f6894403E163236bc6FffC","bscTestnet":"0xa2b85F51affCAa00EFf599805407781C582d3d7F","cronos":"0x26aaa1F0Be85042402C97766EAC22357AeCCEbc6","evmosTestnet":"0x35F6B1d81aED96Ae0019bdec354a80E99219bEc5","ftmTestnet":"0x2a89238074A3eF4cE606ed3f53CfE5C50CdD9299","goerli":"0x102B9F9D28A46f0AdbC562FdC333f5CBe3aBcA27","mainnet":"0xb91057014bFB01df21e541335a78D930266f7869","okcMainnet":"0xad0B69e01dC4F051e23F247F2EA41dFCBe3a78b1","okcTestnet":"0x35F6B1d81aED96Ae0019bdec354a80E99219bEc5","opera":"0x2a89238074A3eF4cE606ed3f53CfE5C50CdD9299","polygon":"0x876f2Ade3C3CD75C90D86FA674BC50D66F25e474","rinkeby":"0x0FEe7a8A54Afb8eFeF1EFF735Ca5F5Cff264e5D9","ropsten":"0xEE122C46dFd680194268E614928b6dCD621aa533","zksyncTestnet":"0xa1CbEC852b9b6FE5F8B690bc0e102C291de6256C"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20BasicToken","sourceName":"contracts/tokens/presets/ERC20BasicToken.sol","abi":[{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"internalType":"struct ERC20BasicToken.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"internalType":"struct ERC20BasicToken.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162001d7f38038062001d7f8339810160408190526200003491620003bf565b805160208201516004620000498382620004ff565b506005620000588282620004ff565b50506006805460ff191690555062000071813362000078565b50620005cb565b600054610100900460ff1615808015620000995750600054600160ff909116105b80620000c95750620000b6306200022d60201b620008261760201c565b158015620000c9575060005460ff166001145b620001315760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff19166001179055801562000155576000805461ff0019166101001790555b8251600890620001669082620004ff565b5060208301516009906200017b9082620004ff565b50620001896000836200023c565b620001b57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a836200023c565b620001e17f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6836200023c565b801562000228576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6001600160a01b03163b151590565b60008281526007602090815260408083206001600160a01b038516845290915290205460ff16620002dd5760008281526007602090815260408083206001600160a01b03851684529091529020805460ff191660011790556200029c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620003225762000322620002e1565b604052919050565b600082601f8301126200033c57600080fd5b81516001600160401b03811115620003585762000358620002e1565b60206200036e601f8301601f19168201620002f7565b82815285828487010111156200038357600080fd5b60005b83811015620003a357858101830151828201840152820162000386565b83811115620003b55760008385840101525b5095945050505050565b600060208284031215620003d257600080fd5b81516001600160401b0380821115620003ea57600080fd5b9083019060408286031215620003ff57600080fd5b6040516040810181811083821117156200041d576200041d620002e1565b6040528251828111156200043057600080fd5b6200043e878286016200032a565b8252506020830151828111156200045457600080fd5b62000462878286016200032a565b60208301525095945050505050565b600181811c908216806200048657607f821691505b602082108103620004a757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200022857600081815260208120601f850160051c81016020861015620004d65750805b601f850160051c820191505b81811015620004f757828155600101620004e2565b505050505050565b81516001600160401b038111156200051b576200051b620002e1565b62000533816200052c845462000471565b84620004ad565b602080601f8311600181146200056b5760008415620005525750858301515b600019600386901b1c1916600185901b178555620004f7565b600085815260208120601f198616915b828110156200059c578886015182559484019460019091019084016200057b565b5085821015620005bb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6117a480620005db6000396000f3fe608060405234801561001057600080fd5b50600436106101495760003560e01c806301ffc9a71461014e57806306fdde0314610176578063095ea7b31461018b57806318160ddd1461019e57806323b872dd146101b0578063248a9ca3146101c35780632f2ff15d146101d6578063313ce567146101eb57806336568abe146101fa578063395093511461020d5780633f4ba83a1461022057806340c10f191461022857806342966c681461023b5780635539160f1461024e5780635c975abb1461026157806370a082311461026c57806379cc6790146102955780638456cb59146102a857806391d14854146102b057806395d89b41146102c3578063a217fddf146102cb578063a457c2d7146102d3578063a9059cbb146102e6578063d5391393146102f9578063d547741f1461030e578063dd62ed3e14610321578063e63ab1e914610334575b600080fd5b61016161015c3660046111e0565b610349565b60405190151581526020015b60405180910390f35b61017e610380565b60405161016d9190611236565b610161610199366004611285565b610412565b6003545b60405190815260200161016d565b6101616101be3660046112af565b61042a565b6101a26101d13660046112eb565b61044e565b6101e96101e4366004611304565b610463565b005b6040516012815260200161016d565b6101e9610208366004611304565b610484565b61016161021b366004611285565b610507565b6101e9610529565b6101e9610236366004611285565b61054c565b6101e96102493660046112eb565b61056e565b6101e961025c3660046113d2565b610578565b60065460ff16610161565b6101a261027a366004611482565b6001600160a01b031660009081526001602052604090205490565b6101e96102a3366004611285565b6106e7565b6101e96106fc565b6101616102be366004611304565b61071c565b61017e610747565b6101a2600081565b6101616102e1366004611285565b610756565b6101616102f4366004611285565b6107d1565b6101a260008051602061172f83398151915281565b6101e961031c366004611304565b6107df565b6101a261032f36600461149d565b6107fb565b6101a260008051602061170f83398151915281565b60006001600160e01b03198216637965db0b60e01b148061037a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606008805461038f906114c7565b80601f01602080910402602001604051908101604052809291908181526020018280546103bb906114c7565b80156104085780601f106103dd57610100808354040283529160200191610408565b820191906000526020600020905b8154815290600101906020018083116103eb57829003601f168201915b5050505050905090565b600033610420818585610835565b5060019392505050565b600033610438858285610959565b6104438585856109d3565b506001949350505050565b60009081526007602052604090206001015490565b61046c8261044e565b61047581610b9a565b61047f8383610ba4565b505050565b6001600160a01b03811633146104f95760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105038282610c2a565b5050565b60003361042081858561051a83836107fb565b6105249190611517565b610835565b60008051602061170f83398151915261054181610b9a565b610549610c91565b50565b60008051602061172f83398151915261056481610b9a565b61047f8383610ce3565b6105493382610dbc565b600054610100900460ff16158080156105985750600054600160ff909116105b806105b957506105a730610826565b1580156105b9575060005460ff166001145b61061c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104f0565b6000805460ff19166001179055801561063f576000805461ff0019166101001790555b825160089061064e908261157d565b506020830151600990610661908261157d565b5061066d600083610ba4565b61068560008051602061170f83398151915283610ba4565b61069d60008051602061172f83398151915283610ba4565b801561047f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6106f2823383610959565b6105038282610dbc565b60008051602061170f83398151915261071481610b9a565b610549610f04565b60009182526007602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606009805461038f906114c7565b6000338161076482866107fb565b9050838110156107c45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104f0565b6104438286868403610835565b6000336104208185856109d3565b6107e88261044e565b6107f181610b9a565b61047f8383610c2a565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6001600160a01b03163b151590565b6001600160a01b0383166108975760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104f0565b6001600160a01b0382166108f85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104f0565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061096584846107fb565b905060001981146109cd57818110156109c05760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104f0565b6109cd8484848403610835565b50505050565b6001600160a01b038316610a375760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104f0565b6001600160a01b038216610a995760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104f0565b610aa4838383610f41565b6001600160a01b03831660009081526001602052604090205481811015610b1c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104f0565b6001600160a01b03808516600090815260016020526040808220858503905591851681529081208054849290610b53908490611517565b92505081905550826001600160a01b0316846001600160a01b031660008051602061174f83398151915284604051610b8d91815260200190565b60405180910390a36109cd565b6105498133610f49565b610bae828261071c565b6105035760008281526007602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610be63390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610c34828261071c565b156105035760008281526007602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b610c99610fad565b6006805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610d395760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104f0565b610d4560008383610f41565b8060036000828254610d579190611517565b90915550506001600160a01b03821660009081526001602052604081208054839290610d84908490611517565b90915550506040518181526001600160a01b0383169060009060008051602061174f8339815191529060200160405180910390a35050565b6001600160a01b038216610e1c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104f0565b610e2882600083610f41565b6001600160a01b03821660009081526001602052604090205481811015610e9c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104f0565b6001600160a01b0383166000908152600160205260408120838303905560038054849290610ecb90849061163c565b90915550506040518281526000906001600160a01b0385169060008051602061174f8339815191529060200160405180910390a3505050565b610f0c610ff8565b6006805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610cc63390565b61047f610ff8565b610f53828261071c565b61050357610f6b816001600160a01b0316601461103e565b610f7683602061103e565b604051602001610f87929190611653565b60408051601f198184030181529082905262461bcd60e51b82526104f091600401611236565b60065460ff16610ff65760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016104f0565b565b60065460ff1615610ff65760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016104f0565b6060600061104d8360026116c2565b611058906002611517565b6001600160401b0381111561106f5761106f611330565b6040519080825280601f01601f191660200182016040528015611099576020820181803683370190505b509050600360fc1b816000815181106110b4576110b46116e1565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106110e3576110e36116e1565b60200101906001600160f81b031916908160001a90535060006111078460026116c2565b611112906001611517565b90505b600181111561118a576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611146576111466116e1565b1a60f81b82828151811061115c5761115c6116e1565b60200101906001600160f81b031916908160001a90535060049490941c93611183816116f7565b9050611115565b5083156111d95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016104f0565b9392505050565b6000602082840312156111f257600080fd5b81356001600160e01b0319811681146111d957600080fd5b60005b8381101561122557818101518382015260200161120d565b838111156109cd5750506000910152565b602081526000825180602084015261125581604085016020870161120a565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461128057600080fd5b919050565b6000806040838503121561129857600080fd5b6112a183611269565b946020939093013593505050565b6000806000606084860312156112c457600080fd5b6112cd84611269565b92506112db60208501611269565b9150604084013590509250925092565b6000602082840312156112fd57600080fd5b5035919050565b6000806040838503121561131757600080fd5b8235915061132760208401611269565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261135757600080fd5b81356001600160401b038082111561137157611371611330565b604051601f8301601f19908116603f0116810190828211818310171561139957611399611330565b816040528381528660208588010111156113b257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080604083850312156113e557600080fd5b82356001600160401b03808211156113fc57600080fd5b908401906040828703121561141057600080fd5b60405160408101818110838211171561142b5761142b611330565b60405282358281111561143d57600080fd5b61144988828601611346565b82525060208301358281111561145e57600080fd5b61146a88828601611346565b60208301525080945050505061132760208401611269565b60006020828403121561149457600080fd5b6111d982611269565b600080604083850312156114b057600080fd5b6114b983611269565b915061132760208401611269565b600181811c908216806114db57607f821691505b6020821081036114fb57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561152a5761152a611501565b500190565b601f82111561047f57600081815260208120601f850160051c810160208610156115565750805b601f850160051c820191505b8181101561157557828155600101611562565b505050505050565b81516001600160401b0381111561159657611596611330565b6115aa816115a484546114c7565b8461152f565b602080601f8311600181146115df57600084156115c75750858301515b600019600386901b1c1916600185901b178555611575565b600085815260208120601f198616915b8281101561160e578886015182559484019460019091019084016115ef565b508582101561162c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008282101561164e5761164e611501565b500390565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b81526000835161168581601785016020880161120a565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516116b681602884016020880161120a565b01602801949350505050565b60008160001904831182151516156116dc576116dc611501565b500290565b634e487b7160e01b600052603260045260246000fd5b60008161170657611706611501565b50600019019056fe65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220349c4a57e1837921223ab6b358937189308554505c83ca95ea30104a79881b9864736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101495760003560e01c806301ffc9a71461014e57806306fdde0314610176578063095ea7b31461018b57806318160ddd1461019e57806323b872dd146101b0578063248a9ca3146101c35780632f2ff15d146101d6578063313ce567146101eb57806336568abe146101fa578063395093511461020d5780633f4ba83a1461022057806340c10f191461022857806342966c681461023b5780635539160f1461024e5780635c975abb1461026157806370a082311461026c57806379cc6790146102955780638456cb59146102a857806391d14854146102b057806395d89b41146102c3578063a217fddf146102cb578063a457c2d7146102d3578063a9059cbb146102e6578063d5391393146102f9578063d547741f1461030e578063dd62ed3e14610321578063e63ab1e914610334575b600080fd5b61016161015c3660046111e0565b610349565b60405190151581526020015b60405180910390f35b61017e610380565b60405161016d9190611236565b610161610199366004611285565b610412565b6003545b60405190815260200161016d565b6101616101be3660046112af565b61042a565b6101a26101d13660046112eb565b61044e565b6101e96101e4366004611304565b610463565b005b6040516012815260200161016d565b6101e9610208366004611304565b610484565b61016161021b366004611285565b610507565b6101e9610529565b6101e9610236366004611285565b61054c565b6101e96102493660046112eb565b61056e565b6101e961025c3660046113d2565b610578565b60065460ff16610161565b6101a261027a366004611482565b6001600160a01b031660009081526001602052604090205490565b6101e96102a3366004611285565b6106e7565b6101e96106fc565b6101616102be366004611304565b61071c565b61017e610747565b6101a2600081565b6101616102e1366004611285565b610756565b6101616102f4366004611285565b6107d1565b6101a260008051602061172f83398151915281565b6101e961031c366004611304565b6107df565b6101a261032f36600461149d565b6107fb565b6101a260008051602061170f83398151915281565b60006001600160e01b03198216637965db0b60e01b148061037a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606008805461038f906114c7565b80601f01602080910402602001604051908101604052809291908181526020018280546103bb906114c7565b80156104085780601f106103dd57610100808354040283529160200191610408565b820191906000526020600020905b8154815290600101906020018083116103eb57829003601f168201915b5050505050905090565b600033610420818585610835565b5060019392505050565b600033610438858285610959565b6104438585856109d3565b506001949350505050565b60009081526007602052604090206001015490565b61046c8261044e565b61047581610b9a565b61047f8383610ba4565b505050565b6001600160a01b03811633146104f95760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105038282610c2a565b5050565b60003361042081858561051a83836107fb565b6105249190611517565b610835565b60008051602061170f83398151915261054181610b9a565b610549610c91565b50565b60008051602061172f83398151915261056481610b9a565b61047f8383610ce3565b6105493382610dbc565b600054610100900460ff16158080156105985750600054600160ff909116105b806105b957506105a730610826565b1580156105b9575060005460ff166001145b61061c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104f0565b6000805460ff19166001179055801561063f576000805461ff0019166101001790555b825160089061064e908261157d565b506020830151600990610661908261157d565b5061066d600083610ba4565b61068560008051602061170f83398151915283610ba4565b61069d60008051602061172f83398151915283610ba4565b801561047f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6106f2823383610959565b6105038282610dbc565b60008051602061170f83398151915261071481610b9a565b610549610f04565b60009182526007602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606009805461038f906114c7565b6000338161076482866107fb565b9050838110156107c45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104f0565b6104438286868403610835565b6000336104208185856109d3565b6107e88261044e565b6107f181610b9a565b61047f8383610c2a565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6001600160a01b03163b151590565b6001600160a01b0383166108975760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104f0565b6001600160a01b0382166108f85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104f0565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061096584846107fb565b905060001981146109cd57818110156109c05760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104f0565b6109cd8484848403610835565b50505050565b6001600160a01b038316610a375760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104f0565b6001600160a01b038216610a995760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104f0565b610aa4838383610f41565b6001600160a01b03831660009081526001602052604090205481811015610b1c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104f0565b6001600160a01b03808516600090815260016020526040808220858503905591851681529081208054849290610b53908490611517565b92505081905550826001600160a01b0316846001600160a01b031660008051602061174f83398151915284604051610b8d91815260200190565b60405180910390a36109cd565b6105498133610f49565b610bae828261071c565b6105035760008281526007602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610be63390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610c34828261071c565b156105035760008281526007602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b610c99610fad565b6006805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610d395760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104f0565b610d4560008383610f41565b8060036000828254610d579190611517565b90915550506001600160a01b03821660009081526001602052604081208054839290610d84908490611517565b90915550506040518181526001600160a01b0383169060009060008051602061174f8339815191529060200160405180910390a35050565b6001600160a01b038216610e1c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104f0565b610e2882600083610f41565b6001600160a01b03821660009081526001602052604090205481811015610e9c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104f0565b6001600160a01b0383166000908152600160205260408120838303905560038054849290610ecb90849061163c565b90915550506040518281526000906001600160a01b0385169060008051602061174f8339815191529060200160405180910390a3505050565b610f0c610ff8565b6006805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610cc63390565b61047f610ff8565b610f53828261071c565b61050357610f6b816001600160a01b0316601461103e565b610f7683602061103e565b604051602001610f87929190611653565b60408051601f198184030181529082905262461bcd60e51b82526104f091600401611236565b60065460ff16610ff65760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016104f0565b565b60065460ff1615610ff65760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016104f0565b6060600061104d8360026116c2565b611058906002611517565b6001600160401b0381111561106f5761106f611330565b6040519080825280601f01601f191660200182016040528015611099576020820181803683370190505b509050600360fc1b816000815181106110b4576110b46116e1565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106110e3576110e36116e1565b60200101906001600160f81b031916908160001a90535060006111078460026116c2565b611112906001611517565b90505b600181111561118a576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611146576111466116e1565b1a60f81b82828151811061115c5761115c6116e1565b60200101906001600160f81b031916908160001a90535060049490941c93611183816116f7565b9050611115565b5083156111d95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016104f0565b9392505050565b6000602082840312156111f257600080fd5b81356001600160e01b0319811681146111d957600080fd5b60005b8381101561122557818101518382015260200161120d565b838111156109cd5750506000910152565b602081526000825180602084015261125581604085016020870161120a565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461128057600080fd5b919050565b6000806040838503121561129857600080fd5b6112a183611269565b946020939093013593505050565b6000806000606084860312156112c457600080fd5b6112cd84611269565b92506112db60208501611269565b9150604084013590509250925092565b6000602082840312156112fd57600080fd5b5035919050565b6000806040838503121561131757600080fd5b8235915061132760208401611269565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261135757600080fd5b81356001600160401b038082111561137157611371611330565b604051601f8301601f19908116603f0116810190828211818310171561139957611399611330565b816040528381528660208588010111156113b257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080604083850312156113e557600080fd5b82356001600160401b03808211156113fc57600080fd5b908401906040828703121561141057600080fd5b60405160408101818110838211171561142b5761142b611330565b60405282358281111561143d57600080fd5b61144988828601611346565b82525060208301358281111561145e57600080fd5b61146a88828601611346565b60208301525080945050505061132760208401611269565b60006020828403121561149457600080fd5b6111d982611269565b600080604083850312156114b057600080fd5b6114b983611269565b915061132760208401611269565b600181811c908216806114db57607f821691505b6020821081036114fb57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561152a5761152a611501565b500190565b601f82111561047f57600081815260208120601f850160051c810160208610156115565750805b601f850160051c820191505b8181101561157557828155600101611562565b505050505050565b81516001600160401b0381111561159657611596611330565b6115aa816115a484546114c7565b8461152f565b602080601f8311600181146115df57600084156115c75750858301515b600019600386901b1c1916600185901b178555611575565b600085815260208120601f198616915b8281101561160e578886015182559484019460019091019084016115ef565b508582101561162c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008282101561164e5761164e611501565b500390565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b81526000835161168581601785016020880161120a565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516116b681602884016020880161120a565b01602801949350505050565b60008160001904831182151516156116dc576116dc611501565b500290565b634e487b7160e01b600052603260045260246000fd5b60008161170657611706611501565b50600019019056fe65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220349c4a57e1837921223ab6b358937189308554505c83ca95ea30104a79881b9864736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"tokens/presets/ERC20LockableToken":{"address":{"1":"0x8fa6C988b115B46Ed2910C53992864754316305f","3":"0x21e829BaFF29509e87E94D59d57d200B50Eaeb7F","4":"0xA1A62B5F2fE75691853A4fDf935fBe1218648627","5":"0x99aCCfe475D59DeA6C6F45595Ee553Eee5e62c1A","25":"0xa79B21B345846224b307212FB7278b2e74Ea3295","56":"0x35F6B1d81aED96Ae0019bdec354a80E99219bEc5","65":"0x01d50c1438f38A9DD5906a92bdEC7efB60A7c584","66":"0x0c73275707240354C7fF30a5d5485F76B73a24f4","97":"0x5bdECF506Cc673a60dD8c820fa1fd3806e459864","137":"0x6114D14349602a7B683283FC6F074132232352A3","250":"0xfdc3a9eB43e0fa62cA206D9F51A1cDdf9dD5f1e8","280":"0xc6Baaaf451a615F224792e421d36459F826aB557","4002":"0xfdc3a9eB43e0fa62cA206D9F51A1cDdf9dD5f1e8","9000":"0x01d50c1438f38A9DD5906a92bdEC7efB60A7c584","42161":"0xc65C4e0C5f81E7016F75f38387b5D13e8775f729","43113":"0xC97b52877Aa14987198eA8cABaa678B566baadF1","43114":"0x5082a0AAffd7A82B16A15b6Ef42774A94527E69B","421611":"0xe9832698308707D18dE429Aaf6260355196CEFB7","arbitrumOne":"0xc65C4e0C5f81E7016F75f38387b5D13e8775f729","arbitrumTestnet":"0xe9832698308707D18dE429Aaf6260355196CEFB7","avalanche":"0x5082a0AAffd7A82B16A15b6Ef42774A94527E69B","avalancheFujiTestnet":"0xC97b52877Aa14987198eA8cABaa678B566baadF1","bsc":"0x35F6B1d81aED96Ae0019bdec354a80E99219bEc5","bscTestnet":"0x5bdECF506Cc673a60dD8c820fa1fd3806e459864","cronos":"0xa79B21B345846224b307212FB7278b2e74Ea3295","evmosTestnet":"0x01d50c1438f38A9DD5906a92bdEC7efB60A7c584","ftmTestnet":"0xfdc3a9eB43e0fa62cA206D9F51A1cDdf9dD5f1e8","goerli":"0x99aCCfe475D59DeA6C6F45595Ee553Eee5e62c1A","mainnet":"0x8fa6C988b115B46Ed2910C53992864754316305f","okcMainnet":"0x0c73275707240354C7fF30a5d5485F76B73a24f4","okcTestnet":"0x01d50c1438f38A9DD5906a92bdEC7efB60A7c584","opera":"0xfdc3a9eB43e0fa62cA206D9F51A1cDdf9dD5f1e8","polygon":"0x6114D14349602a7B683283FC6F074132232352A3","rinkeby":"0xA1A62B5F2fE75691853A4fDf935fBe1218648627","ropsten":"0x21e829BaFF29509e87E94D59d57d200B50Eaeb7F","zksyncTestnet":"0xc6Baaaf451a615F224792e421d36459F826aB557"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20LockableToken","sourceName":"contracts/tokens/presets/ERC20LockableToken.sol","abi":[{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"internalType":"struct ERC20LockableToken.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TRANSFER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"canTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"internalType":"struct ERC20LockableToken.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162002225380380620022258339810160408190526200003491620004ef565b8051602082015160066200004983826200062f565b5060076200005882826200062f565b50506008805460ff191690555062000071813362000078565b5062000746565b600054610100900460ff1615808015620000995750600054600160ff909116105b80620000c95750620000b6306200023960201b620009091760201c565b158015620000c9575060005460ff166001145b620001325760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000156576000805461ff0019166101001790555b82516009906200016790826200062f565b506020830151600a906200017c90826200062f565b506200018a60008362000248565b620001b67f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8362000248565b620001e27f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68362000248565b620001ed82620002ed565b801562000234576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6001600160a01b03163b151590565b60008281526002602090815260408083206001600160a01b038516845290915290205460ff16620002e95760008281526002602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620002a83390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600054610100900460ff16620003175760405162461bcd60e51b81526004016200012990620006fb565b620003228162000325565b50565b600054610100900460ff166200034f5760405162461bcd60e51b81526004016200012990620006fb565b62000361630a615bcd60e11b6200038d565b620003227f8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c8262000248565b6001600160e01b03198082169003620003e95760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640162000129565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562000452576200045262000411565b604052919050565b600082601f8301126200046c57600080fd5b81516001600160401b0381111562000488576200048862000411565b60206200049e601f8301601f1916820162000427565b8281528582848701011115620004b357600080fd5b60005b83811015620004d3578581018301518282018401528201620004b6565b83811115620004e55760008385840101525b5095945050505050565b6000602082840312156200050257600080fd5b81516001600160401b03808211156200051a57600080fd5b90830190604082860312156200052f57600080fd5b6040516040810181811083821117156200054d576200054d62000411565b6040528251828111156200056057600080fd5b6200056e878286016200045a565b8252506020830151828111156200058457600080fd5b62000592878286016200045a565b60208301525095945050505050565b600181811c90821680620005b657607f821691505b602082108103620005d757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200023457600081815260208120601f850160051c81016020861015620006065750805b601f850160051c820191505b81811015620006275782815560010162000612565b505050505050565b81516001600160401b038111156200064b576200064b62000411565b62000663816200065c8454620005a1565b84620005dd565b602080601f8311600181146200069b5760008415620006825750858301515b600019600386901b1c1916600185901b17855562000627565b600085815260208120601f198616915b82811015620006cc57888601518255948401946001909101908401620006ab565b5085821015620006eb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b611acf80620007566000396000f3fe608060405234801561001057600080fd5b50600436106101755760003560e01c806301ffc9a71461017a57806306fdde03146101a2578063095ea7b3146101b757806318160ddd146101ca578063206b60f9146101dc57806323b872dd146101f1578063248a9ca3146102045780632f2ff15d14610217578063313ce5671461022c57806336568abe1461023b578063395093511461024e5780633f4ba83a1461026157806340c10f191461026957806342966c681461027c5780635539160f1461028f5780635c975abb146102a257806370a08231146102ad57806378fc3cb3146102d657806379cc6790146102e95780638456cb59146102fc57806391d148541461030457806395d89b411461031757806398a2a3231461031f578063a217fddf14610327578063a457c2d71461032f578063a9059cbb14610342578063d539139314610355578063d547741f1461036a578063dd62ed3e1461037d578063e63ab1e914610390578063f49c280a146103a5575b600080fd5b61018d61018836600461147d565b6103ad565b60405190151581526020015b60405180910390f35b6101aa6103be565b60405161019991906114d3565b61018d6101c5366004611522565b610450565b6005545b604051908152602001610199565b6101ce600080516020611a1a83398151915281565b61018d6101ff36600461154c565b610468565b6101ce610212366004611588565b61048c565b61022a6102253660046115a1565b6104a1565b005b60405160128152602001610199565b61022a6102493660046115a1565b6104c2565b61018d61025c366004611522565b610545565b61022a610567565b61022a610277366004611522565b61058a565b61022a61028a366004611588565b6105ac565b61022a61029d36600461166f565b6105b6565b60085460ff1661018d565b6101ce6102bb36600461171f565b6001600160a01b031660009081526003602052604090205490565b61018d6102e436600461171f565b61072e565b61022a6102f7366004611522565b610748565b61022a61075d565b61018d6103123660046115a1565b61077d565b6101aa6107a8565b61022a6107b7565b6101ce600081565b61018d61033d366004611522565b6107f9565b61018d610350366004611522565b610874565b6101ce600080516020611a5a83398151915281565b61022a6103783660046115a1565b610882565b6101ce61038b36600461173a565b61089e565b6101ce600080516020611a3a83398151915281565b61022a6108c9565b60006103b882610918565b92915050565b6060600980546103cd90611764565b80601f01602080910402602001604051908101604052809291908181526020018280546103f990611764565b80156104465780601f1061041b57610100808354040283529160200191610446565b820191906000526020600020905b81548152906001019060200180831161042957829003601f168201915b5050505050905090565b60003361045e818585610954565b5060019392505050565b600033610476858285610a78565b610481858585610af2565b506001949350505050565b60009081526002602052604090206001015490565b6104aa8261048c565b6104b381610cb9565b6104bd8383610cc3565b505050565b6001600160a01b03811633146105375760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105418282610d49565b5050565b60003361045e818585610558838361089e565b61056291906117b4565b610954565b600080516020611a3a83398151915261057f81610cb9565b610587610db0565b50565b600080516020611a5a8339815191526105a281610cb9565b6104bd8383610e02565b6105873382610edb565b600054610100900460ff16158080156105d65750600054600160ff909116105b806105f757506105e530610909565b1580156105f7575060005460ff166001145b61065a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161052e565b6000805460ff19166001179055801561067d576000805461ff0019166101001790555b825160099061068c908261181a565b506020830151600a9061069f908261181a565b506106ab600083610cc3565b6106c3600080516020611a3a83398151915283610cc3565b6106db600080516020611a5a83398151915283610cc3565b6106e482611023565b80156104bd576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60006103b8600080516020611a1a8339815191528361077d565b610753823383610a78565b6105418282610edb565b600080516020611a3a83398151915261077581610cb9565b610587611053565b60009182526002602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600a80546103cd90611764565b6107c260003361077d565b6107de5760405162461bcd60e51b815260040161052e906118d9565b6107f7600080516020611a1a8339815191526000610d49565b565b60003381610807828661089e565b9050838110156108675760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161052e565b6104818286868403610954565b60003361045e818585610af2565b61088b8261048c565b61089481610cb9565b6104bd8383610d49565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6108d460003361077d565b6108f05760405162461bcd60e51b815260040161052e906118d9565b6107f7600080516020611a1a8339815191526000610cc3565b6001600160a01b03163b151590565b60006301ffc9a760e01b6001600160e01b0319831614806103b85750506001600160e01b03191660009081526001602052604090205460ff1690565b6001600160a01b0383166109b65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161052e565b6001600160a01b038216610a175760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161052e565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610a84848461089e565b90506000198114610aec5781811015610adf5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161052e565b610aec8484848403610954565b50505050565b6001600160a01b038316610b565760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161052e565b6001600160a01b038216610bb85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161052e565b610bc3838383611090565b6001600160a01b03831660009081526003602052604090205481811015610c3b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161052e565b6001600160a01b03808516600090815260036020526040808220858503905591851681529081208054849290610c729084906117b4565b92505081905550826001600160a01b0316846001600160a01b0316600080516020611a7a83398151915284604051610cac91815260200190565b60405180910390a3610aec565b61058781336110a3565b610ccd828261077d565b6105415760008281526002602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610d053390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610d53828261077d565b156105415760008281526002602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b610db8611107565b6008805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610e585760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161052e565b610e6460008383611090565b8060056000828254610e7691906117b4565b90915550506001600160a01b03821660009081526003602052604081208054839290610ea39084906117b4565b90915550506040518181526001600160a01b03831690600090600080516020611a7a8339815191529060200160405180910390a35050565b6001600160a01b038216610f3b5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161052e565b610f4782600083611090565b6001600160a01b03821660009081526003602052604090205481811015610fbb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161052e565b6001600160a01b0383166000908152600360205260408120838303905560058054849290610fea9084906118fc565b90915550506040518281526000906001600160a01b03851690600080516020611a7a8339815191529060200160405180910390a3505050565b600054610100900460ff1661104a5760405162461bcd60e51b815260040161052e90611913565b61058781611150565b61105b61119f565b6008805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610de53390565b61109861119f565b6104bd8383836111e5565b6110ad828261077d565b610541576110c5816001600160a01b0316601461125a565b6110d083602061125a565b6040516020016110e192919061195e565b60408051601f198184030181529082905262461bcd60e51b825261052e916004016114d3565b60085460ff166107f75760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161052e565b600054610100900460ff166111775760405162461bcd60e51b815260040161052e90611913565b611187630a615bcd60e11b6113fc565b610587600080516020611a1a83398151915282610cc3565b60085460ff16156107f75760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161052e565b6111fe600080516020611a1a833981519152600061077d565b8061121c575061121c600080516020611a1a8339815191523361077d565b6104bd5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d313d0d2d151608a1b604482015260640161052e565b606060006112698360026119cd565b6112749060026117b4565b6001600160401b0381111561128b5761128b6115cd565b6040519080825280601f01601f1916602001820160405280156112b5576020820181803683370190505b509050600360fc1b816000815181106112d0576112d06119ec565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106112ff576112ff6119ec565b60200101906001600160f81b031916908160001a90535060006113238460026119cd565b61132e9060016117b4565b90505b60018111156113a6576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611362576113626119ec565b1a60f81b828281518110611378576113786119ec565b60200101906001600160f81b031916908160001a90535060049490941c9361139f81611a02565b9050611331565b5083156113f55760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161052e565b9392505050565b6001600160e01b031980821690036114555760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b604482015260640161052e565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60006020828403121561148f57600080fd5b81356001600160e01b0319811681146113f557600080fd5b60005b838110156114c25781810151838201526020016114aa565b83811115610aec5750506000910152565b60208152600082518060208401526114f28160408501602087016114a7565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461151d57600080fd5b919050565b6000806040838503121561153557600080fd5b61153e83611506565b946020939093013593505050565b60008060006060848603121561156157600080fd5b61156a84611506565b925061157860208501611506565b9150604084013590509250925092565b60006020828403121561159a57600080fd5b5035919050565b600080604083850312156115b457600080fd5b823591506115c460208401611506565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126115f457600080fd5b81356001600160401b038082111561160e5761160e6115cd565b604051601f8301601f19908116603f01168101908282118183101715611636576116366115cd565b8160405283815286602085880101111561164f57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561168257600080fd5b82356001600160401b038082111561169957600080fd5b90840190604082870312156116ad57600080fd5b6040516040810181811083821117156116c8576116c86115cd565b6040528235828111156116da57600080fd5b6116e6888286016115e3565b8252506020830135828111156116fb57600080fd5b611707888286016115e3565b6020830152508094505050506115c460208401611506565b60006020828403121561173157600080fd5b6113f582611506565b6000806040838503121561174d57600080fd5b61175683611506565b91506115c460208401611506565b600181811c9082168061177857607f821691505b60208210810361179857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156117c7576117c761179e565b500190565b601f8211156104bd57600081815260208120601f850160051c810160208610156117f35750805b601f850160051c820191505b81811015611812578281556001016117ff565b505050505050565b81516001600160401b03811115611833576118336115cd565b611847816118418454611764565b846117cc565b602080601f83116001811461187c57600084156118645750858301515b600019600386901b1c1916600185901b178555611812565b600085815260208120601f198616915b828110156118ab5788860151825594840194600190910190840161188c565b50858210156118c95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252600990820152682727aa2fa0a226a4a760b91b604082015260600190565b60008282101561190e5761190e61179e565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516119908160178501602088016114a7565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516119c18160288401602088016114a7565b01602801949350505050565b60008160001904831182151516156119e7576119e761179e565b500290565b634e487b7160e01b600052603260045260246000fd5b600081611a1157611a1161179e565b50600019019056fe8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220568bf96c8db66f426e71126d207bb08c5c3cf552d676ac91212141a3cccc9ed064736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101755760003560e01c806301ffc9a71461017a57806306fdde03146101a2578063095ea7b3146101b757806318160ddd146101ca578063206b60f9146101dc57806323b872dd146101f1578063248a9ca3146102045780632f2ff15d14610217578063313ce5671461022c57806336568abe1461023b578063395093511461024e5780633f4ba83a1461026157806340c10f191461026957806342966c681461027c5780635539160f1461028f5780635c975abb146102a257806370a08231146102ad57806378fc3cb3146102d657806379cc6790146102e95780638456cb59146102fc57806391d148541461030457806395d89b411461031757806398a2a3231461031f578063a217fddf14610327578063a457c2d71461032f578063a9059cbb14610342578063d539139314610355578063d547741f1461036a578063dd62ed3e1461037d578063e63ab1e914610390578063f49c280a146103a5575b600080fd5b61018d61018836600461147d565b6103ad565b60405190151581526020015b60405180910390f35b6101aa6103be565b60405161019991906114d3565b61018d6101c5366004611522565b610450565b6005545b604051908152602001610199565b6101ce600080516020611a1a83398151915281565b61018d6101ff36600461154c565b610468565b6101ce610212366004611588565b61048c565b61022a6102253660046115a1565b6104a1565b005b60405160128152602001610199565b61022a6102493660046115a1565b6104c2565b61018d61025c366004611522565b610545565b61022a610567565b61022a610277366004611522565b61058a565b61022a61028a366004611588565b6105ac565b61022a61029d36600461166f565b6105b6565b60085460ff1661018d565b6101ce6102bb36600461171f565b6001600160a01b031660009081526003602052604090205490565b61018d6102e436600461171f565b61072e565b61022a6102f7366004611522565b610748565b61022a61075d565b61018d6103123660046115a1565b61077d565b6101aa6107a8565b61022a6107b7565b6101ce600081565b61018d61033d366004611522565b6107f9565b61018d610350366004611522565b610874565b6101ce600080516020611a5a83398151915281565b61022a6103783660046115a1565b610882565b6101ce61038b36600461173a565b61089e565b6101ce600080516020611a3a83398151915281565b61022a6108c9565b60006103b882610918565b92915050565b6060600980546103cd90611764565b80601f01602080910402602001604051908101604052809291908181526020018280546103f990611764565b80156104465780601f1061041b57610100808354040283529160200191610446565b820191906000526020600020905b81548152906001019060200180831161042957829003601f168201915b5050505050905090565b60003361045e818585610954565b5060019392505050565b600033610476858285610a78565b610481858585610af2565b506001949350505050565b60009081526002602052604090206001015490565b6104aa8261048c565b6104b381610cb9565b6104bd8383610cc3565b505050565b6001600160a01b03811633146105375760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105418282610d49565b5050565b60003361045e818585610558838361089e565b61056291906117b4565b610954565b600080516020611a3a83398151915261057f81610cb9565b610587610db0565b50565b600080516020611a5a8339815191526105a281610cb9565b6104bd8383610e02565b6105873382610edb565b600054610100900460ff16158080156105d65750600054600160ff909116105b806105f757506105e530610909565b1580156105f7575060005460ff166001145b61065a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161052e565b6000805460ff19166001179055801561067d576000805461ff0019166101001790555b825160099061068c908261181a565b506020830151600a9061069f908261181a565b506106ab600083610cc3565b6106c3600080516020611a3a83398151915283610cc3565b6106db600080516020611a5a83398151915283610cc3565b6106e482611023565b80156104bd576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60006103b8600080516020611a1a8339815191528361077d565b610753823383610a78565b6105418282610edb565b600080516020611a3a83398151915261077581610cb9565b610587611053565b60009182526002602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600a80546103cd90611764565b6107c260003361077d565b6107de5760405162461bcd60e51b815260040161052e906118d9565b6107f7600080516020611a1a8339815191526000610d49565b565b60003381610807828661089e565b9050838110156108675760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161052e565b6104818286868403610954565b60003361045e818585610af2565b61088b8261048c565b61089481610cb9565b6104bd8383610d49565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6108d460003361077d565b6108f05760405162461bcd60e51b815260040161052e906118d9565b6107f7600080516020611a1a8339815191526000610cc3565b6001600160a01b03163b151590565b60006301ffc9a760e01b6001600160e01b0319831614806103b85750506001600160e01b03191660009081526001602052604090205460ff1690565b6001600160a01b0383166109b65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161052e565b6001600160a01b038216610a175760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161052e565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610a84848461089e565b90506000198114610aec5781811015610adf5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161052e565b610aec8484848403610954565b50505050565b6001600160a01b038316610b565760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161052e565b6001600160a01b038216610bb85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161052e565b610bc3838383611090565b6001600160a01b03831660009081526003602052604090205481811015610c3b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161052e565b6001600160a01b03808516600090815260036020526040808220858503905591851681529081208054849290610c729084906117b4565b92505081905550826001600160a01b0316846001600160a01b0316600080516020611a7a83398151915284604051610cac91815260200190565b60405180910390a3610aec565b61058781336110a3565b610ccd828261077d565b6105415760008281526002602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610d053390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610d53828261077d565b156105415760008281526002602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b610db8611107565b6008805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610e585760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161052e565b610e6460008383611090565b8060056000828254610e7691906117b4565b90915550506001600160a01b03821660009081526003602052604081208054839290610ea39084906117b4565b90915550506040518181526001600160a01b03831690600090600080516020611a7a8339815191529060200160405180910390a35050565b6001600160a01b038216610f3b5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161052e565b610f4782600083611090565b6001600160a01b03821660009081526003602052604090205481811015610fbb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161052e565b6001600160a01b0383166000908152600360205260408120838303905560058054849290610fea9084906118fc565b90915550506040518281526000906001600160a01b03851690600080516020611a7a8339815191529060200160405180910390a3505050565b600054610100900460ff1661104a5760405162461bcd60e51b815260040161052e90611913565b61058781611150565b61105b61119f565b6008805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610de53390565b61109861119f565b6104bd8383836111e5565b6110ad828261077d565b610541576110c5816001600160a01b0316601461125a565b6110d083602061125a565b6040516020016110e192919061195e565b60408051601f198184030181529082905262461bcd60e51b825261052e916004016114d3565b60085460ff166107f75760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161052e565b600054610100900460ff166111775760405162461bcd60e51b815260040161052e90611913565b611187630a615bcd60e11b6113fc565b610587600080516020611a1a83398151915282610cc3565b60085460ff16156107f75760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161052e565b6111fe600080516020611a1a833981519152600061077d565b8061121c575061121c600080516020611a1a8339815191523361077d565b6104bd5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d313d0d2d151608a1b604482015260640161052e565b606060006112698360026119cd565b6112749060026117b4565b6001600160401b0381111561128b5761128b6115cd565b6040519080825280601f01601f1916602001820160405280156112b5576020820181803683370190505b509050600360fc1b816000815181106112d0576112d06119ec565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106112ff576112ff6119ec565b60200101906001600160f81b031916908160001a90535060006113238460026119cd565b61132e9060016117b4565b90505b60018111156113a6576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611362576113626119ec565b1a60f81b828281518110611378576113786119ec565b60200101906001600160f81b031916908160001a90535060049490941c9361139f81611a02565b9050611331565b5083156113f55760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161052e565b9392505050565b6001600160e01b031980821690036114555760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b604482015260640161052e565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60006020828403121561148f57600080fd5b81356001600160e01b0319811681146113f557600080fd5b60005b838110156114c25781810151838201526020016114aa565b83811115610aec5750506000910152565b60208152600082518060208401526114f28160408501602087016114a7565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461151d57600080fd5b919050565b6000806040838503121561153557600080fd5b61153e83611506565b946020939093013593505050565b60008060006060848603121561156157600080fd5b61156a84611506565b925061157860208501611506565b9150604084013590509250925092565b60006020828403121561159a57600080fd5b5035919050565b600080604083850312156115b457600080fd5b823591506115c460208401611506565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126115f457600080fd5b81356001600160401b038082111561160e5761160e6115cd565b604051601f8301601f19908116603f01168101908282118183101715611636576116366115cd565b8160405283815286602085880101111561164f57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561168257600080fd5b82356001600160401b038082111561169957600080fd5b90840190604082870312156116ad57600080fd5b6040516040810181811083821117156116c8576116c86115cd565b6040528235828111156116da57600080fd5b6116e6888286016115e3565b8252506020830135828111156116fb57600080fd5b611707888286016115e3565b6020830152508094505050506115c460208401611506565b60006020828403121561173157600080fd5b6113f582611506565b6000806040838503121561174d57600080fd5b61175683611506565b91506115c460208401611506565b600181811c9082168061177857607f821691505b60208210810361179857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156117c7576117c761179e565b500190565b601f8211156104bd57600081815260208120601f850160051c810160208610156117f35750805b601f850160051c820191505b81811015611812578281556001016117ff565b505050505050565b81516001600160401b03811115611833576118336115cd565b611847816118418454611764565b846117cc565b602080601f83116001811461187c57600084156118645750858301515b600019600386901b1c1916600185901b178555611812565b600085815260208120601f198616915b828110156118ab5788860151825594840194600190910190840161188c565b50858210156118c95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252600990820152682727aa2fa0a226a4a760b91b604082015260600190565b60008282101561190e5761190e61179e565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516119908160178501602088016114a7565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516119c18160288401602088016114a7565b01602801949350505050565b60008160001904831182151516156119e7576119e761179e565b500290565b634e487b7160e01b600052603260045260246000fd5b600081611a1157611a1161179e565b50600019019056fe8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220568bf96c8db66f426e71126d207bb08c5c3cf552d676ac91212141a3cccc9ed064736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}}},"v2":{"access/ownable/IERC173":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC173","sourceName":"src/access/ownable/IERC173.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"access/ownable/IERC173Events":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC173Events","sourceName":"src/access/ownable/IERC173Events.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"access/ownable/Ownable":{"address":{"3":"0x0459EE30E19776c6283Ce0A97DEC799c914BEB96","4":"0x2620537bcb9d8c3442547D8D8D1d19f62B187079","rinkeby":"0x2620537bcb9d8c3442547D8D8D1d19f62B187079","ropsten":"0x0459EE30E19776c6283Ce0A97DEC799c914BEB96"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"Ownable","sourceName":"src/access/ownable/Ownable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506102bf806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063715018a6146100465780638da5cb5b14610050578063f2fde38b14610074575b600080fd5b61004e610087565b005b610058610111565b6040516001600160a01b03909116815260200160405180910390f35b61004e610082366004610259565b610149565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146101055760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064015b60405180910390fd5b61010f60006101ce565b565b60006101447fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031690565b905090565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146101c25760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016100fc565b6101cb816101ce565b50565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556040516001600160a01b0382169033907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a350565b60006020828403121561026b57600080fd5b81356001600160a01b038116811461028257600080fd5b939250505056fea2646970667358221220054c9f312d50129e913357c91589315c6f5bfd771c661672099a4112c1118e1164736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063715018a6146100465780638da5cb5b14610050578063f2fde38b14610074575b600080fd5b61004e610087565b005b610058610111565b6040516001600160a01b03909116815260200160405180910390f35b61004e610082366004610259565b610149565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146101055760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064015b60405180910390fd5b61010f60006101ce565b565b60006101447fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031690565b905090565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146101c25760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016100fc565b6101cb816101ce565b50565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556040516001600160a01b0382169033907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a350565b60006020828403121561026b57600080fd5b81356001600160a01b038116811461028257600080fd5b939250505056fea2646970667358221220054c9f312d50129e913357c91589315c6f5bfd771c661672099a4112c1118e1164736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"access/ownable/OwnableERC2771":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"OwnableERC2771","sourceName":"src/access/ownable/OwnableERC2771.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"access/ownable/OwnableInternal":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"OwnableInternal","sourceName":"src/access/ownable/OwnableInternal.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"access/ownable/OwnableStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"OwnableStorage","sourceName":"src/access/ownable/OwnableStorage.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200a9644eb62028c77b2cecb78414818b2b720f9c7d37aaca8c8a4e16035de865864736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200a9644eb62028c77b2cecb78414818b2b720f9c7d37aaca8c8a4e16035de865864736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"access/roles/AccessControl":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"AccessControl","sourceName":"src/access/roles/AccessControl.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"access/roles/AccessControlEnumerable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"AccessControlEnumerable","sourceName":"src/access/roles/AccessControlEnumerable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"access/roles/AccessControlEnumerableERC2771":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"AccessControlEnumerableERC2771","sourceName":"src/access/roles/AccessControlEnumerableERC2771.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"access/roles/AccessControlEnumerableStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"AccessControlEnumerableStorage","sourceName":"src/access/roles/AccessControlEnumerableStorage.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e34e354ff029dbbc0bc67bc12c680035aa3fa319b994a961eaab7603ce40490c64736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e34e354ff029dbbc0bc67bc12c680035aa3fa319b994a961eaab7603ce40490c64736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"access/roles/AccessControlERC2771":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"AccessControlERC2771","sourceName":"src/access/roles/AccessControlERC2771.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"access/roles/AccessControlInternal":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"AccessControlInternal","sourceName":"src/access/roles/AccessControlInternal.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"access/roles/AccessControlStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"AccessControlStorage","sourceName":"src/access/roles/AccessControlStorage.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207ccf122b1e38e22d696aa42a229e9713191bbc1c43e560630917346043b0aeb964736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207ccf122b1e38e22d696aa42a229e9713191bbc1c43e560630917346043b0aeb964736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"access/roles/IAccessControl":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IAccessControl","sourceName":"src/access/roles/IAccessControl.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"access/roles/IAccessControlEnumerable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IAccessControlEnumerable","sourceName":"src/access/roles/IAccessControlEnumerable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"access/roles/IAccessControlEvents":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IAccessControlEvents","sourceName":"src/access/roles/IAccessControlEvents.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"common/IWithdrawExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IWithdrawExtension","sourceName":"src/common/WithdrawExtension.sol","abi":[{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"common/UnorderedForwarder":{"address":{"3":"0x294Fe22BcF44ff08A730C7791Ae0e9F473c13876","ropsten":"0x294Fe22BcF44ff08A730C7791Ae0e9F473c13876"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"UnorderedForwarder","sourceName":"src/common/UnorderedForwarder.sol","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"minGasPrice","type":"uint256"},{"internalType":"uint256","name":"maxGasPrice","type":"uint256"},{"internalType":"uint256","name":"expiresAt","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct UnorderedForwarder.MetaTransaction[]","name":"mtxs","type":"tuple[]"},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"name":"batchExecute","outputs":[{"internalType":"bytes[]","name":"returnResults","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"minGasPrice","type":"uint256"},{"internalType":"uint256","name":"maxGasPrice","type":"uint256"},{"internalType":"uint256","name":"expiresAt","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct UnorderedForwarder.MetaTransaction","name":"mtx","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"execute","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"minGasPrice","type":"uint256"},{"internalType":"uint256","name":"maxGasPrice","type":"uint256"},{"internalType":"uint256","name":"expiresAt","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct UnorderedForwarder.MetaTransaction","name":"mtx","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"verify","outputs":[{"internalType":"bytes32","name":"mtxHash","type":"bytes32"}],"stateMutability":"view","type":"function"}],"bytecode":"0x61014060405234801561001157600080fd5b5060408051808201825260128152712ab737b93232b932b22337b93bb0b93232b960711b602080830191825283518085019094526005845264302e302e3160d81b908401528151902060e08190527fae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc1991638118856101008190524660a0529192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6100fd8184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c0526101205250506001600055506101179050565b60805160a05160c05160e05161010051610120516110b2610166600039600061095f015260006109ae01526000610989015260006108e20152600061090c0152600061093601526110b26000f3fe6080604052600436106100345760003560e01c8063b0565b2714610039578063b122ea941461006c578063cd74662f1461008c575b600080fd5b34801561004557600080fd5b50610059610054366004610ce7565b6100ac565b6040519081526020015b60405180910390f35b61007f61007a366004610dcc565b610300565b6040516100639190610e94565b61009f61009a366004610ce7565b610536565b6040516100639190610ef6565b60006101957f2bbaa6c701d9ecd9e324adef5727bb11883e2c24df1dd4c8f19e4e038b3734666100df6020870187610f09565b6100ef6040880160208901610f09565b6040880135606089013560808a013560a08b013560c08c013561011560e08e018e610f32565b604051610123929190610f79565b60408051918290038220602083019a909a526001600160a01b0398891690820152969095166060870152608086019390935260a085019190915260c084015260e08301526101008201526101208101919091526101400160405160208183030381529060405280519060200120610650565b9050428460a00135116101ef5760405162461bcd60e51b815260206004820152600b60248201527f4657445f4558504952454400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6101fc6020850185610f09565b6001600160a01b031661024784848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086939250506106bf9050565b6001600160a01b03161461029d5760405162461bcd60e51b815260206004820152601560248201527f4657445f494e56414c49445f5349474e4154555245000000000000000000000060448201526064016101e6565b600081815260016020526040902054156102f95760405162461bcd60e51b815260206004820152600c60248201527f4657445f5245504c41594544000000000000000000000000000000000000000060448201526064016101e6565b9392505050565b60606002600054036103545760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101e6565b600260009081556103653447610f9f565b90508483146103b65760405162461bcd60e51b815260206004820152601760248201527f4657445f4d49534d415443485f5349474e41545552455300000000000000000060448201526064016101e6565b8467ffffffffffffffff8111156103cf576103cf610fb6565b60405190808252806020026020018201604052801561040257816020015b60608152602001906001900390816103ed5790505b50915060005b8581101561048e5761046087878381811061042557610425610fcc565b90506020028101906104379190610fe2565b86868481811061044957610449610fcc565b905060200281019061045b9190610f32565b6106e3565b83828151811061047257610472610fcc565b60200260200101819052508061048790611002565b9050610408565b50600047341161049e57346104a0565b475b905080156104d757604051339082156108fc029083906000818181858888f193505050501580156104d5573d6000803e3d6000fd5b505b50478111156105285760405162461bcd60e51b815260206004820152600c60248201527f4657445f4554485f4c45414b000000000000000000000000000000000000000060448201526064016101e6565b506001600055949350505050565b606060026000540361058a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101e6565b6002600090815561059b3447610f9f565b90506105a88585856106e3565b915060004734116105b957346105bb565b475b905080156105f257604051339082156108fc029083906000818181858888f193505050501580156105f0573d6000803e3d6000fd5b505b50478111156106435760405162461bcd60e51b815260206004820152600c60248201527f4657445f4554485f4c45414b000000000000000000000000000000000000000060448201526064016101e6565b5060016000559392505050565b60006106b961065d6108d5565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b92915050565b60008060006106ce85856109fc565b915091506106db81610a41565b509392505050565b60603a8460600135111580156106fd575083608001353a11155b6107495760405162461bcd60e51b815260206004820152600f60248201527f4657445f494e56414c49445f474153000000000000000000000000000000000060448201526064016101e6565b478460400135111561079d5760405162461bcd60e51b815260206004820152601160248201527f4657445f494e56414c49445f56414c554500000000000000000000000000000060448201526064016101e6565b60006107aa8585856100ac565b6000818152600160209081526040808320439055929350909182916107d3918901908901610f09565b6001600160a01b031660408801356107ee60e08a018a610f32565b6107fb60208c018c610f09565b60405160200161080d9392919061101b565b60408051601f198184030181529082905261082791611054565b60006040518083038185875af1925050503d8060008114610864576040519150601f19603f3d011682016040523d82523d6000602084013e610869565b606091505b5091509150816108cb578051156108835780518082602001fd5b60405162461bcd60e51b815260206004820152600f60248201527f4657445f43414c4c5f4641494c4544000000000000000000000000000000000060448201526064016101e6565b9695505050505050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561092e57507f000000000000000000000000000000000000000000000000000000000000000046145b1561095857507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b6000808251604103610a325760208301516040840151606085015160001a610a2687828585610bfa565b94509450505050610a3a565b506000905060025b9250929050565b6000816004811115610a5557610a55611066565b03610a5d5750565b6001816004811115610a7157610a71611066565b03610abe5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016101e6565b6002816004811115610ad257610ad2611066565b03610b1f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016101e6565b6003816004811115610b3357610b33611066565b03610b8b5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016101e6565b6004816004811115610b9f57610b9f611066565b03610bf75760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016101e6565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610c315750600090506003610cde565b8460ff16601b14158015610c4957508460ff16601c14155b15610c5a5750600090506004610cde565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610cae573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610cd757600060019250925050610cde565b9150600090505b94509492505050565b600080600060408486031215610cfc57600080fd5b833567ffffffffffffffff80821115610d1457600080fd5b908501906101008288031215610d2957600080fd5b90935060208501359080821115610d3f57600080fd5b818601915086601f830112610d5357600080fd5b813581811115610d6257600080fd5b876020828501011115610d7457600080fd5b6020830194508093505050509250925092565b60008083601f840112610d9957600080fd5b50813567ffffffffffffffff811115610db157600080fd5b6020830191508360208260051b8501011115610a3a57600080fd5b60008060008060408587031215610de257600080fd5b843567ffffffffffffffff80821115610dfa57600080fd5b610e0688838901610d87565b90965094506020870135915080821115610e1f57600080fd5b50610e2c87828801610d87565b95989497509550505050565b60005b83811015610e53578181015183820152602001610e3b565b83811115610e62576000848401525b50505050565b60008151808452610e80816020860160208601610e38565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610ee957603f19888603018452610ed7858351610e68565b94509285019290850190600101610ebb565b5092979650505050505050565b6020815260006102f96020830184610e68565b600060208284031215610f1b57600080fd5b81356001600160a01b03811681146102f957600080fd5b6000808335601e19843603018112610f4957600080fd5b83018035915067ffffffffffffffff821115610f6457600080fd5b602001915036819003821315610a3a57600080fd5b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b600082821015610fb157610fb1610f89565b500390565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000823560fe19833603018112610ff857600080fd5b9190910192915050565b60006001820161101457611014610f89565b5060010190565b8284823760609190911b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169101908152601401919050565b60008251610ff8818460208701610e38565b634e487b7160e01b600052602160045260246000fdfea264697066735822122039e6a60b11d6f061f2da1e791d621d94acc7570e414d8635d822865fc60c525464736f6c634300080f0033","deployedBytecode":"0x6080604052600436106100345760003560e01c8063b0565b2714610039578063b122ea941461006c578063cd74662f1461008c575b600080fd5b34801561004557600080fd5b50610059610054366004610ce7565b6100ac565b6040519081526020015b60405180910390f35b61007f61007a366004610dcc565b610300565b6040516100639190610e94565b61009f61009a366004610ce7565b610536565b6040516100639190610ef6565b60006101957f2bbaa6c701d9ecd9e324adef5727bb11883e2c24df1dd4c8f19e4e038b3734666100df6020870187610f09565b6100ef6040880160208901610f09565b6040880135606089013560808a013560a08b013560c08c013561011560e08e018e610f32565b604051610123929190610f79565b60408051918290038220602083019a909a526001600160a01b0398891690820152969095166060870152608086019390935260a085019190915260c084015260e08301526101008201526101208101919091526101400160405160208183030381529060405280519060200120610650565b9050428460a00135116101ef5760405162461bcd60e51b815260206004820152600b60248201527f4657445f4558504952454400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6101fc6020850185610f09565b6001600160a01b031661024784848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086939250506106bf9050565b6001600160a01b03161461029d5760405162461bcd60e51b815260206004820152601560248201527f4657445f494e56414c49445f5349474e4154555245000000000000000000000060448201526064016101e6565b600081815260016020526040902054156102f95760405162461bcd60e51b815260206004820152600c60248201527f4657445f5245504c41594544000000000000000000000000000000000000000060448201526064016101e6565b9392505050565b60606002600054036103545760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101e6565b600260009081556103653447610f9f565b90508483146103b65760405162461bcd60e51b815260206004820152601760248201527f4657445f4d49534d415443485f5349474e41545552455300000000000000000060448201526064016101e6565b8467ffffffffffffffff8111156103cf576103cf610fb6565b60405190808252806020026020018201604052801561040257816020015b60608152602001906001900390816103ed5790505b50915060005b8581101561048e5761046087878381811061042557610425610fcc565b90506020028101906104379190610fe2565b86868481811061044957610449610fcc565b905060200281019061045b9190610f32565b6106e3565b83828151811061047257610472610fcc565b60200260200101819052508061048790611002565b9050610408565b50600047341161049e57346104a0565b475b905080156104d757604051339082156108fc029083906000818181858888f193505050501580156104d5573d6000803e3d6000fd5b505b50478111156105285760405162461bcd60e51b815260206004820152600c60248201527f4657445f4554485f4c45414b000000000000000000000000000000000000000060448201526064016101e6565b506001600055949350505050565b606060026000540361058a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101e6565b6002600090815561059b3447610f9f565b90506105a88585856106e3565b915060004734116105b957346105bb565b475b905080156105f257604051339082156108fc029083906000818181858888f193505050501580156105f0573d6000803e3d6000fd5b505b50478111156106435760405162461bcd60e51b815260206004820152600c60248201527f4657445f4554485f4c45414b000000000000000000000000000000000000000060448201526064016101e6565b5060016000559392505050565b60006106b961065d6108d5565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b92915050565b60008060006106ce85856109fc565b915091506106db81610a41565b509392505050565b60603a8460600135111580156106fd575083608001353a11155b6107495760405162461bcd60e51b815260206004820152600f60248201527f4657445f494e56414c49445f474153000000000000000000000000000000000060448201526064016101e6565b478460400135111561079d5760405162461bcd60e51b815260206004820152601160248201527f4657445f494e56414c49445f56414c554500000000000000000000000000000060448201526064016101e6565b60006107aa8585856100ac565b6000818152600160209081526040808320439055929350909182916107d3918901908901610f09565b6001600160a01b031660408801356107ee60e08a018a610f32565b6107fb60208c018c610f09565b60405160200161080d9392919061101b565b60408051601f198184030181529082905261082791611054565b60006040518083038185875af1925050503d8060008114610864576040519150601f19603f3d011682016040523d82523d6000602084013e610869565b606091505b5091509150816108cb578051156108835780518082602001fd5b60405162461bcd60e51b815260206004820152600f60248201527f4657445f43414c4c5f4641494c4544000000000000000000000000000000000060448201526064016101e6565b9695505050505050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561092e57507f000000000000000000000000000000000000000000000000000000000000000046145b1561095857507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b6000808251604103610a325760208301516040840151606085015160001a610a2687828585610bfa565b94509450505050610a3a565b506000905060025b9250929050565b6000816004811115610a5557610a55611066565b03610a5d5750565b6001816004811115610a7157610a71611066565b03610abe5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016101e6565b6002816004811115610ad257610ad2611066565b03610b1f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016101e6565b6003816004811115610b3357610b33611066565b03610b8b5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016101e6565b6004816004811115610b9f57610b9f611066565b03610bf75760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016101e6565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610c315750600090506003610cde565b8460ff16601b14158015610c4957508460ff16601c14155b15610c5a5750600090506004610cde565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610cae573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610cd757600060019250925050610cde565b9150600090505b94509492505050565b600080600060408486031215610cfc57600080fd5b833567ffffffffffffffff80821115610d1457600080fd5b908501906101008288031215610d2957600080fd5b90935060208501359080821115610d3f57600080fd5b818601915086601f830112610d5357600080fd5b813581811115610d6257600080fd5b876020828501011115610d7457600080fd5b6020830194508093505050509250925092565b60008083601f840112610d9957600080fd5b50813567ffffffffffffffff811115610db157600080fd5b6020830191508360208260051b8501011115610a3a57600080fd5b60008060008060408587031215610de257600080fd5b843567ffffffffffffffff80821115610dfa57600080fd5b610e0688838901610d87565b90965094506020870135915080821115610e1f57600080fd5b50610e2c87828801610d87565b95989497509550505050565b60005b83811015610e53578181015183820152602001610e3b565b83811115610e62576000848401525b50505050565b60008151808452610e80816020860160208601610e38565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610ee957603f19888603018452610ed7858351610e68565b94509285019290850190600101610ebb565b5092979650505050505050565b6020815260006102f96020830184610e68565b600060208284031215610f1b57600080fd5b81356001600160a01b03811681146102f957600080fd5b6000808335601e19843603018112610f4957600080fd5b83018035915067ffffffffffffffff821115610f6457600080fd5b602001915036819003821315610a3a57600080fd5b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b600082821015610fb157610fb1610f89565b500390565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000823560fe19833603018112610ff857600080fd5b9190910192915050565b60006001820161101457611014610f89565b5060010190565b8284823760609190911b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169101908152601401919050565b60008251610ff8818460208701610e38565b634e487b7160e01b600052602160045260246000fdfea264697066735822122039e6a60b11d6f061f2da1e791d621d94acc7570e414d8635d822865fc60c525464736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"common/WithdrawExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"WithdrawExtension","sourceName":"src/common/WithdrawExtension.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"diamond/Diamond":{"address":{"3":"0x293E9F67cEF4d7465b6B9E19ccDB16F68536F54d","4":"0x902e955Dd4dfe334183AB1FD36A50aa7E856FFAB","rinkeby":"0x902e955Dd4dfe334183AB1FD36A50aa7E856FFAB","ropsten":"0x293E9F67cEF4d7465b6B9E19ccDB16F68536F54d"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"Diamond","sourceName":"src/diamond/Diamond.sol","abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"components":[{"internalType":"address","name":"diamondCutFacet","type":"address"},{"internalType":"address","name":"diamondLoupeFacet","type":"address"},{"internalType":"address","name":"erc165Facet","type":"address"},{"internalType":"address","name":"erc173Facet","type":"address"}],"internalType":"struct Diamond.CoreFacets","name":"_coreFacets","type":"tuple"},{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamondCut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct IDiamondCut.FacetCut[]","name":"_facets","type":"tuple[]"},{"components":[{"internalType":"address","name":"initContract","type":"address"},{"internalType":"bytes","name":"initData","type":"bytes"}],"internalType":"struct Diamond.Initialization[]","name":"_initializations","type":"tuple[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"facet","type":"address"},{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"DiamondFacetAlreadyExists","type":"error"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162001c3438038062001c34833981016040819052620000349162000e1f565b60006200004b620004bc60201b620002111760201c565b6040805160018082528183019092529192506000919060208083019080368337019050509050631f931c1c60e01b816000815181106200008f576200008f62000f09565b6001600160e01b0319909216602092830291909101820152620000c99083906307e4c70760e21b9060019062000235620004e0821b17901c565b60408051600480825260a0820190925260009160208201608080368337019050509050637a0ed62760e01b816000815181106200010a576200010a62000f09565b6001600160e01b03199092166020928302919091019091015280516356fe50af60e11b908290600190811062000144576200014462000f09565b6001600160e01b03199092166020928302919091019091015280516314bbdacb60e21b90829060029081106200017e576200017e62000f09565b6001600160e01b03199092166020928302919091019091015280516366ffd66360e11b9082906003908110620001b857620001b862000f09565b6001600160e01b0319909216602092830291909101820152620001f29084906348e2b09360e01b9060019062000235620004e0821b17901c565b604080516001808252818301909252600091602080830190803683370190505090506301ffc9a760e01b8160008151811062000232576200023262000f09565b6001600160e01b03199092166020928302919091018201526200026c9085906301ffc9a760e01b9060019062000235620004e0821b17901c565b604080516002808252606082018352600092602083019080368337019050509050638da5cb5b60e01b81600081518110620002ab57620002ab62000f09565b6001600160e01b031990921660209283029190910190910152805163f2fde38b60e01b9082906001908110620002e557620002e562000f09565b6001600160e01b03199092166020928302919091018201526200031f9086906307f5828d60e41b9060019062000235620004e0821b17901c565b6200033a8860000151856200056e60201b620002bd1760201c565b620003558860200151846200056e60201b620002bd1760201c565b620003708860400151836200056e60201b620002bd1760201c565b6200038b8860600151826200056e60201b620002bd1760201c565b620003b989620003a56200073d60201b620004bf1760201c565b6200076160201b620004e31790919060201c565b60005b875181101562000432576200041d888281518110620003df57620003df62000f09565b60200260200101516000015189838151811062000400576200040062000f09565b6020026020010151604001516200056e60201b620002bd1760201c565b80620004298162000f35565b915050620003bc565b5060005b8651811015620004ac576200049787828151811062000459576200045962000f09565b6020026020010151600001518883815181106200047a576200047a62000f09565b6020026020010151602001516200077e60201b6200050d1760201c565b80620004a38162000f35565b91505062000436565b5050505050505050505062000fd5565b7fff923f4a67695a9cdd5da4b8580a5a20edf2183c42aa111dd7fc15dc7bed264090565b6001600160e01b03198083169003620005405760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e746572666163652069640000000060448201526064015b60405180910390fd5b6001600160e01b03199190911660009081526020929092526040909120805460ff1916911515919091179055565b6001600160a01b03821660009081527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d60205260408120547fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c916001600160601b0382169003620005e557620005e58285620009a3565b60005b83518110156200073657600084828151811062000609576200060962000f09565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b03168015620006775760405163752eb76d60e01b81526001600160a01b03821660048201526001600160e01b03198316602482015260440162000537565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b031916179055836200071b8162000f51565b945050505080806200072d9062000f35565b915050620005e8565b5050505050565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed490565b81546001600160a01b0319166001600160a01b0391909116179055565b6001600160a01b0382166200080857805115620008045760405162461bcd60e51b815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d70747900000000606482015260840162000537565b5050565b6000815111620008815760405162461bcd60e51b815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f742061646472657373283029000000606482015260840162000537565b6001600160a01b0382163014620008b757620008b78260405180606001604052806028815260200162001be86028913962000a10565b600080836001600160a01b031683604051620008d4919062000f82565b600060405180830381855af49150503d806000811462000911576040519150601f19603f3d011682016040523d82523d6000602084013e62000916565b606091505b5091509150816200099d5780511562000945578060405162461bcd60e51b815260040162000537919062000fa0565b60405162461bcd60e51b815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656044820152651d995c9d195960d21b606482015260840162000537565b50505050565b620009c88160405180606001604052806024815260200162001c106024913962000a10565b6002820180546001600160a01b0390921660008181526001948501602090815260408220860185905594840183559182529290200180546001600160a01b0319169091179055565b813b81816200099d5760405162461bcd60e51b815260040162000537919062000fa0565b80516001600160a01b038116811462000a4c57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171562000a8c5762000a8c62000a51565b60405290565b604080519081016001600160401b038111828210171562000a8c5762000a8c62000a51565b604051608081016001600160401b038111828210171562000a8c5762000a8c62000a51565b604051601f8201601f191681016001600160401b038111828210171562000b075762000b0762000a51565b604052919050565b60006001600160401b0382111562000b2b5762000b2b62000a51565b5060051b60200190565b600082601f83011262000b4757600080fd5b8151602062000b6062000b5a8362000b0f565b62000adc565b828152600592831b850182019282820191908785111562000b8057600080fd5b8387015b8581101562000ca05780516001600160401b038082111562000ba65760008081fd5b908901906060828c03601f190181131562000bc15760008081fd5b62000bcb62000a67565b62000bd889850162000a34565b81526040808501516003811062000bef5760008081fd5b828b015291840151918383111562000c075760008081fd5b82850194508d603f86011262000c1f57600093508384fd5b89850151935062000c3462000b5a8562000b0f565b84815293871b85018101938a810193508e85111562000c535760008081fd5b948101945b8486101562000c8b5785516001600160e01b03198116811462000c7b5760008081fd5b8452948a0194928a019262000c58565b90820152875250505092840192840162000b84565b5090979650505050505050565b60005b8381101562000cca57818101518382015260200162000cb0565b838111156200099d5750506000910152565b6000601f838184011262000cef57600080fd5b8251602062000d0262000b5a8362000b0f565b82815260059290921b8501810191818101908784111562000d2257600080fd5b8287015b8481101562000e135780516001600160401b038082111562000d485760008081fd5b908901906040601f19838d03810182131562000d645760008081fd5b62000d6e62000a92565b62000d7b89860162000a34565b8152828501518481111562000d905760008081fd5b8086019550508d603f86011262000da75760008081fd5b888501518481111562000dbe5762000dbe62000a51565b62000dcf8a848e8401160162000adc565b94508085528e8482880101111562000de957600092508283fd5b62000dfa818b870186890162000cad565b5080890193909352505084525091830191830162000d26565b50979650505050505050565b60008060008084860360e081121562000e3757600080fd5b62000e428662000a34565b94506080601f198201121562000e5757600080fd5b5062000e6262000ab7565b62000e706020870162000a34565b815262000e806040870162000a34565b602082015262000e936060870162000a34565b604082015262000ea66080870162000a34565b606082015260a08601519093506001600160401b038082111562000ec957600080fd5b62000ed78883890162000b35565b935060c087015191508082111562000eee57600080fd5b5062000efd8782880162000cdc565b91505092959194509250565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820162000f4a5762000f4a62000f1f565b5060010190565b60006001600160601b038281166002600160601b0319810162000f785762000f7862000f1f565b6001019392505050565b6000825162000f9681846020870162000cad565b9190910192915050565b602081526000825180602084015262000fc181604085016020870162000cad565b601f01601f19169190910160400192915050565b610c038062000fe56000396000f3fe6080604052600436106100225760003560e01c8063ac9650d8146100e657610029565b3661002957005b600080356001600160e01b03191681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602081905260409091205481906001600160a01b0316806100c25760405162461bcd60e51b815260206004820152600860248201527f4241445f46554e4300000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b3480156100f257600080fd5b50610106610101366004610928565b61011c565b60405161011391906109f5565b60405180910390f35b60608167ffffffffffffffff81111561013757610137610a57565b60405190808252806020026020018201604052801561016a57816020015b60608152602001906001900390816101555790505b50905060005b8281101561020a576101da3085858481811061018e5761018e610a6d565b90506020028101906101a09190610a83565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061073792505050565b8282815181106101ec576101ec610a6d565b6020026020010181905250808061020290610ae7565b915050610170565b5092915050565b7fff923f4a67695a9cdd5da4b8580a5a20edf2183c42aa111dd7fc15dc7bed264090565b6001600160e01b0319808316900361028f5760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e746572666163652069640000000060448201526064016100b9565b6001600160e01b03199190911660009081526020929092526040909120805460ff1916911515919091179055565b6001600160a01b03821660009081527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d60205260408120547fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c916bffffffffffffffffffffffff82169003610336576103368285610763565b60005b83518110156104b857600084828151811061035657610356610a6d565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b031680156103db576040517f752eb76d0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526001600160e01b0319831660248201526044016100b9565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c949094029390931790925593909252879052815473ffffffffffffffffffffffffffffffffffffffff1916179055836104a081610b00565b945050505080806104b090610ae7565b915050610339565b5050505050565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed490565b815473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0391909116179055565b6001600160a01b038216610594578051156105905760405162461bcd60e51b815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d7074790000000060648201526084016100b9565b5050565b600081511161060b5760405162461bcd60e51b815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f74206164647265737328302900000060648201526084016100b9565b6001600160a01b038216301461063d5761063d82604051806060016040528060288152602001610b5b602891396107da565b600080836001600160a01b0316836040516106589190610b2b565b600060405180830381855af49150503d8060008114610693576040519150601f19603f3d011682016040523d82523d6000602084013e610698565b606091505b509150915081610731578051156106c3578060405162461bcd60e51b81526004016100b99190610b47565b60405162461bcd60e51b815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e20726560448201527f766572746564000000000000000000000000000000000000000000000000000060648201526084016100b9565b50505050565b606061075c8383604051806060016040528060278152602001610ba7602791396107fb565b9392505050565b61078581604051806060016040528060248152602001610b83602491396107da565b6002820180546001600160a01b03909216600081815260019485016020908152604082208601859055948401835591825292902001805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b813b81816107315760405162461bcd60e51b81526004016100b99190610b47565b60606001600160a01b0384163b61087a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084016100b9565b600080856001600160a01b0316856040516108959190610b2b565b600060405180830381855af49150503d80600081146108d0576040519150601f19603f3d011682016040523d82523d6000602084013e6108d5565b606091505b50915091506108e58282866108ef565b9695505050505050565b606083156108fe57508161075c565b82511561090e5782518084602001fd5b8160405162461bcd60e51b81526004016100b99190610b47565b6000806020838503121561093b57600080fd5b823567ffffffffffffffff8082111561095357600080fd5b818501915085601f83011261096757600080fd5b81358181111561097657600080fd5b8660208260051b850101111561098b57600080fd5b60209290920196919550909350505050565b60005b838110156109b85781810151838201526020016109a0565b838111156107315750506000910152565b600081518084526109e181602086016020860161099d565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610a4a57603f19888603018452610a388583516109c9565b94509285019290850190600101610a1c565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112610a9a57600080fd5b83018035915067ffffffffffffffff821115610ab557600080fd5b602001915036819003821315610aca57600080fd5b9250929050565b634e487b7160e01b600052601160045260246000fd5b600060018201610af957610af9610ad1565b5060010190565b60006bffffffffffffffffffffffff808316818103610b2157610b21610ad1565b6001019392505050565b60008251610b3d81846020870161099d565b9190910192915050565b60208152600061075c60208301846109c956fe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122065cc727ac452b6bea10c4fa8d902fdfb599696fd3bc707500705a9a02337deeb64736f6c634300080f00334c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465","deployedBytecode":"0x6080604052600436106100225760003560e01c8063ac9650d8146100e657610029565b3661002957005b600080356001600160e01b03191681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602081905260409091205481906001600160a01b0316806100c25760405162461bcd60e51b815260206004820152600860248201527f4241445f46554e4300000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b3480156100f257600080fd5b50610106610101366004610928565b61011c565b60405161011391906109f5565b60405180910390f35b60608167ffffffffffffffff81111561013757610137610a57565b60405190808252806020026020018201604052801561016a57816020015b60608152602001906001900390816101555790505b50905060005b8281101561020a576101da3085858481811061018e5761018e610a6d565b90506020028101906101a09190610a83565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061073792505050565b8282815181106101ec576101ec610a6d565b6020026020010181905250808061020290610ae7565b915050610170565b5092915050565b7fff923f4a67695a9cdd5da4b8580a5a20edf2183c42aa111dd7fc15dc7bed264090565b6001600160e01b0319808316900361028f5760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e746572666163652069640000000060448201526064016100b9565b6001600160e01b03199190911660009081526020929092526040909120805460ff1916911515919091179055565b6001600160a01b03821660009081527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d60205260408120547fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c916bffffffffffffffffffffffff82169003610336576103368285610763565b60005b83518110156104b857600084828151811061035657610356610a6d565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b031680156103db576040517f752eb76d0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526001600160e01b0319831660248201526044016100b9565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c949094029390931790925593909252879052815473ffffffffffffffffffffffffffffffffffffffff1916179055836104a081610b00565b945050505080806104b090610ae7565b915050610339565b5050505050565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed490565b815473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0391909116179055565b6001600160a01b038216610594578051156105905760405162461bcd60e51b815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d7074790000000060648201526084016100b9565b5050565b600081511161060b5760405162461bcd60e51b815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f74206164647265737328302900000060648201526084016100b9565b6001600160a01b038216301461063d5761063d82604051806060016040528060288152602001610b5b602891396107da565b600080836001600160a01b0316836040516106589190610b2b565b600060405180830381855af49150503d8060008114610693576040519150601f19603f3d011682016040523d82523d6000602084013e610698565b606091505b509150915081610731578051156106c3578060405162461bcd60e51b81526004016100b99190610b47565b60405162461bcd60e51b815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e20726560448201527f766572746564000000000000000000000000000000000000000000000000000060648201526084016100b9565b50505050565b606061075c8383604051806060016040528060278152602001610ba7602791396107fb565b9392505050565b61078581604051806060016040528060248152602001610b83602491396107da565b6002820180546001600160a01b03909216600081815260019485016020908152604082208601859055948401835591825292902001805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b813b81816107315760405162461bcd60e51b81526004016100b99190610b47565b60606001600160a01b0384163b61087a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084016100b9565b600080856001600160a01b0316856040516108959190610b2b565b600060405180830381855af49150503d80600081146108d0576040519150601f19603f3d011682016040523d82523d6000602084013e6108d5565b606091505b50915091506108e58282866108ef565b9695505050505050565b606083156108fe57508161075c565b82511561090e5782518084602001fd5b8160405162461bcd60e51b81526004016100b99190610b47565b6000806020838503121561093b57600080fd5b823567ffffffffffffffff8082111561095357600080fd5b818501915085601f83011261096757600080fd5b81358181111561097657600080fd5b8660208260051b850101111561098b57600080fd5b60209290920196919550909350505050565b60005b838110156109b85781810151838201526020016109a0565b838111156107315750506000910152565b600081518084526109e181602086016020860161099d565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610a4a57603f19888603018452610a388583516109c9565b94509285019290850190600101610a1c565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112610a9a57600080fd5b83018035915067ffffffffffffffff821115610ab557600080fd5b602001915036819003821315610aca57600080fd5b9250929050565b634e487b7160e01b600052601160045260246000fd5b600060018201610af957610af9610ad1565b5060010190565b60006bffffffffffffffffffffffff808316818103610b2157610b21610ad1565b6001019392505050565b60008251610b3d81846020870161099d565b9190910192915050565b60208152600061075c60208301846109c956fe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122065cc727ac452b6bea10c4fa8d902fdfb599696fd3bc707500705a9a02337deeb64736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"diamond/DiamondCut":{"address":{"3":"0x2ccF63FE5613d729E4bc7edAb240aba09B2A703b","4":"0x34d0fd8aA560340707B364c03D1CC4F70c132Da3","rinkeby":"0x34d0fd8aA560340707B364c03D1CC4F70c132Da3","ropsten":"0x2ccF63FE5613d729E4bc7edAb240aba09B2A703b"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"DiamondCut","sourceName":"src/diamond/DiamondCut.sol","abi":[{"inputs":[{"internalType":"address","name":"facet","type":"address"},{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"DiamondFacetAlreadyExists","type":"error"},{"inputs":[{"internalType":"address","name":"facet","type":"address"},{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"DiamondFacetSameFunction","type":"error"},{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamondCut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"indexed":false,"internalType":"struct IDiamondCut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"indexed":false,"internalType":"address","name":"_init","type":"address"},{"indexed":false,"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"DiamondCut","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamondCut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct IDiamondCut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"internalType":"address","name":"_init","type":"address"},{"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"diamondCut","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b50611321806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80631f931c1c14610030575b600080fd5b61004361003e366004610dd5565b610045565b005b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146100c35760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064015b60405180910390fd5b61010d6100d08587610f1b565b8484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061011492505050565b5050505050565b60005b83518110156102f05760008482815181106101345761013461105f565b60200260200101516020015190506000600281111561015557610155611075565b81600281111561016757610167611075565b036101b5576101b08583815181106101815761018161105f565b60200260200101516000015186848151811061019f5761019f61105f565b60200260200101516040015161033b565b6102dd565b60018160028111156101c9576101c9611075565b03610212576101b08583815181106101e3576101e361105f565b6020026020010151600001518684815181106102015761020161105f565b602002602001015160400151610525565b600281600281111561022657610226611075565b0361026f576101b08583815181106102405761024061105f565b60200260200101516000015186848151811061025e5761025e61105f565b60200260200101516040015161071f565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560448201527f74416374696f6e0000000000000000000000000000000000000000000000000060648201526084016100ba565b50806102e8816110a1565b915050610117565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67383838360405161032493929190611112565b60405180910390a161033682826107b8565b505050565b6001600160a01b03821660009081527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d60205260408120547fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c916bffffffffffffffffffffffff821690036103b4576103b482856109dc565b60005b835181101561010d5760008482815181106103d4576103d461105f565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b03168015610459576040517f752eb76d0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526001600160e01b0319831660248201526044016100ba565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c949094029390931790925593909252879052815473ffffffffffffffffffffffffffffffffffffffff19161790558361050d81611211565b9450505050808061051d906110a1565b9150506103b7565b6001600160a01b03821660009081527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d60205260408120547fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c916bffffffffffffffffffffffff8216900361059e5761059e82856109dc565b60005b835181101561010d5760008482815181106105be576105be61105f565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b039081169087168103610648576040517f0f63c2400000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526001600160e01b0319831660248201526044016100ba565b610653858284610a53565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c949094029390931790925593909252879052815473ffffffffffffffffffffffffffffffffffffffff19161790558361070781611211565b94505050508080610717906110a1565b9150506105a1565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c60005b82518110156107b25760008382815181106107605761076061105f565b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b031661079d848284610a53565b505080806107aa906110a1565b915050610743565b50505050565b6001600160a01b03821661083f5780511561083b5760405162461bcd60e51b815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d7074790000000060648201526084016100ba565b5050565b60008151116108b65760405162461bcd60e51b815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f74206164647265737328302900000060648201526084016100ba565b6001600160a01b03821630146108e8576108e8826040518060600160405280602881526020016112a060289139610d4f565b600080836001600160a01b031683604051610903919061123c565b600060405180830381855af49150503d806000811461093e576040519150601f19603f3d011682016040523d82523d6000602084013e610943565b606091505b5091509150816107b25780511561096e578060405162461bcd60e51b81526004016100ba9190611258565b60405162461bcd60e51b815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e20726560448201527f766572746564000000000000000000000000000000000000000000000000000060648201526084016100ba565b6109fe816040518060600160405280602481526020016112c860249139610d4f565b6002820180546001600160a01b03909216600081815260019485016020908152604082208601859055948401835591825292902001805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b6001600160e01b03198116600090815260208481526040808320546001600160a01b0386168452600180880190935290832054600160a01b9091046bffffffffffffffffffffffff169291610aa791611272565b9050808214610b9e576001600160a01b03841660009081526001860160205260408120805483908110610adc57610adc61105f565b600091825260208083206008830401546001600160a01b038916845260018a019091526040909220805460079092166004026101000a90920460e01b925082919085908110610b2d57610b2d61105f565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b03199290921682528690526040902080546001600160a01b0316600160a01b6bffffffffffffffffffffffff8516021790555b6001600160a01b03841660009081526001860160205260409020805480610bc757610bc7611289565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319851682528690526040812081905581900361010d576002850154600090610c2a90600190611272565b6001600160a01b0386166000908152600180890160205260409091200154909150808214610ce6576000876002018381548110610c6957610c6961105f565b6000918252602090912001546002890180546001600160a01b039092169250829184908110610c9a57610c9a61105f565b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03948516179055929091168152600189810190925260409020018190555b86600201805480610cf957610cf9611289565b600082815260208082208301600019908101805473ffffffffffffffffffffffffffffffffffffffff191690559092019092556001600160a01b0388168252600189810190915260408220015550505050505050565b813b81816107b25760405162461bcd60e51b81526004016100ba9190611258565b80356001600160a01b0381168114610d8757600080fd5b919050565b60008083601f840112610d9e57600080fd5b50813567ffffffffffffffff811115610db657600080fd5b602083019150836020828501011115610dce57600080fd5b9250929050565b600080600080600060608688031215610ded57600080fd5b853567ffffffffffffffff80821115610e0557600080fd5b818801915088601f830112610e1957600080fd5b813581811115610e2857600080fd5b8960208260051b8501011115610e3d57600080fd5b60208301975080965050610e5360208901610d70565b94506040880135915080821115610e6957600080fd5b50610e7688828901610d8c565b969995985093965092949392505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715610ec057610ec0610e87565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610eef57610eef610e87565b604052919050565b600067ffffffffffffffff821115610f1157610f11610e87565b5060051b60200190565b6000610f2e610f2984610ef7565b610ec6565b83815260208082019190600586811b860136811115610f4c57600080fd5b865b8181101561105257803567ffffffffffffffff80821115610f6f5760008081fd5b818a01915060608236031215610f855760008081fd5b610f8d610e9d565b610f9683610d70565b81528683013560038110610faa5760008081fd5b8188015260408381013583811115610fc25760008081fd5b939093019236601f850112610fd957600092508283fd5b83359250610fe9610f2984610ef7565b83815292871b840188019288810190368511156110065760008081fd5b948901945b8486101561103b5785356001600160e01b03198116811461102c5760008081fd5b8252948901949089019061100b565b918301919091525088525050948301948301610f4e565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016110b3576110b361108b565b5060010190565b60005b838110156110d55781810151838201526020016110bd565b838111156107b25750506000910152565b600081518084526110fe8160208601602086016110ba565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b848110156111e157607f198a850301865281518885016001600160a01b038251168652848201516003811061118057634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b808310156111cc5783516001600160e01b03191682529286019260019290920191908601906111a2565b5097850197955050509082019060010161113b565b50506001600160a01b038a1690880152868103604088015261120381896110e6565b9a9950505050505050505050565b60006bffffffffffffffffffffffff8083168181036112325761123261108b565b6001019392505050565b6000825161124e8184602087016110ba565b9190910192915050565b60208152600061126b60208301846110e6565b9392505050565b6000828210156112845761128461108b565b500390565b634e487b7160e01b600052603160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a26469706673582212206cc792acb64c21764e52cc287ad2a0c1f623ba33a027bec5887940919e3fa7c764736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80631f931c1c14610030575b600080fd5b61004361003e366004610dd5565b610045565b005b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146100c35760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064015b60405180910390fd5b61010d6100d08587610f1b565b8484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061011492505050565b5050505050565b60005b83518110156102f05760008482815181106101345761013461105f565b60200260200101516020015190506000600281111561015557610155611075565b81600281111561016757610167611075565b036101b5576101b08583815181106101815761018161105f565b60200260200101516000015186848151811061019f5761019f61105f565b60200260200101516040015161033b565b6102dd565b60018160028111156101c9576101c9611075565b03610212576101b08583815181106101e3576101e361105f565b6020026020010151600001518684815181106102015761020161105f565b602002602001015160400151610525565b600281600281111561022657610226611075565b0361026f576101b08583815181106102405761024061105f565b60200260200101516000015186848151811061025e5761025e61105f565b60200260200101516040015161071f565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560448201527f74416374696f6e0000000000000000000000000000000000000000000000000060648201526084016100ba565b50806102e8816110a1565b915050610117565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67383838360405161032493929190611112565b60405180910390a161033682826107b8565b505050565b6001600160a01b03821660009081527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d60205260408120547fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c916bffffffffffffffffffffffff821690036103b4576103b482856109dc565b60005b835181101561010d5760008482815181106103d4576103d461105f565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b03168015610459576040517f752eb76d0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526001600160e01b0319831660248201526044016100ba565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c949094029390931790925593909252879052815473ffffffffffffffffffffffffffffffffffffffff19161790558361050d81611211565b9450505050808061051d906110a1565b9150506103b7565b6001600160a01b03821660009081527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d60205260408120547fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c916bffffffffffffffffffffffff8216900361059e5761059e82856109dc565b60005b835181101561010d5760008482815181106105be576105be61105f565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b039081169087168103610648576040517f0f63c2400000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526001600160e01b0319831660248201526044016100ba565b610653858284610a53565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c949094029390931790925593909252879052815473ffffffffffffffffffffffffffffffffffffffff19161790558361070781611211565b94505050508080610717906110a1565b9150506105a1565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c60005b82518110156107b25760008382815181106107605761076061105f565b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b031661079d848284610a53565b505080806107aa906110a1565b915050610743565b50505050565b6001600160a01b03821661083f5780511561083b5760405162461bcd60e51b815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d7074790000000060648201526084016100ba565b5050565b60008151116108b65760405162461bcd60e51b815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f74206164647265737328302900000060648201526084016100ba565b6001600160a01b03821630146108e8576108e8826040518060600160405280602881526020016112a060289139610d4f565b600080836001600160a01b031683604051610903919061123c565b600060405180830381855af49150503d806000811461093e576040519150601f19603f3d011682016040523d82523d6000602084013e610943565b606091505b5091509150816107b25780511561096e578060405162461bcd60e51b81526004016100ba9190611258565b60405162461bcd60e51b815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e20726560448201527f766572746564000000000000000000000000000000000000000000000000000060648201526084016100ba565b6109fe816040518060600160405280602481526020016112c860249139610d4f565b6002820180546001600160a01b03909216600081815260019485016020908152604082208601859055948401835591825292902001805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b6001600160e01b03198116600090815260208481526040808320546001600160a01b0386168452600180880190935290832054600160a01b9091046bffffffffffffffffffffffff169291610aa791611272565b9050808214610b9e576001600160a01b03841660009081526001860160205260408120805483908110610adc57610adc61105f565b600091825260208083206008830401546001600160a01b038916845260018a019091526040909220805460079092166004026101000a90920460e01b925082919085908110610b2d57610b2d61105f565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b03199290921682528690526040902080546001600160a01b0316600160a01b6bffffffffffffffffffffffff8516021790555b6001600160a01b03841660009081526001860160205260409020805480610bc757610bc7611289565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319851682528690526040812081905581900361010d576002850154600090610c2a90600190611272565b6001600160a01b0386166000908152600180890160205260409091200154909150808214610ce6576000876002018381548110610c6957610c6961105f565b6000918252602090912001546002890180546001600160a01b039092169250829184908110610c9a57610c9a61105f565b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03948516179055929091168152600189810190925260409020018190555b86600201805480610cf957610cf9611289565b600082815260208082208301600019908101805473ffffffffffffffffffffffffffffffffffffffff191690559092019092556001600160a01b0388168252600189810190915260408220015550505050505050565b813b81816107b25760405162461bcd60e51b81526004016100ba9190611258565b80356001600160a01b0381168114610d8757600080fd5b919050565b60008083601f840112610d9e57600080fd5b50813567ffffffffffffffff811115610db657600080fd5b602083019150836020828501011115610dce57600080fd5b9250929050565b600080600080600060608688031215610ded57600080fd5b853567ffffffffffffffff80821115610e0557600080fd5b818801915088601f830112610e1957600080fd5b813581811115610e2857600080fd5b8960208260051b8501011115610e3d57600080fd5b60208301975080965050610e5360208901610d70565b94506040880135915080821115610e6957600080fd5b50610e7688828901610d8c565b969995985093965092949392505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715610ec057610ec0610e87565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610eef57610eef610e87565b604052919050565b600067ffffffffffffffff821115610f1157610f11610e87565b5060051b60200190565b6000610f2e610f2984610ef7565b610ec6565b83815260208082019190600586811b860136811115610f4c57600080fd5b865b8181101561105257803567ffffffffffffffff80821115610f6f5760008081fd5b818a01915060608236031215610f855760008081fd5b610f8d610e9d565b610f9683610d70565b81528683013560038110610faa5760008081fd5b8188015260408381013583811115610fc25760008081fd5b939093019236601f850112610fd957600092508283fd5b83359250610fe9610f2984610ef7565b83815292871b840188019288810190368511156110065760008081fd5b948901945b8486101561103b5785356001600160e01b03198116811461102c5760008081fd5b8252948901949089019061100b565b918301919091525088525050948301948301610f4e565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016110b3576110b361108b565b5060010190565b60005b838110156110d55781810151838201526020016110bd565b838111156107b25750506000910152565b600081518084526110fe8160208601602086016110ba565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b848110156111e157607f198a850301865281518885016001600160a01b038251168652848201516003811061118057634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b808310156111cc5783516001600160e01b03191682529286019260019290920191908601906111a2565b5097850197955050509082019060010161113b565b50506001600160a01b038a1690880152868103604088015261120381896110e6565b9a9950505050505050505050565b60006bffffffffffffffffffffffff8083168181036112325761123261108b565b6001019392505050565b6000825161124e8184602087016110ba565b9190910192915050565b60208152600061126b60208301846110e6565b9392505050565b6000828210156112845761128461108b565b500390565b634e487b7160e01b600052603160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a26469706673582212206cc792acb64c21764e52cc287ad2a0c1f623ba33a027bec5887940919e3fa7c764736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"diamond/DiamondLoupe":{"address":{"3":"0x9d938a88094296ff207966671bBCAF14Bf28286f","4":"0x702355611a2d7F54275f9d6660082F2A72Ba5DF6","rinkeby":"0x702355611a2d7F54275f9d6660082F2A72Ba5DF6","ropsten":"0x9d938a88094296ff207966671bBCAF14Bf28286f"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"DiamondLoupe","sourceName":"src/diamond/DiamondLoupe.sol","abi":[{"inputs":[{"internalType":"bytes4","name":"_functionSelector","type":"bytes4"}],"name":"facetAddress","outputs":[{"internalType":"address","name":"facetAddress_","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"facetAddresses","outputs":[{"internalType":"address[]","name":"facetAddresses_","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_facet","type":"address"}],"name":"facetFunctionSelectors","outputs":[{"internalType":"bytes4[]","name":"facetFunctionSelectors_","type":"bytes4[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"facets","outputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct IDiamondLoupe.Facet[]","name":"facets_","type":"tuple[]"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506106c5806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806352ef6b2c146100515780637a0ed6271461006f578063adfca15e14610084578063cdffacc6146100a4575b600080fd5b610059610126565b6040516100669190610490565b60405180910390f35b6100776101ab565b604051610066919061053a565b6100976100923660046105b7565b61039d565b60405161006691906105e7565b61010e6100b23660046105fa565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c60205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610066565b606060007fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c600281018054604080516020808402820181019092528281529394508301828280156101a057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610182575b505050505091505090565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131e546060907fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c908067ffffffffffffffff81111561020b5761020b61063c565b60405190808252806020026020018201604052801561025157816020015b6040805180820190915260008152606060208201528152602001906001900390816102295790505b50925060005b8181101561039757600083600201828154811061027657610276610652565b9060005260206000200160009054906101000a90046001600160a01b03169050808583815181106102a9576102a9610652565b6020908102919091018101516001600160a01b03928316905290821660009081526001860182526040908190208054825181850281018501909352808352919290919083018282801561035d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161030a5790505b505050505085838151811061037457610374610652565b60200260200101516020018190525050808061038f90610668565b915050610257565b50505090565b6001600160a01b03811660009081527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d602090815260409182902080548351818402810184019094528084526060937fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c939092919083018282801561048357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116104305790505b5050505050915050919050565b6020808252825182820181905260009190848201906040850190845b818110156104d15783516001600160a01b0316835292840192918401916001016104ac565b50909695505050505050565b600081518084526020808501945080840160005b8381101561052f5781517fffffffff0000000000000000000000000000000000000000000000000000000016875295820195908201906001016104f1565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b838110156105a957888303603f19018552815180516001600160a01b03168452870151878401879052610596878501826104dd565b9588019593505090860190600101610561565b509098975050505050505050565b6000602082840312156105c957600080fd5b81356001600160a01b03811681146105e057600080fd5b9392505050565b6020815260006105e060208301846104dd565b60006020828403121561060c57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146105e057600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006001820161068857634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220956854b6a36937cc51d45b68549ced6d1e10b5ecc557b2b25cd11eda0e834a6464736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806352ef6b2c146100515780637a0ed6271461006f578063adfca15e14610084578063cdffacc6146100a4575b600080fd5b610059610126565b6040516100669190610490565b60405180910390f35b6100776101ab565b604051610066919061053a565b6100976100923660046105b7565b61039d565b60405161006691906105e7565b61010e6100b23660046105fa565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c60205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610066565b606060007fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c600281018054604080516020808402820181019092528281529394508301828280156101a057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610182575b505050505091505090565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131e546060907fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c908067ffffffffffffffff81111561020b5761020b61063c565b60405190808252806020026020018201604052801561025157816020015b6040805180820190915260008152606060208201528152602001906001900390816102295790505b50925060005b8181101561039757600083600201828154811061027657610276610652565b9060005260206000200160009054906101000a90046001600160a01b03169050808583815181106102a9576102a9610652565b6020908102919091018101516001600160a01b03928316905290821660009081526001860182526040908190208054825181850281018501909352808352919290919083018282801561035d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161030a5790505b505050505085838151811061037457610374610652565b60200260200101516020018190525050808061038f90610668565b915050610257565b50505090565b6001600160a01b03811660009081527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d602090815260409182902080548351818402810184019094528084526060937fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c939092919083018282801561048357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116104305790505b5050505050915050919050565b6020808252825182820181905260009190848201906040850190845b818110156104d15783516001600160a01b0316835292840192918401916001016104ac565b50909695505050505050565b600081518084526020808501945080840160005b8381101561052f5781517fffffffff0000000000000000000000000000000000000000000000000000000016875295820195908201906001016104f1565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b838110156105a957888303603f19018552815180516001600160a01b03168452870151878401879052610596878501826104dd565b9588019593505090860190600101610561565b509098975050505050505050565b6000602082840312156105c957600080fd5b81356001600160a01b03811681146105e057600080fd5b9392505050565b6020815260006105e060208301846104dd565b60006020828403121561060c57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146105e057600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006001820161068857634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220956854b6a36937cc51d45b68549ced6d1e10b5ecc557b2b25cd11eda0e834a6464736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"diamond/DiamondStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"DiamondStorage","sourceName":"src/diamond/DiamondStorage.sol","abi":[{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamondCut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"indexed":false,"internalType":"struct IDiamondCut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"indexed":false,"internalType":"address","name":"_init","type":"address"},{"indexed":false,"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"DiamondCut","type":"event"}],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ae0f4e1ead0c8a12cb4450a8dfd0eb87cda01ef74ba6ca5884c0be27b912576664736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ae0f4e1ead0c8a12cb4450a8dfd0eb87cda01ef74ba6ca5884c0be27b912576664736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"diamond/IDiamondCut":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IDiamondCut","sourceName":"src/diamond/IDiamondCut.sol","abi":[{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamondCut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"indexed":false,"internalType":"struct IDiamondCut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"indexed":false,"internalType":"address","name":"_init","type":"address"},{"indexed":false,"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"DiamondCut","type":"event"},{"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamondCut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct IDiamondCut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"internalType":"address","name":"_init","type":"address"},{"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"diamondCut","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"diamond/IDiamondLoupe":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IDiamondLoupe","sourceName":"src/diamond/IDiamondLoupe.sol","abi":[{"inputs":[{"internalType":"bytes4","name":"_functionSelector","type":"bytes4"}],"name":"facetAddress","outputs":[{"internalType":"address","name":"facetAddress_","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"facetAddresses","outputs":[{"internalType":"address[]","name":"facetAddresses_","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_facet","type":"address"}],"name":"facetFunctionSelectors","outputs":[{"internalType":"bytes4[]","name":"facetFunctionSelectors_","type":"bytes4[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"facets","outputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct IDiamondLoupe.Facet[]","name":"facets_","type":"tuple[]"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"factory/Clones":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Clones","sourceName":"src/factory/Clones.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220402596091f8c07fa2df1f9fa42908316e1c18588be42dcf7ff7ceb55c7db7b3464736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220402596091f8c07fa2df1f9fa42908316e1c18588be42dcf7ff7ceb55c7db7b3464736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"factory/FlairFactory":{"address":{"3":"0x88D339113E47355A9544E0665193F47A0325EBcB","ropsten":"0x88D339113E47355A9544E0665193F47A0325EBcB"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"FlairFactory","sourceName":"src/factory/FlairFactory.sol","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"deployer","type":"address"},{"indexed":true,"internalType":"address","name":"proxyAddress","type":"address"}],"name":"ProxyCreated","type":"event"},{"anonymous":false,"inputs":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"cloneDeterministicSimple","outputs":[{"internalType":"address","name":"deployedProxy","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"predictDeterministicSimple","outputs":[{"internalType":"address","name":"deployedProxy","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b506200001d336200002d565b6200002762000088565b62000390565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620000a95750600054600160ff909116105b80620000d95750620000c630620001bd60201b62000c071760201c565b158015620000d9575060005460ff166001145b620001425760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000166576000805461ff0019166101001790555b62000173336000620001cc565b8015620001ba576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6001600160a01b03163b151590565b600054610100900460ff16620002285760405162461bcd60e51b815260206004820152602b602482015260008051602062001a0a83398151915260448201526a6e697469616c697a696e6760a81b606482015260840162000139565b62000234828262000238565b5050565b600054610100900460ff16620002945760405162461bcd60e51b815260206004820152602b602482015260008051602062001a0a83398151915260448201526a6e697469616c697a696e6760a81b606482015260840162000139565b620002a663ac2ba33360e01b620002f6565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b836003811115620002ed57620002ed6200037a565b02179055505050565b6001600160e01b03198082169003620003525760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640162000139565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b634e487b7160e01b600052602160045260246000fd5b61166a80620003a06000396000f3fe6080604052600436106101295760003560e01c8063837fe140116100a5578063c723955a11610074578063dcbe353f11610059578063dcbe353f1461030e578063de6d6d961461032e578063f2fde38b1461034e57600080fd5b8063c723955a146102e4578063da82b227146102f957600080fd5b8063837fe1401461026a5780638da5cb5b1461027f578063af121f54146102a3578063c0bb38ff146102c457600080fd5b806347791ece116100fc5780636057e0ec116100e15780636057e0ec1461021f578063715018a6146102405780638129fc1c1461025557600080fd5b806347791ece146101eb57806349561cb9146101fe57600080fd5b806301ffc9a71461012e57806310db94b9146101635780632c2330671461019b5780632d00b587146101bd575b600080fd5b34801561013a57600080fd5b5061014e610149366004611301565b61036e565b60405190151581526020015b60405180910390f35b34801561016f57600080fd5b5061018361017e366004611347565b6103c7565b6040516001600160a01b03909116815260200161015a565b3480156101a757600080fd5b506101bb6101b6366004611371565b61041b565b005b3480156101c957600080fd5b506002546101de90600160b01b900460ff1681565b60405161015a91906113a8565b6101836101f93660046113d0565b6104b3565b34801561020a57600080fd5b5060025461014e90600160b81b900460ff1681565b34801561022b57600080fd5b5060025461014e90600160a01b900460ff1681565b34801561024c57600080fd5b506101bb61060a565b34801561026157600080fd5b506101bb61061e565b34801561027657600080fd5b506101bb610741565b34801561028b57600080fd5b506000546201000090046001600160a01b0316610183565b3480156102af57600080fd5b5060025461014e90600160a81b900460ff1681565b3480156102d057600080fd5b506101bb6102df366004611457565b6107bc565b3480156102f057600080fd5b506101bb610836565b34801561030557600080fd5b506101bb6108c8565b34801561031a57600080fd5b50600254610183906001600160a01b031681565b34801561033a57600080fd5b506101bb6103493660046114be565b610929565b34801561035a57600080fd5b506101bb610369366004611457565b610b7a565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b0319831614806103c157506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b6040516bffffffffffffffffffffffff193360601b1660208201526034810182905260009081906054016040516020818303038152906040528051906020012090506104138482610c16565b949350505050565b610423610c99565b600254600160b81b900460ff161561046b5760405162461bcd60e51b81526020600482015260066024820152651313d0d2d15160d21b60448201526064015b60405180910390fd5b600280548291907fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff16600160b01b8360038111156104ab576104ab611392565b021790555050565b6040516bffffffffffffffffffffffff193360601b1660208201526034810184905260009081906054016040516020818303038152906040528051906020012090506104ff8682610cfa565b915082156105cb57600080836001600160a01b0316868660405161052492919061152a565b6000604051808303816000865af19150503d8060008114610561576040519150601f19603f3d011682016040523d82523d6000602084013e610566565b606091505b5091509150816105c8578051156105805780518082602001fd5b60405162461bcd60e51b815260206004820152600f60248201527f4641494c45445f544f5f434c4f4e4500000000000000000000000000000000006044820152606401610462565b50505b6040516001600160a01b0383169033907f9678a1e87ca9f1a37dc659a97b39d812d98cd236947e1b53b3d0d6fd346acb6e90600090a350949350505050565b610612610c99565b61061c6000610db1565b565b600054610100900460ff161580801561063e5750600054600160ff909116105b806106585750303b158015610658575060005460ff166001145b6106ca5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610462565b6000805460ff1916600117905580156106ed576000805461ff0019166101001790555b6106f8336000610e22565b801561073e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b610749610c99565b600254600160a01b900460ff161561078c5760405162461bcd60e51b81526020600482015260066024820152651313d0d2d15160d21b6044820152606401610462565b600280547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055565b6107c4610c99565b600254600160a01b900460ff16156108075760405162461bcd60e51b81526020600482015260066024820152651313d0d2d15160d21b6044820152606401610462565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b61083e610c99565b600254600160b81b900460ff16156108985760405162461bcd60e51b815260206004820152600560248201527f4f434b45440000000000000000000000000000000000000000000000000000006044820152606401610462565b600280547fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff16600160b81b179055565b6108d0610c99565b600280547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b61093233610ead565b6002546001600160a01b031661098a5760405162461bcd60e51b815260206004820152601560248201527f57495448445241572f4e4f5f524543495049454e5400000000000000000000006044820152606401610462565b600254600160a81b900460ff16156109e45760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610462565b60005b83811015610b36576000858583818110610a0357610a0361153a565b9050602002016020810190610a189190611457565b6001600160a01b031603610a5b57610a56838383818110610a3b57610a3b61153a565b6002546001600160a01b03169260209091020135905061104b565b610b24565b848482818110610a6d57610a6d61153a565b9050602002016020810190610a829190611457565b6002546001600160a01b039182169163a9059cbb9116858585818110610aaa57610aaa61153a565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015610afe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b229190611550565b505b80610b2e81611572565b9150506109e7565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a584848484604051610b6c9493929190611599565b60405180910390a150505050565b610b82610c99565b6001600160a01b038116610bfe5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610462565b61073e81610db1565b6001600160a01b03163b151590565b6000610c928383306040517f3d602d80600a3d3981f3363d3d373d3d3d363d730000000000000000000000008152606093841b60148201527f5af43d82803e903d91602b57fd5bf3ff000000000000000000000000000000006028820152921b6038830152604c8201526037808220606c830152605591012090565b9392505050565b6000546001600160a01b036201000090910416331461061c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610462565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528360601b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f59150506001600160a01b0381166103c15760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c65640000000000000000006044820152606401610462565b600080546001600160a01b03838116620100008181027fffffffffffffffffffff0000000000000000000000000000000000000000ffff851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff16610e9f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610462565b610ea98282611169565b5050565b6003600254600160b01b900460ff166003811115610ecd57610ecd611392565b03610f1a5760405162461bcd60e51b815260206004820152600f60248201527f57495448445241572f4c4f434b454400000000000000000000000000000000006044820152606401610462565b60028054600160b01b900460ff166003811115610f3957610f39611392565b03610f415750565b6001600254600160b01b900460ff166003811115610f6157610f61611392565b03610fc3576002546001600160a01b0382811691161461073e5760405162461bcd60e51b815260206004820152601760248201527f57495448445241572f4f4e4c595f524543495049454e540000000000000000006044820152606401610462565b6000600254600160b01b900460ff166003811115610fe357610fe3611392565b0361073e576000546001600160a01b0382811662010000909204161461073e5760405162461bcd60e51b815260206004820152601360248201527f57495448445241572f4f4e4c595f4f574e4552000000000000000000000000006044820152606401610462565b8047101561109b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610462565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146110e8576040519150601f19603f3d011682016040523d82523d6000602084013e6110ed565b606091505b50509050806111645760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610462565b505050565b600054610100900460ff166111e65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610462565b61120f7fac2ba3330000000000000000000000000000000000000000000000000000000061127f565b600280546001600160a01b03841673ffffffffffffffffffffffffffffffffffffffff198216811783558392917fffffffffffffffffff00ffff00000000000000000000000000000000000000001617600160b01b83600381111561127657611276611392565b02179055505050565b6001600160e01b031980821690036112d95760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e74657266616365206964000000006044820152606401610462565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60006020828403121561131357600080fd5b81356001600160e01b031981168114610c9257600080fd5b80356001600160a01b038116811461134257600080fd5b919050565b6000806040838503121561135a57600080fd5b6113638361132b565b946020939093013593505050565b60006020828403121561138357600080fd5b813560048110610c9257600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106113ca57634e487b7160e01b600052602160045260246000fd5b91905290565b600080600080606085870312156113e657600080fd5b6113ef8561132b565b935060208501359250604085013567ffffffffffffffff8082111561141357600080fd5b818701915087601f83011261142757600080fd5b81358181111561143657600080fd5b88602082850101111561144857600080fd5b95989497505060200194505050565b60006020828403121561146957600080fd5b610c928261132b565b60008083601f84011261148457600080fd5b50813567ffffffffffffffff81111561149c57600080fd5b6020830191508360208260051b85010111156114b757600080fd5b9250929050565b600080600080604085870312156114d457600080fd5b843567ffffffffffffffff808211156114ec57600080fd5b6114f888838901611472565b9096509450602087013591508082111561151157600080fd5b5061151e87828801611472565b95989497509550505050565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561156257600080fd5b81518015158114610c9257600080fd5b60006001820161159257634e487b7160e01b600052601160045260246000fd5b5060010190565b6040808252810184905260008560608301825b878110156115da576001600160a01b036115c58461132b565b168252602092830192909101906001016115ac565b5083810360208501528481527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85111561161357600080fd5b8460051b91508186602083013760009101602001908152969550505050505056fea2646970667358221220ed60731ee92a21b70bac7c8c9a33fc8b9336ce44dff44c362abff4367aaed54764736f6c634300080f0033496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","deployedBytecode":"0x6080604052600436106101295760003560e01c8063837fe140116100a5578063c723955a11610074578063dcbe353f11610059578063dcbe353f1461030e578063de6d6d961461032e578063f2fde38b1461034e57600080fd5b8063c723955a146102e4578063da82b227146102f957600080fd5b8063837fe1401461026a5780638da5cb5b1461027f578063af121f54146102a3578063c0bb38ff146102c457600080fd5b806347791ece116100fc5780636057e0ec116100e15780636057e0ec1461021f578063715018a6146102405780638129fc1c1461025557600080fd5b806347791ece146101eb57806349561cb9146101fe57600080fd5b806301ffc9a71461012e57806310db94b9146101635780632c2330671461019b5780632d00b587146101bd575b600080fd5b34801561013a57600080fd5b5061014e610149366004611301565b61036e565b60405190151581526020015b60405180910390f35b34801561016f57600080fd5b5061018361017e366004611347565b6103c7565b6040516001600160a01b03909116815260200161015a565b3480156101a757600080fd5b506101bb6101b6366004611371565b61041b565b005b3480156101c957600080fd5b506002546101de90600160b01b900460ff1681565b60405161015a91906113a8565b6101836101f93660046113d0565b6104b3565b34801561020a57600080fd5b5060025461014e90600160b81b900460ff1681565b34801561022b57600080fd5b5060025461014e90600160a01b900460ff1681565b34801561024c57600080fd5b506101bb61060a565b34801561026157600080fd5b506101bb61061e565b34801561027657600080fd5b506101bb610741565b34801561028b57600080fd5b506000546201000090046001600160a01b0316610183565b3480156102af57600080fd5b5060025461014e90600160a81b900460ff1681565b3480156102d057600080fd5b506101bb6102df366004611457565b6107bc565b3480156102f057600080fd5b506101bb610836565b34801561030557600080fd5b506101bb6108c8565b34801561031a57600080fd5b50600254610183906001600160a01b031681565b34801561033a57600080fd5b506101bb6103493660046114be565b610929565b34801561035a57600080fd5b506101bb610369366004611457565b610b7a565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b0319831614806103c157506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b6040516bffffffffffffffffffffffff193360601b1660208201526034810182905260009081906054016040516020818303038152906040528051906020012090506104138482610c16565b949350505050565b610423610c99565b600254600160b81b900460ff161561046b5760405162461bcd60e51b81526020600482015260066024820152651313d0d2d15160d21b60448201526064015b60405180910390fd5b600280548291907fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff16600160b01b8360038111156104ab576104ab611392565b021790555050565b6040516bffffffffffffffffffffffff193360601b1660208201526034810184905260009081906054016040516020818303038152906040528051906020012090506104ff8682610cfa565b915082156105cb57600080836001600160a01b0316868660405161052492919061152a565b6000604051808303816000865af19150503d8060008114610561576040519150601f19603f3d011682016040523d82523d6000602084013e610566565b606091505b5091509150816105c8578051156105805780518082602001fd5b60405162461bcd60e51b815260206004820152600f60248201527f4641494c45445f544f5f434c4f4e4500000000000000000000000000000000006044820152606401610462565b50505b6040516001600160a01b0383169033907f9678a1e87ca9f1a37dc659a97b39d812d98cd236947e1b53b3d0d6fd346acb6e90600090a350949350505050565b610612610c99565b61061c6000610db1565b565b600054610100900460ff161580801561063e5750600054600160ff909116105b806106585750303b158015610658575060005460ff166001145b6106ca5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610462565b6000805460ff1916600117905580156106ed576000805461ff0019166101001790555b6106f8336000610e22565b801561073e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b610749610c99565b600254600160a01b900460ff161561078c5760405162461bcd60e51b81526020600482015260066024820152651313d0d2d15160d21b6044820152606401610462565b600280547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055565b6107c4610c99565b600254600160a01b900460ff16156108075760405162461bcd60e51b81526020600482015260066024820152651313d0d2d15160d21b6044820152606401610462565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b61083e610c99565b600254600160b81b900460ff16156108985760405162461bcd60e51b815260206004820152600560248201527f4f434b45440000000000000000000000000000000000000000000000000000006044820152606401610462565b600280547fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff16600160b81b179055565b6108d0610c99565b600280547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b61093233610ead565b6002546001600160a01b031661098a5760405162461bcd60e51b815260206004820152601560248201527f57495448445241572f4e4f5f524543495049454e5400000000000000000000006044820152606401610462565b600254600160a81b900460ff16156109e45760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610462565b60005b83811015610b36576000858583818110610a0357610a0361153a565b9050602002016020810190610a189190611457565b6001600160a01b031603610a5b57610a56838383818110610a3b57610a3b61153a565b6002546001600160a01b03169260209091020135905061104b565b610b24565b848482818110610a6d57610a6d61153a565b9050602002016020810190610a829190611457565b6002546001600160a01b039182169163a9059cbb9116858585818110610aaa57610aaa61153a565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015610afe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b229190611550565b505b80610b2e81611572565b9150506109e7565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a584848484604051610b6c9493929190611599565b60405180910390a150505050565b610b82610c99565b6001600160a01b038116610bfe5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610462565b61073e81610db1565b6001600160a01b03163b151590565b6000610c928383306040517f3d602d80600a3d3981f3363d3d373d3d3d363d730000000000000000000000008152606093841b60148201527f5af43d82803e903d91602b57fd5bf3ff000000000000000000000000000000006028820152921b6038830152604c8201526037808220606c830152605591012090565b9392505050565b6000546001600160a01b036201000090910416331461061c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610462565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528360601b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f59150506001600160a01b0381166103c15760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c65640000000000000000006044820152606401610462565b600080546001600160a01b03838116620100008181027fffffffffffffffffffff0000000000000000000000000000000000000000ffff851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff16610e9f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610462565b610ea98282611169565b5050565b6003600254600160b01b900460ff166003811115610ecd57610ecd611392565b03610f1a5760405162461bcd60e51b815260206004820152600f60248201527f57495448445241572f4c4f434b454400000000000000000000000000000000006044820152606401610462565b60028054600160b01b900460ff166003811115610f3957610f39611392565b03610f415750565b6001600254600160b01b900460ff166003811115610f6157610f61611392565b03610fc3576002546001600160a01b0382811691161461073e5760405162461bcd60e51b815260206004820152601760248201527f57495448445241572f4f4e4c595f524543495049454e540000000000000000006044820152606401610462565b6000600254600160b01b900460ff166003811115610fe357610fe3611392565b0361073e576000546001600160a01b0382811662010000909204161461073e5760405162461bcd60e51b815260206004820152601360248201527f57495448445241572f4f4e4c595f4f574e4552000000000000000000000000006044820152606401610462565b8047101561109b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610462565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146110e8576040519150601f19603f3d011682016040523d82523d6000602084013e6110ed565b606091505b50509050806111645760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610462565b505050565b600054610100900460ff166111e65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610462565b61120f7fac2ba3330000000000000000000000000000000000000000000000000000000061127f565b600280546001600160a01b03841673ffffffffffffffffffffffffffffffffffffffff198216811783558392917fffffffffffffffffff00ffff00000000000000000000000000000000000000001617600160b01b83600381111561127657611276611392565b02179055505050565b6001600160e01b031980821690036112d95760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e74657266616365206964000000006044820152606401610462565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60006020828403121561131357600080fd5b81356001600160e01b031981168114610c9257600080fd5b80356001600160a01b038116811461134257600080fd5b919050565b6000806040838503121561135a57600080fd5b6113638361132b565b946020939093013593505050565b60006020828403121561138357600080fd5b813560048110610c9257600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106113ca57634e487b7160e01b600052602160045260246000fd5b91905290565b600080600080606085870312156113e657600080fd5b6113ef8561132b565b935060208501359250604085013567ffffffffffffffff8082111561141357600080fd5b818701915087601f83011261142757600080fd5b81358181111561143657600080fd5b88602082850101111561144857600080fd5b95989497505060200194505050565b60006020828403121561146957600080fd5b610c928261132b565b60008083601f84011261148457600080fd5b50813567ffffffffffffffff81111561149c57600080fd5b6020830191508360208260051b85010111156114b757600080fd5b9250929050565b600080600080604085870312156114d457600080fd5b843567ffffffffffffffff808211156114ec57600080fd5b6114f888838901611472565b9096509450602087013591508082111561151157600080fd5b5061151e87828801611472565b95989497509550505050565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561156257600080fd5b81518015158114610c9257600080fd5b60006001820161159257634e487b7160e01b600052601160045260246000fd5b5060010190565b6040808252810184905260008560608301825b878110156115da576001600160a01b036115c58461132b565b168252602092830192909101906001016115ac565b5083810360208501528481527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85111561161357600080fd5b8460051b91508186602083013760009101602001908152969550505050505056fea2646970667358221220ed60731ee92a21b70bac7c8c9a33fc8b9336ce44dff44c362abff4367aaed54764736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"factory/FlairFactoryNewable":{"address":{"3":"0x5e88650C4e38206addb2561cec3103Fa6C6A9bF7","ropsten":"0x5e88650C4e38206addb2561cec3103Fa6C6A9bF7"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"FlairFactoryNewable","sourceName":"src/factory/FlairFactoryNewable.sol","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"deployer","type":"address"},{"indexed":true,"internalType":"address","name":"proxyAddress","type":"address"}],"name":"ProxyCreated","type":"event"},{"anonymous":false,"inputs":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"cloneDeterministicSimple","outputs":[{"internalType":"address","name":"deployedProxy","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b506200001d336200002d565b6200002762000088565b62000390565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620000a95750600054600160ff909116105b80620000d95750620000c630620001bd60201b62000b711760201c565b158015620000d9575060005460ff166001145b620001425760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000166576000805461ff0019166101001790555b62000173336000620001cc565b8015620001ba576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6001600160a01b03163b151590565b600054610100900460ff16620002285760405162461bcd60e51b815260206004820152602b60248201526000805160206200199683398151915260448201526a6e697469616c697a696e6760a81b606482015260840162000139565b62000234828262000238565b5050565b600054610100900460ff16620002945760405162461bcd60e51b815260206004820152602b60248201526000805160206200199683398151915260448201526a6e697469616c697a696e6760a81b606482015260840162000139565b620002a663ac2ba33360e01b620002f6565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b836003811115620002ed57620002ed6200037a565b02179055505050565b6001600160e01b03198082169003620003525760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640162000139565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b634e487b7160e01b600052602160045260246000fd5b6115f680620003a06000396000f3fe60806040526004361061010e5760003560e01c8063837fe140116100a5578063c723955a11610074578063dcbe353f11610059578063dcbe353f146102d3578063de6d6d96146102f3578063f2fde38b1461031357600080fd5b8063c723955a146102a9578063da82b227146102be57600080fd5b8063837fe1401461022f5780638da5cb5b14610244578063af121f5414610268578063c0bb38ff1461028957600080fd5b806349561cb9116100e157806349561cb9146101c35780636057e0ec146101e4578063715018a6146102055780638129fc1c1461021a57600080fd5b806301ffc9a7146101135780632c233067146101485780632d00b5871461016a57806347791ece14610198575b600080fd5b34801561011f57600080fd5b5061013361012e36600461113e565b610333565b60405190151581526020015b60405180910390f35b34801561015457600080fd5b5061016861016336600461116f565b61038c565b005b34801561017657600080fd5b5060025461018b90600160b01b900460ff1681565b60405161013f91906111a6565b6101ab6101a63660046111ea565b610424565b6040516001600160a01b03909116815260200161013f565b3480156101cf57600080fd5b5060025461013390600160b81b900460ff1681565b3480156101f057600080fd5b5060025461013390600160a01b900460ff1681565b34801561021157600080fd5b50610168610574565b34801561022657600080fd5b50610168610588565b34801561023b57600080fd5b506101686106ab565b34801561025057600080fd5b506000546201000090046001600160a01b03166101ab565b34801561027457600080fd5b5060025461013390600160a81b900460ff1681565b34801561029557600080fd5b506101686102a4366004611271565b610726565b3480156102b557600080fd5b506101686107a0565b3480156102ca57600080fd5b50610168610832565b3480156102df57600080fd5b506002546101ab906001600160a01b031681565b3480156102ff57600080fd5b5061016861030e3660046112d8565b610893565b34801561031f57600080fd5b5061016861032e366004611271565b610ae4565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316148061038657506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b610394610b80565b600254600160b81b900460ff16156103dc5760405162461bcd60e51b81526020600482015260066024820152651313d0d2d15160d21b60448201526064015b60405180910390fd5b600280548291907fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff16600160b01b83600381111561041c5761041c611190565b021790555050565b600080848660405161043590611131565b6001600160a01b0390911681526020018190604051809103906000f5905080158015610465573d6000803e3d6000fd5b509150819050821561053557600080836001600160a01b0316868660405161048e929190611344565b6000604051808303816000865af19150503d80600081146104cb576040519150601f19603f3d011682016040523d82523d6000602084013e6104d0565b606091505b509150915081610532578051156104ea5780518082602001fd5b60405162461bcd60e51b815260206004820152600f60248201527f4641494c45445f544f5f434c4f4e45000000000000000000000000000000000060448201526064016103d3565b50505b6040516001600160a01b0383169033907f9678a1e87ca9f1a37dc659a97b39d812d98cd236947e1b53b3d0d6fd346acb6e90600090a350949350505050565b61057c610b80565b6105866000610be1565b565b600054610100900460ff16158080156105a85750600054600160ff909116105b806105c25750303b1580156105c2575060005460ff166001145b6106345760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103d3565b6000805460ff191660011790558015610657576000805461ff0019166101001790555b610662336000610c52565b80156106a8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6106b3610b80565b600254600160a01b900460ff16156106f65760405162461bcd60e51b81526020600482015260066024820152651313d0d2d15160d21b60448201526064016103d3565b600280547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055565b61072e610b80565b600254600160a01b900460ff16156107715760405162461bcd60e51b81526020600482015260066024820152651313d0d2d15160d21b60448201526064016103d3565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6107a8610b80565b600254600160b81b900460ff16156108025760405162461bcd60e51b815260206004820152600560248201527f4f434b454400000000000000000000000000000000000000000000000000000060448201526064016103d3565b600280547fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff16600160b81b179055565b61083a610b80565b600280547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b61089c33610cdd565b6002546001600160a01b03166108f45760405162461bcd60e51b815260206004820152601560248201527f57495448445241572f4e4f5f524543495049454e54000000000000000000000060448201526064016103d3565b600254600160a81b900460ff161561094e5760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b454460448201526064016103d3565b60005b83811015610aa057600085858381811061096d5761096d611354565b90506020020160208101906109829190611271565b6001600160a01b0316036109c5576109c08383838181106109a5576109a5611354565b6002546001600160a01b031692602090910201359050610e7b565b610a8e565b8484828181106109d7576109d7611354565b90506020020160208101906109ec9190611271565b6002546001600160a01b039182169163a9059cbb9116858585818110610a1457610a14611354565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015610a68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8c919061136a565b505b80610a988161138c565b915050610951565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a584848484604051610ad694939291906113b3565b60405180910390a150505050565b610aec610b80565b6001600160a01b038116610b685760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016103d3565b6106a881610be1565b6001600160a01b03163b151590565b6000546001600160a01b03620100009091041633146105865760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103d3565b600080546001600160a01b03838116620100008181027fffffffffffffffffffff0000000000000000000000000000000000000000ffff851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff16610ccf5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016103d3565b610cd98282610f99565b5050565b6003600254600160b01b900460ff166003811115610cfd57610cfd611190565b03610d4a5760405162461bcd60e51b815260206004820152600f60248201527f57495448445241572f4c4f434b4544000000000000000000000000000000000060448201526064016103d3565b60028054600160b01b900460ff166003811115610d6957610d69611190565b03610d715750565b6001600254600160b01b900460ff166003811115610d9157610d91611190565b03610df3576002546001600160a01b038281169116146106a85760405162461bcd60e51b815260206004820152601760248201527f57495448445241572f4f4e4c595f524543495049454e5400000000000000000060448201526064016103d3565b6000600254600160b01b900460ff166003811115610e1357610e13611190565b036106a8576000546001600160a01b038281166201000090920416146106a85760405162461bcd60e51b815260206004820152601360248201527f57495448445241572f4f4e4c595f4f574e45520000000000000000000000000060448201526064016103d3565b80471015610ecb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016103d3565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610f18576040519150601f19603f3d011682016040523d82523d6000602084013e610f1d565b606091505b5050905080610f945760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016103d3565b505050565b600054610100900460ff166110165760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016103d3565b61103f7fac2ba333000000000000000000000000000000000000000000000000000000006110af565b600280546001600160a01b03841673ffffffffffffffffffffffffffffffffffffffff198216811783558392917fffffffffffffffffff00ffff00000000000000000000000000000000000000001617600160b01b8360038111156110a6576110a6611190565b02179055505050565b6001600160e01b031980821690036111095760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e746572666163652069640000000060448201526064016103d3565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b6101728061144f83390190565b60006020828403121561115057600080fd5b81356001600160e01b03198116811461116857600080fd5b9392505050565b60006020828403121561118157600080fd5b81356004811061116857600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106111c857634e487b7160e01b600052602160045260246000fd5b91905290565b80356001600160a01b03811681146111e557600080fd5b919050565b6000806000806060858703121561120057600080fd5b611209856111ce565b935060208501359250604085013567ffffffffffffffff8082111561122d57600080fd5b818701915087601f83011261124157600080fd5b81358181111561125057600080fd5b88602082850101111561126257600080fd5b95989497505060200194505050565b60006020828403121561128357600080fd5b611168826111ce565b60008083601f84011261129e57600080fd5b50813567ffffffffffffffff8111156112b657600080fd5b6020830191508360208260051b85010111156112d157600080fd5b9250929050565b600080600080604085870312156112ee57600080fd5b843567ffffffffffffffff8082111561130657600080fd5b6113128883890161128c565b9096509450602087013591508082111561132b57600080fd5b506113388782880161128c565b95989497509550505050565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561137c57600080fd5b8151801515811461116857600080fd5b6000600182016113ac57634e487b7160e01b600052601160045260246000fd5b5060010190565b6040808252810184905260008560608301825b878110156113f4576001600160a01b036113df846111ce565b168252602092830192909101906001016113c6565b5083810360208501528481527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85111561142d57600080fd5b8460051b91508186602083013760009101602001908152969550505050505056fe608060405260405161017238038061017283398101604081905261002291610080565b806100597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61007d60201b6100581760201c565b80546001600160a01b0319166001600160a01b0392909216919091179055506100b0565b90565b60006020828403121561009257600080fd5b81516001600160a01b03811681146100a957600080fd5b9392505050565b60b4806100be6000396000f3fe608060405236601057600e6013565b005b600e5b605660527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b605b565b565b90565b3660008037600080366000845af43d6000803e8080156079573d6000f35b3d6000fdfea264697066735822122010e3d1afd2c437d773a5002b589123ae499d9167b69637e26ef5120fc87f46dc64736f6c634300080f0033a2646970667358221220516ebf9c27f086c09355dd72ef43f510961e1e6800bf2157730909d8b6cad2e664736f6c634300080f0033496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","deployedBytecode":"0x60806040526004361061010e5760003560e01c8063837fe140116100a5578063c723955a11610074578063dcbe353f11610059578063dcbe353f146102d3578063de6d6d96146102f3578063f2fde38b1461031357600080fd5b8063c723955a146102a9578063da82b227146102be57600080fd5b8063837fe1401461022f5780638da5cb5b14610244578063af121f5414610268578063c0bb38ff1461028957600080fd5b806349561cb9116100e157806349561cb9146101c35780636057e0ec146101e4578063715018a6146102055780638129fc1c1461021a57600080fd5b806301ffc9a7146101135780632c233067146101485780632d00b5871461016a57806347791ece14610198575b600080fd5b34801561011f57600080fd5b5061013361012e36600461113e565b610333565b60405190151581526020015b60405180910390f35b34801561015457600080fd5b5061016861016336600461116f565b61038c565b005b34801561017657600080fd5b5060025461018b90600160b01b900460ff1681565b60405161013f91906111a6565b6101ab6101a63660046111ea565b610424565b6040516001600160a01b03909116815260200161013f565b3480156101cf57600080fd5b5060025461013390600160b81b900460ff1681565b3480156101f057600080fd5b5060025461013390600160a01b900460ff1681565b34801561021157600080fd5b50610168610574565b34801561022657600080fd5b50610168610588565b34801561023b57600080fd5b506101686106ab565b34801561025057600080fd5b506000546201000090046001600160a01b03166101ab565b34801561027457600080fd5b5060025461013390600160a81b900460ff1681565b34801561029557600080fd5b506101686102a4366004611271565b610726565b3480156102b557600080fd5b506101686107a0565b3480156102ca57600080fd5b50610168610832565b3480156102df57600080fd5b506002546101ab906001600160a01b031681565b3480156102ff57600080fd5b5061016861030e3660046112d8565b610893565b34801561031f57600080fd5b5061016861032e366004611271565b610ae4565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316148061038657506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b610394610b80565b600254600160b81b900460ff16156103dc5760405162461bcd60e51b81526020600482015260066024820152651313d0d2d15160d21b60448201526064015b60405180910390fd5b600280548291907fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff16600160b01b83600381111561041c5761041c611190565b021790555050565b600080848660405161043590611131565b6001600160a01b0390911681526020018190604051809103906000f5905080158015610465573d6000803e3d6000fd5b509150819050821561053557600080836001600160a01b0316868660405161048e929190611344565b6000604051808303816000865af19150503d80600081146104cb576040519150601f19603f3d011682016040523d82523d6000602084013e6104d0565b606091505b509150915081610532578051156104ea5780518082602001fd5b60405162461bcd60e51b815260206004820152600f60248201527f4641494c45445f544f5f434c4f4e45000000000000000000000000000000000060448201526064016103d3565b50505b6040516001600160a01b0383169033907f9678a1e87ca9f1a37dc659a97b39d812d98cd236947e1b53b3d0d6fd346acb6e90600090a350949350505050565b61057c610b80565b6105866000610be1565b565b600054610100900460ff16158080156105a85750600054600160ff909116105b806105c25750303b1580156105c2575060005460ff166001145b6106345760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103d3565b6000805460ff191660011790558015610657576000805461ff0019166101001790555b610662336000610c52565b80156106a8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6106b3610b80565b600254600160a01b900460ff16156106f65760405162461bcd60e51b81526020600482015260066024820152651313d0d2d15160d21b60448201526064016103d3565b600280547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055565b61072e610b80565b600254600160a01b900460ff16156107715760405162461bcd60e51b81526020600482015260066024820152651313d0d2d15160d21b60448201526064016103d3565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6107a8610b80565b600254600160b81b900460ff16156108025760405162461bcd60e51b815260206004820152600560248201527f4f434b454400000000000000000000000000000000000000000000000000000060448201526064016103d3565b600280547fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff16600160b81b179055565b61083a610b80565b600280547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b61089c33610cdd565b6002546001600160a01b03166108f45760405162461bcd60e51b815260206004820152601560248201527f57495448445241572f4e4f5f524543495049454e54000000000000000000000060448201526064016103d3565b600254600160a81b900460ff161561094e5760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b454460448201526064016103d3565b60005b83811015610aa057600085858381811061096d5761096d611354565b90506020020160208101906109829190611271565b6001600160a01b0316036109c5576109c08383838181106109a5576109a5611354565b6002546001600160a01b031692602090910201359050610e7b565b610a8e565b8484828181106109d7576109d7611354565b90506020020160208101906109ec9190611271565b6002546001600160a01b039182169163a9059cbb9116858585818110610a1457610a14611354565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015610a68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8c919061136a565b505b80610a988161138c565b915050610951565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a584848484604051610ad694939291906113b3565b60405180910390a150505050565b610aec610b80565b6001600160a01b038116610b685760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016103d3565b6106a881610be1565b6001600160a01b03163b151590565b6000546001600160a01b03620100009091041633146105865760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103d3565b600080546001600160a01b03838116620100008181027fffffffffffffffffffff0000000000000000000000000000000000000000ffff851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff16610ccf5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016103d3565b610cd98282610f99565b5050565b6003600254600160b01b900460ff166003811115610cfd57610cfd611190565b03610d4a5760405162461bcd60e51b815260206004820152600f60248201527f57495448445241572f4c4f434b4544000000000000000000000000000000000060448201526064016103d3565b60028054600160b01b900460ff166003811115610d6957610d69611190565b03610d715750565b6001600254600160b01b900460ff166003811115610d9157610d91611190565b03610df3576002546001600160a01b038281169116146106a85760405162461bcd60e51b815260206004820152601760248201527f57495448445241572f4f4e4c595f524543495049454e5400000000000000000060448201526064016103d3565b6000600254600160b01b900460ff166003811115610e1357610e13611190565b036106a8576000546001600160a01b038281166201000090920416146106a85760405162461bcd60e51b815260206004820152601360248201527f57495448445241572f4f4e4c595f4f574e45520000000000000000000000000060448201526064016103d3565b80471015610ecb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016103d3565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610f18576040519150601f19603f3d011682016040523d82523d6000602084013e610f1d565b606091505b5050905080610f945760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016103d3565b505050565b600054610100900460ff166110165760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016103d3565b61103f7fac2ba333000000000000000000000000000000000000000000000000000000006110af565b600280546001600160a01b03841673ffffffffffffffffffffffffffffffffffffffff198216811783558392917fffffffffffffffffff00ffff00000000000000000000000000000000000000001617600160b01b8360038111156110a6576110a6611190565b02179055505050565b6001600160e01b031980821690036111095760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e746572666163652069640000000060448201526064016103d3565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b6101728061144f83390190565b60006020828403121561115057600080fd5b81356001600160e01b03198116811461116857600080fd5b9392505050565b60006020828403121561118157600080fd5b81356004811061116857600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106111c857634e487b7160e01b600052602160045260246000fd5b91905290565b80356001600160a01b03811681146111e557600080fd5b919050565b6000806000806060858703121561120057600080fd5b611209856111ce565b935060208501359250604085013567ffffffffffffffff8082111561122d57600080fd5b818701915087601f83011261124157600080fd5b81358181111561125057600080fd5b88602082850101111561126257600080fd5b95989497505060200194505050565b60006020828403121561128357600080fd5b611168826111ce565b60008083601f84011261129e57600080fd5b50813567ffffffffffffffff8111156112b657600080fd5b6020830191508360208260051b85010111156112d157600080fd5b9250929050565b600080600080604085870312156112ee57600080fd5b843567ffffffffffffffff8082111561130657600080fd5b6113128883890161128c565b9096509450602087013591508082111561132b57600080fd5b506113388782880161128c565b95989497509550505050565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561137c57600080fd5b8151801515811461116857600080fd5b6000600182016113ac57634e487b7160e01b600052601160045260246000fd5b5060010190565b6040808252810184905260008560608301825b878110156113f4576001600160a01b036113df846111ce565b168252602092830192909101906001016113c6565b5083810360208501528481527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85111561142d57600080fd5b8460051b91508186602083013760009101602001908152969550505050505056fe608060405260405161017238038061017283398101604081905261002291610080565b806100597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61007d60201b6100581760201c565b80546001600160a01b0319166001600160a01b0392909216919091179055506100b0565b90565b60006020828403121561009257600080fd5b81516001600160a01b03811681146100a957600080fd5b9392505050565b60b4806100be6000396000f3fe608060405236601057600e6013565b005b600e5b605660527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b605b565b565b90565b3660008037600080366000845af43d6000803e8080156079573d6000f35b3d6000fdfea264697066735822122010e3d1afd2c437d773a5002b589123ae499d9167b69637e26ef5120fc87f46dc64736f6c634300080f0033a2646970667358221220516ebf9c27f086c09355dd72ef43f510961e1e6800bf2157730909d8b6cad2e664736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"factory/MinimalProxy":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"MinimalProxy","sourceName":"src/factory/MinimalProxy.sol","abi":[{"inputs":[{"internalType":"address","name":"_impl","type":"address"}],"stateMutability":"payable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x608060405260405161017238038061017283398101604081905261002291610080565b806100597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61007d60201b6100581760201c565b80546001600160a01b0319166001600160a01b0392909216919091179055506100b0565b90565b60006020828403121561009257600080fd5b81516001600160a01b03811681146100a957600080fd5b9392505050565b60b4806100be6000396000f3fe608060405236601057600e6013565b005b600e5b605660527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b605b565b565b90565b3660008037600080366000845af43d6000803e8080156079573d6000f35b3d6000fdfea264697066735822122010e3d1afd2c437d773a5002b589123ae499d9167b69637e26ef5120fc87f46dc64736f6c634300080f0033","deployedBytecode":"0x608060405236601057600e6013565b005b600e5b605660527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b605b565b565b90565b3660008037600080366000845af43d6000803e8080156079573d6000f35b3d6000fdfea264697066735822122010e3d1afd2c437d773a5002b589123ae499d9167b69637e26ef5120fc87f46dc64736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"finance/sales/ITieredSales":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ITieredSales","sourceName":"src/finance/sales/ITieredSales.sol","abi":[{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"eligibleForTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintByTier","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onTierAllowlist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"remainingForTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reservedMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"tierMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"tiers","outputs":[{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct ITieredSalesInternal.Tier","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReserved","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"name":"walletMintedByTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"finance/sales/ITieredSalesAdmin":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ITieredSalesAdmin","sourceName":"src/finance/sales/ITieredSalesAdmin.sol","abi":[{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct ITieredSalesInternal.Tier","name":"","type":"tuple"}],"name":"configureTiering","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct ITieredSalesInternal.Tier[]","name":"","type":"tuple[]"}],"name":"configureTiering","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"finance/sales/ITieredSalesInternal":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ITieredSalesInternal","sourceName":"src/finance/sales/ITieredSalesInternal.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"finance/sales/TieredSales":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"TieredSales","sourceName":"src/finance/sales/TieredSales.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"eligibleForTier","outputs":[{"internalType":"uint256","name":"maxMintable","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintByTier","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onTierAllowlist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"remainingForTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reservedMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"tierMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"tiers","outputs":[{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct ITieredSalesInternal.Tier","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReserved","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"name":"walletMintedByTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"finance/sales/TieredSalesERC2771":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"TieredSalesERC2771","sourceName":"src/finance/sales/TieredSalesERC2771.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"eligibleForTier","outputs":[{"internalType":"uint256","name":"maxMintable","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintByTier","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onTierAllowlist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"remainingForTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reservedMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"tierMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"tiers","outputs":[{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct ITieredSalesInternal.Tier","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReserved","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"name":"walletMintedByTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"finance/sales/TieredSalesInternal":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"TieredSalesInternal","sourceName":"src/finance/sales/TieredSalesInternal.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"finance/sales/TieredSalesOwnable":{"address":{"3":"0xe61cc06a7435EC72507c028a577BbAD42E67eAc1","4":"0x80b613989a974AD6877b163eE2fa59535d462F47","rinkeby":"0x80b613989a974AD6877b163eE2fa59535d462F47","ropsten":"0xe61cc06a7435EC72507c028a577BbAD42E67eAc1"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"TieredSalesOwnable","sourceName":"src/finance/sales/TieredSalesOwnable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct ITieredSalesInternal.Tier","name":"tier","type":"tuple"}],"name":"configureTiering","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tierIds","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct ITieredSalesInternal.Tier[]","name":"tiers","type":"tuple[]"}],"name":"configureTiering","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b50610654806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806320f1bb301461003b578063d8b436fd14610050575b600080fd5b61004e6100493660046103fa565b610063565b005b61004e61005e366004610434565b6100fc565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146100ee5760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064015b60405180910390fd5b6100f88282610194565b5050565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146101825760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016100e5565b61018e8484848461039c565b50505050565b60008281527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbe60205260409020547fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb9060e083013510156102375760405162461bcd60e51b815260206004820152601160248201527f4c4f5745525f5448414e5f4d494e54454400000000000000000000000000000060448201526064016100e5565b6000838152600282016020526040902060060154156102b457600083815260038201602052604090205460c083013510156102b45760405162461bcd60e51b815260206004820152601260248201527f4c4f575f524553455256455f414d4f554e54000000000000000000000000000060448201526064016100e5565b600083815260038201602052604090205415610331576000838152600282016020526040902060040154608083013510156103315760405162461bcd60e51b815260206004820152601260248201527f4c4f575f4d41585f5045525f57414c4c4554000000000000000000000000000060448201526064016100e5565b6000838152600282016020526040812060060154825490918391610356908490610512565b90915550506000838152600282016020526040902082906103778282610529565b9050508160c0013581600001600082825461039291906105d7565b9091555050505050565b60005b838110156103f3576103e18585838181106103bc576103bc6105ef565b905060200201358484848181106103d5576103d56105ef565b90506101000201610194565b806103eb81610605565b91505061039f565b5050505050565b60008082840361012081121561040f57600080fd5b83359250610100601f198201121561042657600080fd5b506020830190509250929050565b6000806000806040858703121561044a57600080fd5b843567ffffffffffffffff8082111561046257600080fd5b818701915087601f83011261047657600080fd5b81358181111561048557600080fd5b8860208260051b850101111561049a57600080fd5b6020928301965094509086013590808211156104b557600080fd5b818701915087601f8301126104c957600080fd5b8135818111156104d857600080fd5b8860208260081b85010111156104ed57600080fd5b95989497505060200194505050565b634e487b7160e01b600052601160045260246000fd5b600082821015610524576105246104fc565b500390565b8135815560208201356001820155604082013573ffffffffffffffffffffffffffffffffffffffff8116811461055e57600080fd5b6002820180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905550606082013560038201556080820135600482015560a0820135600582015560c0820135600682015560e082013560078201555050565b600082198211156105ea576105ea6104fc565b500190565b634e487b7160e01b600052603260045260246000fd5b600060018201610617576106176104fc565b506001019056fea26469706673582212209740d6fbbcdd8b947cba31731e9b368710a784eff21b52fd55c66bded186c32664736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c806320f1bb301461003b578063d8b436fd14610050575b600080fd5b61004e6100493660046103fa565b610063565b005b61004e61005e366004610434565b6100fc565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146100ee5760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064015b60405180910390fd5b6100f88282610194565b5050565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146101825760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016100e5565b61018e8484848461039c565b50505050565b60008281527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbe60205260409020547fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb9060e083013510156102375760405162461bcd60e51b815260206004820152601160248201527f4c4f5745525f5448414e5f4d494e54454400000000000000000000000000000060448201526064016100e5565b6000838152600282016020526040902060060154156102b457600083815260038201602052604090205460c083013510156102b45760405162461bcd60e51b815260206004820152601260248201527f4c4f575f524553455256455f414d4f554e54000000000000000000000000000060448201526064016100e5565b600083815260038201602052604090205415610331576000838152600282016020526040902060040154608083013510156103315760405162461bcd60e51b815260206004820152601260248201527f4c4f575f4d41585f5045525f57414c4c4554000000000000000000000000000060448201526064016100e5565b6000838152600282016020526040812060060154825490918391610356908490610512565b90915550506000838152600282016020526040902082906103778282610529565b9050508160c0013581600001600082825461039291906105d7565b9091555050505050565b60005b838110156103f3576103e18585838181106103bc576103bc6105ef565b905060200201358484848181106103d5576103d56105ef565b90506101000201610194565b806103eb81610605565b91505061039f565b5050505050565b60008082840361012081121561040f57600080fd5b83359250610100601f198201121561042657600080fd5b506020830190509250929050565b6000806000806040858703121561044a57600080fd5b843567ffffffffffffffff8082111561046257600080fd5b818701915087601f83011261047657600080fd5b81358181111561048557600080fd5b8860208260051b850101111561049a57600080fd5b6020928301965094509086013590808211156104b557600080fd5b818701915087601f8301126104c957600080fd5b8135818111156104d857600080fd5b8860208260081b85010111156104ed57600080fd5b95989497505060200194505050565b634e487b7160e01b600052601160045260246000fd5b600082821015610524576105246104fc565b500390565b8135815560208201356001820155604082013573ffffffffffffffffffffffffffffffffffffffff8116811461055e57600080fd5b6002820180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905550606082013560038201556080820135600482015560a0820135600582015560c0820135600682015560e082013560078201555050565b600082198211156105ea576105ea6104fc565b500190565b634e487b7160e01b600052603260045260246000fd5b600060018201610617576106176104fc565b506001019056fea26469706673582212209740d6fbbcdd8b947cba31731e9b368710a784eff21b52fd55c66bded186c32664736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"finance/sales/TieredSalesStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"TieredSalesStorage","sourceName":"src/finance/sales/TieredSalesStorage.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c01ad5c60383a6ddfcecb64824d48cd60e50fede8605cdfd55dc8b1cd00cc31164736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c01ad5c60383a6ddfcecb64824d48cd60e50fede8605cdfd55dc8b1cd00cc31164736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"introspection/ERC165":{"address":{"3":"0x4F9bf8f997b2Ce586f7Bc7a976aEBAc8D17312D3","4":"0x0A42B5Df15924b40fb98dedb0a0A9f3CC962c09E","rinkeby":"0x0A42B5Df15924b40fb98dedb0a0A9f3CC962c09E","ropsten":"0x4F9bf8f997b2Ce586f7Bc7a976aEBAc8D17312D3"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC165","sourceName":"src/introspection/ERC165.sol","abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b5061011f806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806301ffc9a714602d575b600080fd5b608e603836600460a2565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081527fff923f4a67695a9cdd5da4b8580a5a20edf2183c42aa111dd7fc15dc7bed2640602052604090205460ff1690565b604051901515815260200160405180910390f35b60006020828403121560b357600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811460e257600080fd5b939250505056fea2646970667358221220978c0f9d0ff751ebb5636f15644f255b2df4fde84b5657d3fc110466d7ccc52464736f6c634300080f0033","deployedBytecode":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c806301ffc9a714602d575b600080fd5b608e603836600460a2565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081527fff923f4a67695a9cdd5da4b8580a5a20edf2183c42aa111dd7fc15dc7bed2640602052604090205460ff1690565b604051901515815260200160405180910390f35b60006020828403121560b357600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811460e257600080fd5b939250505056fea2646970667358221220978c0f9d0ff751ebb5636f15644f255b2df4fde84b5657d3fc110466d7ccc52464736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"introspection/ERC165Ownable":{"address":{"3":"0xE07116Ab6e1599eF4991986D68E0377d705Ab455","4":"0xdd13cD39976d4Ae6c7Bb6F0333bB68Abcd0b8f88","rinkeby":"0xdd13cD39976d4Ae6c7Bb6F0333bB68Abcd0b8f88","ropsten":"0xE07116Ab6e1599eF4991986D68E0377d705Ab455"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC165Ownable","sourceName":"src/introspection/ERC165Ownable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"bytes4[]","name":"interfaceIds","type":"bytes4[]"},{"internalType":"bytes4[]","name":"interfaceIdsToRemove","type":"bytes4[]"}],"name":"setERC165","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506103f0806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80632a84809114610030575b600080fd5b61004361003e3660046102c8565b610045565b005b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146100e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e6572000000604482015260640160405180910390fd5b7f01ffc9a70000000000000000000000000000000000000000000000000000000060009081527fff923f4a67695a9cdd5da4b8580a5a20edf2183c42aa111dd7fc15dc7bed264060208190527fe1cd5a39bd0bb11debfd51073019ab01630b5cba823095c51b2463cd8445abf8805460ff19166001179055905b848110156101ea57600182600088888581811061018257610182610334565b9050602002016020810190610197919061034a565b7fffffffff000000000000000000000000000000000000000000000000000000001681526020810191909152604001600020805460ff1916911515919091179055806101e281610393565b915050610163565b5060005b82811015610274576000828186868581811061020c5761020c610334565b9050602002016020810190610221919061034a565b7fffffffff000000000000000000000000000000000000000000000000000000001681526020810191909152604001600020805460ff19169115159190911790558061026c81610393565b9150506101ee565b505050505050565b60008083601f84011261028e57600080fd5b50813567ffffffffffffffff8111156102a657600080fd5b6020830191508360208260051b85010111156102c157600080fd5b9250929050565b600080600080604085870312156102de57600080fd5b843567ffffffffffffffff808211156102f657600080fd5b6103028883890161027c565b9096509450602087013591508082111561031b57600080fd5b506103288782880161027c565b95989497509550505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561035c57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461038c57600080fd5b9392505050565b6000600182016103b357634e487b7160e01b600052601160045260246000fd5b506001019056fea264697066735822122073a69efeed33091ae3f263e0f10f05ffedabf51097fa3293ec1990c5a6b8f8b764736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80632a84809114610030575b600080fd5b61004361003e3660046102c8565b610045565b005b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146100e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e6572000000604482015260640160405180910390fd5b7f01ffc9a70000000000000000000000000000000000000000000000000000000060009081527fff923f4a67695a9cdd5da4b8580a5a20edf2183c42aa111dd7fc15dc7bed264060208190527fe1cd5a39bd0bb11debfd51073019ab01630b5cba823095c51b2463cd8445abf8805460ff19166001179055905b848110156101ea57600182600088888581811061018257610182610334565b9050602002016020810190610197919061034a565b7fffffffff000000000000000000000000000000000000000000000000000000001681526020810191909152604001600020805460ff1916911515919091179055806101e281610393565b915050610163565b5060005b82811015610274576000828186868581811061020c5761020c610334565b9050602002016020810190610221919061034a565b7fffffffff000000000000000000000000000000000000000000000000000000001681526020810191909152604001600020805460ff19169115159190911790558061026c81610393565b9150506101ee565b505050505050565b60008083601f84011261028e57600080fd5b50813567ffffffffffffffff8111156102a657600080fd5b6020830191508360208260051b85010111156102c157600080fd5b9250929050565b600080600080604085870312156102de57600080fd5b843567ffffffffffffffff808211156102f657600080fd5b6103028883890161027c565b9096509450602087013591508082111561031b57600080fd5b506103288782880161027c565b95989497509550505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561035c57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461038c57600080fd5b9392505050565b6000600182016103b357634e487b7160e01b600052601160045260246000fd5b506001019056fea264697066735822122073a69efeed33091ae3f263e0f10f05ffedabf51097fa3293ec1990c5a6b8f8b764736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"introspection/ERC165Storage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC165Storage","sourceName":"src/introspection/ERC165Storage.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220335575a17fdf013187b6fe327b5e16ec14c4a89ab9b738e4c6bc7c8639c847a864736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220335575a17fdf013187b6fe327b5e16ec14c4a89ab9b738e4c6bc7c8639c847a864736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"introspection/IERC165":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC165","sourceName":"src/introspection/IERC165.sol","abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"introspection/IERC165Admin":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC165Admin","sourceName":"src/introspection/IERC165Admin.sol","abi":[{"inputs":[{"internalType":"bytes4[]","name":"interfaceIds","type":"bytes4[]"},{"internalType":"bytes4[]","name":"interfaceIdsToRemove","type":"bytes4[]"}],"name":"setERC165","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"metatx/ERC2771Context":{"address":{"3":"0x4c4226c746c9ce072710f44d7ee8798c6f6dcffd","4":"0x84B454aC1e3f1CFE1551D86a5BECa645Ee1D8393","rinkeby":"0x84B454aC1e3f1CFE1551D86a5BECa645Ee1D8393","ropsten":"0x4c4226c746c9ce072710f44d7ee8798c6f6dcffd"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC2771Context","sourceName":"src/metatx/ERC2771Context.sol","abi":[{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b5060fd8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063572b6c0514602d575b600080fd5b60786038366004608c565b7fdb1d5e345c4903e9a32b6674ecc8b1deaddbbb2551474fb34c9d34becbe7f4205473ffffffffffffffffffffffffffffffffffffffff90811691161490565b604051901515815260200160405180910390f35b600060208284031215609d57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811460c057600080fd5b939250505056fea264697066735822122036045f6946f82eb62e22b239246a916163dfa7bda5f809f73e73ac0438e1ffa564736f6c634300080f0033","deployedBytecode":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063572b6c0514602d575b600080fd5b60786038366004608c565b7fdb1d5e345c4903e9a32b6674ecc8b1deaddbbb2551474fb34c9d34becbe7f4205473ffffffffffffffffffffffffffffffffffffffff90811691161490565b604051901515815260200160405180910390f35b600060208284031215609d57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811460c057600080fd5b939250505056fea264697066735822122036045f6946f82eb62e22b239246a916163dfa7bda5f809f73e73ac0438e1ffa564736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"metatx/ERC2771ContextInternal":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC2771ContextInternal","sourceName":"src/metatx/ERC2771ContextInternal.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"metatx/ERC2771ContextOwnable":{"address":{"3":"0xD89b756f2a891E99C1eC9FB452d99Fe1cd9C0876","4":"0x2FE6A1c703baAa73901E4e2D533e3F3A0cE29332","rinkeby":"0x2FE6A1c703baAa73901E4e2D533e3F3A0cE29332","ropsten":"0xD89b756f2a891E99C1eC9FB452d99Fe1cd9C0876"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC2771ContextOwnable","sourceName":"src/metatx/ERC2771ContextOwnable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"trustedForwarder","type":"address"}],"name":"setTrustedForwarder","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506101c2806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063da74222814610030575b600080fd5b61004361003e36600461014f565b610045565b005b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146100e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e6572000000604482015260640160405180910390fd5b7fdb1d5e345c4903e9a32b6674ecc8b1deaddbbb2551474fb34c9d34becbe7f42080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60006020828403121561016157600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461018557600080fd5b939250505056fea264697066735822122013fab626059dddf1e1ab5b6c661f17c68a6b37de16d9a867be3aedd0def9fa5a64736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063da74222814610030575b600080fd5b61004361003e36600461014f565b610045565b005b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146100e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e6572000000604482015260640160405180910390fd5b7fdb1d5e345c4903e9a32b6674ecc8b1deaddbbb2551474fb34c9d34becbe7f42080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60006020828403121561016157600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461018557600080fd5b939250505056fea264697066735822122013fab626059dddf1e1ab5b6c661f17c68a6b37de16d9a867be3aedd0def9fa5a64736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"metatx/ERC2771ContextStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC2771ContextStorage","sourceName":"src/metatx/ERC2771ContextStorage.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205dc5ec96f791de7c80b4c2e714402892061240872a4e3ee5e8d9227d97c29be564736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205dc5ec96f791de7c80b4c2e714402892061240872a4e3ee5e8d9227d97c29be564736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"metatx/IERC2771Context":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC2771Context","sourceName":"src/metatx/IERC2771Context.sol","abi":[{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"metatx/IERC2771ContextAdmin":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC2771ContextAdmin","sourceName":"src/metatx/IERC2771ContextAdmin.sol","abi":[{"inputs":[{"internalType":"address","name":"trustedForwarder","type":"address"}],"name":"setTrustedForwarder","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/access/AccessControl":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"AccessControl","sourceName":"contracts/access/AccessControl.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/access/AccessControlCrossChain":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"AccessControlCrossChain","sourceName":"contracts/access/AccessControlCrossChain.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"CROSSCHAIN_ALIAS","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/access/AccessControlEnumerable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"AccessControlEnumerable","sourceName":"contracts/access/AccessControlEnumerable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/access/IAccessControl":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IAccessControl","sourceName":"contracts/access/IAccessControl.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/access/IAccessControlEnumerable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IAccessControlEnumerable","sourceName":"contracts/access/IAccessControlEnumerable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/access/Ownable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Ownable","sourceName":"contracts/access/Ownable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/amb/CrossChainEnabledAMB":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"CrossChainEnabledAMB","sourceName":"contracts/crosschain/amb/CrossChainEnabledAMB.sol","abi":[{"inputs":[{"internalType":"address","name":"bridge","type":"address"}],"stateMutability":"nonpayable","type":"constructor"}],"bytecode":"0x60a0604052348015600f57600080fd5b5060405160bc38038060bc833981016040819052602a91603a565b6001600160a01b03166080526068565b600060208284031215604b57600080fd5b81516001600160a01b0381168114606157600080fd5b9392505050565b608051603f607d60003960005050603f6000f3fe6080604052600080fdfea26469706673582212209884bd67993706561c6e5b4d273a774582590b63288266669c10629930cb4ad664736f6c63430008090033","deployedBytecode":"0x6080604052600080fdfea26469706673582212209884bd67993706561c6e5b4d273a774582590b63288266669c10629930cb4ad664736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/amb/LibAMB":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"LibAMB","sourceName":"contracts/crosschain/amb/LibAMB.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220288fb1df8b52873fc67e1921066d5bc1566a8daea933ac55a279f2f8a2a2f6a864736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220288fb1df8b52873fc67e1921066d5bc1566a8daea933ac55a279f2f8a2a2f6a864736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/arbitrum/CrossChainEnabledArbitrumL1":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"CrossChainEnabledArbitrumL1","sourceName":"contracts/crosschain/arbitrum/CrossChainEnabledArbitrumL1.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/arbitrum/CrossChainEnabledArbitrumL2":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"CrossChainEnabledArbitrumL2","sourceName":"contracts/crosschain/arbitrum/CrossChainEnabledArbitrumL2.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/arbitrum/LibArbitrumL1":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"LibArbitrumL1","sourceName":"contracts/crosschain/arbitrum/LibArbitrumL1.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209f0010b404592d904745111d8cdd71c3be14fb9fede8338df2e9e52072d0ae6564736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209f0010b404592d904745111d8cdd71c3be14fb9fede8338df2e9e52072d0ae6564736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/arbitrum/LibArbitrumL2":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"LibArbitrumL2","sourceName":"contracts/crosschain/arbitrum/LibArbitrumL2.sol","abi":[{"inputs":[],"name":"ARBSYS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"bytecode":"0x6091610038600b82828239805160001a607314602b57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063bf0a12cf146038575b600080fd5b603f606481565b6040516001600160a01b03909116815260200160405180910390f3fea2646970667358221220ab77562c84149237fab25891fe1774b814b98c91e76d3514eed6eca6c576ce6864736f6c63430008090033","deployedBytecode":"0x730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063bf0a12cf146038575b600080fd5b603f606481565b6040516001600160a01b03909116815260200160405180910390f3fea2646970667358221220ab77562c84149237fab25891fe1774b814b98c91e76d3514eed6eca6c576ce6864736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/CrossChainEnabled":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"CrossChainEnabled","sourceName":"contracts/crosschain/CrossChainEnabled.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/optimism/CrossChainEnabledOptimism":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"CrossChainEnabledOptimism","sourceName":"contracts/crosschain/optimism/CrossChainEnabledOptimism.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/optimism/LibOptimism":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"LibOptimism","sourceName":"contracts/crosschain/optimism/LibOptimism.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209df9178eb2af42ed4c0dd55637a52437ad90595b04abc6b7ddea128c39a72cd464736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209df9178eb2af42ed4c0dd55637a52437ad90595b04abc6b7ddea128c39a72cd464736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/polygon/CrossChainEnabledPolygonChild":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"CrossChainEnabledPolygonChild","sourceName":"contracts/crosschain/polygon/CrossChainEnabledPolygonChild.sol","abi":[{"inputs":[],"name":"NotCrossChainCall","type":"error"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"rootMessageSender","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"processMessageFromRoot","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/finance/PaymentSplitter":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"PaymentSplitter","sourceName":"contracts/finance/PaymentSplitter.sol","abi":[{"inputs":[{"internalType":"address[]","name":"payees","type":"address[]"},{"internalType":"uint256[]","name":"shares_","type":"uint256[]"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ERC20PaymentReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"PayeeAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PaymentReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PaymentReleased","type":"event"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"payee","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"releasable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"releasable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"totalReleased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReleased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x6080604052604051620011f0380380620011f083398101604081905262000026916200042e565b8051825114620000985760405162461bcd60e51b815260206004820152603260248201527f5061796d656e7453706c69747465723a2070617965657320616e6420736861726044820152710cae640d8cadccee8d040dad2e6dac2e8c6d60731b60648201526084015b60405180910390fd5b6000825111620000eb5760405162461bcd60e51b815260206004820152601a60248201527f5061796d656e7453706c69747465723a206e6f2070617965657300000000000060448201526064016200008f565b60005b82518110156200015757620001428382815181106200011157620001116200050c565b60200260200101518383815181106200012e576200012e6200050c565b60200260200101516200016060201b60201c565b806200014e8162000538565b915050620000ee565b50505062000571565b6001600160a01b038216620001cd5760405162461bcd60e51b815260206004820152602c60248201527f5061796d656e7453706c69747465723a206163636f756e74206973207468652060448201526b7a65726f206164647265737360a01b60648201526084016200008f565b600081116200021f5760405162461bcd60e51b815260206004820152601d60248201527f5061796d656e7453706c69747465723a2073686172657320617265203000000060448201526064016200008f565b6001600160a01b038216600090815260026020526040902054156200029b5760405162461bcd60e51b815260206004820152602b60248201527f5061796d656e7453706c69747465723a206163636f756e7420616c726561647960448201526a206861732073686172657360a81b60648201526084016200008f565b60048054600181019091557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319166001600160a01b0384169081179091556000908152600260205260408120829055546200030390829062000556565b600055604080516001600160a01b0384168152602081018390527f40c340f65e17194d14ddddb073d3c9f888e3cb52b5aae0c6c7706b4fbc905fac910160405180910390a15050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156200038d576200038d6200034c565b604052919050565b60006001600160401b03821115620003b157620003b16200034c565b5060051b60200190565b600082601f830112620003cd57600080fd5b81516020620003e6620003e08362000395565b62000362565b82815260059290921b840181019181810190868411156200040657600080fd5b8286015b848110156200042357805183529183019183016200040a565b509695505050505050565b600080604083850312156200044257600080fd5b82516001600160401b03808211156200045a57600080fd5b818501915085601f8301126200046f57600080fd5b8151602062000482620003e08362000395565b82815260059290921b84018101918181019089841115620004a257600080fd5b948201945b83861015620004d95785516001600160a01b0381168114620004c95760008081fd5b82529482019490820190620004a7565b91880151919650909350505080821115620004f357600080fd5b506200050285828601620003bb565b9150509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156200054f576200054f62000522565b5060010190565b600082198211156200056c576200056c62000522565b500190565b610c6f80620005816000396000f3fe6080604052600436106100a05760003560e01c80639852595c116100645780639852595c146101d2578063a3f8eace14610208578063c45ac05014610228578063ce7c2ac214610248578063d79779b21461027e578063e33b7de3146102b457600080fd5b806319165587146100ee5780633a98ef3914610110578063406072a91461013457806348b750441461017a5780638b83209b1461019a57600080fd5b366100e9577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be77033604080516001600160a01b0390921682523460208301520160405180910390a1005b600080fd5b3480156100fa57600080fd5b5061010e6101093660046109e3565b6102c9565b005b34801561011c57600080fd5b506000545b6040519081526020015b60405180910390f35b34801561014057600080fd5b5061012161014f366004610a00565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561018657600080fd5b5061010e610195366004610a00565b6103c8565b3480156101a657600080fd5b506101ba6101b5366004610a39565b6104e8565b6040516001600160a01b03909116815260200161012b565b3480156101de57600080fd5b506101216101ed3660046109e3565b6001600160a01b031660009081526003602052604090205490565b34801561021457600080fd5b506101216102233660046109e3565b610518565b34801561023457600080fd5b50610121610243366004610a00565b610560565b34801561025457600080fd5b506101216102633660046109e3565b6001600160a01b031660009081526002602052604090205490565b34801561028a57600080fd5b506101216102993660046109e3565b6001600160a01b031660009081526005602052604090205490565b3480156102c057600080fd5b50600154610121565b6001600160a01b0381166000908152600260205260409020546103075760405162461bcd60e51b81526004016102fe90610a52565b60405180910390fd5b600061031282610518565b9050806103315760405162461bcd60e51b81526004016102fe90610a98565b6001600160a01b03821660009081526003602052604081208054839290610359908490610af9565b9250508190555080600160008282546103729190610af9565b909155506103829050828261063a565b604080516001600160a01b0384168152602081018390527fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b056910160405180910390a15050565b6001600160a01b0381166000908152600260205260409020546103fd5760405162461bcd60e51b81526004016102fe90610a52565b60006104098383610560565b9050806104285760405162461bcd60e51b81526004016102fe90610a98565b6001600160a01b0380841660009081526006602090815260408083209386168352929052908120805483929061045f908490610af9565b90915550506001600160a01b0383166000908152600560205260408120805483929061048c908490610af9565b9091555061049d9050838383610758565b604080516001600160a01b038481168252602082018490528516917f3be5b7a71e84ed12875d241991c70855ac5817d847039e17a9d895c1ceb0f18a910160405180910390a2505050565b6000600482815481106104fd576104fd610b11565b6000918252602090912001546001600160a01b031692915050565b60008061052460015490565b61052e9047610af9565b90506105598382610554866001600160a01b031660009081526003602052604090205490565b6107aa565b9392505050565b6001600160a01b03821660009081526005602052604081205481906040516370a0823160e01b81523060048201526001600160a01b038616906370a082319060240160206040518083038186803b1580156105ba57600080fd5b505afa1580156105ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f29190610b27565b6105fc9190610af9565b6001600160a01b0380861660009081526006602090815260408083209388168352929052205490915061063290849083906107aa565b949350505050565b8047101561068a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016102fe565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146106d7576040519150601f19603f3d011682016040523d82523d6000602084013e6106dc565b606091505b50509050806107535760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016102fe565b505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526107539084906107e5565b600080546001600160a01b0385168252600260205260408220548391906107d19086610b40565b6107db9190610b5f565b6106329190610b81565b600061083a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166108b79092919063ffffffff16565b80519091501561075357808060200190518101906108589190610b98565b6107535760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102fe565b60606106328484600085856001600160a01b0385163b6109195760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102fe565b600080866001600160a01b031685876040516109359190610bea565b60006040518083038185875af1925050503d8060008114610972576040519150601f19603f3d011682016040523d82523d6000602084013e610977565b606091505b5091509150610987828286610992565b979650505050505050565b606083156109a1575081610559565b8251156109b15782518084602001fd5b8160405162461bcd60e51b81526004016102fe9190610c06565b6001600160a01b03811681146109e057600080fd5b50565b6000602082840312156109f557600080fd5b8135610559816109cb565b60008060408385031215610a1357600080fd5b8235610a1e816109cb565b91506020830135610a2e816109cb565b809150509250929050565b600060208284031215610a4b57600080fd5b5035919050565b60208082526026908201527f5061796d656e7453706c69747465723a206163636f756e7420686173206e6f2060408201526573686172657360d01b606082015260800190565b6020808252602b908201527f5061796d656e7453706c69747465723a206163636f756e74206973206e6f742060408201526a191d59481c185e5b595b9d60aa1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115610b0c57610b0c610ae3565b500190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610b3957600080fd5b5051919050565b6000816000190483118215151615610b5a57610b5a610ae3565b500290565b600082610b7c57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015610b9357610b93610ae3565b500390565b600060208284031215610baa57600080fd5b8151801515811461055957600080fd5b60005b83811015610bd5578181015183820152602001610bbd565b83811115610be4576000848401525b50505050565b60008251610bfc818460208701610bba565b9190910192915050565b6020815260008251806020840152610c25816040850160208701610bba565b601f01601f1916919091016040019291505056fea2646970667358221220cf59afca0f8e649fbe17743ba4f9050bac27a9e528709aca4fc303dd4caafd6164736f6c63430008090033","deployedBytecode":"0x6080604052600436106100a05760003560e01c80639852595c116100645780639852595c146101d2578063a3f8eace14610208578063c45ac05014610228578063ce7c2ac214610248578063d79779b21461027e578063e33b7de3146102b457600080fd5b806319165587146100ee5780633a98ef3914610110578063406072a91461013457806348b750441461017a5780638b83209b1461019a57600080fd5b366100e9577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be77033604080516001600160a01b0390921682523460208301520160405180910390a1005b600080fd5b3480156100fa57600080fd5b5061010e6101093660046109e3565b6102c9565b005b34801561011c57600080fd5b506000545b6040519081526020015b60405180910390f35b34801561014057600080fd5b5061012161014f366004610a00565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561018657600080fd5b5061010e610195366004610a00565b6103c8565b3480156101a657600080fd5b506101ba6101b5366004610a39565b6104e8565b6040516001600160a01b03909116815260200161012b565b3480156101de57600080fd5b506101216101ed3660046109e3565b6001600160a01b031660009081526003602052604090205490565b34801561021457600080fd5b506101216102233660046109e3565b610518565b34801561023457600080fd5b50610121610243366004610a00565b610560565b34801561025457600080fd5b506101216102633660046109e3565b6001600160a01b031660009081526002602052604090205490565b34801561028a57600080fd5b506101216102993660046109e3565b6001600160a01b031660009081526005602052604090205490565b3480156102c057600080fd5b50600154610121565b6001600160a01b0381166000908152600260205260409020546103075760405162461bcd60e51b81526004016102fe90610a52565b60405180910390fd5b600061031282610518565b9050806103315760405162461bcd60e51b81526004016102fe90610a98565b6001600160a01b03821660009081526003602052604081208054839290610359908490610af9565b9250508190555080600160008282546103729190610af9565b909155506103829050828261063a565b604080516001600160a01b0384168152602081018390527fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b056910160405180910390a15050565b6001600160a01b0381166000908152600260205260409020546103fd5760405162461bcd60e51b81526004016102fe90610a52565b60006104098383610560565b9050806104285760405162461bcd60e51b81526004016102fe90610a98565b6001600160a01b0380841660009081526006602090815260408083209386168352929052908120805483929061045f908490610af9565b90915550506001600160a01b0383166000908152600560205260408120805483929061048c908490610af9565b9091555061049d9050838383610758565b604080516001600160a01b038481168252602082018490528516917f3be5b7a71e84ed12875d241991c70855ac5817d847039e17a9d895c1ceb0f18a910160405180910390a2505050565b6000600482815481106104fd576104fd610b11565b6000918252602090912001546001600160a01b031692915050565b60008061052460015490565b61052e9047610af9565b90506105598382610554866001600160a01b031660009081526003602052604090205490565b6107aa565b9392505050565b6001600160a01b03821660009081526005602052604081205481906040516370a0823160e01b81523060048201526001600160a01b038616906370a082319060240160206040518083038186803b1580156105ba57600080fd5b505afa1580156105ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f29190610b27565b6105fc9190610af9565b6001600160a01b0380861660009081526006602090815260408083209388168352929052205490915061063290849083906107aa565b949350505050565b8047101561068a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016102fe565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146106d7576040519150601f19603f3d011682016040523d82523d6000602084013e6106dc565b606091505b50509050806107535760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016102fe565b505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526107539084906107e5565b600080546001600160a01b0385168252600260205260408220548391906107d19086610b40565b6107db9190610b5f565b6106329190610b81565b600061083a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166108b79092919063ffffffff16565b80519091501561075357808060200190518101906108589190610b98565b6107535760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102fe565b60606106328484600085856001600160a01b0385163b6109195760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102fe565b600080866001600160a01b031685876040516109359190610bea565b60006040518083038185875af1925050503d8060008114610972576040519150601f19603f3d011682016040523d82523d6000602084013e610977565b606091505b5091509150610987828286610992565b979650505050505050565b606083156109a1575081610559565b8251156109b15782518084602001fd5b8160405162461bcd60e51b81526004016102fe9190610c06565b6001600160a01b03811681146109e057600080fd5b50565b6000602082840312156109f557600080fd5b8135610559816109cb565b60008060408385031215610a1357600080fd5b8235610a1e816109cb565b91506020830135610a2e816109cb565b809150509250929050565b600060208284031215610a4b57600080fd5b5035919050565b60208082526026908201527f5061796d656e7453706c69747465723a206163636f756e7420686173206e6f2060408201526573686172657360d01b606082015260800190565b6020808252602b908201527f5061796d656e7453706c69747465723a206163636f756e74206973206e6f742060408201526a191d59481c185e5b595b9d60aa1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115610b0c57610b0c610ae3565b500190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610b3957600080fd5b5051919050565b6000816000190483118215151615610b5a57610b5a610ae3565b500290565b600082610b7c57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015610b9357610b93610ae3565b500390565b600060208284031215610baa57600080fd5b8151801515811461055957600080fd5b60005b83811015610bd5578181015183820152602001610bbd565b83811115610be4576000848401525b50505050565b60008251610bfc818460208701610bba565b9190910192915050565b6020815260008251806020840152610c25816040850160208701610bba565b601f01601f1916919091016040019291505056fea2646970667358221220cf59afca0f8e649fbe17743ba4f9050bac27a9e528709aca4fc303dd4caafd6164736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/finance/VestingWallet":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"VestingWallet","sourceName":"contracts/finance/VestingWallet.sol","abi":[{"inputs":[{"internalType":"address","name":"beneficiaryAddress","type":"address"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"},{"internalType":"uint64","name":"durationSeconds","type":"uint64"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ERC20Released","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EtherReleased","type":"event"},{"inputs":[],"name":"beneficiary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"duration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"start","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"timestamp","type":"uint64"}],"name":"vestedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint64","name":"timestamp","type":"uint64"}],"name":"vestedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x60e060405234801561001057600080fd5b50604051610c80380380610c8083398101604081905261002f916100dd565b6001600160a01b03831661009c5760405162461bcd60e51b815260206004820152602a60248201527f56657374696e6757616c6c65743a2062656e6566696369617279206973207a65604482015269726f206164647265737360b01b606482015260840160405180910390fd5b6001600160a01b039092166080526001600160401b0390811660a0521660c05261012e565b80516001600160401b03811681146100d857600080fd5b919050565b6000806000606084860312156100f257600080fd5b83516001600160a01b038116811461010957600080fd5b9250610117602085016100c1565b9150610125604085016100c1565b90509250925092565b60805160a05160c051610b086101786000396000818160d80152818161047801526104cd01526000610430015260008181610142015281816102c801526103fd0152610b086000f3fe60806040526004361061008a5760003560e01c8063810ec23b11610059578063810ec23b1461016c57806386d1a69f1461018c57806396132521146101a15780639852595c146101b6578063be9a6555146101ec57600080fd5b80630a17b06b146100965780630fb5a6b4146100c9578063191655871461010657806338af3eed1461012857600080fd5b3661009157005b600080fd5b3480156100a257600080fd5b506100b66100b1366004610912565b610201565b6040519081526020015b60405180910390f35b3480156100d557600080fd5b507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166100b6565b34801561011257600080fd5b50610126610121366004610944565b610225565b005b34801561013457600080fd5b506040516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681526020016100c0565b34801561017857600080fd5b506100b661018736600461095f565b6102f1565b34801561019857600080fd5b50610126610396565b3480156101ad57600080fd5b506000546100b6565b3480156101c257600080fd5b506100b66101d1366004610944565b6001600160a01b031660009081526001602052604090205490565b3480156101f857600080fd5b506100b6610425565b600061021f61020f60005490565b61021990476109a8565b83610453565b92915050565b6001600160a01b03811660009081526001602052604081205461024883426102f1565b61025291906109c0565b6001600160a01b03831660009081526001602052604081208054929350839290919061027f9084906109a8565b90915550506040518181526001600160a01b038316907fc0e523490dd523c33b1878c9eb14ff46991e3f5b2cd33710918618f2a39cba1b9060200160405180910390a26102ed827f00000000000000000000000000000000000000000000000000000000000000008361052d565b5050565b6001600160a01b03821660009081526001602052604081205461038f906040516370a0823160e01b81523060048201526001600160a01b038616906370a082319060240160206040518083038186803b15801561034d57600080fd5b505afa158015610361573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038591906109d7565b61021991906109a8565b9392505050565b600080546103a342610201565b6103ad91906109c0565b9050806000808282546103c091906109a8565b90915550506040518181527fda9d4e5f101b8b9b1c5b76d0c5a9f7923571acfc02376aa076b75a8c080c956b9060200160405180910390a16104227f000000000000000000000000000000000000000000000000000000000000000082610584565b50565b67ffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690565b600061045d610425565b8267ffffffffffffffff1610156104765750600061021f565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166104a9610425565b6104b391906109a8565b8267ffffffffffffffff1611156104cb57508161021f565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166104fe610425565b6105129067ffffffffffffffff85166109c0565b61051c90856109f0565b6105269190610a0f565b905061021f565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261057f9084906106a2565b505050565b804710156105d95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064015b60405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610626576040519150601f19603f3d011682016040523d82523d6000602084013e61062b565b606091505b505090508061057f5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016105d0565b60006106f7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166107749092919063ffffffff16565b80519091501561057f57808060200190518101906107159190610a31565b61057f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105d0565b6060610783848460008561078b565b949350505050565b6060824710156107ec5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105d0565b6001600160a01b0385163b6108435760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105d0565b600080866001600160a01b0316858760405161085f9190610a83565b60006040518083038185875af1925050503d806000811461089c576040519150601f19603f3d011682016040523d82523d6000602084013e6108a1565b606091505b50915091506108b18282866108bc565b979650505050505050565b606083156108cb57508161038f565b8251156108db5782518084602001fd5b8160405162461bcd60e51b81526004016105d09190610a9f565b803567ffffffffffffffff8116811461090d57600080fd5b919050565b60006020828403121561092457600080fd5b61038f826108f5565b80356001600160a01b038116811461090d57600080fd5b60006020828403121561095657600080fd5b61038f8261092d565b6000806040838503121561097257600080fd5b61097b8361092d565b9150610989602084016108f5565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600082198211156109bb576109bb610992565b500190565b6000828210156109d2576109d2610992565b500390565b6000602082840312156109e957600080fd5b5051919050565b6000816000190483118215151615610a0a57610a0a610992565b500290565b600082610a2c57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215610a4357600080fd5b8151801515811461038f57600080fd5b60005b83811015610a6e578181015183820152602001610a56565b83811115610a7d576000848401525b50505050565b60008251610a95818460208701610a53565b9190910192915050565b6020815260008251806020840152610abe816040850160208701610a53565b601f01601f1916919091016040019291505056fea26469706673582212207e34db421ed46cfdfe338874d49b916829ef192db0d987f18967ebdc0494b3c964736f6c63430008090033","deployedBytecode":"0x60806040526004361061008a5760003560e01c8063810ec23b11610059578063810ec23b1461016c57806386d1a69f1461018c57806396132521146101a15780639852595c146101b6578063be9a6555146101ec57600080fd5b80630a17b06b146100965780630fb5a6b4146100c9578063191655871461010657806338af3eed1461012857600080fd5b3661009157005b600080fd5b3480156100a257600080fd5b506100b66100b1366004610912565b610201565b6040519081526020015b60405180910390f35b3480156100d557600080fd5b507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166100b6565b34801561011257600080fd5b50610126610121366004610944565b610225565b005b34801561013457600080fd5b506040516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681526020016100c0565b34801561017857600080fd5b506100b661018736600461095f565b6102f1565b34801561019857600080fd5b50610126610396565b3480156101ad57600080fd5b506000546100b6565b3480156101c257600080fd5b506100b66101d1366004610944565b6001600160a01b031660009081526001602052604090205490565b3480156101f857600080fd5b506100b6610425565b600061021f61020f60005490565b61021990476109a8565b83610453565b92915050565b6001600160a01b03811660009081526001602052604081205461024883426102f1565b61025291906109c0565b6001600160a01b03831660009081526001602052604081208054929350839290919061027f9084906109a8565b90915550506040518181526001600160a01b038316907fc0e523490dd523c33b1878c9eb14ff46991e3f5b2cd33710918618f2a39cba1b9060200160405180910390a26102ed827f00000000000000000000000000000000000000000000000000000000000000008361052d565b5050565b6001600160a01b03821660009081526001602052604081205461038f906040516370a0823160e01b81523060048201526001600160a01b038616906370a082319060240160206040518083038186803b15801561034d57600080fd5b505afa158015610361573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038591906109d7565b61021991906109a8565b9392505050565b600080546103a342610201565b6103ad91906109c0565b9050806000808282546103c091906109a8565b90915550506040518181527fda9d4e5f101b8b9b1c5b76d0c5a9f7923571acfc02376aa076b75a8c080c956b9060200160405180910390a16104227f000000000000000000000000000000000000000000000000000000000000000082610584565b50565b67ffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690565b600061045d610425565b8267ffffffffffffffff1610156104765750600061021f565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166104a9610425565b6104b391906109a8565b8267ffffffffffffffff1611156104cb57508161021f565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166104fe610425565b6105129067ffffffffffffffff85166109c0565b61051c90856109f0565b6105269190610a0f565b905061021f565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261057f9084906106a2565b505050565b804710156105d95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064015b60405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610626576040519150601f19603f3d011682016040523d82523d6000602084013e61062b565b606091505b505090508061057f5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016105d0565b60006106f7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166107749092919063ffffffff16565b80519091501561057f57808060200190518101906107159190610a31565b61057f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105d0565b6060610783848460008561078b565b949350505050565b6060824710156107ec5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105d0565b6001600160a01b0385163b6108435760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105d0565b600080866001600160a01b0316858760405161085f9190610a83565b60006040518083038185875af1925050503d806000811461089c576040519150601f19603f3d011682016040523d82523d6000602084013e6108a1565b606091505b50915091506108b18282866108bc565b979650505050505050565b606083156108cb57508161038f565b8251156108db5782518084602001fd5b8160405162461bcd60e51b81526004016105d09190610a9f565b803567ffffffffffffffff8116811461090d57600080fd5b919050565b60006020828403121561092457600080fd5b61038f826108f5565b80356001600160a01b038116811461090d57600080fd5b60006020828403121561095657600080fd5b61038f8261092d565b6000806040838503121561097257600080fd5b61097b8361092d565b9150610989602084016108f5565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600082198211156109bb576109bb610992565b500190565b6000828210156109d2576109d2610992565b500390565b6000602082840312156109e957600080fd5b5051919050565b6000816000190483118215151615610a0a57610a0a610992565b500290565b600082610a2c57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215610a4357600080fd5b8151801515811461038f57600080fd5b60005b83811015610a6e578181015183820152602001610a56565b83811115610a7d576000848401525b50505050565b60008251610a95818460208701610a53565b9190910192915050565b6020815260008251806020840152610abe816040850160208701610a53565b601f01601f1916919091016040019291505056fea26469706673582212207e34db421ed46cfdfe338874d49b916829ef192db0d987f18967ebdc0494b3c964736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/compatibility/GovernorCompatibilityBravo":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorCompatibilityBravo","sourceName":"contracts/governance/compatibility/GovernorCompatibilityBravo.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ProposalQueued","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"getActions","outputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"voter","type":"address"}],"name":"getReceipt","outputs":[{"components":[{"internalType":"bool","name":"hasVoted","type":"bool"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint96","name":"votes","type":"uint96"}],"internalType":"struct IGovernorCompatibilityBravo.Receipt","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalEta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint256","name":"eta","type":"uint256"},{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"uint256","name":"endBlock","type":"uint256"},{"internalType":"uint256","name":"forVotes","type":"uint256"},{"internalType":"uint256","name":"againstVotes","type":"uint256"},{"internalType":"uint256","name":"abstainVotes","type":"uint256"},{"internalType":"bool","name":"canceled","type":"bool"},{"internalType":"bool","name":"executed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"queue","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"queue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quorumVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"timelock","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/compatibility/IGovernorCompatibilityBravo":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IGovernorCompatibilityBravo","sourceName":"contracts/governance/compatibility/IGovernorCompatibilityBravo.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"getActions","outputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"voter","type":"address"}],"name":"getReceipt","outputs":[{"components":[{"internalType":"bool","name":"hasVoted","type":"bool"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint96","name":"votes","type":"uint96"}],"internalType":"struct IGovernorCompatibilityBravo.Receipt","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint256","name":"eta","type":"uint256"},{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"uint256","name":"endBlock","type":"uint256"},{"internalType":"uint256","name":"forVotes","type":"uint256"},{"internalType":"uint256","name":"againstVotes","type":"uint256"},{"internalType":"uint256","name":"abstainVotes","type":"uint256"},{"internalType":"bool","name":"canceled","type":"bool"},{"internalType":"bool","name":"executed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"queue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quorumVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorCountingSimple":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorCountingSimple","sourceName":"contracts/governance/extensions/GovernorCountingSimple.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalVotes","outputs":[{"internalType":"uint256","name":"againstVotes","type":"uint256"},{"internalType":"uint256","name":"forVotes","type":"uint256"},{"internalType":"uint256","name":"abstainVotes","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorPreventLateQuorum":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorPreventLateQuorum","sourceName":"contracts/governance/extensions/GovernorPreventLateQuorum.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"oldVoteExtension","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"newVoteExtension","type":"uint64"}],"name":"LateQuorumVoteExtensionSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint64","name":"extendedDeadline","type":"uint64"}],"name":"ProposalExtended","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"lateQuorumVoteExtension","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newVoteExtension","type":"uint64"}],"name":"setLateQuorumVoteExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorProposalThreshold":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorProposalThreshold","sourceName":"contracts/governance/extensions/GovernorProposalThreshold.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorSettings":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorSettings","sourceName":"contracts/governance/extensions/GovernorSettings.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldProposalThreshold","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newProposalThreshold","type":"uint256"}],"name":"ProposalThresholdSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldVotingDelay","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newVotingDelay","type":"uint256"}],"name":"VotingDelaySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldVotingPeriod","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newVotingPeriod","type":"uint256"}],"name":"VotingPeriodSet","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newProposalThreshold","type":"uint256"}],"name":"setProposalThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVotingDelay","type":"uint256"}],"name":"setVotingDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVotingPeriod","type":"uint256"}],"name":"setVotingPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorTimelockCompound":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorTimelockCompound","sourceName":"contracts/governance/extensions/GovernorTimelockCompound.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ProposalQueued","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldTimelock","type":"address"},{"indexed":false,"internalType":"address","name":"newTimelock","type":"address"}],"name":"TimelockChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"__acceptAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalEta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"queue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"timelock","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ICompoundTimelock","name":"newTimelock","type":"address"}],"name":"updateTimelock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorTimelockControl":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorTimelockControl","sourceName":"contracts/governance/extensions/GovernorTimelockControl.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ProposalQueued","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldTimelock","type":"address"},{"indexed":false,"internalType":"address","name":"newTimelock","type":"address"}],"name":"TimelockChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalEta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"queue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"timelock","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract TimelockController","name":"newTimelock","type":"address"}],"name":"updateTimelock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorVotes":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorVotes","sourceName":"contracts/governance/extensions/GovernorVotes.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"token","outputs":[{"internalType":"contract IVotes","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorVotesComp":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorVotesComp","sourceName":"contracts/governance/extensions/GovernorVotesComp.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"token","outputs":[{"internalType":"contract ERC20VotesComp","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorVotesQuorumFraction":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorVotesQuorumFraction","sourceName":"contracts/governance/extensions/GovernorVotesQuorumFraction.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldQuorumNumerator","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newQuorumNumerator","type":"uint256"}],"name":"QuorumNumeratorUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quorumDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorumNumerator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quorumNumerator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"token","outputs":[{"internalType":"contract IVotes","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newQuorumNumerator","type":"uint256"}],"name":"updateQuorumNumerator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/IGovernorTimelock":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IGovernorTimelock","sourceName":"contracts/governance/extensions/IGovernorTimelock.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ProposalQueued","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalEta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"queue","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"timelock","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/Governor":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Governor","sourceName":"contracts/governance/Governor.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/IGovernor":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IGovernor","sourceName":"contracts/governance/IGovernor.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/TimelockController":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"TimelockController","sourceName":"contracts/governance/TimelockController.sol","abi":[{"inputs":[{"internalType":"uint256","name":"minDelay","type":"uint256"},{"internalType":"address[]","name":"proposers","type":"address[]"},{"internalType":"address[]","name":"executors","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"CallExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"delay","type":"uint256"}],"name":"CallScheduled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"Cancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldDuration","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newDuration","type":"uint256"}],"name":"MinDelayChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"CANCELLER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EXECUTOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROPOSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TIMELOCK_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"payloads","type":"bytes[]"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"executeBatch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getMinDelay","outputs":[{"internalType":"uint256","name":"duration","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"getTimestamp","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"hashOperation","outputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"payloads","type":"bytes[]"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"hashOperationBatch","outputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"isOperation","outputs":[{"internalType":"bool","name":"registered","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"isOperationDone","outputs":[{"internalType":"bool","name":"done","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"isOperationPending","outputs":[{"internalType":"bool","name":"pending","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"isOperationReady","outputs":[{"internalType":"bool","name":"ready","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"delay","type":"uint256"}],"name":"schedule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"payloads","type":"bytes[]"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"delay","type":"uint256"}],"name":"scheduleBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newDelay","type":"uint256"}],"name":"updateDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x60806040523480156200001157600080fd5b50604051620022fb380380620022fb8339810160408190526200003491620003f7565b6200004f6000805160206200227b833981519152806200021c565b620000796000805160206200229b8339815191526000805160206200227b8339815191526200021c565b620000a3600080516020620022bb8339815191526000805160206200227b8339815191526200021c565b620000cd600080516020620022db8339815191526000805160206200227b8339815191526200021c565b620000e86000805160206200227b8339815191523362000267565b620001036000805160206200227b8339815191523062000267565b60005b825181101562000189576200014d6000805160206200229b8339815191528483815181106200013957620001396200046b565b60200260200101516200026760201b60201c565b62000176600080516020620022db8339815191528483815181106200013957620001396200046b565b620001818162000481565b905062000106565b5060005b8151811015620001d357620001c0600080516020620022bb8339815191528383815181106200013957620001396200046b565b620001cb8162000481565b90506200018d565b5060028390556040805160008152602081018590527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1505050620004ab565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b62000273828262000277565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000273576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620002d33390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200034557600080fd5b919050565b600082601f8301126200035c57600080fd5b815160206001600160401b03808311156200037b576200037b62000317565b8260051b604051601f19603f83011681018181108482111715620003a357620003a362000317565b604052938452858101830193838101925087851115620003c257600080fd5b83870191505b84821015620003ec57620003dc826200032d565b83529183019190830190620003c8565b979650505050505050565b6000806000606084860312156200040d57600080fd5b835160208501519093506001600160401b03808211156200042d57600080fd5b6200043b878388016200034a565b935060408601519150808211156200045257600080fd5b5062000461868287016200034a565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b6000600019821415620004a457634e487b7160e01b600052601160045260246000fd5b5060010190565b611dc080620004bb6000396000f3fe6080604052600436106101bb5760003560e01c80638065657f116100ec578063bc197c811161008a578063d547741f11610064578063d547741f14610582578063e38335e5146105a2578063f23a6e61146105b5578063f27a0c92146105e157600080fd5b8063bc197c8114610509578063c4d252f514610535578063d45c44351461055557600080fd5b806391d14854116100c657806391d1485414610480578063a217fddf146104a0578063b08e51c0146104b5578063b1c5f427146104e957600080fd5b80638065657f1461040c5780638f2a0bb01461042c5780638f61f4f51461044c57600080fd5b8063248a9ca31161015957806331d507501161013357806331d507501461038c57806336568abe146103ac578063584b153e146103cc57806364d62353146103ec57600080fd5b8063248a9ca31461030b5780632ab0f5291461033b5780632f2ff15d1461036c57600080fd5b80630d3cf6fc116101955780630d3cf6fc14610260578063134008d31461029457806313bc9f20146102a7578063150b7a02146102c757600080fd5b806301d5062a146101c757806301ffc9a7146101e957806307bd02651461021e57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101e76101e23660046113b9565b6105f6565b005b3480156101f557600080fd5b5061020961020436600461142d565b61068b565b60405190151581526020015b60405180910390f35b34801561022a57600080fd5b506102527fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610215565b34801561026c57600080fd5b506102527f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b6101e76102a2366004611457565b6106b6565b3480156102b357600080fd5b506102096102c23660046114c2565b61076b565b3480156102d357600080fd5b506102f26102e2366004611590565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610215565b34801561031757600080fd5b506102526103263660046114c2565b60009081526020819052604090206001015490565b34801561034757600080fd5b506102096103563660046114c2565b6000908152600160208190526040909120541490565b34801561037857600080fd5b506101e76103873660046115f7565b610791565b34801561039857600080fd5b506102096103a73660046114c2565b6107bb565b3480156103b857600080fd5b506101e76103c73660046115f7565b6107d4565b3480156103d857600080fd5b506102096103e73660046114c2565b610857565b3480156103f857600080fd5b506101e76104073660046114c2565b61086d565b34801561041857600080fd5b50610252610427366004611457565b610911565b34801561043857600080fd5b506101e7610447366004611667565b610950565b34801561045857600080fd5b506102527fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b34801561048c57600080fd5b5061020961049b3660046115f7565b610aa2565b3480156104ac57600080fd5b50610252600081565b3480156104c157600080fd5b506102527ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104f557600080fd5b50610252610504366004611718565b610acb565b34801561051557600080fd5b506102f261052436600461183f565b63bc197c8160e01b95945050505050565b34801561054157600080fd5b506101e76105503660046114c2565b610b10565b34801561056157600080fd5b506102526105703660046114c2565b60009081526001602052604090205490565b34801561058e57600080fd5b506101e761059d3660046115f7565b610be5565b6101e76105b0366004611718565b610c0a565b3480156105c157600080fd5b506102f26105d03660046118e8565b63f23a6e6160e01b95945050505050565b3480156105ed57600080fd5b50600254610252565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161062081610d94565b6000610630898989898989610911565b905061063c8184610da1565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a60405161067896959493929190611975565b60405180910390a3505050505050505050565b60006001600160e01b03198216630271189760e51b14806106b057506106b082610e90565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636106e2816000610aa2565b6106f0576106f08133610ec5565b6000610700888888888888610911565b905061070c8185610f29565b61071888888888610fc5565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161075094939291906119b2565b60405180910390a361076181611098565b5050505050505050565b60008181526001602052604081205460018111801561078a5750428111155b9392505050565b6000828152602081905260409020600101546107ac81610d94565b6107b683836110d1565b505050565b60008181526001602052604081205481905b1192915050565b6001600160a01b03811633146108495760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6108538282611155565b5050565b60008181526001602081905260408220546107cd565b3330146108d05760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b6064820152608401610840565b60025460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1600255565b600086868686868660405160200161092e96959493929190611975565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161097a81610d94565b8887146109995760405162461bcd60e51b8152600401610840906119e4565b8885146109b85760405162461bcd60e51b8152600401610840906119e4565b60006109ca8b8b8b8b8b8b8b8b610acb565b90506109d68184610da1565b60005b8a811015610a945780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a1657610a16611a27565b9050602002016020810190610a2b9190611a3d565b8d8d86818110610a3d57610a3d611a27565b905060200201358c8c87818110610a5657610a56611a27565b9050602002810190610a689190611a58565b8c8b604051610a7c96959493929190611975565b60405180910390a3610a8d81611ab4565b90506109d9565b505050505050505050505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60008888888888888888604051602001610aec989796959493929190611b5f565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610b3a81610d94565b610b4382610857565b610ba95760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b6064820152608401610840565b6000828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260208190526040902060010154610c0081610d94565b6107b68383611155565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610c36816000610aa2565b610c4457610c448133610ec5565b878614610c635760405162461bcd60e51b8152600401610840906119e4565b878414610c825760405162461bcd60e51b8152600401610840906119e4565b6000610c948a8a8a8a8a8a8a8a610acb565b9050610ca08185610f29565b60005b89811015610d7e5760008b8b83818110610cbf57610cbf611a27565b9050602002016020810190610cd49190611a3d565b905060008a8a84818110610cea57610cea611a27565b9050602002013590503660008a8a86818110610d0857610d08611a27565b9050602002810190610d1a9190611a58565b91509150610d2a84848484610fc5565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610d6194939291906119b2565b60405180910390a35050505080610d7790611ab4565b9050610ca3565b50610d8881611098565b50505050505050505050565b610d9e8133610ec5565b50565b610daa826107bb565b15610e0f5760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b6064820152608401610840565b600254811015610e705760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b6064820152608401610840565b610e7a8142611c0a565b6000928352600160205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b14806106b057506301ffc9a760e01b6001600160e01b03198316146106b0565b610ecf8282610aa2565b61085357610ee7816001600160a01b031660146111ba565b610ef28360206111ba565b604051602001610f03929190611c52565b60408051601f198184030181529082905262461bcd60e51b825261084091600401611cc7565b610f328261076b565b610f4e5760405162461bcd60e51b815260040161084090611cfa565b801580610f6a5750600081815260016020819052604090912054145b6108535760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b6064820152608401610840565b6000846001600160a01b0316848484604051610fe2929190611d44565b60006040518083038185875af1925050503d806000811461101f576040519150601f19603f3d011682016040523d82523d6000602084013e611024565b606091505b50509050806110915760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b6064820152608401610840565b5050505050565b6110a18161076b565b6110bd5760405162461bcd60e51b815260040161084090611cfa565b600090815260016020819052604090912055565b6110db8282610aa2565b610853576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556111113390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61115f8282610aa2565b15610853576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b606060006111c9836002611d54565b6111d4906002611c0a565b6001600160401b038111156111eb576111eb6114db565b6040519080825280601f01601f191660200182016040528015611215576020820181803683370190505b509050600360fc1b8160008151811061123057611230611a27565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061125f5761125f611a27565b60200101906001600160f81b031916908160001a9053506000611283846002611d54565b61128e906001611c0a565b90505b6001811115611306576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106112c2576112c2611a27565b1a60f81b8282815181106112d8576112d8611a27565b60200101906001600160f81b031916908160001a90535060049490941c936112ff81611d73565b9050611291565b50831561078a5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610840565b80356001600160a01b038116811461136c57600080fd5b919050565b60008083601f84011261138357600080fd5b5081356001600160401b0381111561139a57600080fd5b6020830191508360208285010111156113b257600080fd5b9250929050565b600080600080600080600060c0888a0312156113d457600080fd5b6113dd88611355565b96506020880135955060408801356001600160401b038111156113ff57600080fd5b61140b8a828b01611371565b989b979a50986060810135976080820135975060a09091013595509350505050565b60006020828403121561143f57600080fd5b81356001600160e01b03198116811461078a57600080fd5b60008060008060008060a0878903121561147057600080fd5b61147987611355565b95506020870135945060408701356001600160401b0381111561149b57600080fd5b6114a789828a01611371565b979a9699509760608101359660809091013595509350505050565b6000602082840312156114d457600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611519576115196114db565b604052919050565b600082601f83011261153257600080fd5b81356001600160401b0381111561154b5761154b6114db565b61155e601f8201601f19166020016114f1565b81815284602083860101111561157357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156115a657600080fd5b6115af85611355565b93506115bd60208601611355565b92506040850135915060608501356001600160401b038111156115df57600080fd5b6115eb87828801611521565b91505092959194509250565b6000806040838503121561160a57600080fd5b8235915061161a60208401611355565b90509250929050565b60008083601f84011261163557600080fd5b5081356001600160401b0381111561164c57600080fd5b6020830191508360208260051b85010111156113b257600080fd5b600080600080600080600080600060c08a8c03121561168557600080fd5b89356001600160401b038082111561169c57600080fd5b6116a88d838e01611623565b909b50995060208c01359150808211156116c157600080fd5b6116cd8d838e01611623565b909950975060408c01359150808211156116e657600080fd5b506116f38c828d01611623565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060008060008060a0898b03121561173457600080fd5b88356001600160401b038082111561174b57600080fd5b6117578c838d01611623565b909a50985060208b013591508082111561177057600080fd5b61177c8c838d01611623565b909850965060408b013591508082111561179557600080fd5b506117a28b828c01611623565b999c989b509699959896976060870135966080013595509350505050565b600082601f8301126117d157600080fd5b813560206001600160401b038211156117ec576117ec6114db565b8160051b6117fb8282016114f1565b928352848101820192828101908785111561181557600080fd5b83870192505b848310156118345782358252918301919083019061181b565b979650505050505050565b600080600080600060a0868803121561185757600080fd5b61186086611355565b945061186e60208701611355565b935060408601356001600160401b038082111561188a57600080fd5b61189689838a016117c0565b945060608801359150808211156118ac57600080fd5b6118b889838a016117c0565b935060808801359150808211156118ce57600080fd5b506118db88828901611521565b9150509295509295909350565b600080600080600060a0868803121561190057600080fd5b61190986611355565b945061191760208701611355565b9350604086013592506060860135915060808601356001600160401b0381111561194057600080fd5b6118db88828901611521565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a06040820152600061199d60a08301868861194c565b60608301949094525060800152949350505050565b60018060a01b03851681528360208201526060604082015260006119da60608301848661194c565b9695505050505050565b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a4f57600080fd5b61078a82611355565b6000808335601e19843603018112611a6f57600080fd5b8301803591506001600160401b03821115611a8957600080fd5b6020019150368190038213156113b257600080fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611ac857611ac8611a9e565b5060010190565b81835260006020808501808196508560051b810191508460005b87811015611b525782840389528135601e19883603018112611b0a57600080fd5b870180356001600160401b03811115611b2257600080fd5b803603891315611b3157600080fd5b611b3e868289850161194c565b9a87019a9550505090840190600101611ae9565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b811015611ba0576001600160a01b03611b8b84611355565b16825260209283019290910190600101611b72565b5083810360208501528881526001600160fb1b03891115611bc057600080fd5b8860051b9150818a602083013781810191505060208101600081526020848303016040850152611bf181888a611acf565b6060850196909652505050608001529695505050505050565b60008219821115611c1d57611c1d611a9e565b500190565b60005b83811015611c3d578181015183820152602001611c25565b83811115611c4c576000848401525b50505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611c8a816017850160208801611c22565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611cbb816028840160208801611c22565b01602801949350505050565b6020815260008251806020840152611ce6816040850160208701611c22565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b6000816000190483118215151615611d6e57611d6e611a9e565b500290565b600081611d8257611d82611a9e565b50600019019056fea264697066735822122023b625a84dcb4b4c5ff2a17e50ba1c1d3d259599aad6471dfd37918d4800174364736f6c634300080900335f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5b09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63fd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783","deployedBytecode":"0x6080604052600436106101bb5760003560e01c80638065657f116100ec578063bc197c811161008a578063d547741f11610064578063d547741f14610582578063e38335e5146105a2578063f23a6e61146105b5578063f27a0c92146105e157600080fd5b8063bc197c8114610509578063c4d252f514610535578063d45c44351461055557600080fd5b806391d14854116100c657806391d1485414610480578063a217fddf146104a0578063b08e51c0146104b5578063b1c5f427146104e957600080fd5b80638065657f1461040c5780638f2a0bb01461042c5780638f61f4f51461044c57600080fd5b8063248a9ca31161015957806331d507501161013357806331d507501461038c57806336568abe146103ac578063584b153e146103cc57806364d62353146103ec57600080fd5b8063248a9ca31461030b5780632ab0f5291461033b5780632f2ff15d1461036c57600080fd5b80630d3cf6fc116101955780630d3cf6fc14610260578063134008d31461029457806313bc9f20146102a7578063150b7a02146102c757600080fd5b806301d5062a146101c757806301ffc9a7146101e957806307bd02651461021e57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101e76101e23660046113b9565b6105f6565b005b3480156101f557600080fd5b5061020961020436600461142d565b61068b565b60405190151581526020015b60405180910390f35b34801561022a57600080fd5b506102527fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610215565b34801561026c57600080fd5b506102527f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b6101e76102a2366004611457565b6106b6565b3480156102b357600080fd5b506102096102c23660046114c2565b61076b565b3480156102d357600080fd5b506102f26102e2366004611590565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610215565b34801561031757600080fd5b506102526103263660046114c2565b60009081526020819052604090206001015490565b34801561034757600080fd5b506102096103563660046114c2565b6000908152600160208190526040909120541490565b34801561037857600080fd5b506101e76103873660046115f7565b610791565b34801561039857600080fd5b506102096103a73660046114c2565b6107bb565b3480156103b857600080fd5b506101e76103c73660046115f7565b6107d4565b3480156103d857600080fd5b506102096103e73660046114c2565b610857565b3480156103f857600080fd5b506101e76104073660046114c2565b61086d565b34801561041857600080fd5b50610252610427366004611457565b610911565b34801561043857600080fd5b506101e7610447366004611667565b610950565b34801561045857600080fd5b506102527fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b34801561048c57600080fd5b5061020961049b3660046115f7565b610aa2565b3480156104ac57600080fd5b50610252600081565b3480156104c157600080fd5b506102527ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104f557600080fd5b50610252610504366004611718565b610acb565b34801561051557600080fd5b506102f261052436600461183f565b63bc197c8160e01b95945050505050565b34801561054157600080fd5b506101e76105503660046114c2565b610b10565b34801561056157600080fd5b506102526105703660046114c2565b60009081526001602052604090205490565b34801561058e57600080fd5b506101e761059d3660046115f7565b610be5565b6101e76105b0366004611718565b610c0a565b3480156105c157600080fd5b506102f26105d03660046118e8565b63f23a6e6160e01b95945050505050565b3480156105ed57600080fd5b50600254610252565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161062081610d94565b6000610630898989898989610911565b905061063c8184610da1565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a60405161067896959493929190611975565b60405180910390a3505050505050505050565b60006001600160e01b03198216630271189760e51b14806106b057506106b082610e90565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636106e2816000610aa2565b6106f0576106f08133610ec5565b6000610700888888888888610911565b905061070c8185610f29565b61071888888888610fc5565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161075094939291906119b2565b60405180910390a361076181611098565b5050505050505050565b60008181526001602052604081205460018111801561078a5750428111155b9392505050565b6000828152602081905260409020600101546107ac81610d94565b6107b683836110d1565b505050565b60008181526001602052604081205481905b1192915050565b6001600160a01b03811633146108495760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6108538282611155565b5050565b60008181526001602081905260408220546107cd565b3330146108d05760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b6064820152608401610840565b60025460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1600255565b600086868686868660405160200161092e96959493929190611975565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161097a81610d94565b8887146109995760405162461bcd60e51b8152600401610840906119e4565b8885146109b85760405162461bcd60e51b8152600401610840906119e4565b60006109ca8b8b8b8b8b8b8b8b610acb565b90506109d68184610da1565b60005b8a811015610a945780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a1657610a16611a27565b9050602002016020810190610a2b9190611a3d565b8d8d86818110610a3d57610a3d611a27565b905060200201358c8c87818110610a5657610a56611a27565b9050602002810190610a689190611a58565b8c8b604051610a7c96959493929190611975565b60405180910390a3610a8d81611ab4565b90506109d9565b505050505050505050505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60008888888888888888604051602001610aec989796959493929190611b5f565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610b3a81610d94565b610b4382610857565b610ba95760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b6064820152608401610840565b6000828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260208190526040902060010154610c0081610d94565b6107b68383611155565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610c36816000610aa2565b610c4457610c448133610ec5565b878614610c635760405162461bcd60e51b8152600401610840906119e4565b878414610c825760405162461bcd60e51b8152600401610840906119e4565b6000610c948a8a8a8a8a8a8a8a610acb565b9050610ca08185610f29565b60005b89811015610d7e5760008b8b83818110610cbf57610cbf611a27565b9050602002016020810190610cd49190611a3d565b905060008a8a84818110610cea57610cea611a27565b9050602002013590503660008a8a86818110610d0857610d08611a27565b9050602002810190610d1a9190611a58565b91509150610d2a84848484610fc5565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610d6194939291906119b2565b60405180910390a35050505080610d7790611ab4565b9050610ca3565b50610d8881611098565b50505050505050505050565b610d9e8133610ec5565b50565b610daa826107bb565b15610e0f5760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b6064820152608401610840565b600254811015610e705760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b6064820152608401610840565b610e7a8142611c0a565b6000928352600160205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b14806106b057506301ffc9a760e01b6001600160e01b03198316146106b0565b610ecf8282610aa2565b61085357610ee7816001600160a01b031660146111ba565b610ef28360206111ba565b604051602001610f03929190611c52565b60408051601f198184030181529082905262461bcd60e51b825261084091600401611cc7565b610f328261076b565b610f4e5760405162461bcd60e51b815260040161084090611cfa565b801580610f6a5750600081815260016020819052604090912054145b6108535760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b6064820152608401610840565b6000846001600160a01b0316848484604051610fe2929190611d44565b60006040518083038185875af1925050503d806000811461101f576040519150601f19603f3d011682016040523d82523d6000602084013e611024565b606091505b50509050806110915760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b6064820152608401610840565b5050505050565b6110a18161076b565b6110bd5760405162461bcd60e51b815260040161084090611cfa565b600090815260016020819052604090912055565b6110db8282610aa2565b610853576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556111113390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61115f8282610aa2565b15610853576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b606060006111c9836002611d54565b6111d4906002611c0a565b6001600160401b038111156111eb576111eb6114db565b6040519080825280601f01601f191660200182016040528015611215576020820181803683370190505b509050600360fc1b8160008151811061123057611230611a27565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061125f5761125f611a27565b60200101906001600160f81b031916908160001a9053506000611283846002611d54565b61128e906001611c0a565b90505b6001811115611306576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106112c2576112c2611a27565b1a60f81b8282815181106112d8576112d8611a27565b60200101906001600160f81b031916908160001a90535060049490941c936112ff81611d73565b9050611291565b50831561078a5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610840565b80356001600160a01b038116811461136c57600080fd5b919050565b60008083601f84011261138357600080fd5b5081356001600160401b0381111561139a57600080fd5b6020830191508360208285010111156113b257600080fd5b9250929050565b600080600080600080600060c0888a0312156113d457600080fd5b6113dd88611355565b96506020880135955060408801356001600160401b038111156113ff57600080fd5b61140b8a828b01611371565b989b979a50986060810135976080820135975060a09091013595509350505050565b60006020828403121561143f57600080fd5b81356001600160e01b03198116811461078a57600080fd5b60008060008060008060a0878903121561147057600080fd5b61147987611355565b95506020870135945060408701356001600160401b0381111561149b57600080fd5b6114a789828a01611371565b979a9699509760608101359660809091013595509350505050565b6000602082840312156114d457600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611519576115196114db565b604052919050565b600082601f83011261153257600080fd5b81356001600160401b0381111561154b5761154b6114db565b61155e601f8201601f19166020016114f1565b81815284602083860101111561157357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156115a657600080fd5b6115af85611355565b93506115bd60208601611355565b92506040850135915060608501356001600160401b038111156115df57600080fd5b6115eb87828801611521565b91505092959194509250565b6000806040838503121561160a57600080fd5b8235915061161a60208401611355565b90509250929050565b60008083601f84011261163557600080fd5b5081356001600160401b0381111561164c57600080fd5b6020830191508360208260051b85010111156113b257600080fd5b600080600080600080600080600060c08a8c03121561168557600080fd5b89356001600160401b038082111561169c57600080fd5b6116a88d838e01611623565b909b50995060208c01359150808211156116c157600080fd5b6116cd8d838e01611623565b909950975060408c01359150808211156116e657600080fd5b506116f38c828d01611623565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060008060008060a0898b03121561173457600080fd5b88356001600160401b038082111561174b57600080fd5b6117578c838d01611623565b909a50985060208b013591508082111561177057600080fd5b61177c8c838d01611623565b909850965060408b013591508082111561179557600080fd5b506117a28b828c01611623565b999c989b509699959896976060870135966080013595509350505050565b600082601f8301126117d157600080fd5b813560206001600160401b038211156117ec576117ec6114db565b8160051b6117fb8282016114f1565b928352848101820192828101908785111561181557600080fd5b83870192505b848310156118345782358252918301919083019061181b565b979650505050505050565b600080600080600060a0868803121561185757600080fd5b61186086611355565b945061186e60208701611355565b935060408601356001600160401b038082111561188a57600080fd5b61189689838a016117c0565b945060608801359150808211156118ac57600080fd5b6118b889838a016117c0565b935060808801359150808211156118ce57600080fd5b506118db88828901611521565b9150509295509295909350565b600080600080600060a0868803121561190057600080fd5b61190986611355565b945061191760208701611355565b9350604086013592506060860135915060808601356001600160401b0381111561194057600080fd5b6118db88828901611521565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a06040820152600061199d60a08301868861194c565b60608301949094525060800152949350505050565b60018060a01b03851681528360208201526060604082015260006119da60608301848661194c565b9695505050505050565b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a4f57600080fd5b61078a82611355565b6000808335601e19843603018112611a6f57600080fd5b8301803591506001600160401b03821115611a8957600080fd5b6020019150368190038213156113b257600080fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611ac857611ac8611a9e565b5060010190565b81835260006020808501808196508560051b810191508460005b87811015611b525782840389528135601e19883603018112611b0a57600080fd5b870180356001600160401b03811115611b2257600080fd5b803603891315611b3157600080fd5b611b3e868289850161194c565b9a87019a9550505090840190600101611ae9565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b811015611ba0576001600160a01b03611b8b84611355565b16825260209283019290910190600101611b72565b5083810360208501528881526001600160fb1b03891115611bc057600080fd5b8860051b9150818a602083013781810191505060208101600081526020848303016040850152611bf181888a611acf565b6060850196909652505050608001529695505050505050565b60008219821115611c1d57611c1d611a9e565b500190565b60005b83811015611c3d578181015183820152602001611c25565b83811115611c4c576000848401525b50505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611c8a816017850160208801611c22565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611cbb816028840160208801611c22565b01602801949350505050565b6020815260008251806020840152611ce6816040850160208701611c22565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b6000816000190483118215151615611d6e57611d6e611a9e565b500290565b600081611d8257611d82611a9e565b50600019019056fea264697066735822122023b625a84dcb4b4c5ff2a17e50ba1c1d3d259599aad6471dfd37918d4800174364736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/utils/IVotes":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IVotes","sourceName":"contracts/governance/utils/IVotes.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/utils/Votes":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Votes","sourceName":"contracts/governance/utils/Votes.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC1822Proxiable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1822Proxiable","sourceName":"contracts/interfaces/draft-IERC1822.sol","abi":[{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC2612":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC2612","sourceName":"contracts/interfaces/draft-IERC2612.sol","abi":[{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC1271":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1271","sourceName":"contracts/interfaces/IERC1271.sol","abi":[{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"magicValue","type":"bytes4"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC1363":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1363","sourceName":"contracts/interfaces/IERC1363.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transferFromAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFromAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC1363Receiver":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1363Receiver","sourceName":"contracts/interfaces/IERC1363Receiver.sol","abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onTransferReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC1363Spender":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1363Spender","sourceName":"contracts/interfaces/IERC1363Spender.sol","abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onApprovalReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC2981":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC2981","sourceName":"contracts/interfaces/IERC2981.sol","abi":[{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC3156FlashBorrower":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC3156FlashBorrower","sourceName":"contracts/interfaces/IERC3156FlashBorrower.sol","abi":[{"inputs":[{"internalType":"address","name":"initiator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onFlashLoan","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC3156FlashLender":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC3156FlashLender","sourceName":"contracts/interfaces/IERC3156FlashLender.sol","abi":[{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"flashFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"flashLoan","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"maxFlashLoan","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC4626":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC4626","sourceName":"contracts/interfaces/IERC4626.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"assetTokenAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"convertToShares","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"maxAssets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"maxMint","outputs":[{"internalType":"uint256","name":"maxShares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxRedeem","outputs":[{"internalType":"uint256","name":"maxShares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"maxAssets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewDeposit","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewMint","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewRedeem","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"totalManagedAssets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/metatx/ERC2771Context":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC2771Context","sourceName":"contracts/metatx/ERC2771Context.sol","abi":[{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/metatx/MinimalForwarder":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"MinimalForwarder","sourceName":"contracts/metatx/MinimalForwarder.sol","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct MinimalForwarder.ForwardRequest","name":"req","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"execute","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"}],"name":"getNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct MinimalForwarder.ForwardRequest","name":"req","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"verify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x61014060405234801561001157600080fd5b50604080518082018252601081526f26b4b734b6b0b62337b93bb0b93232b960811b602080830191825283518085019094526005845264302e302e3160d81b908401528151902060e08190527fae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc1991638118856101008190524660a0529192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6100fb8184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c052610120525061011092505050565b60805160a05160c05160e0516101005161012051610ae261015f60003960006104ec0152600061053b015260006105160152600061046f01526000610499015260006104c30152610ae26000f3fe6080604052600436106100345760003560e01c80632d0335ab1461003957806347153f8214610082578063bf5d3bdb146100a3575b600080fd5b34801561004557600080fd5b5061006f61005436600461087a565b6001600160a01b031660009081526020819052604090205490565b6040519081526020015b60405180910390f35b6100956100903660046108aa565b6100d3565b604051610079929190610979565b3480156100af57600080fd5b506100c36100be3660046108aa565b61026c565b6040519015158152602001610079565b600060606100e285858561026c565b61014e5760405162461bcd60e51b815260206004820152603260248201527f4d696e696d616c466f727761726465723a207369676e617475726520646f6573604482015271081b9bdd081b585d18da081c995c5d595cdd60721b60648201526084015b60405180910390fd5b61015d608086013560016109b5565b60008061016d602089018961087a565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000808660200160208101906101a7919061087a565b6001600160a01b0316606088013560408901356101c760a08b018b6109db565b6101d460208d018d61087a565b6040516020016101e693929190610a22565b60408051601f198184030181529082905261020091610a48565b600060405180830381858888f193505050503d806000811461023e576040519150601f19603f3d011682016040523d82523d6000602084013e610243565b606091505b509092509050610258603f6060890135610a64565b5a1161026057fe5b90969095509350505050565b60008061037f84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061037992507fdd8f4b70b0f4393e889bd39128a30628a78b61816a9eb8199759e7a349657e4891506102dc905060208a018a61087a565b6102ec60408b0160208c0161087a565b60408b013560608c013560808d013561030860a08f018f6109db565b604051610316929190610a86565b6040805191829003822060208301989098526001600160a01b0396871690820152949093166060850152608084019190915260a083015260c082015260e081019190915261010001604051602081830303815290604052805190602001206103ea565b9061043e565b90506080850135600080610396602089018961087a565b6001600160a01b03166001600160a01b03168152602001908152602001600020541480156103e157506103cc602086018661087a565b6001600160a01b0316816001600160a01b0316145b95945050505050565b60006104386103f7610462565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b92915050565b600080600061044d8585610589565b9150915061045a816105cf565b509392505050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156104bb57507f000000000000000000000000000000000000000000000000000000000000000046145b156104e557507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b6000808251604114156105c05760208301516040840151606085015160001a6105b48782858561078d565b945094505050506105c8565b506000905060025b9250929050565b60008160048111156105e3576105e3610a96565b14156105ec5750565b600181600481111561060057610600610a96565b141561064e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610145565b600281600481111561066257610662610a96565b14156106b05760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610145565b60038160048111156106c4576106c4610a96565b141561071d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610145565b600481600481111561073157610731610a96565b141561078a5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610145565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156107c45750600090506003610871565b8460ff16601b141580156107dc57508460ff16601c14155b156107ed5750600090506004610871565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610841573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661086a57600060019250925050610871565b9150600090505b94509492505050565b60006020828403121561088c57600080fd5b81356001600160a01b03811681146108a357600080fd5b9392505050565b6000806000604084860312156108bf57600080fd5b833567ffffffffffffffff808211156108d757600080fd5b9085019060c082880312156108eb57600080fd5b9093506020850135908082111561090157600080fd5b818601915086601f83011261091557600080fd5b81358181111561092457600080fd5b87602082850101111561093657600080fd5b6020830194508093505050509250925092565b60005b8381101561096457818101518382015260200161094c565b83811115610973576000848401525b50505050565b821515815260406020820152600082518060408401526109a0816060850160208701610949565b601f01601f1916919091016060019392505050565b600082198211156109d657634e487b7160e01b600052601160045260246000fd5b500190565b6000808335601e198436030181126109f257600080fd5b83018035915067ffffffffffffffff821115610a0d57600080fd5b6020019150368190038213156105c857600080fd5b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b60008251610a5a818460208701610949565b9190910192915050565b600082610a8157634e487b7160e01b600052601260045260246000fd5b500490565b8183823760009101908152919050565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220c096d335dd8ff531b965b5440323db8da2634e5b6dabf89bdbc9ecaaef95384164736f6c63430008090033","deployedBytecode":"0x6080604052600436106100345760003560e01c80632d0335ab1461003957806347153f8214610082578063bf5d3bdb146100a3575b600080fd5b34801561004557600080fd5b5061006f61005436600461087a565b6001600160a01b031660009081526020819052604090205490565b6040519081526020015b60405180910390f35b6100956100903660046108aa565b6100d3565b604051610079929190610979565b3480156100af57600080fd5b506100c36100be3660046108aa565b61026c565b6040519015158152602001610079565b600060606100e285858561026c565b61014e5760405162461bcd60e51b815260206004820152603260248201527f4d696e696d616c466f727761726465723a207369676e617475726520646f6573604482015271081b9bdd081b585d18da081c995c5d595cdd60721b60648201526084015b60405180910390fd5b61015d608086013560016109b5565b60008061016d602089018961087a565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000808660200160208101906101a7919061087a565b6001600160a01b0316606088013560408901356101c760a08b018b6109db565b6101d460208d018d61087a565b6040516020016101e693929190610a22565b60408051601f198184030181529082905261020091610a48565b600060405180830381858888f193505050503d806000811461023e576040519150601f19603f3d011682016040523d82523d6000602084013e610243565b606091505b509092509050610258603f6060890135610a64565b5a1161026057fe5b90969095509350505050565b60008061037f84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061037992507fdd8f4b70b0f4393e889bd39128a30628a78b61816a9eb8199759e7a349657e4891506102dc905060208a018a61087a565b6102ec60408b0160208c0161087a565b60408b013560608c013560808d013561030860a08f018f6109db565b604051610316929190610a86565b6040805191829003822060208301989098526001600160a01b0396871690820152949093166060850152608084019190915260a083015260c082015260e081019190915261010001604051602081830303815290604052805190602001206103ea565b9061043e565b90506080850135600080610396602089018961087a565b6001600160a01b03166001600160a01b03168152602001908152602001600020541480156103e157506103cc602086018661087a565b6001600160a01b0316816001600160a01b0316145b95945050505050565b60006104386103f7610462565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b92915050565b600080600061044d8585610589565b9150915061045a816105cf565b509392505050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156104bb57507f000000000000000000000000000000000000000000000000000000000000000046145b156104e557507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b6000808251604114156105c05760208301516040840151606085015160001a6105b48782858561078d565b945094505050506105c8565b506000905060025b9250929050565b60008160048111156105e3576105e3610a96565b14156105ec5750565b600181600481111561060057610600610a96565b141561064e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610145565b600281600481111561066257610662610a96565b14156106b05760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610145565b60038160048111156106c4576106c4610a96565b141561071d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610145565b600481600481111561073157610731610a96565b141561078a5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610145565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156107c45750600090506003610871565b8460ff16601b141580156107dc57508460ff16601c14155b156107ed5750600090506004610871565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610841573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661086a57600060019250925050610871565b9150600090505b94509492505050565b60006020828403121561088c57600080fd5b81356001600160a01b03811681146108a357600080fd5b9392505050565b6000806000604084860312156108bf57600080fd5b833567ffffffffffffffff808211156108d757600080fd5b9085019060c082880312156108eb57600080fd5b9093506020850135908082111561090157600080fd5b818601915086601f83011261091557600080fd5b81358181111561092457600080fd5b87602082850101111561093657600080fd5b6020830194508093505050509250925092565b60005b8381101561096457818101518382015260200161094c565b83811115610973576000848401525b50505050565b821515815260406020820152600082518060408401526109a0816060850160208701610949565b601f01601f1916919091016060019392505050565b600082198211156109d657634e487b7160e01b600052601160045260246000fd5b500190565b6000808335601e198436030181126109f257600080fd5b83018035915067ffffffffffffffff821115610a0d57600080fd5b6020019150368190038213156105c857600080fd5b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b60008251610a5a818460208701610949565b9190910192915050565b600082610a8157634e487b7160e01b600052601260045260246000fd5b500490565b8183823760009101908152919050565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220c096d335dd8ff531b965b5440323db8da2634e5b6dabf89bdbc9ecaaef95384164736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/beacon/BeaconProxy":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"BeaconProxy","sourceName":"contracts/proxy/beacon/BeaconProxy.sol","abi":[{"inputs":[{"internalType":"address","name":"beacon","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x608060405260405161092738038061092783398101604081905261002291610474565b61002e82826000610035565b505061059e565b61003e8361010f565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b1561010a57610108836001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100c057600080fd5b505afa1580156100d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100f89190610534565b836102c160201b6100291760201c565b505b505050565b610122816102ed60201b6100551760201c565b6101815760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b610204816001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101bd57600080fd5b505afa1580156101d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f59190610534565b6102ed60201b6100551760201c565b6102695760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610178565b806102a07fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102fc60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102e68383604051806060016040528060278152602001610900602791396102ff565b9392505050565b6001600160a01b03163b151590565b90565b60606001600160a01b0384163b6103675760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610178565b600080856001600160a01b031685604051610382919061054f565b600060405180830381855af49150503d80600081146103bd576040519150601f19603f3d011682016040523d82523d6000602084013e6103c2565b606091505b5090925090506103d38282866103dd565b9695505050505050565b606083156103ec5750816102e6565b8251156103fc5782518084602001fd5b8160405162461bcd60e51b8152600401610178919061056b565b80516001600160a01b038116811461042d57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561046357818101518382015260200161044b565b838111156101085750506000910152565b6000806040838503121561048757600080fd5b61049083610416565b60208401519092506001600160401b03808211156104ad57600080fd5b818501915085601f8301126104c157600080fd5b8151818111156104d3576104d3610432565b604051601f8201601f19908116603f011681019083821181831017156104fb576104fb610432565b8160405282815288602084870101111561051457600080fd5b610525836020830160208801610448565b80955050505050509250929050565b60006020828403121561054657600080fd5b6102e682610416565b60008251610561818460208701610448565b9190910192915050565b602081526000825180602084015261058a816040850160208701610448565b601f01601f19169190910160400192915050565b610353806105ad6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61010f565b565b606061004e83836040518060600160405280602781526020016102f760279139610133565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100d257600080fd5b505afa1580156100e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010a919061024e565b905090565b3660008037600080366000845af43d6000803e80801561012e573d6000f35b3d6000fd5b60606001600160a01b0384163b6101a05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101bb91906102a7565b600060405180830381855af49150503d80600081146101f6576040519150601f19603f3d011682016040523d82523d6000602084013e6101fb565b606091505b509150915061020b828286610215565b9695505050505050565b6060831561022457508161004e565b8251156102345782518084602001fd5b8160405162461bcd60e51b815260040161019791906102c3565b60006020828403121561026057600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561029257818101518382015260200161027a565b838111156102a1576000848401525b50505050565b600082516102b9818460208701610277565b9190910192915050565b60208152600082518060208401526102e2816040850160208701610277565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c2849c0a15380ad6927f162f733548aad2e7c63763af5c25bea6e78da74d417964736f6c63430008090033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","deployedBytecode":"0x60806040523661001357610011610017565b005b6100115b610027610022610067565b61010f565b565b606061004e83836040518060600160405280602781526020016102f760279139610133565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100d257600080fd5b505afa1580156100e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010a919061024e565b905090565b3660008037600080366000845af43d6000803e80801561012e573d6000f35b3d6000fd5b60606001600160a01b0384163b6101a05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101bb91906102a7565b600060405180830381855af49150503d80600081146101f6576040519150601f19603f3d011682016040523d82523d6000602084013e6101fb565b606091505b509150915061020b828286610215565b9695505050505050565b6060831561022457508161004e565b8251156102345782518084602001fd5b8160405162461bcd60e51b815260040161019791906102c3565b60006020828403121561026057600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561029257818101518382015260200161027a565b838111156102a1576000848401525b50505050565b600082516102b9818460208701610277565b9190910192915050565b60208152600082518060208401526102e2816040850160208701610277565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c2849c0a15380ad6927f162f733548aad2e7c63763af5c25bea6e78da74d417964736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/beacon/IBeacon":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IBeacon","sourceName":"contracts/proxy/beacon/IBeacon.sol","abi":[{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/beacon/UpgradeableBeacon":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"UpgradeableBeacon","sourceName":"contracts/proxy/beacon/UpgradeableBeacon.sol","abi":[{"inputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506040516104e43803806104e483398101604081905261002f91610151565b61003833610047565b61004181610097565b50610181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100aa8161014260201b6101a01760201c565b6101205760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03163b151590565b60006020828403121561016357600080fd5b81516001600160a01b038116811461017a57600080fd5b9392505050565b610354806101906000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea26469706673582212203f0b62c86ff1acd57383d66937ec1fb6326b68807bfa75a94858ba00c9ff5ceb64736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea26469706673582212203f0b62c86ff1acd57383d66937ec1fb6326b68807bfa75a94858ba00c9ff5ceb64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/Clones":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Clones","sourceName":"contracts/proxy/Clones.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f2026685656e32cd413455db3e805c9b637ba010f3369d29ae06cf1df87608c264736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f2026685656e32cd413455db3e805c9b637ba010f3369d29ae06cf1df87608c264736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/ERC1967/ERC1967Proxy":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1967Proxy","sourceName":"contracts/proxy/ERC1967/ERC1967Proxy.sol","abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x608060405260405161072138038061072183398101604081905261002291610314565b61002e82826000610035565b5050610431565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106fa602791396101a9565b9392505050565b6100ea8161028760201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61029660201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606001600160a01b0384163b6102115760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610148565b600080856001600160a01b03168560405161022c91906103e2565b600060405180830381855af49150503d8060008114610267576040519150601f19603f3d011682016040523d82523d6000602084013e61026c565b606091505b50909250905061027d828286610299565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a85750816100d0565b8251156102b85782518084602001fd5b8160405162461bcd60e51b815260040161014891906103fe565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103035781810151838201526020016102eb565b838111156100645750506000910152565b6000806040838503121561032757600080fd5b82516001600160a01b038116811461033e57600080fd5b60208401519092506001600160401b038082111561035b57600080fd5b818501915085601f83011261036f57600080fd5b815181811115610381576103816102d2565b604051601f8201601f19908116603f011681019083821181831017156103a9576103a96102d2565b816040528281528860208487010111156103c257600080fd5b6103d38360208301602088016102e8565b80955050505050509250929050565b600082516103f48184602087016102e8565b9190910192915050565b602081526000825180602084015261041d8160408501602087016102e8565b601f01601f19169190910160400192915050565b6102ba806104406000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025e602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b60606001600160a01b0384163b6101305760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161014b919061020e565b600060405180830381855af49150503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b509150915061019b8282866101a5565b9695505050505050565b606083156101b457508161004e565b8251156101c45782518084602001fd5b8160405162461bcd60e51b8152600401610127919061022a565b60005b838110156101f95781810151838201526020016101e1565b83811115610208576000848401525b50505050565b600082516102208184602087016101de565b9190910192915050565b60208152600082518060208401526102498160408501602087016101de565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220012b2e6d3c22a9b90d918e56e90f5d0dc9562c086b68567310b49392b9105b8964736f6c63430008090033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","deployedBytecode":"0x60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025e602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b60606001600160a01b0384163b6101305760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161014b919061020e565b600060405180830381855af49150503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b509150915061019b8282866101a5565b9695505050505050565b606083156101b457508161004e565b8251156101c45782518084602001fd5b8160405162461bcd60e51b8152600401610127919061022a565b60005b838110156101f95781810151838201526020016101e1565b83811115610208576000848401525b50505050565b600082516102208184602087016101de565b9190910192915050565b60208152600082518060208401526102498160408501602087016101de565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220012b2e6d3c22a9b90d918e56e90f5d0dc9562c086b68567310b49392b9105b8964736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/ERC1967/ERC1967Upgrade":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1967Upgrade","sourceName":"contracts/proxy/ERC1967/ERC1967Upgrade.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/Proxy":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Proxy","sourceName":"contracts/proxy/Proxy.sol","abi":[{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/transparent/ProxyAdmin":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ProxyAdmin","sourceName":"contracts/proxy/transparent/ProxyAdmin.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeProxyAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"}],"name":"getProxyAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"}],"name":"getProxyImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"implementation","type":"address"}],"name":"upgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea2646970667358221220e9f4825daef94fe498441dad7e269b25b227f53e068d121189fc347571f57cee64736f6c63430008090033","deployedBytecode":"0x60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea2646970667358221220e9f4825daef94fe498441dad7e269b25b227f53e068d121189fc347571f57cee64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/transparent/TransparentUpgradeableProxy":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"TransparentUpgradeableProxy","sourceName":"contracts/proxy/transparent/TransparentUpgradeableProxy.sol","abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x608060405260405162000e8138038062000e81833981016040819052620000269162000490565b828162000036828260006200004d565b50620000449050826200008a565b505050620005c3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e5a60279139620002f8565b9392505050565b60006200018060008051602062000e3a83398151915260001b620003de60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e3a83398151915260001b620003de60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200028c1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620002081760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000570565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f191906200058e565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b83811115620000835750506000910152565b600080600060608486031215620004a657600080fd5b620004b1846200042e565b9250620004c1602085016200042e565b60408501519092506001600160401b0380821115620004df57600080fd5b818601915086601f830112620004f457600080fd5b8151818111156200050957620005096200044b565b604051601f8201601f19908116603f011681019083821181831017156200053457620005346200044b565b816040528281528960208487010111156200054e57600080fd5b6200056183602083016020880162000461565b80955050505050509250925092565b600082516200058481846020870162000461565b9190910192915050565b6020815260008251806020840152620005af81604085016020870162000461565b601f01601f19169190910160400192915050565b61086780620005d36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220cfb0cf0bbe115abbb9bf3be4bc00d10d9ef33dfafdf3dbe5eb87a81104ff498d64736f6c63430008090033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","deployedBytecode":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220cfb0cf0bbe115abbb9bf3be4bc00d10d9ef33dfafdf3dbe5eb87a81104ff498d64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/utils/Initializable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Initializable","sourceName":"contracts/proxy/utils/Initializable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/utils/UUPSUpgradeable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"UUPSUpgradeable","sourceName":"contracts/proxy/utils/UUPSUpgradeable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/security/Pausable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Pausable","sourceName":"contracts/security/Pausable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/security/PullPayment":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"PullPayment","sourceName":"contracts/security/PullPayment.sol","abi":[{"inputs":[{"internalType":"address","name":"dest","type":"address"}],"name":"payments","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"payee","type":"address"}],"name":"withdrawPayments","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/security/ReentrancyGuard":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ReentrancyGuard","sourceName":"contracts/security/ReentrancyGuard.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/common/ERC2981":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC2981","sourceName":"contracts/token/common/ERC2981.sol","abi":[{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/ERC1155":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155","sourceName":"contracts/token/ERC1155/ERC1155.sol","abi":[{"inputs":[{"internalType":"string","name":"uri_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b50604051620015f0380380620015f083398101604081905262000034916200011b565b6200003f8162000046565b5062000234565b80516200005b9060029060208401906200005f565b5050565b8280546200006d90620001f7565b90600052602060002090601f016020900481019282620000915760008555620000dc565b82601f10620000ac57805160ff1916838001178555620000dc565b82800160010185558215620000dc579182015b82811115620000dc578251825591602001919060010190620000bf565b50620000ea929150620000ee565b5090565b5b80821115620000ea5760008155600101620000ef565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200012f57600080fd5b82516001600160401b03808211156200014757600080fd5b818501915085601f8301126200015c57600080fd5b81518181111562000171576200017162000105565b604051601f8201601f19908116603f011681019083821181831017156200019c576200019c62000105565b816040528281528886848701011115620001b557600080fd5b600093505b82841015620001d95784840186015181850187015292850192620001ba565b82841115620001eb5760008684830101525b98975050505050505050565b600181811c908216806200020c57607f821691505b602082108114156200022e57634e487b7160e01b600052602260045260246000fd5b50919050565b6113ac80620002446000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461010a578063a22cb4651461012a578063e985e9c51461013d578063f242432a1461017957600080fd5b8062fdd58e1461008c57806301ffc9a7146100b25780630e89341c146100d55780632eb2c2d6146100f5575b600080fd5b61009f61009a366004610b5f565b61018c565b6040519081526020015b60405180910390f35b6100c56100c0366004610ba2565b610222565b60405190151581526020016100a9565b6100e86100e3366004610bc6565b610274565b6040516100a99190610c2c565b610108610103366004610d8b565b610308565b005b61011d610118366004610e35565b610354565b6040516100a99190610f3b565b610108610138366004610f4e565b61047e565b6100c561014b366004610f8a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b610108610187366004610fbd565b61048d565b60006001600160a01b0383166101fc5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b03198216636cdb3d1360e11b148061025357506001600160e01b031982166303a24d0760e21b145b8061026e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606002805461028390611022565b80601f01602080910402602001604051908101604052809291908181526020018280546102af90611022565b80156102fc5780601f106102d1576101008083540402835291602001916102fc565b820191906000526020600020905b8154815290600101906020018083116102df57829003601f168201915b50505050509050919050565b6001600160a01b0385163314806103245750610324853361014b565b6103405760405162461bcd60e51b81526004016101f39061105d565b61034d85858585856104d2565b5050505050565b606081518351146103b95760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b60648201526084016101f3565b6000835167ffffffffffffffff8111156103d5576103d5610c3f565b6040519080825280602002602001820160405280156103fe578160200160208202803683370190505b50905060005b845181101561047657610449858281518110610422576104226110ac565b602002602001015185838151811061043c5761043c6110ac565b602002602001015161018c565b82828151811061045b5761045b6110ac565b602090810291909101015261046f816110d8565b9050610404565b509392505050565b6104893383836106af565b5050565b6001600160a01b0385163314806104a957506104a9853361014b565b6104c55760405162461bcd60e51b81526004016101f39061105d565b61034d8585858585610790565b81518351146105345760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084016101f3565b6001600160a01b03841661055a5760405162461bcd60e51b81526004016101f3906110f3565b3360005b845181101561064157600085828151811061057b5761057b6110ac565b602002602001015190506000858381518110610599576105996110ac565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156105e95760405162461bcd60e51b81526004016101f390611138565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610626908490611182565b925050819055505050508061063a906110d8565b905061055e565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161069192919061119a565b60405180910390a46106a78187878787876108ba565b505050505050565b816001600160a01b0316836001600160a01b031614156107235760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b60648201526084016101f3565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166107b65760405162461bcd60e51b81526004016101f3906110f3565b3360006107c285610a2e565b905060006107cf85610a2e565b90506000868152602081815260408083206001600160a01b038c168452909152902054858110156108125760405162461bcd60e51b81526004016101f390611138565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061084f908490611182565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46108af848a8a8a8a8a610a79565b505050505050505050565b6001600160a01b0384163b156106a75760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906108fe90899089908890889088906004016111c8565b602060405180830381600087803b15801561091857600080fd5b505af1925050508015610948575060408051601f3d908101601f1916820190925261094591810190611226565b60015b6109f557610954611243565b806308c379a0141561098e575061096961125f565b806109745750610990565b8060405162461bcd60e51b81526004016101f39190610c2c565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60648201526084016101f3565b6001600160e01b0319811663bc197c8160e01b14610a255760405162461bcd60e51b81526004016101f3906112e9565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610a6857610a686110ac565b602090810291909101015292915050565b6001600160a01b0384163b156106a75760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610abd9089908990889088908890600401611331565b602060405180830381600087803b158015610ad757600080fd5b505af1925050508015610b07575060408051601f3d908101601f19168201909252610b0491810190611226565b60015b610b1357610954611243565b6001600160e01b0319811663f23a6e6160e01b14610a255760405162461bcd60e51b81526004016101f3906112e9565b80356001600160a01b0381168114610b5a57600080fd5b919050565b60008060408385031215610b7257600080fd5b610b7b83610b43565b946020939093013593505050565b6001600160e01b031981168114610b9f57600080fd5b50565b600060208284031215610bb457600080fd5b8135610bbf81610b89565b9392505050565b600060208284031215610bd857600080fd5b5035919050565b6000815180845260005b81811015610c0557602081850181015186830182015201610be9565b81811115610c17576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610bbf6020830184610bdf565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715610c7b57610c7b610c3f565b6040525050565b600067ffffffffffffffff821115610c9c57610c9c610c3f565b5060051b60200190565b600082601f830112610cb757600080fd5b81356020610cc482610c82565b604051610cd18282610c55565b83815260059390931b8501820192828101915086841115610cf157600080fd5b8286015b84811015610d0c5780358352918301918301610cf5565b509695505050505050565b600082601f830112610d2857600080fd5b813567ffffffffffffffff811115610d4257610d42610c3f565b604051610d59601f8301601f191660200182610c55565b818152846020838601011115610d6e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215610da357600080fd5b610dac86610b43565b9450610dba60208701610b43565b9350604086013567ffffffffffffffff80821115610dd757600080fd5b610de389838a01610ca6565b94506060880135915080821115610df957600080fd5b610e0589838a01610ca6565b93506080880135915080821115610e1b57600080fd5b50610e2888828901610d17565b9150509295509295909350565b60008060408385031215610e4857600080fd5b823567ffffffffffffffff80821115610e6057600080fd5b818501915085601f830112610e7457600080fd5b81356020610e8182610c82565b604051610e8e8282610c55565b83815260059390931b8501820192828101915089841115610eae57600080fd5b948201945b83861015610ed357610ec486610b43565b82529482019490820190610eb3565b96505086013592505080821115610ee957600080fd5b50610ef685828601610ca6565b9150509250929050565b600081518084526020808501945080840160005b83811015610f3057815187529582019590820190600101610f14565b509495945050505050565b602081526000610bbf6020830184610f00565b60008060408385031215610f6157600080fd5b610f6a83610b43565b915060208301358015158114610f7f57600080fd5b809150509250929050565b60008060408385031215610f9d57600080fd5b610fa683610b43565b9150610fb460208401610b43565b90509250929050565b600080600080600060a08688031215610fd557600080fd5b610fde86610b43565b9450610fec60208701610b43565b93506040860135925060608601359150608086013567ffffffffffffffff81111561101657600080fd5b610e2888828901610d17565b600181811c9082168061103657607f821691505b6020821081141561105757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602f908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526e195c881b9bdc88185c1c1c9bdd9959608a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156110ec576110ec6110c2565b5060010190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60008219821115611195576111956110c2565b500190565b6040815260006111ad6040830185610f00565b82810360208401526111bf8185610f00565b95945050505050565b6001600160a01b0386811682528516602082015260a0604082018190526000906111f490830186610f00565b82810360608401526112068186610f00565b9050828103608084015261121a8185610bdf565b98975050505050505050565b60006020828403121561123857600080fd5b8151610bbf81610b89565b600060033d111561125c5760046000803e5060005160e01c5b90565b600060443d101561126d5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561129d57505050505090565b82850191508151818111156112b55750505050505090565b843d87010160208285010111156112cf5750505050505090565b6112de60208286010187610c55565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061136b90830184610bdf565b97965050505050505056fea26469706673582212208589f9ade71b111122fe06f6192ba5a1bcba279086f8c117d40c8967db504c6e64736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461010a578063a22cb4651461012a578063e985e9c51461013d578063f242432a1461017957600080fd5b8062fdd58e1461008c57806301ffc9a7146100b25780630e89341c146100d55780632eb2c2d6146100f5575b600080fd5b61009f61009a366004610b5f565b61018c565b6040519081526020015b60405180910390f35b6100c56100c0366004610ba2565b610222565b60405190151581526020016100a9565b6100e86100e3366004610bc6565b610274565b6040516100a99190610c2c565b610108610103366004610d8b565b610308565b005b61011d610118366004610e35565b610354565b6040516100a99190610f3b565b610108610138366004610f4e565b61047e565b6100c561014b366004610f8a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b610108610187366004610fbd565b61048d565b60006001600160a01b0383166101fc5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b03198216636cdb3d1360e11b148061025357506001600160e01b031982166303a24d0760e21b145b8061026e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606002805461028390611022565b80601f01602080910402602001604051908101604052809291908181526020018280546102af90611022565b80156102fc5780601f106102d1576101008083540402835291602001916102fc565b820191906000526020600020905b8154815290600101906020018083116102df57829003601f168201915b50505050509050919050565b6001600160a01b0385163314806103245750610324853361014b565b6103405760405162461bcd60e51b81526004016101f39061105d565b61034d85858585856104d2565b5050505050565b606081518351146103b95760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b60648201526084016101f3565b6000835167ffffffffffffffff8111156103d5576103d5610c3f565b6040519080825280602002602001820160405280156103fe578160200160208202803683370190505b50905060005b845181101561047657610449858281518110610422576104226110ac565b602002602001015185838151811061043c5761043c6110ac565b602002602001015161018c565b82828151811061045b5761045b6110ac565b602090810291909101015261046f816110d8565b9050610404565b509392505050565b6104893383836106af565b5050565b6001600160a01b0385163314806104a957506104a9853361014b565b6104c55760405162461bcd60e51b81526004016101f39061105d565b61034d8585858585610790565b81518351146105345760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084016101f3565b6001600160a01b03841661055a5760405162461bcd60e51b81526004016101f3906110f3565b3360005b845181101561064157600085828151811061057b5761057b6110ac565b602002602001015190506000858381518110610599576105996110ac565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156105e95760405162461bcd60e51b81526004016101f390611138565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610626908490611182565b925050819055505050508061063a906110d8565b905061055e565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161069192919061119a565b60405180910390a46106a78187878787876108ba565b505050505050565b816001600160a01b0316836001600160a01b031614156107235760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b60648201526084016101f3565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166107b65760405162461bcd60e51b81526004016101f3906110f3565b3360006107c285610a2e565b905060006107cf85610a2e565b90506000868152602081815260408083206001600160a01b038c168452909152902054858110156108125760405162461bcd60e51b81526004016101f390611138565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061084f908490611182565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46108af848a8a8a8a8a610a79565b505050505050505050565b6001600160a01b0384163b156106a75760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906108fe90899089908890889088906004016111c8565b602060405180830381600087803b15801561091857600080fd5b505af1925050508015610948575060408051601f3d908101601f1916820190925261094591810190611226565b60015b6109f557610954611243565b806308c379a0141561098e575061096961125f565b806109745750610990565b8060405162461bcd60e51b81526004016101f39190610c2c565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60648201526084016101f3565b6001600160e01b0319811663bc197c8160e01b14610a255760405162461bcd60e51b81526004016101f3906112e9565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610a6857610a686110ac565b602090810291909101015292915050565b6001600160a01b0384163b156106a75760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610abd9089908990889088908890600401611331565b602060405180830381600087803b158015610ad757600080fd5b505af1925050508015610b07575060408051601f3d908101601f19168201909252610b0491810190611226565b60015b610b1357610954611243565b6001600160e01b0319811663f23a6e6160e01b14610a255760405162461bcd60e51b81526004016101f3906112e9565b80356001600160a01b0381168114610b5a57600080fd5b919050565b60008060408385031215610b7257600080fd5b610b7b83610b43565b946020939093013593505050565b6001600160e01b031981168114610b9f57600080fd5b50565b600060208284031215610bb457600080fd5b8135610bbf81610b89565b9392505050565b600060208284031215610bd857600080fd5b5035919050565b6000815180845260005b81811015610c0557602081850181015186830182015201610be9565b81811115610c17576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610bbf6020830184610bdf565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715610c7b57610c7b610c3f565b6040525050565b600067ffffffffffffffff821115610c9c57610c9c610c3f565b5060051b60200190565b600082601f830112610cb757600080fd5b81356020610cc482610c82565b604051610cd18282610c55565b83815260059390931b8501820192828101915086841115610cf157600080fd5b8286015b84811015610d0c5780358352918301918301610cf5565b509695505050505050565b600082601f830112610d2857600080fd5b813567ffffffffffffffff811115610d4257610d42610c3f565b604051610d59601f8301601f191660200182610c55565b818152846020838601011115610d6e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215610da357600080fd5b610dac86610b43565b9450610dba60208701610b43565b9350604086013567ffffffffffffffff80821115610dd757600080fd5b610de389838a01610ca6565b94506060880135915080821115610df957600080fd5b610e0589838a01610ca6565b93506080880135915080821115610e1b57600080fd5b50610e2888828901610d17565b9150509295509295909350565b60008060408385031215610e4857600080fd5b823567ffffffffffffffff80821115610e6057600080fd5b818501915085601f830112610e7457600080fd5b81356020610e8182610c82565b604051610e8e8282610c55565b83815260059390931b8501820192828101915089841115610eae57600080fd5b948201945b83861015610ed357610ec486610b43565b82529482019490820190610eb3565b96505086013592505080821115610ee957600080fd5b50610ef685828601610ca6565b9150509250929050565b600081518084526020808501945080840160005b83811015610f3057815187529582019590820190600101610f14565b509495945050505050565b602081526000610bbf6020830184610f00565b60008060408385031215610f6157600080fd5b610f6a83610b43565b915060208301358015158114610f7f57600080fd5b809150509250929050565b60008060408385031215610f9d57600080fd5b610fa683610b43565b9150610fb460208401610b43565b90509250929050565b600080600080600060a08688031215610fd557600080fd5b610fde86610b43565b9450610fec60208701610b43565b93506040860135925060608601359150608086013567ffffffffffffffff81111561101657600080fd5b610e2888828901610d17565b600181811c9082168061103657607f821691505b6020821081141561105757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602f908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526e195c881b9bdc88185c1c1c9bdd9959608a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156110ec576110ec6110c2565b5060010190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60008219821115611195576111956110c2565b500190565b6040815260006111ad6040830185610f00565b82810360208401526111bf8185610f00565b95945050505050565b6001600160a01b0386811682528516602082015260a0604082018190526000906111f490830186610f00565b82810360608401526112068186610f00565b9050828103608084015261121a8185610bdf565b98975050505050505050565b60006020828403121561123857600080fd5b8151610bbf81610b89565b600060033d111561125c5760046000803e5060005160e01c5b90565b600060443d101561126d5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561129d57505050505090565b82850191508151818111156112b55750505050505090565b843d87010160208285010111156112cf5750505050505090565b6112de60208286010187610c55565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061136b90830184610bdf565b97965050505050505056fea26469706673582212208589f9ade71b111122fe06f6192ba5a1bcba279086f8c117d40c8967db504c6e64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/extensions/ERC1155Burnable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Burnable","sourceName":"contracts/token/ERC1155/extensions/ERC1155Burnable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"burnBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/extensions/ERC1155Pausable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Pausable","sourceName":"contracts/token/ERC1155/extensions/ERC1155Pausable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/extensions/ERC1155Supply":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Supply","sourceName":"contracts/token/ERC1155/extensions/ERC1155Supply.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/extensions/ERC1155URIStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155URIStorage","sourceName":"contracts/token/ERC1155/extensions/ERC1155URIStorage.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/extensions/IERC1155MetadataURI":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155MetadataURI","sourceName":"contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/IERC1155":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155","sourceName":"contracts/token/ERC1155/IERC1155.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/IERC1155Receiver":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155Receiver","sourceName":"contracts/token/ERC1155/IERC1155Receiver.sol","abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/presets/ERC1155PresetMinterPauser":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155PresetMinterPauser","sourceName":"contracts/token/ERC1155/presets/ERC1155PresetMinterPauser.sol","abi":[{"inputs":[{"internalType":"string","name":"uri","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"burnBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mintBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162002d7f38038062002d7f8339810160408190526200003491620002e7565b806200004081620000b7565b506005805460ff1916905562000058600033620000d0565b620000847f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000d0565b620000b07f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620000d0565b5062000400565b8051620000cc9060049060208401906200022b565b5050565b620000cc8282620000ed82826200011960201b62000a871760201c565b60008281526001602090815260409091206200011491839062000b0b620001b9821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000cc576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001753390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001d0836001600160a01b038416620001d9565b90505b92915050565b60008181526001830160205260408120546200022257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620001d3565b506000620001d3565b8280546200023990620003c3565b90600052602060002090601f0160209004810192826200025d5760008555620002a8565b82601f106200027857805160ff1916838001178555620002a8565b82800160010185558215620002a8579182015b82811115620002a85782518255916020019190600101906200028b565b50620002b6929150620002ba565b5090565b5b80821115620002b65760008155600101620002bb565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215620002fb57600080fd5b82516001600160401b03808211156200031357600080fd5b818501915085601f8301126200032857600080fd5b8151818111156200033d576200033d620002d1565b604051601f8201601f19908116603f01168101908382118183101715620003685762000368620002d1565b8160405282815288868487010111156200038157600080fd5b600093505b82841015620003a5578484018601518185018701529285019262000386565b82841115620003b75760008684830101525b98975050505050505050565b600181811c90821680620003d857607f821691505b60208210811415620003fa57634e487b7160e01b600052602260045260246000fd5b50919050565b61296f80620004106000396000f3fe608060405234801561001057600080fd5b50600436106101725760003560e01c8063731133e9116100de578063ca15c87311610097578063e63ab1e911610071578063e63ab1e914610358578063e985e9c51461037f578063f242432a146103bb578063f5298aca146103ce57600080fd5b8063ca15c8731461030b578063d53913931461031e578063d547741f1461034557600080fd5b8063731133e9146102975780638456cb59146102aa5780639010d07c146102b257806391d14854146102dd578063a217fddf146102f0578063a22cb465146102f857600080fd5b80632f2ff15d116101305780632f2ff15d1461022b57806336568abe1461023e5780633f4ba83a146102515780634e1273f4146102595780635c975abb146102795780636b20c4541461028457600080fd5b8062fdd58e1461017757806301ffc9a71461019d5780630e89341c146101c05780631f7fdffa146101e0578063248a9ca3146101f55780632eb2c2d614610218575b600080fd5b61018a610185366004611d02565b6103e1565b6040519081526020015b60405180910390f35b6101b06101ab366004611d42565b61047c565b6040519015158152602001610194565b6101d36101ce366004611d5f565b610487565b6040516101949190611dd0565b6101f36101ee366004611f2f565b61051b565b005b61018a610203366004611d5f565b60009081526020819052604090206001015490565b6101f3610226366004611fc8565b610573565b6101f3610239366004612072565b6105bf565b6101f361024c366004612072565b6105e9565b6101f3610667565b61026c61026736600461209e565b61070d565b60405161019491906121a4565b60055460ff166101b0565b6101f36102923660046121b7565b610837565b6101f36102a536600461222b565b61087a565b6101f36108cc565b6102c56102c0366004612280565b610970565b6040516001600160a01b039091168152602001610194565b6101b06102eb366004612072565b61098f565b61018a600081565b6101f36103063660046122a2565b6109b8565b61018a610319366004611d5f565b6109c3565b61018a7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6101f3610353366004612072565b6109da565b61018a7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6101b061038d3660046122de565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b6101f36103c9366004612308565b6109ff565b6101f36103dc36600461236d565b610a44565b60006001600160a01b0383166104515760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b600061047682610b20565b606060048054610496906123a0565b80601f01602080910402602001604051908101604052809291908181526020018280546104c2906123a0565b801561050f5780601f106104e45761010080835404028352916020019161050f565b820191906000526020600020905b8154815290600101906020018083116104f257829003601f168201915b50505050509050919050565b6105457f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361098f565b6105615760405162461bcd60e51b8152600401610448906123db565b61056d84848484610b60565b50505050565b6001600160a01b03851633148061058f575061058f853361038d565b6105ab5760405162461bcd60e51b815260040161044890612438565b6105b88585858585610cbb565b5050505050565b6000828152602081905260409020600101546105da81610e68565b6105e48383610e75565b505050565b6001600160a01b03811633146106595760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610448565b6106638282610e97565b5050565b6106917f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a3361098f565b6107035760405162461bcd60e51b815260206004820152603b60248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f686176652070617573657220726f6c6520746f20756e706175736500000000006064820152608401610448565b61070b610eb9565b565b606081518351146107725760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610448565b6000835167ffffffffffffffff81111561078e5761078e611de3565b6040519080825280602002602001820160405280156107b7578160200160208202803683370190505b50905060005b845181101561082f576108028582815181106107db576107db612487565b60200260200101518583815181106107f5576107f5612487565b60200260200101516103e1565b82828151811061081457610814612487565b6020908102919091010152610828816124b3565b90506107bd565b509392505050565b6001600160a01b0383163314806108535750610853833361038d565b61086f5760405162461bcd60e51b815260040161044890612438565b6105e4838383610f0b565b6108a47f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361098f565b6108c05760405162461bcd60e51b8152600401610448906123db565b61056d848484846110aa565b6108f67f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a3361098f565b6109685760405162461bcd60e51b815260206004820152603960248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f686176652070617573657220726f6c6520746f207061757365000000000000006064820152608401610448565b61070b611195565b600082815260016020526040812061098890836111d2565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6106633383836111de565b6000818152600160205260408120610476906112bf565b6000828152602081905260409020600101546109f581610e68565b6105e48383610e97565b6001600160a01b038516331480610a1b5750610a1b853361038d565b610a375760405162461bcd60e51b815260040161044890612438565b6105b885858585856112c9565b6001600160a01b038316331480610a605750610a60833361038d565b610a7c5760405162461bcd60e51b815260040161044890612438565b6105e4838383611405565b610a91828261098f565b610663576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610ac73390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610988836001600160a01b038416611521565b60006001600160e01b03198216636cdb3d1360e11b1480610b5157506001600160e01b031982166303a24d0760e21b145b80610476575061047682611570565b6001600160a01b038416610b865760405162461bcd60e51b8152600401610448906124ce565b8151835114610ba75760405162461bcd60e51b81526004016104489061250f565b33610bb781600087878787611595565b60005b8451811015610c5357838181518110610bd557610bd5612487565b602002602001015160026000878481518110610bf357610bf3612487565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254610c3b9190612557565b90915550819050610c4b816124b3565b915050610bba565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610ca492919061256f565b60405180910390a46105b8816000878787876115a3565b8151835114610cdc5760405162461bcd60e51b81526004016104489061250f565b6001600160a01b038416610d025760405162461bcd60e51b81526004016104489061259d565b33610d11818787878787611595565b60005b8451811015610dfa576000858281518110610d3157610d31612487565b602002602001015190506000858381518110610d4f57610d4f612487565b60209081029190910181015160008481526002835260408082206001600160a01b038e168352909352919091205490915081811015610da05760405162461bcd60e51b8152600401610448906125e2565b60008381526002602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610ddf908490612557565b9250508190555050505080610df3906124b3565b9050610d14565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610e4a92919061256f565b60405180910390a4610e608187878787876115a3565b505050505050565b610e72813361170e565b50565b610e7f8282610a87565b60008281526001602052604090206105e49082610b0b565b610ea18282611772565b60008281526001602052604090206105e490826117d7565b610ec16117ec565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038316610f315760405162461bcd60e51b81526004016104489061262c565b8051825114610f525760405162461bcd60e51b81526004016104489061250f565b6000339050610f7581856000868660405180602001604052806000815250611595565b60005b835181101561103d576000848281518110610f9557610f95612487565b602002602001015190506000848381518110610fb357610fb3612487565b60209081029190910181015160008481526002835260408082206001600160a01b038c1683529093529190912054909150818110156110045760405162461bcd60e51b81526004016104489061266f565b60009283526002602090815260408085206001600160a01b038b1686529091529092209103905580611035816124b3565b915050610f78565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb868660405161108e92919061256f565b60405180910390a460408051602081019091526000905261056d565b6001600160a01b0384166110d05760405162461bcd60e51b8152600401610448906124ce565b3360006110dc85611835565b905060006110e985611835565b90506110fa83600089858589611595565b60008681526002602090815260408083206001600160a01b038b1684529091528120805487929061112c908490612557565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461118c83600089898989611880565b50505050505050565b61119d61194a565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610eee3390565b60006109888383611990565b816001600160a01b0316836001600160a01b031614156112525760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610448565b6001600160a01b03838116600081815260036020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6000610476825490565b6001600160a01b0384166112ef5760405162461bcd60e51b81526004016104489061259d565b3360006112fb85611835565b9050600061130885611835565b9050611318838989858589611595565b60008681526002602090815260408083206001600160a01b038c1684529091529020548581101561135b5760405162461bcd60e51b8152600401610448906125e2565b60008781526002602090815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061139a908490612557565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46113fa848a8a8a8a8a611880565b505050505050505050565b6001600160a01b03831661142b5760405162461bcd60e51b81526004016104489061262c565b33600061143784611835565b9050600061144484611835565b905061146483876000858560405180602001604052806000815250611595565b60008581526002602090815260408083206001600160a01b038a168452909152902054848110156114a75760405162461bcd60e51b81526004016104489061266f565b60008681526002602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091526000905261118c565b600081815260018301602052604081205461156857508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610476565b506000610476565b60006001600160e01b03198216635a05180f60e01b14806104765750610476826119ba565b610e608686868686866119ef565b6001600160a01b0384163b15610e605760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906115e790899089908890889088906004016126b3565b602060405180830381600087803b15801561160157600080fd5b505af1925050508015611631575060408051601f3d908101601f1916820190925261162e91810190612711565b60015b6116de5761163d61272e565b806308c379a01415611677575061165261274a565b8061165d5750611679565b8060405162461bcd60e51b81526004016104489190611dd0565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610448565b6001600160e01b0319811663bc197c8160e01b1461118c5760405162461bcd60e51b8152600401610448906127d4565b611718828261098f565b61066357611730816001600160a01b03166014611a57565b61173b836020611a57565b60405160200161174c92919061281c565b60408051601f198184030181529082905262461bcd60e51b825261044891600401611dd0565b61177c828261098f565b15610663576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610988836001600160a01b038416611bf3565b60055460ff1661070b5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610448565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061186f5761186f612487565b602090810291909101015292915050565b6001600160a01b0384163b15610e605760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906118c49089908990889088908890600401612891565b602060405180830381600087803b1580156118de57600080fd5b505af192505050801561190e575060408051601f3d908101601f1916820190925261190b91810190612711565b60015b61191a5761163d61272e565b6001600160e01b0319811663f23a6e6160e01b1461118c5760405162461bcd60e51b8152600401610448906127d4565b60055460ff161561070b5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610448565b60008260000182815481106119a7576119a7612487565b9060005260206000200154905092915050565b60006001600160e01b03198216637965db0b60e01b148061047657506301ffc9a760e01b6001600160e01b0319831614610476565b60055460ff1615610e605760405162461bcd60e51b815260206004820152602c60248201527f455243313135355061757361626c653a20746f6b656e207472616e736665722060448201526b1dda1a5b19481c185d5cd95960a21b6064820152608401610448565b60606000611a668360026128d6565b611a71906002612557565b67ffffffffffffffff811115611a8957611a89611de3565b6040519080825280601f01601f191660200182016040528015611ab3576020820181803683370190505b509050600360fc1b81600081518110611ace57611ace612487565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611afd57611afd612487565b60200101906001600160f81b031916908160001a9053506000611b218460026128d6565b611b2c906001612557565b90505b6001811115611ba4576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611b6057611b60612487565b1a60f81b828281518110611b7657611b76612487565b60200101906001600160f81b031916908160001a90535060049490941c93611b9d816128f5565b9050611b2f565b5083156109885760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610448565b60008181526001830160205260408120548015611cdc576000611c1760018361290c565b8554909150600090611c2b9060019061290c565b9050818114611c90576000866000018281548110611c4b57611c4b612487565b9060005260206000200154905080876000018481548110611c6e57611c6e612487565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611ca157611ca1612923565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610476565b6000915050610476565b80356001600160a01b0381168114611cfd57600080fd5b919050565b60008060408385031215611d1557600080fd5b611d1e83611ce6565b946020939093013593505050565b6001600160e01b031981168114610e7257600080fd5b600060208284031215611d5457600080fd5b813561098881611d2c565b600060208284031215611d7157600080fd5b5035919050565b60005b83811015611d93578181015183820152602001611d7b565b8381111561056d5750506000910152565b60008151808452611dbc816020860160208601611d78565b601f01601f19169290920160200192915050565b6020815260006109886020830184611da4565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715611e1f57611e1f611de3565b6040525050565b600067ffffffffffffffff821115611e4057611e40611de3565b5060051b60200190565b600082601f830112611e5b57600080fd5b81356020611e6882611e26565b604051611e758282611df9565b83815260059390931b8501820192828101915086841115611e9557600080fd5b8286015b84811015611eb05780358352918301918301611e99565b509695505050505050565b600082601f830112611ecc57600080fd5b813567ffffffffffffffff811115611ee657611ee6611de3565b604051611efd601f8301601f191660200182611df9565b818152846020838601011115611f1257600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611f4557600080fd5b611f4e85611ce6565b9350602085013567ffffffffffffffff80821115611f6b57600080fd5b611f7788838901611e4a565b94506040870135915080821115611f8d57600080fd5b611f9988838901611e4a565b93506060870135915080821115611faf57600080fd5b50611fbc87828801611ebb565b91505092959194509250565b600080600080600060a08688031215611fe057600080fd5b611fe986611ce6565b9450611ff760208701611ce6565b9350604086013567ffffffffffffffff8082111561201457600080fd5b61202089838a01611e4a565b9450606088013591508082111561203657600080fd5b61204289838a01611e4a565b9350608088013591508082111561205857600080fd5b5061206588828901611ebb565b9150509295509295909350565b6000806040838503121561208557600080fd5b8235915061209560208401611ce6565b90509250929050565b600080604083850312156120b157600080fd5b823567ffffffffffffffff808211156120c957600080fd5b818501915085601f8301126120dd57600080fd5b813560206120ea82611e26565b6040516120f78282611df9565b83815260059390931b850182019282810191508984111561211757600080fd5b948201945b8386101561213c5761212d86611ce6565b8252948201949082019061211c565b9650508601359250508082111561215257600080fd5b5061215f85828601611e4a565b9150509250929050565b600081518084526020808501945080840160005b838110156121995781518752958201959082019060010161217d565b509495945050505050565b6020815260006109886020830184612169565b6000806000606084860312156121cc57600080fd5b6121d584611ce6565b9250602084013567ffffffffffffffff808211156121f257600080fd5b6121fe87838801611e4a565b9350604086013591508082111561221457600080fd5b5061222186828701611e4a565b9150509250925092565b6000806000806080858703121561224157600080fd5b61224a85611ce6565b93506020850135925060408501359150606085013567ffffffffffffffff81111561227457600080fd5b611fbc87828801611ebb565b6000806040838503121561229357600080fd5b50508035926020909101359150565b600080604083850312156122b557600080fd5b6122be83611ce6565b9150602083013580151581146122d357600080fd5b809150509250929050565b600080604083850312156122f157600080fd5b6122fa83611ce6565b915061209560208401611ce6565b600080600080600060a0868803121561232057600080fd5b61232986611ce6565b945061233760208701611ce6565b93506040860135925060608601359150608086013567ffffffffffffffff81111561236157600080fd5b61206588828901611ebb565b60008060006060848603121561238257600080fd5b61238b84611ce6565b95602085013595506040909401359392505050565b600181811c908216806123b457607f821691505b602082108114156123d557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526038908201527f455243313135355072657365744d696e7465725061757365723a206d7573742060408201527f68617665206d696e74657220726f6c6520746f206d696e740000000000000000606082015260800190565b6020808252602f908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526e195c881b9bdc88185c1c1c9bdd9959608a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156124c7576124c761249d565b5060010190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b6000821982111561256a5761256a61249d565b500190565b6040815260006125826040830185612169565b82810360208401526125948185612169565b95945050505050565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60208082526023908201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526024908201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604082015263616e636560e01b606082015260800190565b6001600160a01b0386811682528516602082015260a0604082018190526000906126df90830186612169565b82810360608401526126f18186612169565b905082810360808401526127058185611da4565b98975050505050505050565b60006020828403121561272357600080fd5b815161098881611d2c565b600060033d11156127475760046000803e5060005160e01c5b90565b600060443d10156127585790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561278857505050505090565b82850191508151818111156127a05750505050505090565b843d87010160208285010111156127ba5750505050505090565b6127c960208286010187611df9565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612854816017850160208801611d78565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612885816028840160208801611d78565b01602801949350505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906128cb90830184611da4565b979650505050505050565b60008160001904831182151516156128f0576128f061249d565b500290565b6000816129045761290461249d565b506000190190565b60008282101561291e5761291e61249d565b500390565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220f23b72c48861ea1d650c5aa7b26b2a1da82c07a3eb091612de6e3befb8b92ecc64736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101725760003560e01c8063731133e9116100de578063ca15c87311610097578063e63ab1e911610071578063e63ab1e914610358578063e985e9c51461037f578063f242432a146103bb578063f5298aca146103ce57600080fd5b8063ca15c8731461030b578063d53913931461031e578063d547741f1461034557600080fd5b8063731133e9146102975780638456cb59146102aa5780639010d07c146102b257806391d14854146102dd578063a217fddf146102f0578063a22cb465146102f857600080fd5b80632f2ff15d116101305780632f2ff15d1461022b57806336568abe1461023e5780633f4ba83a146102515780634e1273f4146102595780635c975abb146102795780636b20c4541461028457600080fd5b8062fdd58e1461017757806301ffc9a71461019d5780630e89341c146101c05780631f7fdffa146101e0578063248a9ca3146101f55780632eb2c2d614610218575b600080fd5b61018a610185366004611d02565b6103e1565b6040519081526020015b60405180910390f35b6101b06101ab366004611d42565b61047c565b6040519015158152602001610194565b6101d36101ce366004611d5f565b610487565b6040516101949190611dd0565b6101f36101ee366004611f2f565b61051b565b005b61018a610203366004611d5f565b60009081526020819052604090206001015490565b6101f3610226366004611fc8565b610573565b6101f3610239366004612072565b6105bf565b6101f361024c366004612072565b6105e9565b6101f3610667565b61026c61026736600461209e565b61070d565b60405161019491906121a4565b60055460ff166101b0565b6101f36102923660046121b7565b610837565b6101f36102a536600461222b565b61087a565b6101f36108cc565b6102c56102c0366004612280565b610970565b6040516001600160a01b039091168152602001610194565b6101b06102eb366004612072565b61098f565b61018a600081565b6101f36103063660046122a2565b6109b8565b61018a610319366004611d5f565b6109c3565b61018a7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6101f3610353366004612072565b6109da565b61018a7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6101b061038d3660046122de565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b6101f36103c9366004612308565b6109ff565b6101f36103dc36600461236d565b610a44565b60006001600160a01b0383166104515760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b600061047682610b20565b606060048054610496906123a0565b80601f01602080910402602001604051908101604052809291908181526020018280546104c2906123a0565b801561050f5780601f106104e45761010080835404028352916020019161050f565b820191906000526020600020905b8154815290600101906020018083116104f257829003601f168201915b50505050509050919050565b6105457f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361098f565b6105615760405162461bcd60e51b8152600401610448906123db565b61056d84848484610b60565b50505050565b6001600160a01b03851633148061058f575061058f853361038d565b6105ab5760405162461bcd60e51b815260040161044890612438565b6105b88585858585610cbb565b5050505050565b6000828152602081905260409020600101546105da81610e68565b6105e48383610e75565b505050565b6001600160a01b03811633146106595760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610448565b6106638282610e97565b5050565b6106917f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a3361098f565b6107035760405162461bcd60e51b815260206004820152603b60248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f686176652070617573657220726f6c6520746f20756e706175736500000000006064820152608401610448565b61070b610eb9565b565b606081518351146107725760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610448565b6000835167ffffffffffffffff81111561078e5761078e611de3565b6040519080825280602002602001820160405280156107b7578160200160208202803683370190505b50905060005b845181101561082f576108028582815181106107db576107db612487565b60200260200101518583815181106107f5576107f5612487565b60200260200101516103e1565b82828151811061081457610814612487565b6020908102919091010152610828816124b3565b90506107bd565b509392505050565b6001600160a01b0383163314806108535750610853833361038d565b61086f5760405162461bcd60e51b815260040161044890612438565b6105e4838383610f0b565b6108a47f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361098f565b6108c05760405162461bcd60e51b8152600401610448906123db565b61056d848484846110aa565b6108f67f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a3361098f565b6109685760405162461bcd60e51b815260206004820152603960248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f686176652070617573657220726f6c6520746f207061757365000000000000006064820152608401610448565b61070b611195565b600082815260016020526040812061098890836111d2565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6106633383836111de565b6000818152600160205260408120610476906112bf565b6000828152602081905260409020600101546109f581610e68565b6105e48383610e97565b6001600160a01b038516331480610a1b5750610a1b853361038d565b610a375760405162461bcd60e51b815260040161044890612438565b6105b885858585856112c9565b6001600160a01b038316331480610a605750610a60833361038d565b610a7c5760405162461bcd60e51b815260040161044890612438565b6105e4838383611405565b610a91828261098f565b610663576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610ac73390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610988836001600160a01b038416611521565b60006001600160e01b03198216636cdb3d1360e11b1480610b5157506001600160e01b031982166303a24d0760e21b145b80610476575061047682611570565b6001600160a01b038416610b865760405162461bcd60e51b8152600401610448906124ce565b8151835114610ba75760405162461bcd60e51b81526004016104489061250f565b33610bb781600087878787611595565b60005b8451811015610c5357838181518110610bd557610bd5612487565b602002602001015160026000878481518110610bf357610bf3612487565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254610c3b9190612557565b90915550819050610c4b816124b3565b915050610bba565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610ca492919061256f565b60405180910390a46105b8816000878787876115a3565b8151835114610cdc5760405162461bcd60e51b81526004016104489061250f565b6001600160a01b038416610d025760405162461bcd60e51b81526004016104489061259d565b33610d11818787878787611595565b60005b8451811015610dfa576000858281518110610d3157610d31612487565b602002602001015190506000858381518110610d4f57610d4f612487565b60209081029190910181015160008481526002835260408082206001600160a01b038e168352909352919091205490915081811015610da05760405162461bcd60e51b8152600401610448906125e2565b60008381526002602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610ddf908490612557565b9250508190555050505080610df3906124b3565b9050610d14565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610e4a92919061256f565b60405180910390a4610e608187878787876115a3565b505050505050565b610e72813361170e565b50565b610e7f8282610a87565b60008281526001602052604090206105e49082610b0b565b610ea18282611772565b60008281526001602052604090206105e490826117d7565b610ec16117ec565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038316610f315760405162461bcd60e51b81526004016104489061262c565b8051825114610f525760405162461bcd60e51b81526004016104489061250f565b6000339050610f7581856000868660405180602001604052806000815250611595565b60005b835181101561103d576000848281518110610f9557610f95612487565b602002602001015190506000848381518110610fb357610fb3612487565b60209081029190910181015160008481526002835260408082206001600160a01b038c1683529093529190912054909150818110156110045760405162461bcd60e51b81526004016104489061266f565b60009283526002602090815260408085206001600160a01b038b1686529091529092209103905580611035816124b3565b915050610f78565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb868660405161108e92919061256f565b60405180910390a460408051602081019091526000905261056d565b6001600160a01b0384166110d05760405162461bcd60e51b8152600401610448906124ce565b3360006110dc85611835565b905060006110e985611835565b90506110fa83600089858589611595565b60008681526002602090815260408083206001600160a01b038b1684529091528120805487929061112c908490612557565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461118c83600089898989611880565b50505050505050565b61119d61194a565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610eee3390565b60006109888383611990565b816001600160a01b0316836001600160a01b031614156112525760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610448565b6001600160a01b03838116600081815260036020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6000610476825490565b6001600160a01b0384166112ef5760405162461bcd60e51b81526004016104489061259d565b3360006112fb85611835565b9050600061130885611835565b9050611318838989858589611595565b60008681526002602090815260408083206001600160a01b038c1684529091529020548581101561135b5760405162461bcd60e51b8152600401610448906125e2565b60008781526002602090815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061139a908490612557565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46113fa848a8a8a8a8a611880565b505050505050505050565b6001600160a01b03831661142b5760405162461bcd60e51b81526004016104489061262c565b33600061143784611835565b9050600061144484611835565b905061146483876000858560405180602001604052806000815250611595565b60008581526002602090815260408083206001600160a01b038a168452909152902054848110156114a75760405162461bcd60e51b81526004016104489061266f565b60008681526002602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091526000905261118c565b600081815260018301602052604081205461156857508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610476565b506000610476565b60006001600160e01b03198216635a05180f60e01b14806104765750610476826119ba565b610e608686868686866119ef565b6001600160a01b0384163b15610e605760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906115e790899089908890889088906004016126b3565b602060405180830381600087803b15801561160157600080fd5b505af1925050508015611631575060408051601f3d908101601f1916820190925261162e91810190612711565b60015b6116de5761163d61272e565b806308c379a01415611677575061165261274a565b8061165d5750611679565b8060405162461bcd60e51b81526004016104489190611dd0565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610448565b6001600160e01b0319811663bc197c8160e01b1461118c5760405162461bcd60e51b8152600401610448906127d4565b611718828261098f565b61066357611730816001600160a01b03166014611a57565b61173b836020611a57565b60405160200161174c92919061281c565b60408051601f198184030181529082905262461bcd60e51b825261044891600401611dd0565b61177c828261098f565b15610663576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610988836001600160a01b038416611bf3565b60055460ff1661070b5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610448565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061186f5761186f612487565b602090810291909101015292915050565b6001600160a01b0384163b15610e605760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906118c49089908990889088908890600401612891565b602060405180830381600087803b1580156118de57600080fd5b505af192505050801561190e575060408051601f3d908101601f1916820190925261190b91810190612711565b60015b61191a5761163d61272e565b6001600160e01b0319811663f23a6e6160e01b1461118c5760405162461bcd60e51b8152600401610448906127d4565b60055460ff161561070b5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610448565b60008260000182815481106119a7576119a7612487565b9060005260206000200154905092915050565b60006001600160e01b03198216637965db0b60e01b148061047657506301ffc9a760e01b6001600160e01b0319831614610476565b60055460ff1615610e605760405162461bcd60e51b815260206004820152602c60248201527f455243313135355061757361626c653a20746f6b656e207472616e736665722060448201526b1dda1a5b19481c185d5cd95960a21b6064820152608401610448565b60606000611a668360026128d6565b611a71906002612557565b67ffffffffffffffff811115611a8957611a89611de3565b6040519080825280601f01601f191660200182016040528015611ab3576020820181803683370190505b509050600360fc1b81600081518110611ace57611ace612487565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611afd57611afd612487565b60200101906001600160f81b031916908160001a9053506000611b218460026128d6565b611b2c906001612557565b90505b6001811115611ba4576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611b6057611b60612487565b1a60f81b828281518110611b7657611b76612487565b60200101906001600160f81b031916908160001a90535060049490941c93611b9d816128f5565b9050611b2f565b5083156109885760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610448565b60008181526001830160205260408120548015611cdc576000611c1760018361290c565b8554909150600090611c2b9060019061290c565b9050818114611c90576000866000018281548110611c4b57611c4b612487565b9060005260206000200154905080876000018481548110611c6e57611c6e612487565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611ca157611ca1612923565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610476565b6000915050610476565b80356001600160a01b0381168114611cfd57600080fd5b919050565b60008060408385031215611d1557600080fd5b611d1e83611ce6565b946020939093013593505050565b6001600160e01b031981168114610e7257600080fd5b600060208284031215611d5457600080fd5b813561098881611d2c565b600060208284031215611d7157600080fd5b5035919050565b60005b83811015611d93578181015183820152602001611d7b565b8381111561056d5750506000910152565b60008151808452611dbc816020860160208601611d78565b601f01601f19169290920160200192915050565b6020815260006109886020830184611da4565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715611e1f57611e1f611de3565b6040525050565b600067ffffffffffffffff821115611e4057611e40611de3565b5060051b60200190565b600082601f830112611e5b57600080fd5b81356020611e6882611e26565b604051611e758282611df9565b83815260059390931b8501820192828101915086841115611e9557600080fd5b8286015b84811015611eb05780358352918301918301611e99565b509695505050505050565b600082601f830112611ecc57600080fd5b813567ffffffffffffffff811115611ee657611ee6611de3565b604051611efd601f8301601f191660200182611df9565b818152846020838601011115611f1257600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611f4557600080fd5b611f4e85611ce6565b9350602085013567ffffffffffffffff80821115611f6b57600080fd5b611f7788838901611e4a565b94506040870135915080821115611f8d57600080fd5b611f9988838901611e4a565b93506060870135915080821115611faf57600080fd5b50611fbc87828801611ebb565b91505092959194509250565b600080600080600060a08688031215611fe057600080fd5b611fe986611ce6565b9450611ff760208701611ce6565b9350604086013567ffffffffffffffff8082111561201457600080fd5b61202089838a01611e4a565b9450606088013591508082111561203657600080fd5b61204289838a01611e4a565b9350608088013591508082111561205857600080fd5b5061206588828901611ebb565b9150509295509295909350565b6000806040838503121561208557600080fd5b8235915061209560208401611ce6565b90509250929050565b600080604083850312156120b157600080fd5b823567ffffffffffffffff808211156120c957600080fd5b818501915085601f8301126120dd57600080fd5b813560206120ea82611e26565b6040516120f78282611df9565b83815260059390931b850182019282810191508984111561211757600080fd5b948201945b8386101561213c5761212d86611ce6565b8252948201949082019061211c565b9650508601359250508082111561215257600080fd5b5061215f85828601611e4a565b9150509250929050565b600081518084526020808501945080840160005b838110156121995781518752958201959082019060010161217d565b509495945050505050565b6020815260006109886020830184612169565b6000806000606084860312156121cc57600080fd5b6121d584611ce6565b9250602084013567ffffffffffffffff808211156121f257600080fd5b6121fe87838801611e4a565b9350604086013591508082111561221457600080fd5b5061222186828701611e4a565b9150509250925092565b6000806000806080858703121561224157600080fd5b61224a85611ce6565b93506020850135925060408501359150606085013567ffffffffffffffff81111561227457600080fd5b611fbc87828801611ebb565b6000806040838503121561229357600080fd5b50508035926020909101359150565b600080604083850312156122b557600080fd5b6122be83611ce6565b9150602083013580151581146122d357600080fd5b809150509250929050565b600080604083850312156122f157600080fd5b6122fa83611ce6565b915061209560208401611ce6565b600080600080600060a0868803121561232057600080fd5b61232986611ce6565b945061233760208701611ce6565b93506040860135925060608601359150608086013567ffffffffffffffff81111561236157600080fd5b61206588828901611ebb565b60008060006060848603121561238257600080fd5b61238b84611ce6565b95602085013595506040909401359392505050565b600181811c908216806123b457607f821691505b602082108114156123d557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526038908201527f455243313135355072657365744d696e7465725061757365723a206d7573742060408201527f68617665206d696e74657220726f6c6520746f206d696e740000000000000000606082015260800190565b6020808252602f908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526e195c881b9bdc88185c1c1c9bdd9959608a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156124c7576124c761249d565b5060010190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b6000821982111561256a5761256a61249d565b500190565b6040815260006125826040830185612169565b82810360208401526125948185612169565b95945050505050565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60208082526023908201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526024908201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604082015263616e636560e01b606082015260800190565b6001600160a01b0386811682528516602082015260a0604082018190526000906126df90830186612169565b82810360608401526126f18186612169565b905082810360808401526127058185611da4565b98975050505050505050565b60006020828403121561272357600080fd5b815161098881611d2c565b600060033d11156127475760046000803e5060005160e01c5b90565b600060443d10156127585790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561278857505050505090565b82850191508151818111156127a05750505050505090565b843d87010160208285010111156127ba5750505050505090565b6127c960208286010187611df9565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612854816017850160208801611d78565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612885816028840160208801611d78565b01602801949350505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906128cb90830184611da4565b979650505050505050565b60008160001904831182151516156128f0576128f061249d565b500290565b6000816129045761290461249d565b506000190190565b60008282101561291e5761291e61249d565b500390565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220f23b72c48861ea1d650c5aa7b26b2a1da82c07a3eb091612de6e3befb8b92ecc64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/utils/ERC1155Holder":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Holder","sourceName":"contracts/token/ERC1155/utils/ERC1155Holder.sol","abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506103c5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a714610046578063bc197c811461006e578063f23a6e61146100a6575b600080fd5b6100596100543660046100fc565b6100c5565b60405190151581526020015b60405180910390f35b61008d61007c366004610280565b63bc197c8160e01b95945050505050565b6040516001600160e01b03199091168152602001610065565b61008d6100b436600461032a565b63f23a6e6160e01b95945050505050565b60006001600160e01b03198216630271189760e51b14806100f657506301ffc9a760e01b6001600160e01b03198316145b92915050565b60006020828403121561010e57600080fd5b81356001600160e01b03198116811461012657600080fd5b9392505050565b80356001600160a01b038116811461014457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561018857610188610149565b604052919050565b600082601f8301126101a157600080fd5b8135602067ffffffffffffffff8211156101bd576101bd610149565b8160051b6101cc82820161015f565b92835284810182019282810190878511156101e657600080fd5b83870192505b84831015610205578235825291830191908301906101ec565b979650505050505050565b600082601f83011261022157600080fd5b813567ffffffffffffffff81111561023b5761023b610149565b61024e601f8201601f191660200161015f565b81815284602083860101111561026357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561029857600080fd5b6102a18661012d565b94506102af6020870161012d565b9350604086013567ffffffffffffffff808211156102cc57600080fd5b6102d889838a01610190565b945060608801359150808211156102ee57600080fd5b6102fa89838a01610190565b9350608088013591508082111561031057600080fd5b5061031d88828901610210565b9150509295509295909350565b600080600080600060a0868803121561034257600080fd5b61034b8661012d565b94506103596020870161012d565b93506040860135925060608601359150608086013567ffffffffffffffff81111561038357600080fd5b61031d8882890161021056fea2646970667358221220017f716b93360c6547823d1a00353560c3ee01dab8ebc26c9d45dc0fef87f03364736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a714610046578063bc197c811461006e578063f23a6e61146100a6575b600080fd5b6100596100543660046100fc565b6100c5565b60405190151581526020015b60405180910390f35b61008d61007c366004610280565b63bc197c8160e01b95945050505050565b6040516001600160e01b03199091168152602001610065565b61008d6100b436600461032a565b63f23a6e6160e01b95945050505050565b60006001600160e01b03198216630271189760e51b14806100f657506301ffc9a760e01b6001600160e01b03198316145b92915050565b60006020828403121561010e57600080fd5b81356001600160e01b03198116811461012657600080fd5b9392505050565b80356001600160a01b038116811461014457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561018857610188610149565b604052919050565b600082601f8301126101a157600080fd5b8135602067ffffffffffffffff8211156101bd576101bd610149565b8160051b6101cc82820161015f565b92835284810182019282810190878511156101e657600080fd5b83870192505b84831015610205578235825291830191908301906101ec565b979650505050505050565b600082601f83011261022157600080fd5b813567ffffffffffffffff81111561023b5761023b610149565b61024e601f8201601f191660200161015f565b81815284602083860101111561026357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561029857600080fd5b6102a18661012d565b94506102af6020870161012d565b9350604086013567ffffffffffffffff808211156102cc57600080fd5b6102d889838a01610190565b945060608801359150808211156102ee57600080fd5b6102fa89838a01610190565b9350608088013591508082111561031057600080fd5b5061031d88828901610210565b9150509295509295909350565b600080600080600060a0868803121561034257600080fd5b61034b8661012d565b94506103596020870161012d565b93506040860135925060608601359150608086013567ffffffffffffffff81111561038357600080fd5b61031d8882890161021056fea2646970667358221220017f716b93360c6547823d1a00353560c3ee01dab8ebc26c9d45dc0fef87f03364736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/utils/ERC1155Receiver":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Receiver","sourceName":"contracts/token/ERC1155/utils/ERC1155Receiver.sol","abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/ERC20":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20","sourceName":"contracts/token/ERC20/ERC20.sol","abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162000b1938038062000b198339810160408190526200003491620001db565b81516200004990600390602085019062000068565b5080516200005f90600490602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b61088780620002926000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c391906106c4565b60405180910390f35b6100df6100da366004610735565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f36600461075f565b61024a565b604051601281526020016100c3565b6100df610131366004610735565b61026e565b6100f361014436600461079b565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df610175366004610735565b61029f565b6100df610188366004610735565b61031f565b6100f361019b3660046107bd565b61032d565b6060600380546101af906107f0565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107f0565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b919061082b565b610358565b6060600480546101af906107f0565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061066b90849061082b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106b791815260200190565b60405180910390a36104f0565b600060208083528351808285015260005b818110156106f1578581018301518582016040015282016106d5565b81811115610703576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461073057600080fd5b919050565b6000806040838503121561074857600080fd5b61075183610719565b946020939093013593505050565b60008060006060848603121561077457600080fd5b61077d84610719565b925061078b60208501610719565b9150604084013590509250925092565b6000602082840312156107ad57600080fd5b6107b682610719565b9392505050565b600080604083850312156107d057600080fd5b6107d983610719565b91506107e760208401610719565b90509250929050565b600181811c9082168061080457607f821691505b6020821081141561082557634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561084c57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220701d02b02100b16cb72e770d2f394f3d0fad6d2f51381cf7f917c7cf674e18b364736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c391906106c4565b60405180910390f35b6100df6100da366004610735565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f36600461075f565b61024a565b604051601281526020016100c3565b6100df610131366004610735565b61026e565b6100f361014436600461079b565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df610175366004610735565b61029f565b6100df610188366004610735565b61031f565b6100f361019b3660046107bd565b61032d565b6060600380546101af906107f0565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107f0565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b919061082b565b610358565b6060600480546101af906107f0565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061066b90849061082b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106b791815260200190565b60405180910390a36104f0565b600060208083528351808285015260005b818110156106f1578581018301518582016040015282016106d5565b81811115610703576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461073057600080fd5b919050565b6000806040838503121561074857600080fd5b61075183610719565b946020939093013593505050565b60008060006060848603121561077457600080fd5b61077d84610719565b925061078b60208501610719565b9150604084013590509250925092565b6000602082840312156107ad57600080fd5b6107b682610719565b9392505050565b600080604083850312156107d057600080fd5b6107d983610719565b91506107e760208401610719565b90509250929050565b600181811c9082168061080457607f821691505b6020821081141561082557634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561084c57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220701d02b02100b16cb72e770d2f394f3d0fad6d2f51381cf7f917c7cf674e18b364736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20Permit":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20Permit","sourceName":"contracts/token/ERC20/extensions/draft-ERC20Permit.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/IERC20Permit":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC20Permit","sourceName":"contracts/token/ERC20/extensions/draft-IERC20Permit.sol","abi":[{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20Burnable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20Burnable","sourceName":"contracts/token/ERC20/extensions/ERC20Burnable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20Capped":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20Capped","sourceName":"contracts/token/ERC20/extensions/ERC20Capped.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20FlashMint":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20FlashMint","sourceName":"contracts/token/ERC20/extensions/ERC20FlashMint.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"flashFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"flashLoan","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"maxFlashLoan","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20Pausable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20Pausable","sourceName":"contracts/token/ERC20/extensions/ERC20Pausable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20Snapshot":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20Snapshot","sourceName":"contracts/token/ERC20/extensions/ERC20Snapshot.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Snapshot","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"name":"balanceOfAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"name":"totalSupplyAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20Votes":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20Votes","sourceName":"contracts/token/ERC20/extensions/ERC20Votes.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint32","name":"pos","type":"uint32"}],"name":"checkpoints","outputs":[{"components":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint224","name":"votes","type":"uint224"}],"internalType":"struct ERC20Votes.Checkpoint","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20VotesComp":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20VotesComp","sourceName":"contracts/token/ERC20/extensions/ERC20VotesComp.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint32","name":"pos","type":"uint32"}],"name":"checkpoints","outputs":[{"components":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint224","name":"votes","type":"uint224"}],"internalType":"struct ERC20Votes.Checkpoint","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20Wrapper":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20Wrapper","sourceName":"contracts/token/ERC20/extensions/ERC20Wrapper.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC4626":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC4626","sourceName":"contracts/token/ERC20/extensions/ERC4626.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"convertToShares","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/IERC20Metadata":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC20Metadata","sourceName":"contracts/token/ERC20/extensions/IERC20Metadata.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/IERC20":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC20","sourceName":"contracts/token/ERC20/IERC20.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/presets/ERC20PresetFixedSupply":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20PresetFixedSupply","sourceName":"contracts/token/ERC20/presets/ERC20PresetFixedSupply.sol","abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162000e6038038062000e608339810160408190526200003491620002dd565b8351849084906200004d9060039060208501906200016a565b508051620000639060049060208401906200016a565b5050506200007881836200008260201b60201c565b50505050620003d6565b6001600160a01b038216620000dd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000f1919062000372565b90915550506001600160a01b038216600090815260208190526040812080548392906200012090849062000372565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001789062000399565b90600052602060002090601f0160209004810192826200019c5760008555620001e7565b82601f10620001b757805160ff1916838001178555620001e7565b82800160010185558215620001e7579182015b82811115620001e7578251825591602001919060010190620001ca565b50620001f5929150620001f9565b5090565b5b80821115620001f55760008155600101620001fa565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200023857600080fd5b81516001600160401b038082111562000255576200025562000210565b604051601f8301601f19908116603f0116810190828211818310171562000280576200028062000210565b816040528381526020925086838588010111156200029d57600080fd5b600091505b83821015620002c15785820183015181830184015290820190620002a2565b83821115620002d35760008385830101525b9695505050505050565b60008060008060808587031215620002f457600080fd5b84516001600160401b03808211156200030c57600080fd5b6200031a8883890162000226565b955060208701519150808211156200033157600080fd5b50620003408782880162000226565b60408701516060880151919550935090506001600160a01b03811681146200036757600080fd5b939692955090935050565b600082198211156200039457634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620003ae57607f821691505b60208210811415620003d057634e487b7160e01b600052602260045260246000fd5b50919050565b610a7a80620003e66000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101ad578063a457c2d7146101b5578063a9059cbb146101c8578063dd62ed3e146101db57600080fd5b806342966c681461015c57806370a082311461017157806379cc67901461019a57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a5780633950935114610149575b600080fd5b6100dc6101ee565b6040516100e9919061087f565b60405180910390f35b6101056101003660046108f0565b610280565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b61010561013536600461091a565b610298565b604051601281526020016100e9565b6101056101573660046108f0565b6102bc565b61016f61016a366004610956565b6102de565b005b61011961017f36600461096f565b6001600160a01b031660009081526020819052604090205490565b61016f6101a83660046108f0565b6102eb565b6100dc610304565b6101056101c33660046108f0565b610313565b6101056101d63660046108f0565b610393565b6101196101e9366004610991565b6103a1565b6060600380546101fd906109c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610229906109c4565b80156102765780601f1061024b57610100808354040283529160200191610276565b820191906000526020600020905b81548152906001019060200180831161025957829003601f168201915b5050505050905090565b60003361028e8185856103cc565b5060019392505050565b6000336102a68582856104f1565b6102b185858561056b565b506001949350505050565b60003361028e8185856102cf83836103a1565b6102d99190610a15565b6103cc565b6102e83382610739565b50565b6102f68233836104f1565b6103008282610739565b5050565b6060600480546101fd906109c4565b6000338161032182866103a1565b9050838110156103865760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102b182868684036103cc565b60003361028e81858561056b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661042e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161037d565b6001600160a01b03821661048f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161037d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104fd84846103a1565b9050600019811461056557818110156105585760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161037d565b61056584848484036103cc565b50505050565b6001600160a01b0383166105cf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161037d565b6001600160a01b0382166106315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161037d565b6001600160a01b038316600090815260208190526040902054818110156106a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161037d565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106e0908490610a15565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161072c91815260200190565b60405180910390a3610565565b6001600160a01b0382166107995760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161037d565b6001600160a01b0382166000908152602081905260409020548181101561080d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161037d565b6001600160a01b038316600090815260208190526040812083830390556002805484929061083c908490610a2d565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016104e4565b600060208083528351808285015260005b818110156108ac57858101830151858201604001528201610890565b818111156108be576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146108eb57600080fd5b919050565b6000806040838503121561090357600080fd5b61090c836108d4565b946020939093013593505050565b60008060006060848603121561092f57600080fd5b610938846108d4565b9250610946602085016108d4565b9150604084013590509250925092565b60006020828403121561096857600080fd5b5035919050565b60006020828403121561098157600080fd5b61098a826108d4565b9392505050565b600080604083850312156109a457600080fd5b6109ad836108d4565b91506109bb602084016108d4565b90509250929050565b600181811c908216806109d857607f821691505b602082108114156109f957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610a2857610a286109ff565b500190565b600082821015610a3f57610a3f6109ff565b50039056fea2646970667358221220dc132e0f3aa42d082859bdc07e1b4889eb86baeb5b4f060715848c54b723ece964736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101ad578063a457c2d7146101b5578063a9059cbb146101c8578063dd62ed3e146101db57600080fd5b806342966c681461015c57806370a082311461017157806379cc67901461019a57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a5780633950935114610149575b600080fd5b6100dc6101ee565b6040516100e9919061087f565b60405180910390f35b6101056101003660046108f0565b610280565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b61010561013536600461091a565b610298565b604051601281526020016100e9565b6101056101573660046108f0565b6102bc565b61016f61016a366004610956565b6102de565b005b61011961017f36600461096f565b6001600160a01b031660009081526020819052604090205490565b61016f6101a83660046108f0565b6102eb565b6100dc610304565b6101056101c33660046108f0565b610313565b6101056101d63660046108f0565b610393565b6101196101e9366004610991565b6103a1565b6060600380546101fd906109c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610229906109c4565b80156102765780601f1061024b57610100808354040283529160200191610276565b820191906000526020600020905b81548152906001019060200180831161025957829003601f168201915b5050505050905090565b60003361028e8185856103cc565b5060019392505050565b6000336102a68582856104f1565b6102b185858561056b565b506001949350505050565b60003361028e8185856102cf83836103a1565b6102d99190610a15565b6103cc565b6102e83382610739565b50565b6102f68233836104f1565b6103008282610739565b5050565b6060600480546101fd906109c4565b6000338161032182866103a1565b9050838110156103865760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102b182868684036103cc565b60003361028e81858561056b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661042e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161037d565b6001600160a01b03821661048f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161037d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104fd84846103a1565b9050600019811461056557818110156105585760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161037d565b61056584848484036103cc565b50505050565b6001600160a01b0383166105cf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161037d565b6001600160a01b0382166106315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161037d565b6001600160a01b038316600090815260208190526040902054818110156106a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161037d565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106e0908490610a15565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161072c91815260200190565b60405180910390a3610565565b6001600160a01b0382166107995760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161037d565b6001600160a01b0382166000908152602081905260409020548181101561080d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161037d565b6001600160a01b038316600090815260208190526040812083830390556002805484929061083c908490610a2d565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016104e4565b600060208083528351808285015260005b818110156108ac57858101830151858201604001528201610890565b818111156108be576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146108eb57600080fd5b919050565b6000806040838503121561090357600080fd5b61090c836108d4565b946020939093013593505050565b60008060006060848603121561092f57600080fd5b610938846108d4565b9250610946602085016108d4565b9150604084013590509250925092565b60006020828403121561096857600080fd5b5035919050565b60006020828403121561098157600080fd5b61098a826108d4565b9392505050565b600080604083850312156109a457600080fd5b6109ad836108d4565b91506109bb602084016108d4565b90509250929050565b600181811c908216806109d857607f821691505b602082108114156109f957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610a2857610a286109ff565b500190565b600082821015610a3f57610a3f6109ff565b50039056fea2646970667358221220dc132e0f3aa42d082859bdc07e1b4889eb86baeb5b4f060715848c54b723ece964736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/presets/ERC20PresetMinterPauser":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20PresetMinterPauser","sourceName":"contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol","abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162001d6638038062001d668339810160408190526200003491620003b5565b8151829082906200004d90600590602085019062000242565b5080516200006390600690602084019062000242565b50506007805460ff19169055506200007d600033620000dd565b620000a97f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000dd565b620000d57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620000dd565b50506200045c565b620000e98282620000ed565b5050565b6200010482826200013060201b6200093d1760201c565b60008281526001602090815260409091206200012b918390620009c1620001d0821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000e9576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556200018c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001e7836001600160a01b038416620001f0565b90505b92915050565b60008181526001830160205260408120546200023957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620001ea565b506000620001ea565b82805462000250906200041f565b90600052602060002090601f016020900481019282620002745760008555620002bf565b82601f106200028f57805160ff1916838001178555620002bf565b82800160010185558215620002bf579182015b82811115620002bf578251825591602001919060010190620002a2565b50620002cd929150620002d1565b5090565b5b80821115620002cd5760008155600101620002d2565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200031057600080fd5b81516001600160401b03808211156200032d576200032d620002e8565b604051601f8301601f19908116603f01168101908282118183101715620003585762000358620002e8565b816040528381526020925086838588010111156200037557600080fd5b600091505b838210156200039957858201830151818301840152908201906200037a565b83821115620003ab5760008385830101525b9695505050505050565b60008060408385031215620003c957600080fd5b82516001600160401b0380821115620003e157600080fd5b620003ef86838701620002fe565b935060208501519150808211156200040657600080fd5b506200041585828601620002fe565b9150509250929050565b600181811c908216806200043457607f821691505b602082108114156200045657634e487b7160e01b600052602260045260246000fd5b50919050565b6118fa806200046c6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063a457c2d711610097578063d539139311610071578063d5391393146103af578063d547741f146103d6578063dd62ed3e146103e9578063e63ab1e9146103fc57600080fd5b8063a457c2d714610376578063a9059cbb14610389578063ca15c8731461039c57600080fd5b80639010d07c116100d35780639010d07c1461032857806391d148541461035357806395d89b4114610366578063a217fddf1461036e57600080fd5b806370a08231146102e457806379cc67901461030d5780638456cb591461032057600080fd5b8063313ce567116101665780633f4ba83a116101405780633f4ba83a146102ab57806340c10f19146102b357806342966c68146102c65780635c975abb146102d957600080fd5b8063313ce5671461027657806336568abe14610285578063395093511461029857600080fd5b806318160ddd116101a257806318160ddd1461021957806323b872dd1461022b578063248a9ca31461023e5780632f2ff15d1461026157600080fd5b806301ffc9a7146101c957806306fdde03146101f1578063095ea7b314610206575b600080fd5b6101dc6101d73660046115a0565b610423565b60405190151581526020015b60405180910390f35b6101f961044e565b6040516101e891906115f6565b6101dc610214366004611645565b6104e0565b6004545b6040519081526020016101e8565b6101dc61023936600461166f565b6104f8565b61021d61024c3660046116ab565b60009081526020819052604090206001015490565b61027461026f3660046116c4565b61051c565b005b604051601281526020016101e8565b6102746102933660046116c4565b610546565b6101dc6102a6366004611645565b6105c9565b6102746105eb565b6102746102c1366004611645565b610691565b6102746102d43660046116ab565b610730565b60075460ff166101dc565b61021d6102f23660046116f0565b6001600160a01b031660009081526002602052604090205490565b61027461031b366004611645565b61073d565b610274610752565b61033b61033636600461170b565b6107f6565b6040516001600160a01b0390911681526020016101e8565b6101dc6103613660046116c4565b610815565b6101f961083e565b61021d600081565b6101dc610384366004611645565b61084d565b6101dc610397366004611645565b6108c8565b61021d6103aa3660046116ab565b6108d6565b61021d7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102746103e43660046116c4565b6108ed565b61021d6103f736600461172d565b610912565b61021d7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60006001600160e01b03198216635a05180f60e01b14806104485750610448826109d6565b92915050565b60606005805461045d90611757565b80601f016020809104026020016040519081016040528092919081815260200182805461048990611757565b80156104d65780601f106104ab576101008083540402835291602001916104d6565b820191906000526020600020905b8154815290600101906020018083116104b957829003601f168201915b5050505050905090565b6000336104ee818585610a0b565b5060019392505050565b600033610506858285610b2f565b610511858585610ba9565b506001949350505050565b60008281526020819052604090206001015461053781610d82565b6105418383610d8c565b505050565b6001600160a01b03811633146105bb5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105c58282610dae565b5050565b6000336104ee8185856105dc8383610912565b6105e691906117a8565b610a0b565b6106157f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610815565b6106875760405162461bcd60e51b815260206004820152603960248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20756e70617573650000000000000060648201526084016105b2565b61068f610dd0565b565b6106bb7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610815565b6107265760405162461bcd60e51b815260206004820152603660248201527f45524332305072657365744d696e7465725061757365723a206d7573742068616044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b60648201526084016105b2565b6105c58282610e22565b61073a3382610f0d565b50565b610748823383610b2f565b6105c58282610f0d565b61077c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610815565b6107ee5760405162461bcd60e51b815260206004820152603760248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20706175736500000000000000000060648201526084016105b2565b61068f611067565b600082815260016020526040812061080e90836110a4565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60606006805461045d90611757565b6000338161085b8286610912565b9050838110156108bb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105b2565b6105118286868403610a0b565b6000336104ee818585610ba9565b6000818152600160205260408120610448906110b0565b60008281526020819052604090206001015461090881610d82565b6105418383610dae565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6109478282610815565b6105c5576000828152602081815260408083206001600160a01b03851684529091529020805460ff1916600117905561097d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600061080e836001600160a01b0384166110ba565b60006001600160e01b03198216637965db0b60e01b148061044857506301ffc9a760e01b6001600160e01b0319831614610448565b6001600160a01b038316610a6d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105b2565b6001600160a01b038216610ace5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105b2565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610b3b8484610912565b90506000198114610ba35781811015610b965760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105b2565b610ba38484848403610a0b565b50505050565b6001600160a01b038316610c0d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105b2565b6001600160a01b038216610c6f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105b2565b610c7a838383611109565b6001600160a01b03831660009081526002602052604090205481811015610cf25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105b2565b6001600160a01b03808516600090815260026020526040808220858503905591851681529081208054849290610d299084906117a8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d7591815260200190565b60405180910390a3610ba3565b61073a8133611114565b610d96828261093d565b600082815260016020526040902061054190826109c1565b610db88282611178565b600082815260016020526040902061054190826111dd565b610dd86111f2565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610e785760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105b2565b610e8460008383611109565b8060046000828254610e9691906117a8565b90915550506001600160a01b03821660009081526002602052604081208054839290610ec39084906117a8565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216610f6d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105b2565b610f7982600083611109565b6001600160a01b03821660009081526002602052604090205481811015610fed5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105b2565b6001600160a01b038316600090815260026020526040812083830390556004805484929061101c9084906117c0565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b61106f61123b565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610e053390565b600061080e8383611281565b6000610448825490565b600081815260018301602052604081205461110157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610448565b506000610448565b6105418383836112ab565b61111e8282610815565b6105c557611136816001600160a01b03166014611311565b611141836020611311565b6040516020016111529291906117d7565b60408051601f198184030181529082905262461bcd60e51b82526105b2916004016115f6565b6111828282610815565b156105c5576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600061080e836001600160a01b0384166114ad565b60075460ff1661068f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105b2565b60075460ff161561068f5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105b2565b60008260000182815481106112985761129861184c565b9060005260206000200154905092915050565b60075460ff16156105415760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b60648201526084016105b2565b60606000611320836002611862565b61132b9060026117a8565b67ffffffffffffffff81111561134357611343611881565b6040519080825280601f01601f19166020018201604052801561136d576020820181803683370190505b509050600360fc1b816000815181106113885761138861184c565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106113b7576113b761184c565b60200101906001600160f81b031916908160001a90535060006113db846002611862565b6113e69060016117a8565b90505b600181111561145e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061141a5761141a61184c565b1a60f81b8282815181106114305761143061184c565b60200101906001600160f81b031916908160001a90535060049490941c9361145781611897565b90506113e9565b50831561080e5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105b2565b600081815260018301602052604081205480156115965760006114d16001836117c0565b85549091506000906114e5906001906117c0565b905081811461154a5760008660000182815481106115055761150561184c565b90600052602060002001549050808760000184815481106115285761152861184c565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061155b5761155b6118ae565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610448565b6000915050610448565b6000602082840312156115b257600080fd5b81356001600160e01b03198116811461080e57600080fd5b60005b838110156115e55781810151838201526020016115cd565b83811115610ba35750506000910152565b60208152600082518060208401526116158160408501602087016115ca565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461164057600080fd5b919050565b6000806040838503121561165857600080fd5b61166183611629565b946020939093013593505050565b60008060006060848603121561168457600080fd5b61168d84611629565b925061169b60208501611629565b9150604084013590509250925092565b6000602082840312156116bd57600080fd5b5035919050565b600080604083850312156116d757600080fd5b823591506116e760208401611629565b90509250929050565b60006020828403121561170257600080fd5b61080e82611629565b6000806040838503121561171e57600080fd5b50508035926020909101359150565b6000806040838503121561174057600080fd5b61174983611629565b91506116e760208401611629565b600181811c9082168061176b57607f821691505b6020821081141561178c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156117bb576117bb611792565b500190565b6000828210156117d2576117d2611792565b500390565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161180f8160178501602088016115ca565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516118408160288401602088016115ca565b01602801949350505050565b634e487b7160e01b600052603260045260246000fd5b600081600019048311821515161561187c5761187c611792565b500290565b634e487b7160e01b600052604160045260246000fd5b6000816118a6576118a6611792565b506000190190565b634e487b7160e01b600052603160045260246000fdfea264697066735822122048c66a7206666f4e204e67398e5f8308e3aacac953e70d07d306c4815a38f61464736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063a457c2d711610097578063d539139311610071578063d5391393146103af578063d547741f146103d6578063dd62ed3e146103e9578063e63ab1e9146103fc57600080fd5b8063a457c2d714610376578063a9059cbb14610389578063ca15c8731461039c57600080fd5b80639010d07c116100d35780639010d07c1461032857806391d148541461035357806395d89b4114610366578063a217fddf1461036e57600080fd5b806370a08231146102e457806379cc67901461030d5780638456cb591461032057600080fd5b8063313ce567116101665780633f4ba83a116101405780633f4ba83a146102ab57806340c10f19146102b357806342966c68146102c65780635c975abb146102d957600080fd5b8063313ce5671461027657806336568abe14610285578063395093511461029857600080fd5b806318160ddd116101a257806318160ddd1461021957806323b872dd1461022b578063248a9ca31461023e5780632f2ff15d1461026157600080fd5b806301ffc9a7146101c957806306fdde03146101f1578063095ea7b314610206575b600080fd5b6101dc6101d73660046115a0565b610423565b60405190151581526020015b60405180910390f35b6101f961044e565b6040516101e891906115f6565b6101dc610214366004611645565b6104e0565b6004545b6040519081526020016101e8565b6101dc61023936600461166f565b6104f8565b61021d61024c3660046116ab565b60009081526020819052604090206001015490565b61027461026f3660046116c4565b61051c565b005b604051601281526020016101e8565b6102746102933660046116c4565b610546565b6101dc6102a6366004611645565b6105c9565b6102746105eb565b6102746102c1366004611645565b610691565b6102746102d43660046116ab565b610730565b60075460ff166101dc565b61021d6102f23660046116f0565b6001600160a01b031660009081526002602052604090205490565b61027461031b366004611645565b61073d565b610274610752565b61033b61033636600461170b565b6107f6565b6040516001600160a01b0390911681526020016101e8565b6101dc6103613660046116c4565b610815565b6101f961083e565b61021d600081565b6101dc610384366004611645565b61084d565b6101dc610397366004611645565b6108c8565b61021d6103aa3660046116ab565b6108d6565b61021d7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102746103e43660046116c4565b6108ed565b61021d6103f736600461172d565b610912565b61021d7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60006001600160e01b03198216635a05180f60e01b14806104485750610448826109d6565b92915050565b60606005805461045d90611757565b80601f016020809104026020016040519081016040528092919081815260200182805461048990611757565b80156104d65780601f106104ab576101008083540402835291602001916104d6565b820191906000526020600020905b8154815290600101906020018083116104b957829003601f168201915b5050505050905090565b6000336104ee818585610a0b565b5060019392505050565b600033610506858285610b2f565b610511858585610ba9565b506001949350505050565b60008281526020819052604090206001015461053781610d82565b6105418383610d8c565b505050565b6001600160a01b03811633146105bb5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105c58282610dae565b5050565b6000336104ee8185856105dc8383610912565b6105e691906117a8565b610a0b565b6106157f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610815565b6106875760405162461bcd60e51b815260206004820152603960248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20756e70617573650000000000000060648201526084016105b2565b61068f610dd0565b565b6106bb7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610815565b6107265760405162461bcd60e51b815260206004820152603660248201527f45524332305072657365744d696e7465725061757365723a206d7573742068616044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b60648201526084016105b2565b6105c58282610e22565b61073a3382610f0d565b50565b610748823383610b2f565b6105c58282610f0d565b61077c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610815565b6107ee5760405162461bcd60e51b815260206004820152603760248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20706175736500000000000000000060648201526084016105b2565b61068f611067565b600082815260016020526040812061080e90836110a4565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60606006805461045d90611757565b6000338161085b8286610912565b9050838110156108bb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105b2565b6105118286868403610a0b565b6000336104ee818585610ba9565b6000818152600160205260408120610448906110b0565b60008281526020819052604090206001015461090881610d82565b6105418383610dae565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6109478282610815565b6105c5576000828152602081815260408083206001600160a01b03851684529091529020805460ff1916600117905561097d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600061080e836001600160a01b0384166110ba565b60006001600160e01b03198216637965db0b60e01b148061044857506301ffc9a760e01b6001600160e01b0319831614610448565b6001600160a01b038316610a6d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105b2565b6001600160a01b038216610ace5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105b2565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610b3b8484610912565b90506000198114610ba35781811015610b965760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105b2565b610ba38484848403610a0b565b50505050565b6001600160a01b038316610c0d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105b2565b6001600160a01b038216610c6f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105b2565b610c7a838383611109565b6001600160a01b03831660009081526002602052604090205481811015610cf25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105b2565b6001600160a01b03808516600090815260026020526040808220858503905591851681529081208054849290610d299084906117a8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d7591815260200190565b60405180910390a3610ba3565b61073a8133611114565b610d96828261093d565b600082815260016020526040902061054190826109c1565b610db88282611178565b600082815260016020526040902061054190826111dd565b610dd86111f2565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610e785760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105b2565b610e8460008383611109565b8060046000828254610e9691906117a8565b90915550506001600160a01b03821660009081526002602052604081208054839290610ec39084906117a8565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216610f6d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105b2565b610f7982600083611109565b6001600160a01b03821660009081526002602052604090205481811015610fed5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105b2565b6001600160a01b038316600090815260026020526040812083830390556004805484929061101c9084906117c0565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b61106f61123b565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610e053390565b600061080e8383611281565b6000610448825490565b600081815260018301602052604081205461110157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610448565b506000610448565b6105418383836112ab565b61111e8282610815565b6105c557611136816001600160a01b03166014611311565b611141836020611311565b6040516020016111529291906117d7565b60408051601f198184030181529082905262461bcd60e51b82526105b2916004016115f6565b6111828282610815565b156105c5576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600061080e836001600160a01b0384166114ad565b60075460ff1661068f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105b2565b60075460ff161561068f5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105b2565b60008260000182815481106112985761129861184c565b9060005260206000200154905092915050565b60075460ff16156105415760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b60648201526084016105b2565b60606000611320836002611862565b61132b9060026117a8565b67ffffffffffffffff81111561134357611343611881565b6040519080825280601f01601f19166020018201604052801561136d576020820181803683370190505b509050600360fc1b816000815181106113885761138861184c565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106113b7576113b761184c565b60200101906001600160f81b031916908160001a90535060006113db846002611862565b6113e69060016117a8565b90505b600181111561145e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061141a5761141a61184c565b1a60f81b8282815181106114305761143061184c565b60200101906001600160f81b031916908160001a90535060049490941c9361145781611897565b90506113e9565b50831561080e5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105b2565b600081815260018301602052604081205480156115965760006114d16001836117c0565b85549091506000906114e5906001906117c0565b905081811461154a5760008660000182815481106115055761150561184c565b90600052602060002001549050808760000184815481106115285761152861184c565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061155b5761155b6118ae565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610448565b6000915050610448565b6000602082840312156115b257600080fd5b81356001600160e01b03198116811461080e57600080fd5b60005b838110156115e55781810151838201526020016115cd565b83811115610ba35750506000910152565b60208152600082518060208401526116158160408501602087016115ca565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461164057600080fd5b919050565b6000806040838503121561165857600080fd5b61166183611629565b946020939093013593505050565b60008060006060848603121561168457600080fd5b61168d84611629565b925061169b60208501611629565b9150604084013590509250925092565b6000602082840312156116bd57600080fd5b5035919050565b600080604083850312156116d757600080fd5b823591506116e760208401611629565b90509250929050565b60006020828403121561170257600080fd5b61080e82611629565b6000806040838503121561171e57600080fd5b50508035926020909101359150565b6000806040838503121561174057600080fd5b61174983611629565b91506116e760208401611629565b600181811c9082168061176b57607f821691505b6020821081141561178c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156117bb576117bb611792565b500190565b6000828210156117d2576117d2611792565b500390565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161180f8160178501602088016115ca565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516118408160288401602088016115ca565b01602801949350505050565b634e487b7160e01b600052603260045260246000fd5b600081600019048311821515161561187c5761187c611792565b500290565b634e487b7160e01b600052604160045260246000fd5b6000816118a6576118a6611792565b506000190190565b634e487b7160e01b600052603160045260246000fdfea264697066735822122048c66a7206666f4e204e67398e5f8308e3aacac953e70d07d306c4815a38f61464736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/utils/SafeERC20":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"SafeERC20","sourceName":"contracts/token/ERC20/utils/SafeERC20.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204f774261ac5ce5eeb19b4ffd5970485c04b17a812de3732dd193699a8a25c44664736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204f774261ac5ce5eeb19b4ffd5970485c04b17a812de3732dd193699a8a25c44664736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/utils/TokenTimelock":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"TokenTimelock","sourceName":"contracts/token/ERC20/utils/TokenTimelock.sol","abi":[{"inputs":[{"internalType":"contract IERC20","name":"token_","type":"address"},{"internalType":"address","name":"beneficiary_","type":"address"},{"internalType":"uint256","name":"releaseTime_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"beneficiary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"releaseTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60e060405234801561001057600080fd5b506040516107c53803806107c583398101604081905261002f916100d0565b42811161009d5760405162461bcd60e51b815260206004820152603260248201527f546f6b656e54696d656c6f636b3a2072656c656173652074696d65206973206260448201527165666f72652063757272656e742074696d6560701b606482015260840160405180910390fd5b6001600160a01b03928316608052911660a05260c052610113565b6001600160a01b03811681146100cd57600080fd5b50565b6000806000606084860312156100e557600080fd5b83516100f0816100b8565b6020850151909350610101816100b8565b80925050604084015190509250925092565b60805160a05160c05161066b61015a60003960008181609f015260f0015260008181605301526102a701526000818160ca015281816101820152610285015261066b6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806338af3eed1461005157806386d1a69f14610090578063b91d40011461009a578063fc0c546a146100c8575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100986100ee565b005b6040517f00000000000000000000000000000000000000000000000000000000000000008152602001610087565b7f0000000000000000000000000000000000000000000000000000000000000000610073565b7f000000000000000000000000000000000000000000000000000000000000000042101561017e5760405162461bcd60e51b815260206004820152603260248201527f546f6b656e54696d656c6f636b3a2063757272656e742074696d65206973206260448201527165666f72652072656c656173652074696d6560701b60648201526084015b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000006040516370a0823160e01b81523060048201526001600160a01b0391909116906370a082319060240160206040518083038186803b1580156101e257600080fd5b505afa1580156101f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021a919061057b565b9050600081116102785760405162461bcd60e51b815260206004820152602360248201527f546f6b656e54696d656c6f636b3a206e6f20746f6b656e7320746f2072656c6560448201526261736560e81b6064820152608401610175565b6102cc6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836102cf565b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610321908490610326565b505050565b600061037b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166103f89092919063ffffffff16565b80519091501561032157808060200190518101906103999190610594565b6103215760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610175565b60606104078484600085610411565b90505b9392505050565b6060824710156104725760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610175565b6001600160a01b0385163b6104c95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610175565b600080866001600160a01b031685876040516104e591906105e6565b60006040518083038185875af1925050503d8060008114610522576040519150601f19603f3d011682016040523d82523d6000602084013e610527565b606091505b5091509150610537828286610542565b979650505050505050565b6060831561055157508161040a565b8251156105615782518084602001fd5b8160405162461bcd60e51b81526004016101759190610602565b60006020828403121561058d57600080fd5b5051919050565b6000602082840312156105a657600080fd5b8151801515811461040a57600080fd5b60005b838110156105d15781810151838201526020016105b9565b838111156105e0576000848401525b50505050565b600082516105f88184602087016105b6565b9190910192915050565b60208152600082518060208401526106218160408501602087016105b6565b601f01601f1916919091016040019291505056fea2646970667358221220d18aa9183c5f8c1ed5a5a53fb7572ed848fe028d77bcbedbde6a747ec3a4f42664736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806338af3eed1461005157806386d1a69f14610090578063b91d40011461009a578063fc0c546a146100c8575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100986100ee565b005b6040517f00000000000000000000000000000000000000000000000000000000000000008152602001610087565b7f0000000000000000000000000000000000000000000000000000000000000000610073565b7f000000000000000000000000000000000000000000000000000000000000000042101561017e5760405162461bcd60e51b815260206004820152603260248201527f546f6b656e54696d656c6f636b3a2063757272656e742074696d65206973206260448201527165666f72652072656c656173652074696d6560701b60648201526084015b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000006040516370a0823160e01b81523060048201526001600160a01b0391909116906370a082319060240160206040518083038186803b1580156101e257600080fd5b505afa1580156101f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021a919061057b565b9050600081116102785760405162461bcd60e51b815260206004820152602360248201527f546f6b656e54696d656c6f636b3a206e6f20746f6b656e7320746f2072656c6560448201526261736560e81b6064820152608401610175565b6102cc6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836102cf565b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610321908490610326565b505050565b600061037b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166103f89092919063ffffffff16565b80519091501561032157808060200190518101906103999190610594565b6103215760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610175565b60606104078484600085610411565b90505b9392505050565b6060824710156104725760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610175565b6001600160a01b0385163b6104c95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610175565b600080866001600160a01b031685876040516104e591906105e6565b60006040518083038185875af1925050503d8060008114610522576040519150601f19603f3d011682016040523d82523d6000602084013e610527565b606091505b5091509150610537828286610542565b979650505050505050565b6060831561055157508161040a565b8251156105615782518084602001fd5b8160405162461bcd60e51b81526004016101759190610602565b60006020828403121561058d57600080fd5b5051919050565b6000602082840312156105a657600080fd5b8151801515811461040a57600080fd5b60005b838110156105d15781810151838201526020016105b9565b838111156105e0576000848401525b50505050565b600082516105f88184602087016105b6565b9190910192915050565b60208152600082518060208401526106218160408501602087016105b6565b601f01601f1916919091016040019291505056fea2646970667358221220d18aa9183c5f8c1ed5a5a53fb7572ed848fe028d77bcbedbde6a747ec3a4f42664736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/ERC721":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721","sourceName":"contracts/token/ERC721/ERC721.sol","abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"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":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"},{"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":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"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":"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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"}],"bytecode":"0x60806040523480156200001157600080fd5b50604051620013d7380380620013d78339810160408190526200003491620001db565b81516200004990600090602085019062000068565b5080516200005f90600190602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b61114580620002926000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610c58565b610228565b60405190151581526020015b60405180910390f35b61010461027a565b6040516100f39190610ccd565b61012461011f366004610ce0565b61030c565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610d15565b610333565b005b61014f61015f366004610d3f565b61044e565b61014f610172366004610d3f565b61047f565b610124610185366004610ce0565b61049a565b61019d610198366004610d7b565b6104fa565b6040519081526020016100f3565b610104610580565b61014f6101c1366004610d96565b61058f565b61014f6101d4366004610de8565b61059e565b6101046101e7366004610ce0565b6105d6565b6100e76101fa366004610ec4565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061025957506001600160e01b03198216635b5e139f60e01b145b8061027457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461028990610ef7565b80601f01602080910402602001604051908101604052809291908181526020018280546102b590610ef7565b80156103025780601f106102d757610100808354040283529160200191610302565b820191906000526020600020905b8154815290600101906020018083116102e557829003601f168201915b5050505050905090565b60006103178261064a565b506000908152600460205260409020546001600160a01b031690565b600061033e8261049a565b9050806001600160a01b0316836001600160a01b031614156103b15760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103cd57506103cd81336101fa565b61043f5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016103a8565b61044983836106ac565b505050565b610458338261071a565b6104745760405162461bcd60e51b81526004016103a890610f32565b610449838383610799565b6104498383836040518060200160405280600081525061059e565b6000818152600260205260408120546001600160a01b0316806102745760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a8565b60006001600160a01b0382166105645760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103a8565b506001600160a01b031660009081526003602052604090205490565b60606001805461028990610ef7565b61059a338383610935565b5050565b6105a8338361071a565b6105c45760405162461bcd60e51b81526004016103a890610f32565b6105d084848484610a04565b50505050565b60606105e18261064a565b60006105f860408051602081019091526000815290565b905060008151116106185760405180602001604052806000815250610643565b8061062284610a37565b604051602001610633929190610f80565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166106a95760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a8565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e18261049a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806107268361049a565b9050806001600160a01b0316846001600160a01b0316148061076d57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806107915750836001600160a01b03166107868461030c565b6001600160a01b0316145b949350505050565b826001600160a01b03166107ac8261049a565b6001600160a01b0316146108105760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103a8565b6001600160a01b0382166108725760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103a8565b61087d6000826106ac565b6001600160a01b03831660009081526003602052604081208054600192906108a6908490610fc5565b90915550506001600160a01b03821660009081526003602052604081208054600192906108d4908490610fdc565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b031614156109975760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103a8565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610a0f848484610799565b610a1b84848484610b35565b6105d05760405162461bcd60e51b81526004016103a890610ff4565b606081610a5b5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610a855780610a6f81611046565b9150610a7e9050600a83611077565b9150610a5f565b60008167ffffffffffffffff811115610aa057610aa0610dd2565b6040519080825280601f01601f191660200182016040528015610aca576020820181803683370190505b5090505b841561079157610adf600183610fc5565b9150610aec600a8661108b565b610af7906030610fdc565b60f81b818381518110610b0c57610b0c61109f565b60200101906001600160f81b031916908160001a905350610b2e600a86611077565b9450610ace565b60006001600160a01b0384163b15610c3757604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610b799033908990889088906004016110b5565b602060405180830381600087803b158015610b9357600080fd5b505af1925050508015610bc3575060408051601f3d908101601f19168201909252610bc0918101906110f2565b60015b610c1d573d808015610bf1576040519150601f19603f3d011682016040523d82523d6000602084013e610bf6565b606091505b508051610c155760405162461bcd60e51b81526004016103a890610ff4565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610791565b506001949350505050565b6001600160e01b0319811681146106a957600080fd5b600060208284031215610c6a57600080fd5b813561064381610c42565b60005b83811015610c90578181015183820152602001610c78565b838111156105d05750506000910152565b60008151808452610cb9816020860160208601610c75565b601f01601f19169290920160200192915050565b6020815260006106436020830184610ca1565b600060208284031215610cf257600080fd5b5035919050565b80356001600160a01b0381168114610d1057600080fd5b919050565b60008060408385031215610d2857600080fd5b610d3183610cf9565b946020939093013593505050565b600080600060608486031215610d5457600080fd5b610d5d84610cf9565b9250610d6b60208501610cf9565b9150604084013590509250925092565b600060208284031215610d8d57600080fd5b61064382610cf9565b60008060408385031215610da957600080fd5b610db283610cf9565b915060208301358015158114610dc757600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610dfe57600080fd5b610e0785610cf9565b9350610e1560208601610cf9565b925060408501359150606085013567ffffffffffffffff80821115610e3957600080fd5b818701915087601f830112610e4d57600080fd5b813581811115610e5f57610e5f610dd2565b604051601f8201601f19908116603f01168101908382118183101715610e8757610e87610dd2565b816040528281528a6020848701011115610ea057600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ed757600080fd5b610ee083610cf9565b9150610eee60208401610cf9565b90509250929050565b600181811c90821680610f0b57607f821691505b60208210811415610f2c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b60008351610f92818460208801610c75565b835190830190610fa6818360208801610c75565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b600082821015610fd757610fd7610faf565b500390565b60008219821115610fef57610fef610faf565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600060001982141561105a5761105a610faf565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261108657611086611061565b500490565b60008261109a5761109a611061565b500690565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110e890830184610ca1565b9695505050505050565b60006020828403121561110457600080fd5b815161064381610c4256fea2646970667358221220dbaf7531c6ab6358f8bfc6705e38c89d81c50d229dd1bf325d98b7120ec9a03164736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610c58565b610228565b60405190151581526020015b60405180910390f35b61010461027a565b6040516100f39190610ccd565b61012461011f366004610ce0565b61030c565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610d15565b610333565b005b61014f61015f366004610d3f565b61044e565b61014f610172366004610d3f565b61047f565b610124610185366004610ce0565b61049a565b61019d610198366004610d7b565b6104fa565b6040519081526020016100f3565b610104610580565b61014f6101c1366004610d96565b61058f565b61014f6101d4366004610de8565b61059e565b6101046101e7366004610ce0565b6105d6565b6100e76101fa366004610ec4565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061025957506001600160e01b03198216635b5e139f60e01b145b8061027457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461028990610ef7565b80601f01602080910402602001604051908101604052809291908181526020018280546102b590610ef7565b80156103025780601f106102d757610100808354040283529160200191610302565b820191906000526020600020905b8154815290600101906020018083116102e557829003601f168201915b5050505050905090565b60006103178261064a565b506000908152600460205260409020546001600160a01b031690565b600061033e8261049a565b9050806001600160a01b0316836001600160a01b031614156103b15760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103cd57506103cd81336101fa565b61043f5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016103a8565b61044983836106ac565b505050565b610458338261071a565b6104745760405162461bcd60e51b81526004016103a890610f32565b610449838383610799565b6104498383836040518060200160405280600081525061059e565b6000818152600260205260408120546001600160a01b0316806102745760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a8565b60006001600160a01b0382166105645760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103a8565b506001600160a01b031660009081526003602052604090205490565b60606001805461028990610ef7565b61059a338383610935565b5050565b6105a8338361071a565b6105c45760405162461bcd60e51b81526004016103a890610f32565b6105d084848484610a04565b50505050565b60606105e18261064a565b60006105f860408051602081019091526000815290565b905060008151116106185760405180602001604052806000815250610643565b8061062284610a37565b604051602001610633929190610f80565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166106a95760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a8565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e18261049a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806107268361049a565b9050806001600160a01b0316846001600160a01b0316148061076d57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806107915750836001600160a01b03166107868461030c565b6001600160a01b0316145b949350505050565b826001600160a01b03166107ac8261049a565b6001600160a01b0316146108105760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103a8565b6001600160a01b0382166108725760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103a8565b61087d6000826106ac565b6001600160a01b03831660009081526003602052604081208054600192906108a6908490610fc5565b90915550506001600160a01b03821660009081526003602052604081208054600192906108d4908490610fdc565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b031614156109975760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103a8565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610a0f848484610799565b610a1b84848484610b35565b6105d05760405162461bcd60e51b81526004016103a890610ff4565b606081610a5b5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610a855780610a6f81611046565b9150610a7e9050600a83611077565b9150610a5f565b60008167ffffffffffffffff811115610aa057610aa0610dd2565b6040519080825280601f01601f191660200182016040528015610aca576020820181803683370190505b5090505b841561079157610adf600183610fc5565b9150610aec600a8661108b565b610af7906030610fdc565b60f81b818381518110610b0c57610b0c61109f565b60200101906001600160f81b031916908160001a905350610b2e600a86611077565b9450610ace565b60006001600160a01b0384163b15610c3757604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610b799033908990889088906004016110b5565b602060405180830381600087803b158015610b9357600080fd5b505af1925050508015610bc3575060408051601f3d908101601f19168201909252610bc0918101906110f2565b60015b610c1d573d808015610bf1576040519150601f19603f3d011682016040523d82523d6000602084013e610bf6565b606091505b508051610c155760405162461bcd60e51b81526004016103a890610ff4565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610791565b506001949350505050565b6001600160e01b0319811681146106a957600080fd5b600060208284031215610c6a57600080fd5b813561064381610c42565b60005b83811015610c90578181015183820152602001610c78565b838111156105d05750506000910152565b60008151808452610cb9816020860160208601610c75565b601f01601f19169290920160200192915050565b6020815260006106436020830184610ca1565b600060208284031215610cf257600080fd5b5035919050565b80356001600160a01b0381168114610d1057600080fd5b919050565b60008060408385031215610d2857600080fd5b610d3183610cf9565b946020939093013593505050565b600080600060608486031215610d5457600080fd5b610d5d84610cf9565b9250610d6b60208501610cf9565b9150604084013590509250925092565b600060208284031215610d8d57600080fd5b61064382610cf9565b60008060408385031215610da957600080fd5b610db283610cf9565b915060208301358015158114610dc757600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610dfe57600080fd5b610e0785610cf9565b9350610e1560208601610cf9565b925060408501359150606085013567ffffffffffffffff80821115610e3957600080fd5b818701915087601f830112610e4d57600080fd5b813581811115610e5f57610e5f610dd2565b604051601f8201601f19908116603f01168101908382118183101715610e8757610e87610dd2565b816040528281528a6020848701011115610ea057600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ed757600080fd5b610ee083610cf9565b9150610eee60208401610cf9565b90509250929050565b600181811c90821680610f0b57607f821691505b60208210811415610f2c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b60008351610f92818460208801610c75565b835190830190610fa6818360208801610c75565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b600082821015610fd757610fd7610faf565b500390565b60008219821115610fef57610fef610faf565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600060001982141561105a5761105a610faf565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261108657611086611061565b500490565b60008261109a5761109a611061565b500690565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110e890830184610ca1565b9695505050505050565b60006020828403121561110457600080fd5b815161064381610c4256fea2646970667358221220dbaf7531c6ab6358f8bfc6705e38c89d81c50d229dd1bf325d98b7120ec9a03164736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/ERC721Votes":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721Votes","sourceName":"contracts/token/ERC721/extensions/draft-ERC721Votes.sol","abi":[{"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":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","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"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","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":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"blockNumber","type":"uint256"}],"name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"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":"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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/ERC721Burnable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721Burnable","sourceName":"contracts/token/ERC721/extensions/ERC721Burnable.sol","abi":[{"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":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"},{"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":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"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":"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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/ERC721Enumerable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721Enumerable","sourceName":"contracts/token/ERC721/extensions/ERC721Enumerable.sol","abi":[{"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":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"},{"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":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"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":"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":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/ERC721Pausable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721Pausable","sourceName":"contracts/token/ERC721/extensions/ERC721Pausable.sol","abi":[{"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":"address","name":"account","type":"address"}],"name":"Paused","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":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"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":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/ERC721Royalty":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721Royalty","sourceName":"contracts/token/ERC721/extensions/ERC721Royalty.sol","abi":[{"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":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"},{"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":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/ERC721URIStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721URIStorage","sourceName":"contracts/token/ERC721/extensions/ERC721URIStorage.sol","abi":[{"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":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"},{"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":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"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":"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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/IERC721Enumerable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721Enumerable","sourceName":"contracts/token/ERC721/extensions/IERC721Enumerable.sol","abi":[{"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":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"},{"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":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"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":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/IERC721Metadata":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721Metadata","sourceName":"contracts/token/ERC721/extensions/IERC721Metadata.sol","abi":[{"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":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"},{"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":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","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":"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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/IERC721":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721","sourceName":"contracts/token/ERC721/IERC721.sol","abi":[{"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":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"},{"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":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"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":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/IERC721Receiver":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721Receiver","sourceName":"contracts/token/ERC721/IERC721Receiver.sol","abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/presets/ERC721PresetMinterPauserAutoId":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721PresetMinterPauserAutoId","sourceName":"contracts/token/ERC721/presets/ERC721PresetMinterPauserAutoId.sol","abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"baseTokenURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","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":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"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":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"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":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162002929380380620029298339810160408190526200003491620003cc565b8251839083906200004d90600290602085019062000259565b5080516200006390600390602084019062000259565b5050600c805460ff191690555080516200008590600e90602084019062000259565b5062000093600033620000f4565b620000bf7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000f4565b620000eb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620000f4565b5050506200049a565b62000100828262000104565b5050565b6200011b82826200014760201b62000ced1760201c565b60008281526001602090815260409091206200014291839062000d71620001e7821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000100576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001a33390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001fe836001600160a01b03841662000207565b90505b92915050565b6000818152600183016020526040812054620002505750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000201565b50600062000201565b82805462000267906200045d565b90600052602060002090601f0160209004810192826200028b5760008555620002d6565b82601f10620002a657805160ff1916838001178555620002d6565b82800160010185558215620002d6579182015b82811115620002d6578251825591602001919060010190620002b9565b50620002e4929150620002e8565b5090565b5b80821115620002e45760008155600101620002e9565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200032757600080fd5b81516001600160401b0380821115620003445762000344620002ff565b604051601f8301601f19908116603f011681019082821181831017156200036f576200036f620002ff565b816040528381526020925086838588010111156200038c57600080fd5b600091505b83821015620003b0578582018301518183018401529082019062000391565b83821115620003c25760008385830101525b9695505050505050565b600080600060608486031215620003e257600080fd5b83516001600160401b0380821115620003fa57600080fd5b620004088783880162000315565b945060208601519150808211156200041f57600080fd5b6200042d8783880162000315565b935060408601519150808211156200044457600080fd5b50620004538682870162000315565b9150509250925092565b600181811c908216806200047257607f821691505b602082108114156200049457634e487b7160e01b600052602260045260246000fd5b50919050565b61247f80620004aa6000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80636352211e1161010f578063a22cb465116100a2578063d539139311610071578063d5391393146103f7578063d547741f1461041e578063e63ab1e914610431578063e985e9c51461045857600080fd5b8063a22cb465146103ab578063b88d4fde146103be578063c87b56dd146103d1578063ca15c873146103e457600080fd5b80639010d07c116100de5780639010d07c1461037557806391d148541461038857806395d89b411461039b578063a217fddf146103a357600080fd5b80636352211e146103345780636a6278421461034757806370a082311461035a5780638456cb591461036d57600080fd5b80632f2ff15d1161018757806342842e0e1161015657806342842e0e146102f057806342966c68146103035780634f6ccce7146103165780635c975abb1461032957600080fd5b80632f2ff15d146102af5780632f745c59146102c257806336568abe146102d55780633f4ba83a146102e857600080fd5b8063095ea7b3116101c3578063095ea7b31461025257806318160ddd1461026757806323b872dd14610279578063248a9ca31461028c57600080fd5b806301ffc9a7146101ea57806306fdde0314610212578063081812fc14610227575b600080fd5b6101fd6101f8366004611e8c565b610494565b60405190151581526020015b60405180910390f35b61021a6104a5565b6040516102099190611f01565b61023a610235366004611f14565b610537565b6040516001600160a01b039091168152602001610209565b610265610260366004611f49565b61055e565b005b600a545b604051908152602001610209565b610265610287366004611f73565b610679565b61026b61029a366004611f14565b60009081526020819052604090206001015490565b6102656102bd366004611faf565b6106ab565b61026b6102d0366004611f49565b6106d0565b6102656102e3366004611faf565b610766565b6102656107e4565b6102656102fe366004611f73565b61088c565b610265610311366004611f14565b6108a7565b61026b610324366004611f14565b6108d8565b600c5460ff166101fd565b61023a610342366004611f14565b61096b565b610265610355366004611fdb565b6109cb565b61026b610368366004611fdb565b610a87565b610265610b0d565b61023a610383366004611ff6565b610bb1565b6101fd610396366004611faf565b610bd0565b61021a610bf9565b61026b600081565b6102656103b9366004612018565b610c08565b6102656103cc36600461206a565b610c13565b61021a6103df366004611f14565b610c4b565b61026b6103f2366004611f14565b610cb1565b61026b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61026561042c366004611faf565b610cc8565b61026b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6101fd610466366004612146565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b600061049f82610d86565b92915050565b6060600280546104b490612170565b80601f01602080910402602001604051908101604052809291908181526020018280546104e090612170565b801561052d5780601f106105025761010080835404028352916020019161052d565b820191906000526020600020905b81548152906001019060200180831161051057829003601f168201915b5050505050905090565b600061054282610dab565b506000908152600660205260409020546001600160a01b031690565b60006105698261096b565b9050806001600160a01b0316836001600160a01b031614156105dc5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806105f857506105f88133610466565b61066a5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016105d3565b6106748383610e0a565b505050565b610684335b82610e78565b6106a05760405162461bcd60e51b81526004016105d3906121ab565b610674838383610ef7565b6000828152602081905260409020600101546106c68161109e565b61067483836110a8565b60006106db83610a87565b821061073d5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016105d3565b506001600160a01b03919091166000908152600860209081526040808320938352929052205490565b6001600160a01b03811633146107d65760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016105d3565b6107e082826110ca565b5050565b61080e7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610bd0565b610882576040805162461bcd60e51b81526020600482015260248101919091527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f20756e706175736560648201526084016105d3565b61088a6110ec565b565b61067483838360405180602001604052806000815250610c13565b6108b03361067e565b6108cc5760405162461bcd60e51b81526004016105d3906121ab565b6108d58161113e565b50565b60006108e3600a5490565b82106109465760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016105d3565b600a8281548110610959576109596121f9565b90600052602060002001549050919050565b6000818152600460205260408120546001600160a01b03168061049f5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016105d3565b6109f57f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610bd0565b610a675760405162461bcd60e51b815260206004820152603d60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d7573742068617665206d696e74657220726f6c6520746f206d696e7400000060648201526084016105d3565b610a7981610a74600d5490565b6111e5565b6108d5600d80546001019055565b60006001600160a01b038216610af15760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016105d3565b506001600160a01b031660009081526005602052604090205490565b610b377f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610bd0565b610ba95760405162461bcd60e51b815260206004820152603e60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f207061757365000060648201526084016105d3565b61088a611333565b6000828152600160205260408120610bc99083611370565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600380546104b490612170565b6107e033838361137c565b610c1d3383610e78565b610c395760405162461bcd60e51b81526004016105d3906121ab565b610c458484848461144b565b50505050565b6060610c5682610dab565b6000610c6061147e565b90506000815111610c805760405180602001604052806000815250610bc9565b80610c8a8461148d565b604051602001610c9b92919061220f565b6040516020818303038152906040529392505050565b600081815260016020526040812061049f9061158b565b600082815260208190526040902060010154610ce38161109e565b61067483836110ca565b610cf78282610bd0565b6107e0576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610d2d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610bc9836001600160a01b038416611595565b60006001600160e01b0319821663780e9d6360e01b148061049f575061049f826115e4565b6000818152600460205260409020546001600160a01b03166108d55760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016105d3565b600081815260066020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610e3f8261096b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610e848361096b565b9050806001600160a01b0316846001600160a01b03161480610ecb57506001600160a01b0380821660009081526007602090815260408083209388168352929052205460ff165b80610eef5750836001600160a01b0316610ee484610537565b6001600160a01b0316145b949350505050565b826001600160a01b0316610f0a8261096b565b6001600160a01b031614610f6e5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016105d3565b6001600160a01b038216610fd05760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016105d3565b610fdb838383611624565b610fe6600082610e0a565b6001600160a01b038316600090815260056020526040812080546001929061100f908490612254565b90915550506001600160a01b038216600090815260056020526040812080546001929061103d90849061226b565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108d5813361162f565b6110b28282610ced565b60008281526001602052604090206106749082610d71565b6110d48282611693565b600082815260016020526040902061067490826116f8565b6110f461170d565b600c805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60006111498261096b565b905061115781600084611624565b611162600083610e0a565b6001600160a01b038116600090815260056020526040812080546001929061118b908490612254565b909155505060008281526004602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6001600160a01b03821661123b5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016105d3565b6000818152600460205260409020546001600160a01b0316156112a05760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105d3565b6112ac60008383611624565b6001600160a01b03821660009081526005602052604081208054600192906112d590849061226b565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b61133b611756565b600c805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586111213390565b6000610bc9838361179c565b816001600160a01b0316836001600160a01b031614156113de5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016105d3565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611456848484610ef7565b611462848484846117c6565b610c455760405162461bcd60e51b81526004016105d390612283565b6060600e80546104b490612170565b6060816114b15750506040805180820190915260018152600360fc1b602082015290565b8160005b81156114db57806114c5816122d5565b91506114d49050600a83612306565b91506114b5565b60008167ffffffffffffffff8111156114f6576114f6612054565b6040519080825280601f01601f191660200182016040528015611520576020820181803683370190505b5090505b8415610eef57611535600183612254565b9150611542600a8661231a565b61154d90603061226b565b60f81b818381518110611562576115626121f9565b60200101906001600160f81b031916908160001a905350611584600a86612306565b9450611524565b600061049f825490565b60008181526001830160205260408120546115dc5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561049f565b50600061049f565b60006001600160e01b031982166380ac58cd60e01b148061161557506001600160e01b03198216635b5e139f60e01b145b8061049f575061049f826118d3565b6106748383836118f8565b6116398282610bd0565b6107e057611651816001600160a01b0316601461196a565b61165c83602061196a565b60405160200161166d92919061232e565b60408051601f198184030181529082905262461bcd60e51b82526105d391600401611f01565b61169d8282610bd0565b156107e0576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610bc9836001600160a01b038416611b06565b600c5460ff1661088a5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105d3565b600c5460ff161561088a5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105d3565b60008260000182815481106117b3576117b36121f9565b9060005260206000200154905092915050565b60006001600160a01b0384163b156118c857604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061180a9033908990889088906004016123a3565b602060405180830381600087803b15801561182457600080fd5b505af1925050508015611854575060408051601f3d908101601f19168201909252611851918101906123e0565b60015b6118ae573d808015611882576040519150601f19603f3d011682016040523d82523d6000602084013e611887565b606091505b5080516118a65760405162461bcd60e51b81526004016105d390612283565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610eef565b506001949350505050565b60006001600160e01b03198216635a05180f60e01b148061049f575061049f82611bf9565b611903838383611c2e565b600c5460ff16156106745760405162461bcd60e51b815260206004820152602b60248201527f4552433732315061757361626c653a20746f6b656e207472616e73666572207760448201526a1a1a5b19481c185d5cd95960aa1b60648201526084016105d3565b606060006119798360026123fd565b61198490600261226b565b67ffffffffffffffff81111561199c5761199c612054565b6040519080825280601f01601f1916602001820160405280156119c6576020820181803683370190505b509050600360fc1b816000815181106119e1576119e16121f9565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611a1057611a106121f9565b60200101906001600160f81b031916908160001a9053506000611a348460026123fd565b611a3f90600161226b565b90505b6001811115611ab7576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611a7357611a736121f9565b1a60f81b828281518110611a8957611a896121f9565b60200101906001600160f81b031916908160001a90535060049490941c93611ab08161241c565b9050611a42565b508315610bc95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105d3565b60008181526001830160205260408120548015611bef576000611b2a600183612254565b8554909150600090611b3e90600190612254565b9050818114611ba3576000866000018281548110611b5e57611b5e6121f9565b9060005260206000200154905080876000018481548110611b8157611b816121f9565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611bb457611bb4612433565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061049f565b600091505061049f565b60006001600160e01b03198216637965db0b60e01b148061049f57506301ffc9a760e01b6001600160e01b031983161461049f565b6001600160a01b038316611c8957611c8481600a80546000838152600b60205260408120829055600182018355919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80155565b611cac565b816001600160a01b0316836001600160a01b031614611cac57611cac8382611ce6565b6001600160a01b038216611cc35761067481611d83565b826001600160a01b0316826001600160a01b031614610674576106748282611e32565b60006001611cf384610a87565b611cfd9190612254565b600083815260096020526040902054909150808214611d50576001600160a01b03841660009081526008602090815260408083208584528252808320548484528184208190558352600990915290208190555b5060009182526009602090815260408084208490556001600160a01b039094168352600881528383209183525290812055565b600a54600090611d9590600190612254565b6000838152600b6020526040812054600a8054939450909284908110611dbd57611dbd6121f9565b9060005260206000200154905080600a8381548110611dde57611dde6121f9565b6000918252602080832090910192909255828152600b9091526040808220849055858252812055600a805480611e1657611e16612433565b6001900381819060005260206000200160009055905550505050565b6000611e3d83610a87565b6001600160a01b039093166000908152600860209081526040808320868452825280832085905593825260099052919091209190915550565b6001600160e01b0319811681146108d557600080fd5b600060208284031215611e9e57600080fd5b8135610bc981611e76565b60005b83811015611ec4578181015183820152602001611eac565b83811115610c455750506000910152565b60008151808452611eed816020860160208601611ea9565b601f01601f19169290920160200192915050565b602081526000610bc96020830184611ed5565b600060208284031215611f2657600080fd5b5035919050565b80356001600160a01b0381168114611f4457600080fd5b919050565b60008060408385031215611f5c57600080fd5b611f6583611f2d565b946020939093013593505050565b600080600060608486031215611f8857600080fd5b611f9184611f2d565b9250611f9f60208501611f2d565b9150604084013590509250925092565b60008060408385031215611fc257600080fd5b82359150611fd260208401611f2d565b90509250929050565b600060208284031215611fed57600080fd5b610bc982611f2d565b6000806040838503121561200957600080fd5b50508035926020909101359150565b6000806040838503121561202b57600080fd5b61203483611f2d565b91506020830135801515811461204957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561208057600080fd5b61208985611f2d565b935061209760208601611f2d565b925060408501359150606085013567ffffffffffffffff808211156120bb57600080fd5b818701915087601f8301126120cf57600080fd5b8135818111156120e1576120e1612054565b604051601f8201601f19908116603f0116810190838211818310171561210957612109612054565b816040528281528a602084870101111561212257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561215957600080fd5b61216283611f2d565b9150611fd260208401611f2d565b600181811c9082168061218457607f821691505b602082108114156121a557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008351612221818460208801611ea9565b835190830190612235818360208801611ea9565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b6000828210156122665761226661223e565b500390565b6000821982111561227e5761227e61223e565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60006000198214156122e9576122e961223e565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082612315576123156122f0565b500490565b600082612329576123296122f0565b500690565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612366816017850160208801611ea9565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612397816028840160208801611ea9565b01602801949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906123d690830184611ed5565b9695505050505050565b6000602082840312156123f257600080fd5b8151610bc981611e76565b60008160001904831182151516156124175761241761223e565b500290565b60008161242b5761242b61223e565b506000190190565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220904fdcec717bb77b92b7a0770155545f37faf7149eef4539d04876c24632417764736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80636352211e1161010f578063a22cb465116100a2578063d539139311610071578063d5391393146103f7578063d547741f1461041e578063e63ab1e914610431578063e985e9c51461045857600080fd5b8063a22cb465146103ab578063b88d4fde146103be578063c87b56dd146103d1578063ca15c873146103e457600080fd5b80639010d07c116100de5780639010d07c1461037557806391d148541461038857806395d89b411461039b578063a217fddf146103a357600080fd5b80636352211e146103345780636a6278421461034757806370a082311461035a5780638456cb591461036d57600080fd5b80632f2ff15d1161018757806342842e0e1161015657806342842e0e146102f057806342966c68146103035780634f6ccce7146103165780635c975abb1461032957600080fd5b80632f2ff15d146102af5780632f745c59146102c257806336568abe146102d55780633f4ba83a146102e857600080fd5b8063095ea7b3116101c3578063095ea7b31461025257806318160ddd1461026757806323b872dd14610279578063248a9ca31461028c57600080fd5b806301ffc9a7146101ea57806306fdde0314610212578063081812fc14610227575b600080fd5b6101fd6101f8366004611e8c565b610494565b60405190151581526020015b60405180910390f35b61021a6104a5565b6040516102099190611f01565b61023a610235366004611f14565b610537565b6040516001600160a01b039091168152602001610209565b610265610260366004611f49565b61055e565b005b600a545b604051908152602001610209565b610265610287366004611f73565b610679565b61026b61029a366004611f14565b60009081526020819052604090206001015490565b6102656102bd366004611faf565b6106ab565b61026b6102d0366004611f49565b6106d0565b6102656102e3366004611faf565b610766565b6102656107e4565b6102656102fe366004611f73565b61088c565b610265610311366004611f14565b6108a7565b61026b610324366004611f14565b6108d8565b600c5460ff166101fd565b61023a610342366004611f14565b61096b565b610265610355366004611fdb565b6109cb565b61026b610368366004611fdb565b610a87565b610265610b0d565b61023a610383366004611ff6565b610bb1565b6101fd610396366004611faf565b610bd0565b61021a610bf9565b61026b600081565b6102656103b9366004612018565b610c08565b6102656103cc36600461206a565b610c13565b61021a6103df366004611f14565b610c4b565b61026b6103f2366004611f14565b610cb1565b61026b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61026561042c366004611faf565b610cc8565b61026b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6101fd610466366004612146565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b600061049f82610d86565b92915050565b6060600280546104b490612170565b80601f01602080910402602001604051908101604052809291908181526020018280546104e090612170565b801561052d5780601f106105025761010080835404028352916020019161052d565b820191906000526020600020905b81548152906001019060200180831161051057829003601f168201915b5050505050905090565b600061054282610dab565b506000908152600660205260409020546001600160a01b031690565b60006105698261096b565b9050806001600160a01b0316836001600160a01b031614156105dc5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806105f857506105f88133610466565b61066a5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016105d3565b6106748383610e0a565b505050565b610684335b82610e78565b6106a05760405162461bcd60e51b81526004016105d3906121ab565b610674838383610ef7565b6000828152602081905260409020600101546106c68161109e565b61067483836110a8565b60006106db83610a87565b821061073d5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016105d3565b506001600160a01b03919091166000908152600860209081526040808320938352929052205490565b6001600160a01b03811633146107d65760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016105d3565b6107e082826110ca565b5050565b61080e7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610bd0565b610882576040805162461bcd60e51b81526020600482015260248101919091527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f20756e706175736560648201526084016105d3565b61088a6110ec565b565b61067483838360405180602001604052806000815250610c13565b6108b03361067e565b6108cc5760405162461bcd60e51b81526004016105d3906121ab565b6108d58161113e565b50565b60006108e3600a5490565b82106109465760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016105d3565b600a8281548110610959576109596121f9565b90600052602060002001549050919050565b6000818152600460205260408120546001600160a01b03168061049f5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016105d3565b6109f57f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610bd0565b610a675760405162461bcd60e51b815260206004820152603d60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d7573742068617665206d696e74657220726f6c6520746f206d696e7400000060648201526084016105d3565b610a7981610a74600d5490565b6111e5565b6108d5600d80546001019055565b60006001600160a01b038216610af15760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016105d3565b506001600160a01b031660009081526005602052604090205490565b610b377f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610bd0565b610ba95760405162461bcd60e51b815260206004820152603e60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f207061757365000060648201526084016105d3565b61088a611333565b6000828152600160205260408120610bc99083611370565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600380546104b490612170565b6107e033838361137c565b610c1d3383610e78565b610c395760405162461bcd60e51b81526004016105d3906121ab565b610c458484848461144b565b50505050565b6060610c5682610dab565b6000610c6061147e565b90506000815111610c805760405180602001604052806000815250610bc9565b80610c8a8461148d565b604051602001610c9b92919061220f565b6040516020818303038152906040529392505050565b600081815260016020526040812061049f9061158b565b600082815260208190526040902060010154610ce38161109e565b61067483836110ca565b610cf78282610bd0565b6107e0576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610d2d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610bc9836001600160a01b038416611595565b60006001600160e01b0319821663780e9d6360e01b148061049f575061049f826115e4565b6000818152600460205260409020546001600160a01b03166108d55760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016105d3565b600081815260066020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610e3f8261096b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610e848361096b565b9050806001600160a01b0316846001600160a01b03161480610ecb57506001600160a01b0380821660009081526007602090815260408083209388168352929052205460ff165b80610eef5750836001600160a01b0316610ee484610537565b6001600160a01b0316145b949350505050565b826001600160a01b0316610f0a8261096b565b6001600160a01b031614610f6e5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016105d3565b6001600160a01b038216610fd05760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016105d3565b610fdb838383611624565b610fe6600082610e0a565b6001600160a01b038316600090815260056020526040812080546001929061100f908490612254565b90915550506001600160a01b038216600090815260056020526040812080546001929061103d90849061226b565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108d5813361162f565b6110b28282610ced565b60008281526001602052604090206106749082610d71565b6110d48282611693565b600082815260016020526040902061067490826116f8565b6110f461170d565b600c805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60006111498261096b565b905061115781600084611624565b611162600083610e0a565b6001600160a01b038116600090815260056020526040812080546001929061118b908490612254565b909155505060008281526004602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6001600160a01b03821661123b5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016105d3565b6000818152600460205260409020546001600160a01b0316156112a05760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105d3565b6112ac60008383611624565b6001600160a01b03821660009081526005602052604081208054600192906112d590849061226b565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b61133b611756565b600c805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586111213390565b6000610bc9838361179c565b816001600160a01b0316836001600160a01b031614156113de5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016105d3565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611456848484610ef7565b611462848484846117c6565b610c455760405162461bcd60e51b81526004016105d390612283565b6060600e80546104b490612170565b6060816114b15750506040805180820190915260018152600360fc1b602082015290565b8160005b81156114db57806114c5816122d5565b91506114d49050600a83612306565b91506114b5565b60008167ffffffffffffffff8111156114f6576114f6612054565b6040519080825280601f01601f191660200182016040528015611520576020820181803683370190505b5090505b8415610eef57611535600183612254565b9150611542600a8661231a565b61154d90603061226b565b60f81b818381518110611562576115626121f9565b60200101906001600160f81b031916908160001a905350611584600a86612306565b9450611524565b600061049f825490565b60008181526001830160205260408120546115dc5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561049f565b50600061049f565b60006001600160e01b031982166380ac58cd60e01b148061161557506001600160e01b03198216635b5e139f60e01b145b8061049f575061049f826118d3565b6106748383836118f8565b6116398282610bd0565b6107e057611651816001600160a01b0316601461196a565b61165c83602061196a565b60405160200161166d92919061232e565b60408051601f198184030181529082905262461bcd60e51b82526105d391600401611f01565b61169d8282610bd0565b156107e0576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610bc9836001600160a01b038416611b06565b600c5460ff1661088a5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105d3565b600c5460ff161561088a5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105d3565b60008260000182815481106117b3576117b36121f9565b9060005260206000200154905092915050565b60006001600160a01b0384163b156118c857604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061180a9033908990889088906004016123a3565b602060405180830381600087803b15801561182457600080fd5b505af1925050508015611854575060408051601f3d908101601f19168201909252611851918101906123e0565b60015b6118ae573d808015611882576040519150601f19603f3d011682016040523d82523d6000602084013e611887565b606091505b5080516118a65760405162461bcd60e51b81526004016105d390612283565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610eef565b506001949350505050565b60006001600160e01b03198216635a05180f60e01b148061049f575061049f82611bf9565b611903838383611c2e565b600c5460ff16156106745760405162461bcd60e51b815260206004820152602b60248201527f4552433732315061757361626c653a20746f6b656e207472616e73666572207760448201526a1a1a5b19481c185d5cd95960aa1b60648201526084016105d3565b606060006119798360026123fd565b61198490600261226b565b67ffffffffffffffff81111561199c5761199c612054565b6040519080825280601f01601f1916602001820160405280156119c6576020820181803683370190505b509050600360fc1b816000815181106119e1576119e16121f9565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611a1057611a106121f9565b60200101906001600160f81b031916908160001a9053506000611a348460026123fd565b611a3f90600161226b565b90505b6001811115611ab7576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611a7357611a736121f9565b1a60f81b828281518110611a8957611a896121f9565b60200101906001600160f81b031916908160001a90535060049490941c93611ab08161241c565b9050611a42565b508315610bc95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105d3565b60008181526001830160205260408120548015611bef576000611b2a600183612254565b8554909150600090611b3e90600190612254565b9050818114611ba3576000866000018281548110611b5e57611b5e6121f9565b9060005260206000200154905080876000018481548110611b8157611b816121f9565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611bb457611bb4612433565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061049f565b600091505061049f565b60006001600160e01b03198216637965db0b60e01b148061049f57506301ffc9a760e01b6001600160e01b031983161461049f565b6001600160a01b038316611c8957611c8481600a80546000838152600b60205260408120829055600182018355919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80155565b611cac565b816001600160a01b0316836001600160a01b031614611cac57611cac8382611ce6565b6001600160a01b038216611cc35761067481611d83565b826001600160a01b0316826001600160a01b031614610674576106748282611e32565b60006001611cf384610a87565b611cfd9190612254565b600083815260096020526040902054909150808214611d50576001600160a01b03841660009081526008602090815260408083208584528252808320548484528184208190558352600990915290208190555b5060009182526009602090815260408084208490556001600160a01b039094168352600881528383209183525290812055565b600a54600090611d9590600190612254565b6000838152600b6020526040812054600a8054939450909284908110611dbd57611dbd6121f9565b9060005260206000200154905080600a8381548110611dde57611dde6121f9565b6000918252602080832090910192909255828152600b9091526040808220849055858252812055600a805480611e1657611e16612433565b6001900381819060005260206000200160009055905550505050565b6000611e3d83610a87565b6001600160a01b039093166000908152600860209081526040808320868452825280832085905593825260099052919091209190915550565b6001600160e01b0319811681146108d557600080fd5b600060208284031215611e9e57600080fd5b8135610bc981611e76565b60005b83811015611ec4578181015183820152602001611eac565b83811115610c455750506000910152565b60008151808452611eed816020860160208601611ea9565b601f01601f19169290920160200192915050565b602081526000610bc96020830184611ed5565b600060208284031215611f2657600080fd5b5035919050565b80356001600160a01b0381168114611f4457600080fd5b919050565b60008060408385031215611f5c57600080fd5b611f6583611f2d565b946020939093013593505050565b600080600060608486031215611f8857600080fd5b611f9184611f2d565b9250611f9f60208501611f2d565b9150604084013590509250925092565b60008060408385031215611fc257600080fd5b82359150611fd260208401611f2d565b90509250929050565b600060208284031215611fed57600080fd5b610bc982611f2d565b6000806040838503121561200957600080fd5b50508035926020909101359150565b6000806040838503121561202b57600080fd5b61203483611f2d565b91506020830135801515811461204957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561208057600080fd5b61208985611f2d565b935061209760208601611f2d565b925060408501359150606085013567ffffffffffffffff808211156120bb57600080fd5b818701915087601f8301126120cf57600080fd5b8135818111156120e1576120e1612054565b604051601f8201601f19908116603f0116810190838211818310171561210957612109612054565b816040528281528a602084870101111561212257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561215957600080fd5b61216283611f2d565b9150611fd260208401611f2d565b600181811c9082168061218457607f821691505b602082108114156121a557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008351612221818460208801611ea9565b835190830190612235818360208801611ea9565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b6000828210156122665761226661223e565b500390565b6000821982111561227e5761227e61223e565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60006000198214156122e9576122e961223e565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082612315576123156122f0565b500490565b600082612329576123296122f0565b500690565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612366816017850160208801611ea9565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612397816028840160208801611ea9565b01602801949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906123d690830184611ed5565b9695505050505050565b6000602082840312156123f257600080fd5b8151610bc981611e76565b60008160001904831182151516156124175761241761223e565b500290565b60008161242b5761242b61223e565b506000190190565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220904fdcec717bb77b92b7a0770155545f37faf7149eef4539d04876c24632417764736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/utils/ERC721Holder":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721Holder","sourceName":"contracts/token/ERC721/utils/ERC721Holder.sol","abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506101af806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063150b7a0214610030575b600080fd5b61004e61003e36600461009d565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200160405180910390f35b80356001600160a01b038116811461008257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156100b357600080fd5b6100bc8561006b565b93506100ca6020860161006b565b925060408501359150606085013567ffffffffffffffff808211156100ee57600080fd5b818701915087601f83011261010257600080fd5b81358181111561011457610114610087565b604051601f8201601f19908116603f0116810190838211818310171561013c5761013c610087565b816040528281528a602084870101111561015557600080fd5b8260208601602083013760006020848301015280955050505050509295919450925056fea26469706673582212203b949b10ab655f3f3682634067da84891aca6edbd1a8a99ca0ec1a31004e97b964736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063150b7a0214610030575b600080fd5b61004e61003e36600461009d565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200160405180910390f35b80356001600160a01b038116811461008257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156100b357600080fd5b6100bc8561006b565b93506100ca6020860161006b565b925060408501359150606085013567ffffffffffffffff808211156100ee57600080fd5b818701915087601f83011261010257600080fd5b81358181111561011457610114610087565b604051601f8201601f19908116603f0116810190838211818310171561013c5761013c610087565b816040528281528a602084870101111561015557600080fd5b8260208601602083013760006020848301015280955050505050509295919450925056fea26469706673582212203b949b10ab655f3f3682634067da84891aca6edbd1a8a99ca0ec1a31004e97b964736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC777/ERC777":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC777","sourceName":"contracts/token/ERC777/ERC777.sol","abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"address[]","name":"defaultOperators_","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"AuthorizedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"RevokedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Sent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"authorizeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenHolder","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"defaultOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"granularity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"tokenHolder","type":"address"}],"name":"isOperatorFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"revokeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"send","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162001bcf38038062001bcf8339810160408190526200003491620003f1565b82516200004990600290602086019062000215565b5081516200005f90600390602085019062000215565b50805162000075906004906020840190620002a4565b5060005b8151811015620000e5576001600560008484815181106200009e576200009e62000508565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580620000dc816200051e565b91505062000079565b506040516329965a1d60e01b815230600482018190527fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce217705460248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad24906329965a1d90606401600060405180830381600087803b1580156200016057600080fd5b505af115801562000175573d6000803e3d6000fd5b50506040516329965a1d60e01b815230600482018190527faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a60248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad2492506329965a1d9150606401600060405180830381600087803b158015620001f357600080fd5b505af115801562000208573d6000803e3d6000fd5b5050505050505062000585565b828054620002239062000548565b90600052602060002090601f01602090048101928262000247576000855562000292565b82601f106200026257805160ff191683800117855562000292565b8280016001018555821562000292579182015b828111156200029257825182559160200191906001019062000275565b50620002a0929150620002fc565b5090565b82805482825590600052602060002090810192821562000292579160200282015b828111156200029257825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620002c5565b5b80821115620002a05760008155600101620002fd565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562000354576200035462000313565b604052919050565b600082601f8301126200036e57600080fd5b81516001600160401b038111156200038a576200038a62000313565b6020620003a0601f8301601f1916820162000329565b8281528582848701011115620003b557600080fd5b60005b83811015620003d5578581018301518282018401528201620003b8565b83811115620003e75760008385840101525b5095945050505050565b6000806000606084860312156200040757600080fd5b83516001600160401b03808211156200041f57600080fd5b6200042d878388016200035c565b94506020915081860151818111156200044557600080fd5b62000453888289016200035c565b9450506040860151818111156200046957600080fd5b8601601f810188136200047b57600080fd5b80518281111562000490576200049062000313565b8060051b9250620004a384840162000329565b818152928201840192848101908a851115620004be57600080fd5b928501925b84841015620004f857835192506001600160a01b0383168314620004e75760008081fd5b8282529285019290850190620004c3565b8096505050505050509250925092565b634e487b7160e01b600052603260045260246000fd5b60006000198214156200054157634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c908216806200055d57607f821691505b602082108114156200057f57634e487b7160e01b600052602260045260246000fd5b50919050565b61163a80620005956000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063959b8c3f116100a2578063d95b637111610071578063d95b63711461022b578063dd62ed3e1461023e578063fad8b32a14610277578063fc673c4f1461028a578063fe9d93031461029d57600080fd5b8063959b8c3f146101ea57806395d89b41146101fd5780639bd9bbc614610205578063a9059cbb1461021857600080fd5b806323b872dd116100e957806323b872dd14610183578063313ce56714610196578063556f0dc7146101a557806362ad1b83146101ac57806370a08231146101c157600080fd5b806306e485381461011b57806306fdde0314610139578063095ea7b31461014e57806318160ddd14610171575b600080fd5b6101236102b0565b60405161013091906110ae565b60405180910390f35b610141610312565b6040516101309190611148565b61016161015c366004611173565b61039b565b6040519015158152602001610130565b6001545b604051908152602001610130565b61016161019136600461119f565b6103b3565b60405160128152602001610130565b6001610175565b6101bf6101ba366004611283565b6103f9565b005b6101756101cf366004611316565b6001600160a01b031660009081526020819052604090205490565b6101bf6101f8366004611316565b61043e565b61014161055c565b6101bf610213366004611333565b61056b565b610161610226366004611173565b61058e565b61016161023936600461138c565b6105c6565b61017561024c36600461138c565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6101bf610285366004611316565b610668565b6101bf6102983660046113c5565b610784565b6101bf6102ab366004611445565b6107bc565b6060600480548060200260200160405190810160405280929190818152602001828054801561030857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102ea575b5050505050905090565b6060600280546103219061148c565b80601f016020809104026020016040519081016040528092919081815260200182805461034d9061148c565b80156103085780601f1061036f57610100808354040283529160200191610308565b820191906000526020600020905b81548152906001019060200180831161037d57509395945050505050565b6000336103a98185856107db565b5060019392505050565b6000336103c1858285610902565b6103ee8585856040518060200160405280600081525060405180602001604052806000815250600061098e565b506001949350505050565b61040333866105c6565b6104285760405162461bcd60e51b815260040161041f906114c7565b60405180910390fd5b6104378585858585600161098e565b5050505050565b336001600160a01b03821614156104a35760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff16156104f4573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19169055610523565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b6060600380546103219061148c565b6105893384848460405180602001604052806000815250600161098e565b505050565b60006105bd3384846040518060200160405280600081525060405180602001604052806000815250600061098e565b50600192915050565b6000816001600160a01b0316836001600160a01b0316148061063157506001600160a01b03831660009081526005602052604090205460ff16801561063157506001600160a01b0380831660009081526007602090815260408083209387168352929052205460ff16155b8061066157506001600160a01b0380831660009081526006602090815260408083209387168352929052205460ff165b9392505050565b6001600160a01b0381163314156106cb5760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff161561071f573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561074b565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b61078e33856105c6565b6107aa5760405162461bcd60e51b815260040161041f906114c7565b6107b684848484610a8a565b50505050565b6107d733838360405180602001604052806000815250610a8a565b5050565b6001600160a01b03831661083f5760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161041f565b6001600160a01b0382166108a15760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b606482015260840161041f565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526008602090815260408083209386168352929052205460001981146107b657818110156109815760405162461bcd60e51b815260206004820152601e60248201527f4552433737373a20696e73756666696369656e7420616c6c6f77616e63650000604482015260640161041f565b6107b684848484036107db565b6001600160a01b0386166109f35760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b606482015260840161041f565b6001600160a01b038516610a555760405162461bcd60e51b8152602060048201526024808201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161041f565b33610a64818888888888610c3e565b610a72818888888888610d74565b610a8181888888888888610eda565b50505050505050565b6001600160a01b038416610aeb5760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b606482015260840161041f565b33610afb81866000878787610c3e565b6001600160a01b03851660009081526020819052604090205484811015610b705760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b606482015260840161041f565b6001600160a01b0386166000908152602081905260408120868303905560018054879290610b9f908490611529565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098878787604051610bed93929190611540565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610cba57600080fd5b505afa158015610cce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf29190611575565b90506001600160a01b03811615610a8157604051633ad5cbc160e11b81526001600160a01b038216906375ab978290610d39908a908a908a908a908a908a90600401611592565b600060405180830381600087803b158015610d5357600080fd5b505af1158015610d67573d6000803e3d6000fd5b5050505050505050505050565b6001600160a01b03851660009081526020819052604090205483811015610ded5760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b606482015260840161041f565b6001600160a01b03808716600090815260208190526040808220878503905591871681529081208054869290610e249084906115ec565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051610e7c93929190611540565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610ec991815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610f5657600080fd5b505afa158015610f6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8e9190611575565b90506001600160a01b0381161561100a576040516223de2960e01b81526001600160a01b038216906223de2990610fd3908b908b908b908b908b908b90600401611592565b600060405180830381600087803b158015610fed57600080fd5b505af1158015611001573d6000803e3d6000fd5b505050506110a4565b81156110a4576001600160a01b0386163b156110a45760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a40161041f565b5050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156110ef5783516001600160a01b0316835292840192918401916001016110ca565b50909695505050505050565b6000815180845260005b8181101561112157602081850181015186830182015201611105565b81811115611133576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061066160208301846110fb565b6001600160a01b038116811461117057600080fd5b50565b6000806040838503121561118657600080fd5b82356111918161115b565b946020939093013593505050565b6000806000606084860312156111b457600080fd5b83356111bf8161115b565b925060208401356111cf8161115b565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261120757600080fd5b813567ffffffffffffffff80821115611222576112226111e0565b604051601f8301601f19908116603f0116810190828211818310171561124a5761124a6111e0565b8160405283815286602085880101111561126357600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a0868803121561129b57600080fd5b85356112a68161115b565b945060208601356112b68161115b565b935060408601359250606086013567ffffffffffffffff808211156112da57600080fd5b6112e689838a016111f6565b935060808801359150808211156112fc57600080fd5b50611309888289016111f6565b9150509295509295909350565b60006020828403121561132857600080fd5b81356106618161115b565b60008060006060848603121561134857600080fd5b83356113538161115b565b925060208401359150604084013567ffffffffffffffff81111561137657600080fd5b611382868287016111f6565b9150509250925092565b6000806040838503121561139f57600080fd5b82356113aa8161115b565b915060208301356113ba8161115b565b809150509250929050565b600080600080608085870312156113db57600080fd5b84356113e68161115b565b935060208501359250604085013567ffffffffffffffff8082111561140a57600080fd5b611416888389016111f6565b9350606087013591508082111561142c57600080fd5b50611439878288016111f6565b91505092959194509250565b6000806040838503121561145857600080fd5b82359150602083013567ffffffffffffffff81111561147657600080fd5b611482858286016111f6565b9150509250929050565b600181811c908216806114a057607f821691505b602082108114156114c157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008282101561153b5761153b611513565b500390565b83815260606020820152600061155960608301856110fb565b828103604084015261156b81856110fb565b9695505050505050565b60006020828403121561158757600080fd5b81516106618161115b565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c0608082018190526000906115cd908301856110fb565b82810360a08401526115df81856110fb565b9998505050505050505050565b600082198211156115ff576115ff611513565b50019056fea2646970667358221220dec8b87b9af6219ef84a946a07b0afce572fce594cc7b8b387590cb21c422daf64736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063959b8c3f116100a2578063d95b637111610071578063d95b63711461022b578063dd62ed3e1461023e578063fad8b32a14610277578063fc673c4f1461028a578063fe9d93031461029d57600080fd5b8063959b8c3f146101ea57806395d89b41146101fd5780639bd9bbc614610205578063a9059cbb1461021857600080fd5b806323b872dd116100e957806323b872dd14610183578063313ce56714610196578063556f0dc7146101a557806362ad1b83146101ac57806370a08231146101c157600080fd5b806306e485381461011b57806306fdde0314610139578063095ea7b31461014e57806318160ddd14610171575b600080fd5b6101236102b0565b60405161013091906110ae565b60405180910390f35b610141610312565b6040516101309190611148565b61016161015c366004611173565b61039b565b6040519015158152602001610130565b6001545b604051908152602001610130565b61016161019136600461119f565b6103b3565b60405160128152602001610130565b6001610175565b6101bf6101ba366004611283565b6103f9565b005b6101756101cf366004611316565b6001600160a01b031660009081526020819052604090205490565b6101bf6101f8366004611316565b61043e565b61014161055c565b6101bf610213366004611333565b61056b565b610161610226366004611173565b61058e565b61016161023936600461138c565b6105c6565b61017561024c36600461138c565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6101bf610285366004611316565b610668565b6101bf6102983660046113c5565b610784565b6101bf6102ab366004611445565b6107bc565b6060600480548060200260200160405190810160405280929190818152602001828054801561030857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102ea575b5050505050905090565b6060600280546103219061148c565b80601f016020809104026020016040519081016040528092919081815260200182805461034d9061148c565b80156103085780601f1061036f57610100808354040283529160200191610308565b820191906000526020600020905b81548152906001019060200180831161037d57509395945050505050565b6000336103a98185856107db565b5060019392505050565b6000336103c1858285610902565b6103ee8585856040518060200160405280600081525060405180602001604052806000815250600061098e565b506001949350505050565b61040333866105c6565b6104285760405162461bcd60e51b815260040161041f906114c7565b60405180910390fd5b6104378585858585600161098e565b5050505050565b336001600160a01b03821614156104a35760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff16156104f4573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19169055610523565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b6060600380546103219061148c565b6105893384848460405180602001604052806000815250600161098e565b505050565b60006105bd3384846040518060200160405280600081525060405180602001604052806000815250600061098e565b50600192915050565b6000816001600160a01b0316836001600160a01b0316148061063157506001600160a01b03831660009081526005602052604090205460ff16801561063157506001600160a01b0380831660009081526007602090815260408083209387168352929052205460ff16155b8061066157506001600160a01b0380831660009081526006602090815260408083209387168352929052205460ff165b9392505050565b6001600160a01b0381163314156106cb5760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff161561071f573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561074b565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b61078e33856105c6565b6107aa5760405162461bcd60e51b815260040161041f906114c7565b6107b684848484610a8a565b50505050565b6107d733838360405180602001604052806000815250610a8a565b5050565b6001600160a01b03831661083f5760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161041f565b6001600160a01b0382166108a15760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b606482015260840161041f565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526008602090815260408083209386168352929052205460001981146107b657818110156109815760405162461bcd60e51b815260206004820152601e60248201527f4552433737373a20696e73756666696369656e7420616c6c6f77616e63650000604482015260640161041f565b6107b684848484036107db565b6001600160a01b0386166109f35760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b606482015260840161041f565b6001600160a01b038516610a555760405162461bcd60e51b8152602060048201526024808201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161041f565b33610a64818888888888610c3e565b610a72818888888888610d74565b610a8181888888888888610eda565b50505050505050565b6001600160a01b038416610aeb5760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b606482015260840161041f565b33610afb81866000878787610c3e565b6001600160a01b03851660009081526020819052604090205484811015610b705760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b606482015260840161041f565b6001600160a01b0386166000908152602081905260408120868303905560018054879290610b9f908490611529565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098878787604051610bed93929190611540565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610cba57600080fd5b505afa158015610cce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf29190611575565b90506001600160a01b03811615610a8157604051633ad5cbc160e11b81526001600160a01b038216906375ab978290610d39908a908a908a908a908a908a90600401611592565b600060405180830381600087803b158015610d5357600080fd5b505af1158015610d67573d6000803e3d6000fd5b5050505050505050505050565b6001600160a01b03851660009081526020819052604090205483811015610ded5760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b606482015260840161041f565b6001600160a01b03808716600090815260208190526040808220878503905591871681529081208054869290610e249084906115ec565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051610e7c93929190611540565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610ec991815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610f5657600080fd5b505afa158015610f6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8e9190611575565b90506001600160a01b0381161561100a576040516223de2960e01b81526001600160a01b038216906223de2990610fd3908b908b908b908b908b908b90600401611592565b600060405180830381600087803b158015610fed57600080fd5b505af1158015611001573d6000803e3d6000fd5b505050506110a4565b81156110a4576001600160a01b0386163b156110a45760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a40161041f565b5050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156110ef5783516001600160a01b0316835292840192918401916001016110ca565b50909695505050505050565b6000815180845260005b8181101561112157602081850181015186830182015201611105565b81811115611133576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061066160208301846110fb565b6001600160a01b038116811461117057600080fd5b50565b6000806040838503121561118657600080fd5b82356111918161115b565b946020939093013593505050565b6000806000606084860312156111b457600080fd5b83356111bf8161115b565b925060208401356111cf8161115b565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261120757600080fd5b813567ffffffffffffffff80821115611222576112226111e0565b604051601f8301601f19908116603f0116810190828211818310171561124a5761124a6111e0565b8160405283815286602085880101111561126357600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a0868803121561129b57600080fd5b85356112a68161115b565b945060208601356112b68161115b565b935060408601359250606086013567ffffffffffffffff808211156112da57600080fd5b6112e689838a016111f6565b935060808801359150808211156112fc57600080fd5b50611309888289016111f6565b9150509295509295909350565b60006020828403121561132857600080fd5b81356106618161115b565b60008060006060848603121561134857600080fd5b83356113538161115b565b925060208401359150604084013567ffffffffffffffff81111561137657600080fd5b611382868287016111f6565b9150509250925092565b6000806040838503121561139f57600080fd5b82356113aa8161115b565b915060208301356113ba8161115b565b809150509250929050565b600080600080608085870312156113db57600080fd5b84356113e68161115b565b935060208501359250604085013567ffffffffffffffff8082111561140a57600080fd5b611416888389016111f6565b9350606087013591508082111561142c57600080fd5b50611439878288016111f6565b91505092959194509250565b6000806040838503121561145857600080fd5b82359150602083013567ffffffffffffffff81111561147657600080fd5b611482858286016111f6565b9150509250929050565b600181811c908216806114a057607f821691505b602082108114156114c157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008282101561153b5761153b611513565b500390565b83815260606020820152600061155960608301856110fb565b828103604084015261156b81856110fb565b9695505050505050565b60006020828403121561158757600080fd5b81516106618161115b565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c0608082018190526000906115cd908301856110fb565b82810360a08401526115df81856110fb565b9998505050505050505050565b600082198211156115ff576115ff611513565b50019056fea2646970667358221220dec8b87b9af6219ef84a946a07b0afce572fce594cc7b8b387590cb21c422daf64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC777/IERC777":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC777","sourceName":"contracts/token/ERC777/IERC777.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"AuthorizedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"RevokedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Sent","type":"event"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"authorizeOperator","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":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"defaultOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"granularity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"tokenHolder","type":"address"}],"name":"isOperatorFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"revokeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"send","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC777/IERC777Recipient":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC777Recipient","sourceName":"contracts/token/ERC777/IERC777Recipient.sol","abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"tokensReceived","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC777/IERC777Sender":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC777Sender","sourceName":"contracts/token/ERC777/IERC777Sender.sol","abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"tokensToSend","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC777/presets/ERC777PresetFixedSupply":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC777PresetFixedSupply","sourceName":"contracts/token/ERC777/presets/ERC777PresetFixedSupply.sol","abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"address[]","name":"defaultOperators","type":"address[]"},{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"AuthorizedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"RevokedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Sent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"authorizeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenHolder","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"defaultOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"granularity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"tokenHolder","type":"address"}],"name":"isOperatorFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"revokeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"send","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b50604051620020d1380380620020d18339810160408190526200003491620007c9565b84848482600290805190602001906200004f929190620005c2565b50815162000065906003906020850190620005c2565b5080516200007b90600490602084019062000651565b5060005b8151811015620000eb57600160056000848481518110620000a457620000a4620008ec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580620000e28162000918565b9150506200007f565b506040516329965a1d60e01b815230600482018190527fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce217705460248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad24906329965a1d90606401600060405180830381600087803b1580156200016657600080fd5b505af11580156200017b573d6000803e3d6000fd5b50506040516329965a1d60e01b815230600482018190527faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a60248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad2492506329965a1d9150606401600060405180830381600087803b158015620001f957600080fd5b505af11580156200020e573d6000803e3d6000fd5b5050505050505062000247818360405180602001604052806000815250604051806020016040528060008152506200025260201b60201c565b505050505062000a78565b6200026284848484600162000268565b50505050565b6001600160a01b038516620002c45760405162461bcd60e51b815260206004820181905260248201527f4552433737373a206d696e7420746f20746865207a65726f206164647265737360448201526064015b60405180910390fd5b60003390508460016000828254620002dd919062000936565b90915550506001600160a01b038616600090815260208190526040812080548792906200030c90849062000936565b909155506200032490508160008888888888620003be565b856001600160a01b0316816001600160a01b03167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d8787876040516200036d939291906200097f565b60405180910390a36040518581526001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b1580156200043b57600080fd5b505afa15801562000450573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004769190620009b8565b90506001600160a01b03811615620004f8576040516223de2960e01b81526001600160a01b038216906223de2990620004be908b908b908b908b908b908b90600401620009dd565b600060405180830381600087803b158015620004d957600080fd5b505af1158015620004ee573d6000803e3d6000fd5b50505050620005a9565b8115620005a9576200051e866001600160a01b0316620005b360201b620007db1760201c565b15620005a95760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a401620002bb565b5050505050505050565b6001600160a01b03163b151590565b828054620005d09062000a3b565b90600052602060002090601f016020900481019282620005f457600085556200063f565b82601f106200060f57805160ff19168380011785556200063f565b828001600101855582156200063f579182015b828111156200063f57825182559160200191906001019062000622565b506200064d929150620006a9565b5090565b8280548282559060005260206000209081019282156200063f579160200282015b828111156200063f57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000672565b5b808211156200064d5760008155600101620006aa565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620007015762000701620006c0565b604052919050565b60005b83811015620007265781810151838201526020016200070c565b83811115620002625750506000910152565b600082601f8301126200074a57600080fd5b81516001600160401b03811115620007665762000766620006c0565b6200077b601f8201601f1916602001620006d6565b8181528460208386010111156200079157600080fd5b620007a482602083016020870162000709565b949350505050565b80516001600160a01b0381168114620007c457600080fd5b919050565b600080600080600060a08688031215620007e257600080fd5b85516001600160401b0380821115620007fa57600080fd5b6200080889838a0162000738565b96506020915081880151818111156200082057600080fd5b6200082e8a828b0162000738565b9650506040880151818111156200084457600080fd5b8801601f81018a136200085657600080fd5b8051828111156200086b576200086b620006c0565b8060051b92506200087e848401620006d6565b818152928201840192848101908c8511156200089957600080fd5b928501925b84841015620008c257620008b284620007ac565b825292850192908501906200089e565b80985050505050505060608601519150620008e060808701620007ac565b90509295509295909350565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156200092f576200092f62000902565b5060010190565b600082198211156200094c576200094c62000902565b500190565b600081518084526200096b81602086016020860162000709565b601f01601f19169290920160200192915050565b8381526060602082015260006200099a606083018562000951565b8281036040840152620009ae818562000951565b9695505050505050565b600060208284031215620009cb57600080fd5b620009d682620007ac565b9392505050565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c06080820181905260009062000a1a9083018562000951565b82810360a084015262000a2e818562000951565b9998505050505050505050565b600181811c9082168062000a5057607f821691505b6020821081141562000a7257634e487b7160e01b600052602260045260246000fd5b50919050565b6116498062000a886000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063959b8c3f116100a2578063d95b637111610071578063d95b63711461022b578063dd62ed3e1461023e578063fad8b32a14610277578063fc673c4f1461028a578063fe9d93031461029d57600080fd5b8063959b8c3f146101ea57806395d89b41146101fd5780639bd9bbc614610205578063a9059cbb1461021857600080fd5b806323b872dd116100e957806323b872dd14610183578063313ce56714610196578063556f0dc7146101a557806362ad1b83146101ac57806370a08231146101c157600080fd5b806306e485381461011b57806306fdde0314610139578063095ea7b31461014e57806318160ddd14610171575b600080fd5b6101236102b0565b60405161013091906110bd565b60405180910390f35b610141610312565b6040516101309190611157565b61016161015c366004611182565b61039b565b6040519015158152602001610130565b6001545b604051908152602001610130565b6101616101913660046111ae565b6103b3565b60405160128152602001610130565b6001610175565b6101bf6101ba366004611292565b6103f9565b005b6101756101cf366004611325565b6001600160a01b031660009081526020819052604090205490565b6101bf6101f8366004611325565b61043e565b61014161055c565b6101bf610213366004611342565b61056b565b610161610226366004611182565b61058e565b61016161023936600461139b565b6105c6565b61017561024c36600461139b565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6101bf610285366004611325565b610668565b6101bf6102983660046113d4565b610784565b6101bf6102ab366004611454565b6107bc565b6060600480548060200260200160405190810160405280929190818152602001828054801561030857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102ea575b5050505050905090565b6060600280546103219061149b565b80601f016020809104026020016040519081016040528092919081815260200182805461034d9061149b565b80156103085780601f1061036f57610100808354040283529160200191610308565b820191906000526020600020905b81548152906001019060200180831161037d57509395945050505050565b6000336103a98185856107ea565b5060019392505050565b6000336103c1858285610911565b6103ee8585856040518060200160405280600081525060405180602001604052806000815250600061099d565b506001949350505050565b61040333866105c6565b6104285760405162461bcd60e51b815260040161041f906114d6565b60405180910390fd5b6104378585858585600161099d565b5050505050565b336001600160a01b03821614156104a35760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff16156104f4573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19169055610523565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b6060600380546103219061149b565b6105893384848460405180602001604052806000815250600161099d565b505050565b60006105bd3384846040518060200160405280600081525060405180602001604052806000815250600061099d565b50600192915050565b6000816001600160a01b0316836001600160a01b0316148061063157506001600160a01b03831660009081526005602052604090205460ff16801561063157506001600160a01b0380831660009081526007602090815260408083209387168352929052205460ff16155b8061066157506001600160a01b0380831660009081526006602090815260408083209387168352929052205460ff165b9392505050565b6001600160a01b0381163314156106cb5760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff161561071f573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561074b565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b61078e33856105c6565b6107aa5760405162461bcd60e51b815260040161041f906114d6565b6107b684848484610a99565b50505050565b6107d733838360405180602001604052806000815250610a99565b5050565b6001600160a01b03163b151590565b6001600160a01b03831661084e5760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161041f565b6001600160a01b0382166108b05760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b606482015260840161041f565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526008602090815260408083209386168352929052205460001981146107b657818110156109905760405162461bcd60e51b815260206004820152601e60248201527f4552433737373a20696e73756666696369656e7420616c6c6f77616e63650000604482015260640161041f565b6107b684848484036107ea565b6001600160a01b038616610a025760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b606482015260840161041f565b6001600160a01b038516610a645760405162461bcd60e51b8152602060048201526024808201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161041f565b33610a73818888888888610c4d565b610a81818888888888610d83565b610a9081888888888888610ee9565b50505050505050565b6001600160a01b038416610afa5760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b606482015260840161041f565b33610b0a81866000878787610c4d565b6001600160a01b03851660009081526020819052604090205484811015610b7f5760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b606482015260840161041f565b6001600160a01b0386166000908152602081905260408120868303905560018054879290610bae908490611538565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098878787604051610bfc9392919061154f565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610cc957600080fd5b505afa158015610cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d019190611584565b90506001600160a01b03811615610a9057604051633ad5cbc160e11b81526001600160a01b038216906375ab978290610d48908a908a908a908a908a908a906004016115a1565b600060405180830381600087803b158015610d6257600080fd5b505af1158015610d76573d6000803e3d6000fd5b5050505050505050505050565b6001600160a01b03851660009081526020819052604090205483811015610dfc5760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b606482015260840161041f565b6001600160a01b03808716600090815260208190526040808220878503905591871681529081208054869290610e339084906115fb565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051610e8b9392919061154f565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610ed891815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610f6557600080fd5b505afa158015610f79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9d9190611584565b90506001600160a01b03811615611019576040516223de2960e01b81526001600160a01b038216906223de2990610fe2908b908b908b908b908b908b906004016115a1565b600060405180830381600087803b158015610ffc57600080fd5b505af1158015611010573d6000803e3d6000fd5b505050506110b3565b81156110b3576001600160a01b0386163b156110b35760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a40161041f565b5050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156110fe5783516001600160a01b0316835292840192918401916001016110d9565b50909695505050505050565b6000815180845260005b8181101561113057602081850181015186830182015201611114565b81811115611142576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610661602083018461110a565b6001600160a01b038116811461117f57600080fd5b50565b6000806040838503121561119557600080fd5b82356111a08161116a565b946020939093013593505050565b6000806000606084860312156111c357600080fd5b83356111ce8161116a565b925060208401356111de8161116a565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261121657600080fd5b813567ffffffffffffffff80821115611231576112316111ef565b604051601f8301601f19908116603f01168101908282118183101715611259576112596111ef565b8160405283815286602085880101111561127257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156112aa57600080fd5b85356112b58161116a565b945060208601356112c58161116a565b935060408601359250606086013567ffffffffffffffff808211156112e957600080fd5b6112f589838a01611205565b9350608088013591508082111561130b57600080fd5b5061131888828901611205565b9150509295509295909350565b60006020828403121561133757600080fd5b81356106618161116a565b60008060006060848603121561135757600080fd5b83356113628161116a565b925060208401359150604084013567ffffffffffffffff81111561138557600080fd5b61139186828701611205565b9150509250925092565b600080604083850312156113ae57600080fd5b82356113b98161116a565b915060208301356113c98161116a565b809150509250929050565b600080600080608085870312156113ea57600080fd5b84356113f58161116a565b935060208501359250604085013567ffffffffffffffff8082111561141957600080fd5b61142588838901611205565b9350606087013591508082111561143b57600080fd5b5061144887828801611205565b91505092959194509250565b6000806040838503121561146757600080fd5b82359150602083013567ffffffffffffffff81111561148557600080fd5b61149185828601611205565b9150509250929050565b600181811c908216806114af57607f821691505b602082108114156114d057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008282101561154a5761154a611522565b500390565b838152606060208201526000611568606083018561110a565b828103604084015261157a818561110a565b9695505050505050565b60006020828403121561159657600080fd5b81516106618161116a565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c0608082018190526000906115dc9083018561110a565b82810360a08401526115ee818561110a565b9998505050505050505050565b6000821982111561160e5761160e611522565b50019056fea2646970667358221220c35887fab1a87d1b8867924b2ee66f5a7e6813cecffe415f10c449675c0cd5a964736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063959b8c3f116100a2578063d95b637111610071578063d95b63711461022b578063dd62ed3e1461023e578063fad8b32a14610277578063fc673c4f1461028a578063fe9d93031461029d57600080fd5b8063959b8c3f146101ea57806395d89b41146101fd5780639bd9bbc614610205578063a9059cbb1461021857600080fd5b806323b872dd116100e957806323b872dd14610183578063313ce56714610196578063556f0dc7146101a557806362ad1b83146101ac57806370a08231146101c157600080fd5b806306e485381461011b57806306fdde0314610139578063095ea7b31461014e57806318160ddd14610171575b600080fd5b6101236102b0565b60405161013091906110bd565b60405180910390f35b610141610312565b6040516101309190611157565b61016161015c366004611182565b61039b565b6040519015158152602001610130565b6001545b604051908152602001610130565b6101616101913660046111ae565b6103b3565b60405160128152602001610130565b6001610175565b6101bf6101ba366004611292565b6103f9565b005b6101756101cf366004611325565b6001600160a01b031660009081526020819052604090205490565b6101bf6101f8366004611325565b61043e565b61014161055c565b6101bf610213366004611342565b61056b565b610161610226366004611182565b61058e565b61016161023936600461139b565b6105c6565b61017561024c36600461139b565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6101bf610285366004611325565b610668565b6101bf6102983660046113d4565b610784565b6101bf6102ab366004611454565b6107bc565b6060600480548060200260200160405190810160405280929190818152602001828054801561030857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102ea575b5050505050905090565b6060600280546103219061149b565b80601f016020809104026020016040519081016040528092919081815260200182805461034d9061149b565b80156103085780601f1061036f57610100808354040283529160200191610308565b820191906000526020600020905b81548152906001019060200180831161037d57509395945050505050565b6000336103a98185856107ea565b5060019392505050565b6000336103c1858285610911565b6103ee8585856040518060200160405280600081525060405180602001604052806000815250600061099d565b506001949350505050565b61040333866105c6565b6104285760405162461bcd60e51b815260040161041f906114d6565b60405180910390fd5b6104378585858585600161099d565b5050505050565b336001600160a01b03821614156104a35760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff16156104f4573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19169055610523565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b6060600380546103219061149b565b6105893384848460405180602001604052806000815250600161099d565b505050565b60006105bd3384846040518060200160405280600081525060405180602001604052806000815250600061099d565b50600192915050565b6000816001600160a01b0316836001600160a01b0316148061063157506001600160a01b03831660009081526005602052604090205460ff16801561063157506001600160a01b0380831660009081526007602090815260408083209387168352929052205460ff16155b8061066157506001600160a01b0380831660009081526006602090815260408083209387168352929052205460ff165b9392505050565b6001600160a01b0381163314156106cb5760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff161561071f573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561074b565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b61078e33856105c6565b6107aa5760405162461bcd60e51b815260040161041f906114d6565b6107b684848484610a99565b50505050565b6107d733838360405180602001604052806000815250610a99565b5050565b6001600160a01b03163b151590565b6001600160a01b03831661084e5760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161041f565b6001600160a01b0382166108b05760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b606482015260840161041f565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526008602090815260408083209386168352929052205460001981146107b657818110156109905760405162461bcd60e51b815260206004820152601e60248201527f4552433737373a20696e73756666696369656e7420616c6c6f77616e63650000604482015260640161041f565b6107b684848484036107ea565b6001600160a01b038616610a025760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b606482015260840161041f565b6001600160a01b038516610a645760405162461bcd60e51b8152602060048201526024808201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161041f565b33610a73818888888888610c4d565b610a81818888888888610d83565b610a9081888888888888610ee9565b50505050505050565b6001600160a01b038416610afa5760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b606482015260840161041f565b33610b0a81866000878787610c4d565b6001600160a01b03851660009081526020819052604090205484811015610b7f5760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b606482015260840161041f565b6001600160a01b0386166000908152602081905260408120868303905560018054879290610bae908490611538565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098878787604051610bfc9392919061154f565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610cc957600080fd5b505afa158015610cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d019190611584565b90506001600160a01b03811615610a9057604051633ad5cbc160e11b81526001600160a01b038216906375ab978290610d48908a908a908a908a908a908a906004016115a1565b600060405180830381600087803b158015610d6257600080fd5b505af1158015610d76573d6000803e3d6000fd5b5050505050505050505050565b6001600160a01b03851660009081526020819052604090205483811015610dfc5760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b606482015260840161041f565b6001600160a01b03808716600090815260208190526040808220878503905591871681529081208054869290610e339084906115fb565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051610e8b9392919061154f565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610ed891815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610f6557600080fd5b505afa158015610f79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9d9190611584565b90506001600160a01b03811615611019576040516223de2960e01b81526001600160a01b038216906223de2990610fe2908b908b908b908b908b908b906004016115a1565b600060405180830381600087803b158015610ffc57600080fd5b505af1158015611010573d6000803e3d6000fd5b505050506110b3565b81156110b3576001600160a01b0386163b156110b35760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a40161041f565b5050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156110fe5783516001600160a01b0316835292840192918401916001016110d9565b50909695505050505050565b6000815180845260005b8181101561113057602081850181015186830182015201611114565b81811115611142576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610661602083018461110a565b6001600160a01b038116811461117f57600080fd5b50565b6000806040838503121561119557600080fd5b82356111a08161116a565b946020939093013593505050565b6000806000606084860312156111c357600080fd5b83356111ce8161116a565b925060208401356111de8161116a565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261121657600080fd5b813567ffffffffffffffff80821115611231576112316111ef565b604051601f8301601f19908116603f01168101908282118183101715611259576112596111ef565b8160405283815286602085880101111561127257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156112aa57600080fd5b85356112b58161116a565b945060208601356112c58161116a565b935060408601359250606086013567ffffffffffffffff808211156112e957600080fd5b6112f589838a01611205565b9350608088013591508082111561130b57600080fd5b5061131888828901611205565b9150509295509295909350565b60006020828403121561133757600080fd5b81356106618161116a565b60008060006060848603121561135757600080fd5b83356113628161116a565b925060208401359150604084013567ffffffffffffffff81111561138557600080fd5b61139186828701611205565b9150509250925092565b600080604083850312156113ae57600080fd5b82356113b98161116a565b915060208301356113c98161116a565b809150509250929050565b600080600080608085870312156113ea57600080fd5b84356113f58161116a565b935060208501359250604085013567ffffffffffffffff8082111561141957600080fd5b61142588838901611205565b9350606087013591508082111561143b57600080fd5b5061144887828801611205565b91505092959194509250565b6000806040838503121561146757600080fd5b82359150602083013567ffffffffffffffff81111561148557600080fd5b61149185828601611205565b9150509250929050565b600181811c908216806114af57607f821691505b602082108114156114d057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008282101561154a5761154a611522565b500390565b838152606060208201526000611568606083018561110a565b828103604084015261157a818561110a565b9695505050505050565b60006020828403121561159657600080fd5b81516106618161116a565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c0608082018190526000906115dc9083018561110a565b82810360a08401526115ee818561110a565b9998505050505050505050565b6000821982111561160e5761160e611522565b50019056fea2646970667358221220c35887fab1a87d1b8867924b2ee66f5a7e6813cecffe415f10c449675c0cd5a964736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Address":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Address","sourceName":"contracts/utils/Address.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220606d7d087d9537598f178a0e24bbca9265c44e5d57806c9d1487d791c2014e6d64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220606d7d087d9537598f178a0e24bbca9265c44e5d57806c9d1487d791c2014e6d64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Arrays":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Arrays","sourceName":"contracts/utils/Arrays.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220655ca9dd21119229980dc932da7b27559291a855eeef99bfff98cd076fd5895c64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220655ca9dd21119229980dc932da7b27559291a855eeef99bfff98cd076fd5895c64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Base64":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Base64","sourceName":"contracts/utils/Base64.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122011638abb6e3586d7f6ccaa6dd9fb1274cbb9c8730c14061f650735e65642a99964736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122011638abb6e3586d7f6ccaa6dd9fb1274cbb9c8730c14061f650735e65642a99964736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Checkpoints":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Checkpoints","sourceName":"contracts/utils/Checkpoints.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122052b0c69fec6bee636076dd6f90ff9c1a517975fe60ef11a3192d0049d34e9c0c64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122052b0c69fec6bee636076dd6f90ff9c1a517975fe60ef11a3192d0049d34e9c0c64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Context":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Context","sourceName":"contracts/utils/Context.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Counters":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Counters","sourceName":"contracts/utils/Counters.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207e9744ee0d57c3c7ee555c3db47df50e361acf4e3c082e5de7aefa7b14d96ce264736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207e9744ee0d57c3c7ee555c3db47df50e361acf4e3c082e5de7aefa7b14d96ce264736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Create2":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Create2","sourceName":"contracts/utils/Create2.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663fd34c338df3acc96e8be8f5ab984b23259d2ddb6dd435519240eb376fd9b064736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663fd34c338df3acc96e8be8f5ab984b23259d2ddb6dd435519240eb376fd9b064736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/cryptography/EIP712":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"EIP712","sourceName":"contracts/utils/cryptography/draft-EIP712.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/cryptography/ECDSA":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ECDSA","sourceName":"contracts/utils/cryptography/ECDSA.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220914ddf8c54b121fc32a2c250c5713169e8ee9e5bdf72d13b12f1137e3ca30e2464736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220914ddf8c54b121fc32a2c250c5713169e8ee9e5bdf72d13b12f1137e3ca30e2464736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/cryptography/MerkleProof":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"MerkleProof","sourceName":"contracts/utils/cryptography/MerkleProof.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209d381f7e6729bdfbea34798b2f92550cb12e1699fa50dc80557b2ee144c8e2e664736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209d381f7e6729bdfbea34798b2f92550cb12e1699fa50dc80557b2ee144c8e2e664736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/cryptography/SignatureChecker":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"SignatureChecker","sourceName":"contracts/utils/cryptography/SignatureChecker.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209842b391c06c2db43bee88f2053a845447fe59228a99b55b5c6323f1b1d6a51364736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209842b391c06c2db43bee88f2053a845447fe59228a99b55b5c6323f1b1d6a51364736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/escrow/ConditionalEscrow":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ConditionalEscrow","sourceName":"contracts/utils/escrow/ConditionalEscrow.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":false,"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":false,"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"address","name":"payee","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"payee","type":"address"}],"name":"depositsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"payee","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"payee","type":"address"}],"name":"withdrawalAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/escrow/Escrow":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Escrow","sourceName":"contracts/utils/escrow/Escrow.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":false,"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":false,"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"address","name":"payee","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"payee","type":"address"}],"name":"depositsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"payee","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61050d8061007e6000396000f3fe6080604052600436106100555760003560e01c806351cff8d91461005a578063715018a61461007c5780638da5cb5b14610091578063e3a9db1a146100be578063f2fde38b14610102578063f340fa0114610122575b600080fd5b34801561006657600080fd5b5061007a61007536600461048d565b610135565b005b34801561008857600080fd5b5061007a6101ac565b34801561009d57600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b3480156100ca57600080fd5b506100f46100d936600461048d565b6001600160a01b031660009081526001602052604090205490565b6040519081526020016100b5565b34801561010e57600080fd5b5061007a61011d36600461048d565b6101c0565b61007a61013036600461048d565b61023e565b61013d6102b0565b6001600160a01b0381166000818152600160205260408120805491905590610165908261030a565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516101a091815260200190565b60405180910390a25050565b6101b46102b0565b6101be6000610428565b565b6101c86102b0565b6001600160a01b0381166102325760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61023b81610428565b50565b6102466102b0565b6001600160a01b0381166000908152600160205260408120805434928392916102709084906104b1565b90915550506040518181526001600160a01b038316907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020016101a0565b6000546001600160a01b031633146101be5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610229565b8047101561035a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610229565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146103a7576040519150601f19603f3d011682016040523d82523d6000602084013e6103ac565b606091505b50509050806104235760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610229565b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461023b57600080fd5b60006020828403121561049f57600080fd5b81356104aa81610478565b9392505050565b600082198211156104d257634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220f0e4e0868b7beb65355490f66dcb5e786874e97e41891698970cad2925921cfe64736f6c63430008090033","deployedBytecode":"0x6080604052600436106100555760003560e01c806351cff8d91461005a578063715018a61461007c5780638da5cb5b14610091578063e3a9db1a146100be578063f2fde38b14610102578063f340fa0114610122575b600080fd5b34801561006657600080fd5b5061007a61007536600461048d565b610135565b005b34801561008857600080fd5b5061007a6101ac565b34801561009d57600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b3480156100ca57600080fd5b506100f46100d936600461048d565b6001600160a01b031660009081526001602052604090205490565b6040519081526020016100b5565b34801561010e57600080fd5b5061007a61011d36600461048d565b6101c0565b61007a61013036600461048d565b61023e565b61013d6102b0565b6001600160a01b0381166000818152600160205260408120805491905590610165908261030a565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516101a091815260200190565b60405180910390a25050565b6101b46102b0565b6101be6000610428565b565b6101c86102b0565b6001600160a01b0381166102325760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61023b81610428565b50565b6102466102b0565b6001600160a01b0381166000908152600160205260408120805434928392916102709084906104b1565b90915550506040518181526001600160a01b038316907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020016101a0565b6000546001600160a01b031633146101be5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610229565b8047101561035a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610229565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146103a7576040519150601f19603f3d011682016040523d82523d6000602084013e6103ac565b606091505b50509050806104235760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610229565b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461023b57600080fd5b60006020828403121561049f57600080fd5b81356104aa81610478565b9392505050565b600082198211156104d257634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220f0e4e0868b7beb65355490f66dcb5e786874e97e41891698970cad2925921cfe64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/escrow/RefundEscrow":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"RefundEscrow","sourceName":"contracts/utils/escrow/RefundEscrow.sol","abi":[{"inputs":[{"internalType":"address payable","name":"beneficiary_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":false,"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RefundsClosed","type":"event"},{"anonymous":false,"inputs":[],"name":"RefundsEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":false,"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"beneficiary","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beneficiaryWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"close","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"refundee","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"payee","type":"address"}],"name":"depositsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableRefunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"state","outputs":[{"internalType":"enum RefundEscrow.State","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"payee","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"withdrawalAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60a060405234801561001057600080fd5b50604051610b22380380610b2283398101604081905261002f91610113565b610038336100c3565b6001600160a01b0381166100a85760405162461bcd60e51b815260206004820152602d60248201527f526566756e64457363726f773a2062656e65666963696172792069732074686560448201526c207a65726f206164647265737360981b606482015260840160405180910390fd5b6001600160a01b03166080526002805460ff19169055610143565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561012557600080fd5b81516001600160a01b038116811461013c57600080fd5b9392505050565b6080516109be6101646000396000818160bb015261051b01526109be6000f3fe6080604052600436106100a75760003560e01c80638da5cb5b116100645780638da5cb5b146101895780639af6549a146101a7578063c19d93fb146101bc578063e3a9db1a146101dc578063f2fde38b14610220578063f340fa011461024057600080fd5b806338af3eed146100ac57806343d726d6146100f857806351cff8d91461010f578063685ca1941461012f578063715018a61461015f5780638c52dc4114610174575b600080fd5b3480156100b857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b34801561010457600080fd5b5061010d610253565b005b34801561011b57600080fd5b5061010d61012a366004610900565b61030f565b34801561013b57600080fd5b5061014f61014a366004610900565b61038c565b60405190151581526020016100ef565b34801561016b57600080fd5b5061010d6103ae565b34801561018057600080fd5b5061010d6103c2565b34801561019557600080fd5b506000546001600160a01b03166100db565b3480156101b357600080fd5b5061010d610483565b3480156101c857600080fd5b5060025460ff166040516100ef919061093a565b3480156101e857600080fd5b506102126101f7366004610900565b6001600160a01b031660009081526001602052604090205490565b6040519081526020016100ef565b34801561022c57600080fd5b5061010d61023b366004610900565b610541565b61010d61024e366004610900565b6105b7565b61025b61063a565b600060025460ff16600281111561027457610274610924565b146102d85760405162461bcd60e51b815260206004820152602960248201527f526566756e64457363726f773a2063616e206f6e6c7920636c6f7365207768696044820152686c652061637469766560b81b60648201526084015b60405180910390fd5b6002805460ff1916811790556040517f088672c3a6e342f7cd94a65ba63b79df24a8973927b4d05d803c44bbf787d12f90600090a1565b6103188161038c565b6103805760405162461bcd60e51b815260206004820152603360248201527f436f6e646974696f6e616c457363726f773a207061796565206973206e6f7420604482015272616c6c6f77656420746f20776974686472617760681b60648201526084016102cf565b61038981610694565b50565b6000600160025460ff1660028111156103a7576103a7610924565b1492915050565b6103b661063a565b6103c0600061070b565b565b6103ca61063a565b600060025460ff1660028111156103e3576103e3610924565b1461044b5760405162461bcd60e51b815260206004820152603260248201527f526566756e64457363726f773a2063616e206f6e6c7920656e61626c6520726560448201527166756e6473207768696c652061637469766560701b60648201526084016102cf565b6002805460ff191660011790556040517f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8990600090a1565b6002805460ff16600281111561049b5761049b610924565b1461050e5760405162461bcd60e51b815260206004820152603860248201527f526566756e64457363726f773a2062656e65666963696172792063616e206f6e60448201527f6c79207769746864726177207768696c6520636c6f736564000000000000000060648201526084016102cf565b6103c06001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000164761075b565b61054961063a565b6001600160a01b0381166105ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102cf565b6103898161070b565b600060025460ff1660028111156105d0576105d0610924565b146106315760405162461bcd60e51b815260206004820152602b60248201527f526566756e64457363726f773a2063616e206f6e6c79206465706f736974207760448201526a68696c652061637469766560a81b60648201526084016102cf565b61038981610879565b6000546001600160a01b031633146103c05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102cf565b61069c61063a565b6001600160a01b03811660008181526001602052604081208054919055906106c4908261075b565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516106ff91815260200190565b60405180910390a25050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b804710156107ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016102cf565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146107f8576040519150601f19603f3d011682016040523d82523d6000602084013e6107fd565b606091505b50509050806108745760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016102cf565b505050565b61088161063a565b6001600160a01b0381166000908152600160205260408120805434928392916108ab908490610962565b90915550506040518181526001600160a01b038316907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020016106ff565b6001600160a01b038116811461038957600080fd5b60006020828403121561091257600080fd5b813561091d816108eb565b9392505050565b634e487b7160e01b600052602160045260246000fd5b602081016003831061095c57634e487b7160e01b600052602160045260246000fd5b91905290565b6000821982111561098357634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220d99790e641c40ef87f3b35b232f63f0df03ce3576454bb1cd00ad1fa9fc1f9c564736f6c63430008090033","deployedBytecode":"0x6080604052600436106100a75760003560e01c80638da5cb5b116100645780638da5cb5b146101895780639af6549a146101a7578063c19d93fb146101bc578063e3a9db1a146101dc578063f2fde38b14610220578063f340fa011461024057600080fd5b806338af3eed146100ac57806343d726d6146100f857806351cff8d91461010f578063685ca1941461012f578063715018a61461015f5780638c52dc4114610174575b600080fd5b3480156100b857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b34801561010457600080fd5b5061010d610253565b005b34801561011b57600080fd5b5061010d61012a366004610900565b61030f565b34801561013b57600080fd5b5061014f61014a366004610900565b61038c565b60405190151581526020016100ef565b34801561016b57600080fd5b5061010d6103ae565b34801561018057600080fd5b5061010d6103c2565b34801561019557600080fd5b506000546001600160a01b03166100db565b3480156101b357600080fd5b5061010d610483565b3480156101c857600080fd5b5060025460ff166040516100ef919061093a565b3480156101e857600080fd5b506102126101f7366004610900565b6001600160a01b031660009081526001602052604090205490565b6040519081526020016100ef565b34801561022c57600080fd5b5061010d61023b366004610900565b610541565b61010d61024e366004610900565b6105b7565b61025b61063a565b600060025460ff16600281111561027457610274610924565b146102d85760405162461bcd60e51b815260206004820152602960248201527f526566756e64457363726f773a2063616e206f6e6c7920636c6f7365207768696044820152686c652061637469766560b81b60648201526084015b60405180910390fd5b6002805460ff1916811790556040517f088672c3a6e342f7cd94a65ba63b79df24a8973927b4d05d803c44bbf787d12f90600090a1565b6103188161038c565b6103805760405162461bcd60e51b815260206004820152603360248201527f436f6e646974696f6e616c457363726f773a207061796565206973206e6f7420604482015272616c6c6f77656420746f20776974686472617760681b60648201526084016102cf565b61038981610694565b50565b6000600160025460ff1660028111156103a7576103a7610924565b1492915050565b6103b661063a565b6103c0600061070b565b565b6103ca61063a565b600060025460ff1660028111156103e3576103e3610924565b1461044b5760405162461bcd60e51b815260206004820152603260248201527f526566756e64457363726f773a2063616e206f6e6c7920656e61626c6520726560448201527166756e6473207768696c652061637469766560701b60648201526084016102cf565b6002805460ff191660011790556040517f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8990600090a1565b6002805460ff16600281111561049b5761049b610924565b1461050e5760405162461bcd60e51b815260206004820152603860248201527f526566756e64457363726f773a2062656e65666963696172792063616e206f6e60448201527f6c79207769746864726177207768696c6520636c6f736564000000000000000060648201526084016102cf565b6103c06001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000164761075b565b61054961063a565b6001600160a01b0381166105ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102cf565b6103898161070b565b600060025460ff1660028111156105d0576105d0610924565b146106315760405162461bcd60e51b815260206004820152602b60248201527f526566756e64457363726f773a2063616e206f6e6c79206465706f736974207760448201526a68696c652061637469766560a81b60648201526084016102cf565b61038981610879565b6000546001600160a01b031633146103c05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102cf565b61069c61063a565b6001600160a01b03811660008181526001602052604081208054919055906106c4908261075b565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516106ff91815260200190565b60405180910390a25050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b804710156107ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016102cf565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146107f8576040519150601f19603f3d011682016040523d82523d6000602084013e6107fd565b606091505b50509050806108745760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016102cf565b505050565b61088161063a565b6001600160a01b0381166000908152600160205260408120805434928392916108ab908490610962565b90915550506040518181526001600160a01b038316907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020016106ff565b6001600160a01b038116811461038957600080fd5b60006020828403121561091257600080fd5b813561091d816108eb565b9392505050565b634e487b7160e01b600052602160045260246000fd5b602081016003831061095c57634e487b7160e01b600052602160045260246000fd5b91905290565b6000821982111561098357634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220d99790e641c40ef87f3b35b232f63f0df03ce3576454bb1cd00ad1fa9fc1f9c564736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/introspection/ERC165":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC165","sourceName":"contracts/utils/introspection/ERC165.sol","abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/introspection/ERC165Checker":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC165Checker","sourceName":"contracts/utils/introspection/ERC165Checker.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220117d4739ea209855873e3a69cf4dc77f5649a6e5c941d771dcc0f36cfd51d3a564736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220117d4739ea209855873e3a69cf4dc77f5649a6e5c941d771dcc0f36cfd51d3a564736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/introspection/ERC165Storage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC165Storage","sourceName":"contracts/utils/introspection/ERC165Storage.sol","abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/introspection/ERC1820Implementer":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1820Implementer","sourceName":"contracts/utils/introspection/ERC1820Implementer.sol","abi":[{"inputs":[{"internalType":"bytes32","name":"interfaceHash","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"canImplementInterfaceForAddress","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b50610114806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063249cb3fa14602d575b600080fd5b603c603836600460a4565b604e565b60405190815260200160405180910390f35b6000828152602081815260408083206001600160a01b038516845290915281205460ff16607b576000609d565b7fa2ef4600d742022d532d4747cb3547474667d6f13804902513b2ec01c848f4b45b9392505050565b6000806040838503121560b657600080fd5b8235915060208301356001600160a01b038116811460d357600080fd5b80915050925092905056fea2646970667358221220af9541137737bcae4ca91010bdc12e6ce157547dd38d2d5785066de00fad9b3e64736f6c63430008090033","deployedBytecode":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063249cb3fa14602d575b600080fd5b603c603836600460a4565b604e565b60405190815260200160405180910390f35b6000828152602081815260408083206001600160a01b038516845290915281205460ff16607b576000609d565b7fa2ef4600d742022d532d4747cb3547474667d6f13804902513b2ec01c848f4b45b9392505050565b6000806040838503121560b657600080fd5b8235915060208301356001600160a01b038116811460d357600080fd5b80915050925092905056fea2646970667358221220af9541137737bcae4ca91010bdc12e6ce157547dd38d2d5785066de00fad9b3e64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/introspection/IERC165":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC165","sourceName":"contracts/utils/introspection/IERC165.sol","abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/introspection/IERC1820Implementer":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1820Implementer","sourceName":"contracts/utils/introspection/IERC1820Implementer.sol","abi":[{"inputs":[{"internalType":"bytes32","name":"interfaceHash","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"canImplementInterfaceForAddress","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/introspection/IERC1820Registry":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1820Registry","sourceName":"contracts/utils/introspection/IERC1820Registry.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bytes32","name":"interfaceHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"implementer","type":"address"}],"name":"InterfaceImplementerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"newManager","type":"address"}],"name":"ManagerChanged","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"_interfaceHash","type":"bytes32"}],"name":"getInterfaceImplementer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"implementsERC165Interface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"implementsERC165InterfaceNoCache","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"interfaceName","type":"string"}],"name":"interfaceHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"_interfaceHash","type":"bytes32"},{"internalType":"address","name":"implementer","type":"address"}],"name":"setInterfaceImplementer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"newManager","type":"address"}],"name":"setManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"updateERC165Cache","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/math/Math":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Math","sourceName":"contracts/utils/math/Math.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204a14f751b3f38a82303bdf89fdc12542c5fa1609e4895c7add5c67d1ca79b9c464736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204a14f751b3f38a82303bdf89fdc12542c5fa1609e4895c7add5c67d1ca79b9c464736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/math/SafeCast":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"SafeCast","sourceName":"contracts/utils/math/SafeCast.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a62378d355b38fa0abfa1c077e9c835782285fbd860732d27f2ee38b441a84d464736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a62378d355b38fa0abfa1c077e9c835782285fbd860732d27f2ee38b441a84d464736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/math/SafeMath":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"SafeMath","sourceName":"contracts/utils/math/SafeMath.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209738fa06839ad9c993fda222cd8796d9f4af8ec87c42dc83ad5376e21b184f6764736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209738fa06839ad9c993fda222cd8796d9f4af8ec87c42dc83ad5376e21b184f6764736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/math/SignedMath":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"SignedMath","sourceName":"contracts/utils/math/SignedMath.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206b958077e79d8c0218ea38180129587ea2f5f32e6ccbf5cada96c61f1cda30ae64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206b958077e79d8c0218ea38180129587ea2f5f32e6ccbf5cada96c61f1cda30ae64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/math/SignedSafeMath":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"SignedSafeMath","sourceName":"contracts/utils/math/SignedSafeMath.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220eac28e590fd923710978b0b42c5e6f8cc69e1a2b14089db10aa3a4fa30ae29e564736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220eac28e590fd923710978b0b42c5e6f8cc69e1a2b14089db10aa3a4fa30ae29e564736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Multicall":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Multicall","sourceName":"contracts/utils/Multicall.sol","abi":[{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/StorageSlot":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"StorageSlot","sourceName":"contracts/utils/StorageSlot.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209be81e3312f310746e52a8aef980c20007b986e39ffe78d4a990363c1a83cd2864736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209be81e3312f310746e52a8aef980c20007b986e39ffe78d4a990363c1a83cd2864736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Strings":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Strings","sourceName":"contracts/utils/Strings.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b096dc6b0e37ea9c827520996e336d2f126d85adfc64e5ab59d5969bae525c9864736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b096dc6b0e37ea9c827520996e336d2f126d85adfc64e5ab59d5969bae525c9864736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/structs/BitMaps":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"BitMaps","sourceName":"contracts/utils/structs/BitMaps.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c5ac034d38686d0b67fda2eec38f26b45891cd22ae31d0df027016e4b65cf13a64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c5ac034d38686d0b67fda2eec38f26b45891cd22ae31d0df027016e4b65cf13a64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/structs/DoubleEndedQueue":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"DoubleEndedQueue","sourceName":"contracts/utils/structs/DoubleEndedQueue.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"inputs":[],"name":"OutOfBounds","type":"error"}],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a1f883749a60323cd05a4f6a4b0582f16eb5d58287457ceb8942b07688a344f264736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a1f883749a60323cd05a4f6a4b0582f16eb5d58287457ceb8942b07688a344f264736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/structs/EnumerableMap":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"EnumerableMap","sourceName":"contracts/utils/structs/EnumerableMap.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201e95925852ea21fb1440ea745a714cf6128faf5aeadb3e2298ed42fc376ba86e64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201e95925852ea21fb1440ea745a714cf6128faf5aeadb3e2298ed42fc376ba86e64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/structs/EnumerableSet":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"EnumerableSet","sourceName":"contracts/utils/structs/EnumerableSet.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202a8392941a7271bf335ac2e9721c0be783ed6532ec5fd4db2e0d57622a97964e64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202a8392941a7271bf335ac2e9721c0be783ed6532ec5fd4db2e0d57622a97964e64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Timers":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Timers","sourceName":"contracts/utils/Timers.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122071cad4555d45eedf68405aec2cee18b6803a8196b147c8bde0315e331f76f7da64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122071cad4555d45eedf68405aec2cee18b6803a8196b147c8bde0315e331f76f7da64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/amb/IAMB":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IAMB","sourceName":"contracts/vendor/amb/IAMB.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"executor","type":"address"},{"indexed":true,"internalType":"bytes32","name":"messageId","type":"bytes32"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"AffirmationCompleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"executor","type":"address"},{"indexed":true,"internalType":"bytes32","name":"messageId","type":"bytes32"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"RelayedMessage","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"messageId","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"encodedData","type":"bytes"}],"name":"UserRequestForAffirmation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"messageId","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"encodedData","type":"bytes"}],"name":"UserRequestForSignature","type":"event"},{"inputs":[],"name":"destinationChainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_messageId","type":"bytes32"}],"name":"failedMessageDataHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_messageId","type":"bytes32"}],"name":"failedMessageReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_messageId","type":"bytes32"}],"name":"failedMessageSender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxGasPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_messageId","type":"bytes32"}],"name":"messageCallStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"messageId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"messageSender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"messageSourceChainId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"uint256","name":"_gas","type":"uint256"}],"name":"requireToConfirmMessage","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"uint256","name":"_gas","type":"uint256"}],"name":"requireToPassMessage","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sourceChainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transactionHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/arbitrum/IArbSys":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IArbSys","sourceName":"contracts/vendor/arbitrum/IArbSys.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"destination","type":"address"},{"indexed":true,"internalType":"uint256","name":"uniqueId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"batchNumber","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"indexInBatch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"arbBlockNum","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethBlockNum","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"callvalue","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"L2ToL1Transaction","type":"event"},{"inputs":[],"name":"arbBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"arbChainID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"arbOSVersion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getStorageAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStorageGasAvailable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getTransactionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTopLevelCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"dest","type":"address"}],"name":"mapL1SenderContractAddressToL2Alias","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"myCallersAddressWithoutAliasing","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"calldataForL1","type":"bytes"}],"name":"sendTxToL1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"wasMyCallersAddressAliased","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"destination","type":"address"}],"name":"withdrawEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/arbitrum/IBridge":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IBridge","sourceName":"contracts/vendor/arbitrum/IBridge.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"outbox","type":"address"},{"indexed":true,"internalType":"address","name":"destAddr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"BridgeCallTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"inbox","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"InboxToggle","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"messageIndex","type":"uint256"},{"indexed":true,"internalType":"bytes32","name":"beforeInboxAcc","type":"bytes32"},{"indexed":false,"internalType":"address","name":"inbox","type":"address"},{"indexed":false,"internalType":"uint8","name":"kind","type":"uint8"},{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"bytes32","name":"messageDataHash","type":"bytes32"}],"name":"MessageDelivered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"outbox","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"OutboxToggle","type":"event"},{"inputs":[],"name":"activeOutbox","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"inbox","type":"address"}],"name":"allowedInboxes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"outbox","type":"address"}],"name":"allowedOutboxes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes32","name":"messageDataHash","type":"bytes32"}],"name":"deliverMessageToInbox","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"destAddr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"executeCall","outputs":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"inboxAccs","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"messageCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"inbox","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setInbox","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"inbox","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setOutbox","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/arbitrum/IInbox":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IInbox","sourceName":"contracts/vendor/arbitrum/IInbox.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"messageNum","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"InboxMessageDelivered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"messageNum","type":"uint256"}],"name":"InboxMessageDeliveredFromOrigin","type":"event"},{"inputs":[],"name":"bridge","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"destAddr","type":"address"},{"internalType":"uint256","name":"arbTxCallValue","type":"uint256"},{"internalType":"uint256","name":"maxSubmissionCost","type":"uint256"},{"internalType":"address","name":"submissionRefundAddress","type":"address"},{"internalType":"address","name":"valueRefundAddress","type":"address"},{"internalType":"uint256","name":"maxGas","type":"uint256"},{"internalType":"uint256","name":"gasPriceBid","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"createRetryableTicket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"destAddr","type":"address"},{"internalType":"uint256","name":"arbTxCallValue","type":"uint256"},{"internalType":"uint256","name":"maxSubmissionCost","type":"uint256"},{"internalType":"address","name":"submissionRefundAddress","type":"address"},{"internalType":"address","name":"valueRefundAddress","type":"address"},{"internalType":"uint256","name":"maxGas","type":"uint256"},{"internalType":"uint256","name":"gasPriceBid","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"createRetryableTicketNoRefundAliasRewrite","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxSubmissionCost","type":"uint256"}],"name":"depositEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"pauseCreateRetryables","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxGas","type":"uint256"},{"internalType":"uint256","name":"gasPriceBid","type":"uint256"},{"internalType":"address","name":"destAddr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"sendContractTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxGas","type":"uint256"},{"internalType":"uint256","name":"gasPriceBid","type":"uint256"},{"internalType":"address","name":"destAddr","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"sendL1FundedContractTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxGas","type":"uint256"},{"internalType":"uint256","name":"gasPriceBid","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"address","name":"destAddr","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"sendL1FundedUnsignedTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"messageData","type":"bytes"}],"name":"sendL2Message","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxGas","type":"uint256"},{"internalType":"uint256","name":"gasPriceBid","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"address","name":"destAddr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"sendUnsignedTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startRewriteAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopRewriteAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpauseCreateRetryables","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/arbitrum/IMessageProvider":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IMessageProvider","sourceName":"contracts/vendor/arbitrum/IMessageProvider.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"messageNum","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"InboxMessageDelivered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"messageNum","type":"uint256"}],"name":"InboxMessageDeliveredFromOrigin","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/arbitrum/IOutbox":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IOutbox","sourceName":"contracts/vendor/arbitrum/IOutbox.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"destAddr","type":"address"},{"indexed":true,"internalType":"address","name":"l2Sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"outboxEntryIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"transactionIndex","type":"uint256"}],"name":"OutBoxTransactionExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"batchNum","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"outboxEntryIndex","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"outputRoot","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"numInBatch","type":"uint256"}],"name":"OutboxEntryCreated","type":"event"},{"inputs":[],"name":"l2ToL1BatchNum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l2ToL1Block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l2ToL1EthBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l2ToL1OutputId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l2ToL1Sender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l2ToL1Timestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"batchNum","type":"uint256"}],"name":"outboxEntryExists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"sendsData","type":"bytes"},{"internalType":"uint256[]","name":"sendLengths","type":"uint256[]"}],"name":"processOutgoingMessages","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/compound/ICompoundTimelock":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ICompoundTimelock","sourceName":"contracts/vendor/compound/ICompoundTimelock.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"CancelTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ExecuteTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"}],"name":"NewAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newDelay","type":"uint256"}],"name":"NewDelay","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"NewPendingAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"QueueTransaction","type":"event"},{"inputs":[],"name":"GRACE_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAXIMUM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"cancelTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"delay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"executeTransaction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"queueTransaction","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"queuedTransactions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"setDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"setPendingAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/optimism/ICrossDomainMessenger":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ICrossDomainMessenger","sourceName":"contracts/vendor/optimism/ICrossDomainMessenger.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"msgHash","type":"bytes32"}],"name":"FailedRelayedMessage","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"msgHash","type":"bytes32"}],"name":"RelayedMessage","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"bytes","name":"message","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"messageNonce","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"gasLimit","type":"uint256"}],"name":"SentMessage","type":"event"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"uint32","name":"_gasLimit","type":"uint32"}],"name":"sendMessage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"xDomainMessageSender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/polygon/IFxMessageProcessor":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IFxMessageProcessor","sourceName":"contracts/vendor/polygon/IFxMessageProcessor.sol","abi":[{"inputs":[{"internalType":"uint256","name":"stateId","type":"uint256"},{"internalType":"address","name":"rootMessageSender","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"processMessageFromRoot","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/base/ERC1155Base":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Base","sourceName":"src/token/ERC1155/base/ERC1155Base.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"status","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b5061159f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100715760003560e01c8063a22cb46511610050578063a22cb465146100d1578063e985e9c5146100e4578063f242432a1461014f57600080fd5b8062fdd58e146100765780632eb2c2d61461009c5780634e1273f4146100b1575b600080fd5b610089610084366004610f09565b610162565b6040519081526020015b60405180910390f35b6100af6100aa36600461107f565b610175565b005b6100c46100bf366004611129565b61025e565b604051610093919061122f565b6100af6100df366004611242565b610485565b61013f6100f236600461127e565b6001600160a01b0391821660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a86020908152604080832093909416825291909152205460ff1690565b6040519015158152602001610093565b6100af61015d3660046112b1565b610591565b600061016e838361066d565b9392505050565b336001600160a01b0386168114806101d157506001600160a01b0380871660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a8602090815260408083209385168352929052205460ff165b6102485760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f766564000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610256818787878787610732565b505050505050565b606081518351146102d75760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d617463680000000000000000000000000000000000000000000000606482015260840161023f565b82517ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a79060009067ffffffffffffffff81111561031657610316610f33565b60405190808252806020026020018201604052801561033f578160200160208202803683370190505b50905060005b855181101561047c5760006001600160a01b031686828151811061036b5761036b611316565b60200260200101516001600160a01b0316036103ef5760405162461bcd60e51b815260206004820152603160248201527f455243313135353a2062617463682062616c616e636520717565727920666f7260448201527f20746865207a65726f2061646472657373000000000000000000000000000000606482015260840161023f565b82600086838151811061040457610404611316565b60200260200101518152602001908152602001600020600087838151811061042e5761042e611316565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205482828151811061046957610469611316565b6020908102919091010152600101610345565b50949350505050565b336001600160a01b03831681036105045760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c660000000000000000000000000000000000000000000000606482015260840161023f565b6001600160a01b0381811660008181527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a86020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b336001600160a01b0386168114806105ed57506001600160a01b0380871660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a8602090815260408083209385168352929052205460ff165b61065f5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f7665640000000000000000000000000000000000000000000000606482015260840161023f565b61025681878787878761074e565b60006001600160a01b0383166106eb5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f2061646472657373000000000000000000000000000000000000000000606482015260840161023f565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a76000928352602090815260408084206001600160a01b0395909516845293905250205490565b61074086868686868661076a565b6102568686868686866109fe565b61075c868686868686610bc4565b610256868686868686610d8e565b6001600160a01b0384166107ce5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b606482015260840161023f565b81518351146108455760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d61746368000000000000000000000000000000000000000000000000606482015260840161023f565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a760005b845181101561099d57600085828151811061088657610886611316565b6020026020010151905060008583815181106108a4576108a4611316565b602090810291909101810151600084815286835260408082206001600160a01b038e16835290935291909120549091508181101561094a5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a20696e73756666696369656e742062616c616e636573206660448201527f6f72207472616e73666572000000000000000000000000000000000000000000606482015260840161023f565b6000838152602086815260408083206001600160a01b038e811685529252808320938590039093558a16815290812080546001959095019483929061099090849061132c565b9091555061086992505050565b50846001600160a01b0316866001600160a01b0316886001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516109ed929190611352565b60405180910390a450505050505050565b6001600160a01b0384163b156102565760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190610a4290899089908890889088906004016113cd565b6020604051808303816000875af1925050508015610a7d575060408051601f3d908101601f19168201909252610a7a9181019061142b565b60015b610b3257610a8961146d565b806308c379a003610ac25750610a9d611489565b80610aa85750610ac4565b8060405162461bcd60e51b815260040161023f9190611513565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e746572000000000000000000000000606482015260840161023f565b7fffffffff00000000000000000000000000000000000000000000000000000000811663bc197c8160e01b14610bbb5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b606482015260840161023f565b50505050505050565b6001600160a01b038416610c285760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b606482015260840161023f565b610c47868686610c3787610ea2565b610c4087610ea2565b5050505050565b60008381527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a7602081815260408084206001600160a01b038a1685529091529091205483811015610d005760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a20696e73756666696369656e742062616c616e636573206660448201527f6f72207472616e73666572000000000000000000000000000000000000000000606482015260840161023f565b6000858152602083815260408083206001600160a01b038b81168552925280832093879003909355871681529081208054859290610d3f90849061132c565b909155505060408051858152602081018590526001600160a01b038088169289821692918b16917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6291016109ed565b6001600160a01b0384163b156102565760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610dd29089908990889088908890600401611526565b6020604051808303816000875af1925050508015610e0d575060408051601f3d908101601f19168201909252610e0a9181019061142b565b60015b610e1957610a8961146d565b7fffffffff00000000000000000000000000000000000000000000000000000000811663f23a6e6160e01b14610bbb5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b606482015260840161023f565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610edc57610edc611316565b602090810291909101015292915050565b80356001600160a01b0381168114610f0457600080fd5b919050565b60008060408385031215610f1c57600080fd5b610f2583610eed565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715610f6f57610f6f610f33565b6040525050565b600067ffffffffffffffff821115610f9057610f90610f33565b5060051b60200190565b600082601f830112610fab57600080fd5b81356020610fb882610f76565b604051610fc58282610f49565b83815260059390931b8501820192828101915086841115610fe557600080fd5b8286015b848110156110005780358352918301918301610fe9565b509695505050505050565b600082601f83011261101c57600080fd5b813567ffffffffffffffff81111561103657611036610f33565b60405161104d601f8301601f191660200182610f49565b81815284602083860101111561106257600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561109757600080fd5b6110a086610eed565b94506110ae60208701610eed565b9350604086013567ffffffffffffffff808211156110cb57600080fd5b6110d789838a01610f9a565b945060608801359150808211156110ed57600080fd5b6110f989838a01610f9a565b9350608088013591508082111561110f57600080fd5b5061111c8882890161100b565b9150509295509295909350565b6000806040838503121561113c57600080fd5b823567ffffffffffffffff8082111561115457600080fd5b818501915085601f83011261116857600080fd5b8135602061117582610f76565b6040516111828282610f49565b83815260059390931b85018201928281019150898411156111a257600080fd5b948201945b838610156111c7576111b886610eed565b825294820194908201906111a7565b965050860135925050808211156111dd57600080fd5b506111ea85828601610f9a565b9150509250929050565b600081518084526020808501945080840160005b8381101561122457815187529582019590820190600101611208565b509495945050505050565b60208152600061016e60208301846111f4565b6000806040838503121561125557600080fd5b61125e83610eed565b91506020830135801515811461127357600080fd5b809150509250929050565b6000806040838503121561129157600080fd5b61129a83610eed565b91506112a860208401610eed565b90509250929050565b600080600080600060a086880312156112c957600080fd5b6112d286610eed565b94506112e060208701610eed565b93506040860135925060608601359150608086013567ffffffffffffffff81111561130a57600080fd5b61111c8882890161100b565b634e487b7160e01b600052603260045260246000fd5b6000821982111561134d57634e487b7160e01b600052601160045260246000fd5b500190565b60408152600061136560408301856111f4565b828103602084015261137781856111f4565b95945050505050565b6000815180845260005b818110156113a65760208185018101518683018201520161138a565b818111156113b8576000602083870101525b50601f01601f19169290920160200192915050565b60006001600160a01b03808816835280871660208401525060a060408301526113f960a08301866111f4565b828103606084015261140b81866111f4565b9050828103608084015261141f8185611380565b98975050505050505050565b60006020828403121561143d57600080fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811461016e57600080fd5b600060033d11156114865760046000803e5060005160e01c5b90565b600060443d10156114975790565b6040516003193d81016004833e81513d67ffffffffffffffff81602484011181841117156114c757505050505090565b82850191508151818111156114df5750505050505090565b843d87010160208285010111156114f95750505050505090565b61150860208286010187610f49565b509095945050505050565b60208152600061016e6020830184611380565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261155e60a0830184611380565b97965050505050505056fea2646970667358221220cc571873fdfa4a7c2b5407e3b7c3befb00e00894fbf16c2dd0e022863f05454464736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100715760003560e01c8063a22cb46511610050578063a22cb465146100d1578063e985e9c5146100e4578063f242432a1461014f57600080fd5b8062fdd58e146100765780632eb2c2d61461009c5780634e1273f4146100b1575b600080fd5b610089610084366004610f09565b610162565b6040519081526020015b60405180910390f35b6100af6100aa36600461107f565b610175565b005b6100c46100bf366004611129565b61025e565b604051610093919061122f565b6100af6100df366004611242565b610485565b61013f6100f236600461127e565b6001600160a01b0391821660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a86020908152604080832093909416825291909152205460ff1690565b6040519015158152602001610093565b6100af61015d3660046112b1565b610591565b600061016e838361066d565b9392505050565b336001600160a01b0386168114806101d157506001600160a01b0380871660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a8602090815260408083209385168352929052205460ff165b6102485760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f766564000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610256818787878787610732565b505050505050565b606081518351146102d75760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d617463680000000000000000000000000000000000000000000000606482015260840161023f565b82517ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a79060009067ffffffffffffffff81111561031657610316610f33565b60405190808252806020026020018201604052801561033f578160200160208202803683370190505b50905060005b855181101561047c5760006001600160a01b031686828151811061036b5761036b611316565b60200260200101516001600160a01b0316036103ef5760405162461bcd60e51b815260206004820152603160248201527f455243313135353a2062617463682062616c616e636520717565727920666f7260448201527f20746865207a65726f2061646472657373000000000000000000000000000000606482015260840161023f565b82600086838151811061040457610404611316565b60200260200101518152602001908152602001600020600087838151811061042e5761042e611316565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205482828151811061046957610469611316565b6020908102919091010152600101610345565b50949350505050565b336001600160a01b03831681036105045760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c660000000000000000000000000000000000000000000000606482015260840161023f565b6001600160a01b0381811660008181527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a86020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b336001600160a01b0386168114806105ed57506001600160a01b0380871660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a8602090815260408083209385168352929052205460ff165b61065f5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f7665640000000000000000000000000000000000000000000000606482015260840161023f565b61025681878787878761074e565b60006001600160a01b0383166106eb5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f2061646472657373000000000000000000000000000000000000000000606482015260840161023f565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a76000928352602090815260408084206001600160a01b0395909516845293905250205490565b61074086868686868661076a565b6102568686868686866109fe565b61075c868686868686610bc4565b610256868686868686610d8e565b6001600160a01b0384166107ce5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b606482015260840161023f565b81518351146108455760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d61746368000000000000000000000000000000000000000000000000606482015260840161023f565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a760005b845181101561099d57600085828151811061088657610886611316565b6020026020010151905060008583815181106108a4576108a4611316565b602090810291909101810151600084815286835260408082206001600160a01b038e16835290935291909120549091508181101561094a5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a20696e73756666696369656e742062616c616e636573206660448201527f6f72207472616e73666572000000000000000000000000000000000000000000606482015260840161023f565b6000838152602086815260408083206001600160a01b038e811685529252808320938590039093558a16815290812080546001959095019483929061099090849061132c565b9091555061086992505050565b50846001600160a01b0316866001600160a01b0316886001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516109ed929190611352565b60405180910390a450505050505050565b6001600160a01b0384163b156102565760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190610a4290899089908890889088906004016113cd565b6020604051808303816000875af1925050508015610a7d575060408051601f3d908101601f19168201909252610a7a9181019061142b565b60015b610b3257610a8961146d565b806308c379a003610ac25750610a9d611489565b80610aa85750610ac4565b8060405162461bcd60e51b815260040161023f9190611513565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e746572000000000000000000000000606482015260840161023f565b7fffffffff00000000000000000000000000000000000000000000000000000000811663bc197c8160e01b14610bbb5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b606482015260840161023f565b50505050505050565b6001600160a01b038416610c285760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b606482015260840161023f565b610c47868686610c3787610ea2565b610c4087610ea2565b5050505050565b60008381527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a7602081815260408084206001600160a01b038a1685529091529091205483811015610d005760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a20696e73756666696369656e742062616c616e636573206660448201527f6f72207472616e73666572000000000000000000000000000000000000000000606482015260840161023f565b6000858152602083815260408083206001600160a01b038b81168552925280832093879003909355871681529081208054859290610d3f90849061132c565b909155505060408051858152602081018590526001600160a01b038088169289821692918b16917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6291016109ed565b6001600160a01b0384163b156102565760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610dd29089908990889088908890600401611526565b6020604051808303816000875af1925050508015610e0d575060408051601f3d908101601f19168201909252610e0a9181019061142b565b60015b610e1957610a8961146d565b7fffffffff00000000000000000000000000000000000000000000000000000000811663f23a6e6160e01b14610bbb5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b606482015260840161023f565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610edc57610edc611316565b602090810291909101015292915050565b80356001600160a01b0381168114610f0457600080fd5b919050565b60008060408385031215610f1c57600080fd5b610f2583610eed565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715610f6f57610f6f610f33565b6040525050565b600067ffffffffffffffff821115610f9057610f90610f33565b5060051b60200190565b600082601f830112610fab57600080fd5b81356020610fb882610f76565b604051610fc58282610f49565b83815260059390931b8501820192828101915086841115610fe557600080fd5b8286015b848110156110005780358352918301918301610fe9565b509695505050505050565b600082601f83011261101c57600080fd5b813567ffffffffffffffff81111561103657611036610f33565b60405161104d601f8301601f191660200182610f49565b81815284602083860101111561106257600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561109757600080fd5b6110a086610eed565b94506110ae60208701610eed565b9350604086013567ffffffffffffffff808211156110cb57600080fd5b6110d789838a01610f9a565b945060608801359150808211156110ed57600080fd5b6110f989838a01610f9a565b9350608088013591508082111561110f57600080fd5b5061111c8882890161100b565b9150509295509295909350565b6000806040838503121561113c57600080fd5b823567ffffffffffffffff8082111561115457600080fd5b818501915085601f83011261116857600080fd5b8135602061117582610f76565b6040516111828282610f49565b83815260059390931b85018201928281019150898411156111a257600080fd5b948201945b838610156111c7576111b886610eed565b825294820194908201906111a7565b965050860135925050808211156111dd57600080fd5b506111ea85828601610f9a565b9150509250929050565b600081518084526020808501945080840160005b8381101561122457815187529582019590820190600101611208565b509495945050505050565b60208152600061016e60208301846111f4565b6000806040838503121561125557600080fd5b61125e83610eed565b91506020830135801515811461127357600080fd5b809150509250929050565b6000806040838503121561129157600080fd5b61129a83610eed565b91506112a860208401610eed565b90509250929050565b600080600080600060a086880312156112c957600080fd5b6112d286610eed565b94506112e060208701610eed565b93506040860135925060608601359150608086013567ffffffffffffffff81111561130a57600080fd5b61111c8882890161100b565b634e487b7160e01b600052603260045260246000fd5b6000821982111561134d57634e487b7160e01b600052601160045260246000fd5b500190565b60408152600061136560408301856111f4565b828103602084015261137781856111f4565b95945050505050565b6000815180845260005b818110156113a65760208185018101518683018201520161138a565b818111156113b8576000602083870101525b50601f01601f19169290920160200192915050565b60006001600160a01b03808816835280871660208401525060a060408301526113f960a08301866111f4565b828103606084015261140b81866111f4565b9050828103608084015261141f8185611380565b98975050505050505050565b60006020828403121561143d57600080fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811461016e57600080fd5b600060033d11156114865760046000803e5060005160e01c5b90565b600060443d10156114975790565b6040516003193d81016004833e81513d67ffffffffffffffff81602484011181841117156114c757505050505090565b82850191508151818111156114df5750505050505090565b843d87010160208285010111156114f95750505050505090565b61150860208286010187610f49565b509095945050505050565b60208152600061016e6020830184611380565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261155e60a0830184611380565b97965050505050505056fea2646970667358221220cc571873fdfa4a7c2b5407e3b7c3befb00e00894fbf16c2dd0e022863f05454464736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/base/ERC1155BaseERC2771":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155BaseERC2771","sourceName":"src/token/ERC1155/base/ERC1155BaseERC2771.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"status","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/base/ERC1155BaseInternal":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155BaseInternal","sourceName":"src/token/ERC1155/base/ERC1155BaseInternal.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/base/ERC1155BaseStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155BaseStorage","sourceName":"src/token/ERC1155/base/ERC1155BaseStorage.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b7938f76d33a3b85f4b5e1ddb1214c9d0b4968182155794a13d2efaf5d10b77d64736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b7938f76d33a3b85f4b5e1ddb1214c9d0b4968182155794a13d2efaf5d10b77d64736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/ERC1155":{"address":{"3":"0x1FAaCD621bd3B14F3494Be13c7Cf85334EC3F492","4":"0x724C344e5a9e01997D542F99ef0D2f7B419819de","rinkeby":"0x724C344e5a9e01997D542F99ef0D2f7B419819de","ropsten":"0x1FAaCD621bd3B14F3494Be13c7Cf85334EC3F492"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155","sourceName":"src/token/ERC1155/ERC1155.sol","abi":[{"inputs":[],"name":"SenderIsNotSelf","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"burnBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"burnBatchByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnablePausedUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"lockByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"locked","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"locked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mintByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"status","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unlockByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b5061284a806100206000396000f3fe608060405234801561001057600080fd5b50600436106101505760003560e01c8063869f7594116100cd578063bd85b03911610081578063e985e9c511610066578063e985e9c5146102cb578063f242432a14610326578063f5298aca1461033957600080fd5b8063bd85b039146102a5578063bf7bab73146102b857600080fd5b8063a22cb465116100b2578063a22cb4651461026c578063a91a988a1461027f578063b164884b1461029257600080fd5b8063869f759414610246578063983da1561461025957600080fd5b806348f2f536116101245780634f558e79116101095780634f558e79146101fd5780636708a990146102205780636b20c4541461023357600080fd5b806348f2f536146101ca5780634e1273f4146101dd57600080fd5b8062fdd58e146101555780630ad2bbac1461017b57806314e35aa4146101905780632eb2c2d6146101b7575b600080fd5b610168610163366004611fc4565b61034c565b6040519081526020015b60405180910390f35b61018e6101893660046120c6565b61035f565b005b7f20cb9ad5a22f74f90c7fecbece6b6ab3beb2a63812efb8693c5ff39f2b73ee0f54610168565b61018e6101c53660046121ae565b61038f565b61018e6101d8366004612258565b610464565b6101f06101eb36600461228b565b61048f565b6040516101729190612391565b61021061020b3660046123a4565b6106b6565b6040519015158152602001610172565b61018e61022e366004612258565b6106ed565b61018e6102413660046120c6565b610718565b6101686102543660046123a4565b6107ff565b61018e610267366004612258565b610832565b61018e61027a3660046123ce565b61085d565b6101f061028d366004612405565b610969565b61018e6102a036600461248b565b610a50565b6101686102b33660046123a4565b610a82565b6101686102c6366004611fc4565b610ab5565b6102106102d93660046124ec565b6001600160a01b0391821660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a86020908152604080832093909416825291909152205460ff1690565b61018e61033436600461251f565b610afd565b61018e610347366004612258565b610bc5565b60006103588383610cac565b9392505050565b30331461037f576040516328be0e2160e21b815260040160405180910390fd5b61038a838383610d71565b505050565b336001600160a01b0386168114806103eb57506001600160a01b0380871660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a8602090815260408083209385168352929052205460ff165b61044e5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b60648201526084015b60405180910390fd5b61045c818787878787610fe8565b505050505050565b303314610484576040516328be0e2160e21b815260040160405180910390fd5b61038a838383611004565b606081518351146105085760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610445565b82517ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a79060009067ffffffffffffffff81111561054757610547611fee565b604051908082528060200260200182016040528015610570578160200160208202803683370190505b50905060005b85518110156106ad5760006001600160a01b031686828151811061059c5761059c612584565b60200260200101516001600160a01b0316036106205760405162461bcd60e51b815260206004820152603160248201527f455243313135353a2062617463682062616c616e636520717565727920666f7260448201527f20746865207a65726f20616464726573730000000000000000000000000000006064820152608401610445565b82600086838151811061063557610635612584565b60200260200101518152602001908152602001600020600087838151811061065f5761065f612584565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205482828151811061069a5761069a612584565b6020908102919091010152600101610576565b50949350505050565b60008181527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea5602052604081205415155b92915050565b30331461070d576040516328be0e2160e21b815260040160405180910390fd5b61038a83838361118d565b6001600160a01b0383163314806107a157503063e985e9c584336040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561077d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a1919061259a565b61037f5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610445565b60008181527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea660205260408120546106e7565b303314610852576040516328be0e2160e21b815260040160405180910390fd5b61038a83838361124a565b336001600160a01b03831681036108dc5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610445565b6001600160a01b0381811660008181527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a86020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b606060008267ffffffffffffffff81111561098657610986611fee565b6040519080825280602002602001820160405280156109af578160200160208202803683370190505b50905060005b838110156106ad57610a21868686848181106109d3576109d3612584565b905060200201356001600160a01b039190911660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b28752782060209081526040808320938352929052205490565b828281518110610a3357610a33612584565b602090810291909101015280610a48816125cd565b9150506109b5565b303314610a70576040516328be0e2160e21b815260040160405180910390fd5b610a7c84848484611311565b50505050565b60008181527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea560205260408120546106e7565b6001600160a01b03821660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b28752782060209081526040808320848452909152812054610358565b336001600160a01b038616811480610b5957506001600160a01b0380871660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a8602090815260408083209385168352929052205460ff165b610bb75760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610445565b61045c81878787878761144c565b6001600160a01b038316331480610c4e57503063e985e9c584336040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061259a565b6104845760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610445565b60006001600160a01b038316610d2a5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f20616464726573730000000000000000000000000000000000000000006064820152608401610445565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a76000928352602090815260408084206001600160a01b0395909516845293905250205490565b6001600160a01b038316610dd35760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610445565b8051825114610e355760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610445565b6000339050610e5881856000868660405180602001604052806000815250611468565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a760005b8451811015610f88576000858281518110610e9957610e99612584565b60200260200101519050848281518110610eb557610eb5612584565b602090810291909101810151600083815285835260408082206001600160a01b038c16835290935291909120541015610f3c5760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610445565b848281518110610f4e57610f4e612584565b602090810291909101810151600092835284825260408084206001600160a01b038b16855290925291208054919091039055600101610e7c565b5060006001600160a01b0316856001600160a01b0316836001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610fd99291906125e6565b60405180910390a45050505050565b610ff6868686868686611476565b61045c868686868686611703565b6001600160a01b0383166110665760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610445565b3361109581856000611077876118b1565b611080876118b1565b60405180602001604052806000815250611468565b60008381527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a7602090815260408083206001600160a01b038816845291829052909120548311156111345760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610445565b6001600160a01b0385811660008181526020848152604080832080548990039055805189815291820188905291938616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629101610fd9565b6001600160a01b03831660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b2875278206020908152604080832085845291829052909120548211156112215760405162461bcd60e51b815260206004820152601160248201527f4e4f545f454e4f5547485f4c4f434b45440000000000000000000000000000006044820152606401610445565b6000838152602082905260408120805484929061123f908490612614565b909155505050505050565b6001600160a01b03831660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b287527820602090815260408083208584529182905290912054829061129b8686610cac565b6112a59190612614565b10156112f35760405162461bcd60e51b815260206004820152601260248201527f4e4f545f454e4f5547485f42414c414e434500000000000000000000000000006044820152606401610445565b6000838152602082905260408120805484929061123f90849061262b565b336001600160a01b03851661138e5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610445565b6113ad8160008761139e886118b1565b6113a7886118b1565b87611468565b60008481527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a7602090815260408083206001600160a01b0389168452909152812080548592906113fe90849061262b565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629101610fd9565b61145a8686868686866118fc565b61045c868686868686611ac5565b61045c868686868686611bc1565b6001600160a01b0384166114da5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610445565b815183511461153c5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610445565b61154a868686868686611468565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a760005b84518110156116a257600085828151811061158b5761158b612584565b6020026020010151905060008583815181106115a9576115a9612584565b602090810291909101810151600084815286835260408082206001600160a01b038e16835290935291909120549091508181101561164f5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a20696e73756666696369656e742062616c616e636573206660448201527f6f72207472616e736665720000000000000000000000000000000000000000006064820152608401610445565b6000838152602086815260408083206001600160a01b038e811685529252808320938590039093558a16815290812080546001959095019483929061169590849061262b565b9091555061156e92505050565b50846001600160a01b0316866001600160a01b0316886001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516116f29291906125e6565b60405180910390a450505050505050565b6001600160a01b0384163b1561045c5760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906117479089908990889088908890600401612690565b6020604051808303816000875af1925050508015611782575060408051601f3d908101601f1916820190925261177f918101906126ee565b60015b6118375761178e612718565b806308c379a0036117c757506117a2612734565b806117ad57506117c9565b8060405162461bcd60e51b815260040161044591906127be565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610445565b6001600160e01b0319811663bc197c8160e01b146118a85760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610445565b50505050505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106118eb576118eb612584565b602090810291909101015292915050565b6001600160a01b0384166119605760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610445565b61197e86868661196f876118b1565b611978876118b1565b86611468565b60008381527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a7602081815260408084206001600160a01b038a1685529091529091205483811015611a375760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a20696e73756666696369656e742062616c616e636573206660448201527f6f72207472616e736665720000000000000000000000000000000000000000006064820152608401610445565b6000858152602083815260408083206001600160a01b038b81168552925280832093879003909355871681529081208054859290611a7690849061262b565b909155505060408051858152602081018590526001600160a01b038088169289821692918b16917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6291016116f2565b6001600160a01b0384163b1561045c5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611b0990899089908890889088906004016127d1565b6020604051808303816000875af1925050508015611b44575060408051601f3d908101601f19168201909252611b41918101906126ee565b60015b611b505761178e612718565b6001600160e01b0319811663f23a6e6160e01b146118a85760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610445565b6001600160a01b03851615611cfd5760005b8351811015611cfb57828181518110611bee57611bee612584565b6020026020010151611c1d7f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b28752782090565b6000016000886001600160a01b03166001600160a01b031681526020019081526020016000206000868481518110611c5757611c57612584565b6020026020010151815260200190815260200160002054611c9188878581518110611c8457611c84612584565b6020026020010151610cac565b611c9b9190612614565b1015611ce95760405162461bcd60e51b815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610445565b80611cf3816125cd565b915050611bd3565b505b61045c8686868686866001600160a01b038516611e77577f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea57f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea660005b8551811015611e7357848181518110611d7457611d74612584565b6020026020010151836000888481518110611d9157611d91612584565b602002602001015181526020019081526020016000206000828254611db6919061262b565b92505081905550816000878381518110611dd257611dd2612584565b6020026020010151815260200190815260200160002054836000888481518110611dfe57611dfe612584565b60200260200101518152602001908152602001600020541115611e635760405162461bcd60e51b815260206004820152601160248201527f535550504c595f4558434545445f4d41580000000000000000000000000000006044820152606401610445565b611e6c816125cd565b9050611d59565b5050505b6001600160a01b03841661045c577f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea560005b8451811015611f9e576000858281518110611ec657611ec6612584565b602002602001015190506000858381518110611ee457611ee4612584565b60200260200101519050600084600084815260200190815260200160002054905081811015611f7b5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a206275726e20616d6f756e74206578636565647320746f7460448201527f616c537570706c790000000000000000000000000000000000000000000000006064820152608401610445565b60009283526020859052604090922091039055611f97816125cd565b9050611ea9565b5050505050505050565b80356001600160a01b0381168114611fbf57600080fd5b919050565b60008060408385031215611fd757600080fd5b611fe083611fa8565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff8111828210171561202a5761202a611fee565b6040525050565b600067ffffffffffffffff82111561204b5761204b611fee565b5060051b60200190565b600082601f83011261206657600080fd5b8135602061207382612031565b6040516120808282612004565b83815260059390931b85018201928281019150868411156120a057600080fd5b8286015b848110156120bb57803583529183019183016120a4565b509695505050505050565b6000806000606084860312156120db57600080fd5b6120e484611fa8565b9250602084013567ffffffffffffffff8082111561210157600080fd5b61210d87838801612055565b9350604086013591508082111561212357600080fd5b5061213086828701612055565b9150509250925092565b600082601f83011261214b57600080fd5b813567ffffffffffffffff81111561216557612165611fee565b60405161217c601f8301601f191660200182612004565b81815284602083860101111561219157600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156121c657600080fd5b6121cf86611fa8565b94506121dd60208701611fa8565b9350604086013567ffffffffffffffff808211156121fa57600080fd5b61220689838a01612055565b9450606088013591508082111561221c57600080fd5b61222889838a01612055565b9350608088013591508082111561223e57600080fd5b5061224b8882890161213a565b9150509295509295909350565b60008060006060848603121561226d57600080fd5b61227684611fa8565b95602085013595506040909401359392505050565b6000806040838503121561229e57600080fd5b823567ffffffffffffffff808211156122b657600080fd5b818501915085601f8301126122ca57600080fd5b813560206122d782612031565b6040516122e48282612004565b83815260059390931b850182019282810191508984111561230457600080fd5b948201945b838610156123295761231a86611fa8565b82529482019490820190612309565b9650508601359250508082111561233f57600080fd5b5061234c85828601612055565b9150509250929050565b600081518084526020808501945080840160005b838110156123865781518752958201959082019060010161236a565b509495945050505050565b6020815260006103586020830184612356565b6000602082840312156123b657600080fd5b5035919050565b80151581146123cb57600080fd5b50565b600080604083850312156123e157600080fd5b6123ea83611fa8565b915060208301356123fa816123bd565b809150509250929050565b60008060006040848603121561241a57600080fd5b61242384611fa8565b9250602084013567ffffffffffffffff8082111561244057600080fd5b818601915086601f83011261245457600080fd5b81358181111561246357600080fd5b8760208260051b850101111561247857600080fd5b6020830194508093505050509250925092565b600080600080608085870312156124a157600080fd5b6124aa85611fa8565b93506020850135925060408501359150606085013567ffffffffffffffff8111156124d457600080fd5b6124e08782880161213a565b91505092959194509250565b600080604083850312156124ff57600080fd5b61250883611fa8565b915061251660208401611fa8565b90509250929050565b600080600080600060a0868803121561253757600080fd5b61254086611fa8565b945061254e60208701611fa8565b93506040860135925060608601359150608086013567ffffffffffffffff81111561257857600080fd5b61224b8882890161213a565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156125ac57600080fd5b8151610358816123bd565b634e487b7160e01b600052601160045260246000fd5b6000600182016125df576125df6125b7565b5060010190565b6040815260006125f96040830185612356565b828103602084015261260b8185612356565b95945050505050565b600082821015612626576126266125b7565b500390565b6000821982111561263e5761263e6125b7565b500190565b6000815180845260005b818110156126695760208185018101518683018201520161264d565b8181111561267b576000602083870101525b50601f01601f19169290920160200192915050565b60006001600160a01b03808816835280871660208401525060a060408301526126bc60a0830186612356565b82810360608401526126ce8186612356565b905082810360808401526126e28185612643565b98975050505050505050565b60006020828403121561270057600080fd5b81516001600160e01b03198116811461035857600080fd5b600060033d11156127315760046000803e5060005160e01c5b90565b600060443d10156127425790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561277257505050505090565b828501915081518181111561278a5750505050505090565b843d87010160208285010111156127a45750505050505090565b6127b360208286010187612004565b509095945050505050565b6020815260006103586020830184612643565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261280960a0830184612643565b97965050505050505056fea26469706673582212207983b28828c0e1640ce0b6bb49d9ac007fa3d4e53a9e2336dc6287fe55a2dddb64736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101505760003560e01c8063869f7594116100cd578063bd85b03911610081578063e985e9c511610066578063e985e9c5146102cb578063f242432a14610326578063f5298aca1461033957600080fd5b8063bd85b039146102a5578063bf7bab73146102b857600080fd5b8063a22cb465116100b2578063a22cb4651461026c578063a91a988a1461027f578063b164884b1461029257600080fd5b8063869f759414610246578063983da1561461025957600080fd5b806348f2f536116101245780634f558e79116101095780634f558e79146101fd5780636708a990146102205780636b20c4541461023357600080fd5b806348f2f536146101ca5780634e1273f4146101dd57600080fd5b8062fdd58e146101555780630ad2bbac1461017b57806314e35aa4146101905780632eb2c2d6146101b7575b600080fd5b610168610163366004611fc4565b61034c565b6040519081526020015b60405180910390f35b61018e6101893660046120c6565b61035f565b005b7f20cb9ad5a22f74f90c7fecbece6b6ab3beb2a63812efb8693c5ff39f2b73ee0f54610168565b61018e6101c53660046121ae565b61038f565b61018e6101d8366004612258565b610464565b6101f06101eb36600461228b565b61048f565b6040516101729190612391565b61021061020b3660046123a4565b6106b6565b6040519015158152602001610172565b61018e61022e366004612258565b6106ed565b61018e6102413660046120c6565b610718565b6101686102543660046123a4565b6107ff565b61018e610267366004612258565b610832565b61018e61027a3660046123ce565b61085d565b6101f061028d366004612405565b610969565b61018e6102a036600461248b565b610a50565b6101686102b33660046123a4565b610a82565b6101686102c6366004611fc4565b610ab5565b6102106102d93660046124ec565b6001600160a01b0391821660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a86020908152604080832093909416825291909152205460ff1690565b61018e61033436600461251f565b610afd565b61018e610347366004612258565b610bc5565b60006103588383610cac565b9392505050565b30331461037f576040516328be0e2160e21b815260040160405180910390fd5b61038a838383610d71565b505050565b336001600160a01b0386168114806103eb57506001600160a01b0380871660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a8602090815260408083209385168352929052205460ff165b61044e5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b60648201526084015b60405180910390fd5b61045c818787878787610fe8565b505050505050565b303314610484576040516328be0e2160e21b815260040160405180910390fd5b61038a838383611004565b606081518351146105085760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610445565b82517ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a79060009067ffffffffffffffff81111561054757610547611fee565b604051908082528060200260200182016040528015610570578160200160208202803683370190505b50905060005b85518110156106ad5760006001600160a01b031686828151811061059c5761059c612584565b60200260200101516001600160a01b0316036106205760405162461bcd60e51b815260206004820152603160248201527f455243313135353a2062617463682062616c616e636520717565727920666f7260448201527f20746865207a65726f20616464726573730000000000000000000000000000006064820152608401610445565b82600086838151811061063557610635612584565b60200260200101518152602001908152602001600020600087838151811061065f5761065f612584565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205482828151811061069a5761069a612584565b6020908102919091010152600101610576565b50949350505050565b60008181527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea5602052604081205415155b92915050565b30331461070d576040516328be0e2160e21b815260040160405180910390fd5b61038a83838361118d565b6001600160a01b0383163314806107a157503063e985e9c584336040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561077d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a1919061259a565b61037f5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610445565b60008181527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea660205260408120546106e7565b303314610852576040516328be0e2160e21b815260040160405180910390fd5b61038a83838361124a565b336001600160a01b03831681036108dc5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610445565b6001600160a01b0381811660008181527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a86020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b606060008267ffffffffffffffff81111561098657610986611fee565b6040519080825280602002602001820160405280156109af578160200160208202803683370190505b50905060005b838110156106ad57610a21868686848181106109d3576109d3612584565b905060200201356001600160a01b039190911660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b28752782060209081526040808320938352929052205490565b828281518110610a3357610a33612584565b602090810291909101015280610a48816125cd565b9150506109b5565b303314610a70576040516328be0e2160e21b815260040160405180910390fd5b610a7c84848484611311565b50505050565b60008181527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea560205260408120546106e7565b6001600160a01b03821660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b28752782060209081526040808320848452909152812054610358565b336001600160a01b038616811480610b5957506001600160a01b0380871660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a8602090815260408083209385168352929052205460ff165b610bb75760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610445565b61045c81878787878761144c565b6001600160a01b038316331480610c4e57503063e985e9c584336040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061259a565b6104845760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610445565b60006001600160a01b038316610d2a5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f20616464726573730000000000000000000000000000000000000000006064820152608401610445565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a76000928352602090815260408084206001600160a01b0395909516845293905250205490565b6001600160a01b038316610dd35760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610445565b8051825114610e355760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610445565b6000339050610e5881856000868660405180602001604052806000815250611468565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a760005b8451811015610f88576000858281518110610e9957610e99612584565b60200260200101519050848281518110610eb557610eb5612584565b602090810291909101810151600083815285835260408082206001600160a01b038c16835290935291909120541015610f3c5760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610445565b848281518110610f4e57610f4e612584565b602090810291909101810151600092835284825260408084206001600160a01b038b16855290925291208054919091039055600101610e7c565b5060006001600160a01b0316856001600160a01b0316836001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610fd99291906125e6565b60405180910390a45050505050565b610ff6868686868686611476565b61045c868686868686611703565b6001600160a01b0383166110665760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610445565b3361109581856000611077876118b1565b611080876118b1565b60405180602001604052806000815250611468565b60008381527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a7602090815260408083206001600160a01b038816845291829052909120548311156111345760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610445565b6001600160a01b0385811660008181526020848152604080832080548990039055805189815291820188905291938616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629101610fd9565b6001600160a01b03831660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b2875278206020908152604080832085845291829052909120548211156112215760405162461bcd60e51b815260206004820152601160248201527f4e4f545f454e4f5547485f4c4f434b45440000000000000000000000000000006044820152606401610445565b6000838152602082905260408120805484929061123f908490612614565b909155505050505050565b6001600160a01b03831660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b287527820602090815260408083208584529182905290912054829061129b8686610cac565b6112a59190612614565b10156112f35760405162461bcd60e51b815260206004820152601260248201527f4e4f545f454e4f5547485f42414c414e434500000000000000000000000000006044820152606401610445565b6000838152602082905260408120805484929061123f90849061262b565b336001600160a01b03851661138e5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610445565b6113ad8160008761139e886118b1565b6113a7886118b1565b87611468565b60008481527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a7602090815260408083206001600160a01b0389168452909152812080548592906113fe90849061262b565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629101610fd9565b61145a8686868686866118fc565b61045c868686868686611ac5565b61045c868686868686611bc1565b6001600160a01b0384166114da5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610445565b815183511461153c5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610445565b61154a868686868686611468565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a760005b84518110156116a257600085828151811061158b5761158b612584565b6020026020010151905060008583815181106115a9576115a9612584565b602090810291909101810151600084815286835260408082206001600160a01b038e16835290935291909120549091508181101561164f5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a20696e73756666696369656e742062616c616e636573206660448201527f6f72207472616e736665720000000000000000000000000000000000000000006064820152608401610445565b6000838152602086815260408083206001600160a01b038e811685529252808320938590039093558a16815290812080546001959095019483929061169590849061262b565b9091555061156e92505050565b50846001600160a01b0316866001600160a01b0316886001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516116f29291906125e6565b60405180910390a450505050505050565b6001600160a01b0384163b1561045c5760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906117479089908990889088908890600401612690565b6020604051808303816000875af1925050508015611782575060408051601f3d908101601f1916820190925261177f918101906126ee565b60015b6118375761178e612718565b806308c379a0036117c757506117a2612734565b806117ad57506117c9565b8060405162461bcd60e51b815260040161044591906127be565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610445565b6001600160e01b0319811663bc197c8160e01b146118a85760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610445565b50505050505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106118eb576118eb612584565b602090810291909101015292915050565b6001600160a01b0384166119605760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610445565b61197e86868661196f876118b1565b611978876118b1565b86611468565b60008381527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a7602081815260408084206001600160a01b038a1685529091529091205483811015611a375760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a20696e73756666696369656e742062616c616e636573206660448201527f6f72207472616e736665720000000000000000000000000000000000000000006064820152608401610445565b6000858152602083815260408083206001600160a01b038b81168552925280832093879003909355871681529081208054859290611a7690849061262b565b909155505060408051858152602081018590526001600160a01b038088169289821692918b16917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6291016116f2565b6001600160a01b0384163b1561045c5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611b0990899089908890889088906004016127d1565b6020604051808303816000875af1925050508015611b44575060408051601f3d908101601f19168201909252611b41918101906126ee565b60015b611b505761178e612718565b6001600160e01b0319811663f23a6e6160e01b146118a85760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610445565b6001600160a01b03851615611cfd5760005b8351811015611cfb57828181518110611bee57611bee612584565b6020026020010151611c1d7f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b28752782090565b6000016000886001600160a01b03166001600160a01b031681526020019081526020016000206000868481518110611c5757611c57612584565b6020026020010151815260200190815260200160002054611c9188878581518110611c8457611c84612584565b6020026020010151610cac565b611c9b9190612614565b1015611ce95760405162461bcd60e51b815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610445565b80611cf3816125cd565b915050611bd3565b505b61045c8686868686866001600160a01b038516611e77577f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea57f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea660005b8551811015611e7357848181518110611d7457611d74612584565b6020026020010151836000888481518110611d9157611d91612584565b602002602001015181526020019081526020016000206000828254611db6919061262b565b92505081905550816000878381518110611dd257611dd2612584565b6020026020010151815260200190815260200160002054836000888481518110611dfe57611dfe612584565b60200260200101518152602001908152602001600020541115611e635760405162461bcd60e51b815260206004820152601160248201527f535550504c595f4558434545445f4d41580000000000000000000000000000006044820152606401610445565b611e6c816125cd565b9050611d59565b5050505b6001600160a01b03841661045c577f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea560005b8451811015611f9e576000858281518110611ec657611ec6612584565b602002602001015190506000858381518110611ee457611ee4612584565b60200260200101519050600084600084815260200190815260200160002054905081811015611f7b5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a206275726e20616d6f756e74206578636565647320746f7460448201527f616c537570706c790000000000000000000000000000000000000000000000006064820152608401610445565b60009283526020859052604090922091039055611f97816125cd565b9050611ea9565b5050505050505050565b80356001600160a01b0381168114611fbf57600080fd5b919050565b60008060408385031215611fd757600080fd5b611fe083611fa8565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff8111828210171561202a5761202a611fee565b6040525050565b600067ffffffffffffffff82111561204b5761204b611fee565b5060051b60200190565b600082601f83011261206657600080fd5b8135602061207382612031565b6040516120808282612004565b83815260059390931b85018201928281019150868411156120a057600080fd5b8286015b848110156120bb57803583529183019183016120a4565b509695505050505050565b6000806000606084860312156120db57600080fd5b6120e484611fa8565b9250602084013567ffffffffffffffff8082111561210157600080fd5b61210d87838801612055565b9350604086013591508082111561212357600080fd5b5061213086828701612055565b9150509250925092565b600082601f83011261214b57600080fd5b813567ffffffffffffffff81111561216557612165611fee565b60405161217c601f8301601f191660200182612004565b81815284602083860101111561219157600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156121c657600080fd5b6121cf86611fa8565b94506121dd60208701611fa8565b9350604086013567ffffffffffffffff808211156121fa57600080fd5b61220689838a01612055565b9450606088013591508082111561221c57600080fd5b61222889838a01612055565b9350608088013591508082111561223e57600080fd5b5061224b8882890161213a565b9150509295509295909350565b60008060006060848603121561226d57600080fd5b61227684611fa8565b95602085013595506040909401359392505050565b6000806040838503121561229e57600080fd5b823567ffffffffffffffff808211156122b657600080fd5b818501915085601f8301126122ca57600080fd5b813560206122d782612031565b6040516122e48282612004565b83815260059390931b850182019282810191508984111561230457600080fd5b948201945b838610156123295761231a86611fa8565b82529482019490820190612309565b9650508601359250508082111561233f57600080fd5b5061234c85828601612055565b9150509250929050565b600081518084526020808501945080840160005b838110156123865781518752958201959082019060010161236a565b509495945050505050565b6020815260006103586020830184612356565b6000602082840312156123b657600080fd5b5035919050565b80151581146123cb57600080fd5b50565b600080604083850312156123e157600080fd5b6123ea83611fa8565b915060208301356123fa816123bd565b809150509250929050565b60008060006040848603121561241a57600080fd5b61242384611fa8565b9250602084013567ffffffffffffffff8082111561244057600080fd5b818601915086601f83011261245457600080fd5b81358181111561246357600080fd5b8760208260051b850101111561247857600080fd5b6020830194508093505050509250925092565b600080600080608085870312156124a157600080fd5b6124aa85611fa8565b93506020850135925060408501359150606085013567ffffffffffffffff8111156124d457600080fd5b6124e08782880161213a565b91505092959194509250565b600080604083850312156124ff57600080fd5b61250883611fa8565b915061251660208401611fa8565b90509250929050565b600080600080600060a0868803121561253757600080fd5b61254086611fa8565b945061254e60208701611fa8565b93506040860135925060608601359150608086013567ffffffffffffffff81111561257857600080fd5b61224b8882890161213a565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156125ac57600080fd5b8151610358816123bd565b634e487b7160e01b600052601160045260246000fd5b6000600182016125df576125df6125b7565b5060010190565b6040815260006125f96040830185612356565b828103602084015261260b8185612356565b95945050505050565b600082821015612626576126266125b7565b500390565b6000821982111561263e5761263e6125b7565b500190565b6000815180845260005b818110156126695760208185018101518683018201520161264d565b8181111561267b576000602083870101525b50601f01601f19169290920160200192915050565b60006001600160a01b03808816835280871660208401525060a060408301526126bc60a0830186612356565b82810360608401526126ce8186612356565b905082810360808401526126e28185612643565b98975050505050505050565b60006020828403121561270057600080fd5b81516001600160e01b03198116811461035857600080fd5b600060033d11156127315760046000803e5060005160e01c5b90565b600060443d10156127425790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561277257505050505090565b828501915081518181111561278a5750505050505090565b843d87010160208285010111156127a45750505050505090565b6127b360208286010187612004565b509095945050505050565b6020815260006103586020830184612643565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261280960a0830184612643565b97965050505050505056fea26469706673582212207983b28828c0e1640ce0b6bb49d9ac007fa3d4e53a9e2336dc6287fe55a2dddb64736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/ERC1155WithERC2771":{"address":{"3":"0xD781b8126F857A2073D5d0DD3D2903253DAA46bD","4":"0x25077bcB7F56Be3cB05CD364863Adae0217f3c07","rinkeby":"0x25077bcB7F56Be3cB05CD364863Adae0217f3c07","ropsten":"0xD781b8126F857A2073D5d0DD3D2903253DAA46bD"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155WithERC2771","sourceName":"src/token/ERC1155/ERC1155WithERC2771.sol","abi":[{"inputs":[],"name":"SenderIsNotSelf","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"burnBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"burnBatchByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnablePausedUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"lockByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"locked","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"locked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mintByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"status","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unlockByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b50612542806100206000396000f3fe608060405234801561001057600080fd5b50600436106101505760003560e01c8063869f7594116100cd578063bd85b03911610081578063e985e9c511610066578063e985e9c5146102cb578063f242432a14610326578063f5298aca1461033957600080fd5b8063bd85b039146102a5578063bf7bab73146102b857600080fd5b8063a22cb465116100b2578063a22cb4651461026c578063a91a988a1461027f578063b164884b1461029257600080fd5b8063869f759414610246578063983da1561461025957600080fd5b806348f2f536116101245780634f558e79116101095780634f558e79146101fd5780636708a990146102205780636b20c4541461023357600080fd5b806348f2f536146101ca5780634e1273f4146101dd57600080fd5b8062fdd58e146101555780630ad2bbac1461017b57806314e35aa4146101905780632eb2c2d6146101b7575b600080fd5b610168610163366004611cbd565b61034c565b6040519081526020015b60405180910390f35b61018e610189366004611dbf565b61035f565b005b7f20cb9ad5a22f74f90c7fecbece6b6ab3beb2a63812efb8693c5ff39f2b73ee0f54610168565b61018e6101c5366004611ea7565b61038f565b61018e6101d8366004611f51565b610478565b6101f06101eb366004611f84565b6104a3565b604051610172919061208a565b61021061020b36600461209d565b6106ca565b6040519015158152602001610172565b61018e61022e366004611f51565b610701565b61018e610241366004611dbf565b61072c565b61016861025436600461209d565b61082a565b61018e610267366004611f51565b61085d565b61018e61027a3660046120c7565b610888565b6101f061028d3660046120fe565b6109a8565b61018e6102a0366004612184565b610a8f565b6101686102b336600461209d565b610ac1565b6101686102c6366004611cbd565b610af4565b6102106102d93660046121e5565b6001600160a01b0391821660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a86020908152604080832093909416825291909152205460ff1690565b61018e610334366004612218565b610b3c565b61018e610347366004611f51565b610c18565b60006103588383610d16565b9392505050565b30331461037f576040516328be0e2160e21b815260040160405180910390fd5b61038a838383610ddb565b505050565b6000610399611059565b9050806001600160a01b0316866001600160a01b031614806103ff57506001600160a01b0380871660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a8602090815260408083209385168352929052205460ff165b6104625760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b60648201526084015b60405180910390fd5b610470818787878787611068565b505050505050565b303314610498576040516328be0e2160e21b815260040160405180910390fd5b61038a838383611084565b6060815183511461051c5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610459565b82517ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a79060009067ffffffffffffffff81111561055b5761055b611ce7565b604051908082528060200260200182016040528015610584578160200160208202803683370190505b50905060005b85518110156106c15760006001600160a01b03168682815181106105b0576105b061227d565b60200260200101516001600160a01b0316036106345760405162461bcd60e51b815260206004820152603160248201527f455243313135353a2062617463682062616c616e636520717565727920666f7260448201527f20746865207a65726f20616464726573730000000000000000000000000000006064820152608401610459565b8260008683815181106106495761064961227d565b6020026020010151815260200190815260200160002060008783815181106106735761067361227d565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020548282815181106106ae576106ae61227d565b602090810291909101015260010161058a565b50949350505050565b60008181527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea5602052604081205415155b92915050565b303314610721576040516328be0e2160e21b815260040160405180910390fd5b61038a838383611218565b610734611059565b6001600160a01b0316836001600160a01b031614806107cc57503063e985e9c58461075d611059565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156107a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107cc9190612293565b61037f5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610459565b60008181527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea660205260408120546106fb565b30331461087d576040516328be0e2160e21b815260040160405180910390fd5b61038a8383836112d5565b6000610892611059565b9050826001600160a01b0316816001600160a01b03160361091b5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610459565b6001600160a01b0381811660008181527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a86020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b606060008267ffffffffffffffff8111156109c5576109c5611ce7565b6040519080825280602002602001820160405280156109ee578160200160208202803683370190505b50905060005b838110156106c157610a6086868684818110610a1257610a1261227d565b905060200201356001600160a01b039190911660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b28752782060209081526040808320938352929052205490565b828281518110610a7257610a7261227d565b602090810291909101015280610a87816122c6565b9150506109f4565b303314610aaf576040516328be0e2160e21b815260040160405180910390fd5b610abb8484848461139c565b50505050565b60008181527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea560205260408120546106fb565b6001600160a01b03821660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b28752782060209081526040808320848452909152812054610358565b6000610b46611059565b9050806001600160a01b0316866001600160a01b03161480610bac57506001600160a01b0380871660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a8602090815260408083209385168352929052205460ff165b610c0a5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610459565b6104708187878787876114e2565b610c20611059565b6001600160a01b0316836001600160a01b03161480610cb857503063e985e9c584610c49611059565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610c94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb89190612293565b6104985760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610459565b60006001600160a01b038316610d945760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f20616464726573730000000000000000000000000000000000000000006064820152608401610459565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a76000928352602090815260408084206001600160a01b0395909516845293905250205490565b6001600160a01b038316610e3d5760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610459565b8051825114610e9f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610459565b6000610ea9611059565b9050610ec9818560008686604051806020016040528060008152506114fe565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a760005b8451811015610ff9576000858281518110610f0a57610f0a61227d565b60200260200101519050848281518110610f2657610f2661227d565b602090810291909101810151600083815285835260408082206001600160a01b038c16835290935291909120541015610fad5760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610459565b848281518110610fbf57610fbf61227d565b602090810291909101810151600092835284825260408084206001600160a01b038b16855290925291208054919091039055600101610eed565b5060006001600160a01b0316856001600160a01b0316836001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161104a9291906122df565b60405180910390a45050505050565b6000611063611503565b905090565b61107686868686868661150d565b61047086868686868661179a565b6001600160a01b0383166110e65760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610459565b60006110f0611059565b90506111208185600061110287611948565b61110b87611948565b604051806020016040528060008152506114fe565b60008381527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a7602090815260408083206001600160a01b038816845291829052909120548311156111bf5760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610459565b6001600160a01b0385811660008181526020848152604080832080548990039055805189815291820188905291938616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910161104a565b6001600160a01b03831660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b2875278206020908152604080832085845291829052909120548211156112ac5760405162461bcd60e51b815260206004820152601160248201527f4e4f545f454e4f5547485f4c4f434b45440000000000000000000000000000006044820152606401610459565b600083815260208290526040812080548492906112ca90849061230d565b909155505050505050565b6001600160a01b03831660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b28752782060209081526040808320858452918290529091205482906113268686610d16565b611330919061230d565b101561137e5760405162461bcd60e51b815260206004820152601260248201527f4e4f545f454e4f5547485f42414c414e434500000000000000000000000000006044820152606401610459565b600083815260208290526040812080548492906112ca908490612324565b60006113a6611059565b90506001600160a01b0385166114245760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610459565b6114438160008761143488611948565b61143d88611948565b876114fe565b60008481527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a7602090815260408083206001600160a01b038916845290915281208054859290611494908490612324565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910161104a565b6114f0868686868686611993565b610470868686868686611b5c565b610470565b6000611063611c58565b6001600160a01b0384166115715760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610459565b81518351146115d35760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610459565b6115e18686868686866114fe565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a760005b84518110156117395760008582815181106116225761162261227d565b6020026020010151905060008583815181106116405761164061227d565b602090810291909101810151600084815286835260408082206001600160a01b038e1683529093529190912054909150818110156116e65760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a20696e73756666696369656e742062616c616e636573206660448201527f6f72207472616e736665720000000000000000000000000000000000000000006064820152608401610459565b6000838152602086815260408083206001600160a01b038e811685529252808320938590039093558a16815290812080546001959095019483929061172c908490612324565b9091555061160592505050565b50846001600160a01b0316866001600160a01b0316886001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516117899291906122df565b60405180910390a450505050505050565b6001600160a01b0384163b156104705760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906117de9089908990889088908890600401612389565b6020604051808303816000875af1925050508015611819575060408051601f3d908101601f19168201909252611816918101906123e7565b60015b6118ce57611825612411565b806308c379a00361185e575061183961242c565b806118445750611860565b8060405162461bcd60e51b815260040161045991906124b6565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610459565b6001600160e01b0319811663bc197c8160e01b1461193f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610459565b50505050505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106119825761198261227d565b602090810291909101015292915050565b6001600160a01b0384166119f75760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610459565b611a15868686611a0687611948565b611a0f87611948565b866114fe565b60008381527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a7602081815260408084206001600160a01b038a1685529091529091205483811015611ace5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a20696e73756666696369656e742062616c616e636573206660448201527f6f72207472616e736665720000000000000000000000000000000000000000006064820152608401610459565b6000858152602083815260408083206001600160a01b038b81168552925280832093879003909355871681529081208054859290611b0d908490612324565b909155505060408051858152602081018590526001600160a01b038088169289821692918b16917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629101611789565b6001600160a01b0384163b156104705760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611ba090899089908890889088906004016124c9565b6020604051808303816000875af1925050508015611bdb575060408051601f3d908101601f19168201909252611bd8918101906123e7565b60015b611be757611825612411565b6001600160e01b0319811663f23a6e6160e01b1461193f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610459565b7fdb1d5e345c4903e9a32b6674ecc8b1deaddbbb2551474fb34c9d34becbe7f420546000906001600160a01b03163303611c99575060131936013560601c90565b503390565b90565b80356001600160a01b0381168114611cb857600080fd5b919050565b60008060408385031215611cd057600080fd5b611cd983611ca1565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715611d2357611d23611ce7565b6040525050565b600067ffffffffffffffff821115611d4457611d44611ce7565b5060051b60200190565b600082601f830112611d5f57600080fd5b81356020611d6c82611d2a565b604051611d798282611cfd565b83815260059390931b8501820192828101915086841115611d9957600080fd5b8286015b84811015611db45780358352918301918301611d9d565b509695505050505050565b600080600060608486031215611dd457600080fd5b611ddd84611ca1565b9250602084013567ffffffffffffffff80821115611dfa57600080fd5b611e0687838801611d4e565b93506040860135915080821115611e1c57600080fd5b50611e2986828701611d4e565b9150509250925092565b600082601f830112611e4457600080fd5b813567ffffffffffffffff811115611e5e57611e5e611ce7565b604051611e75601f8301601f191660200182611cfd565b818152846020838601011115611e8a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215611ebf57600080fd5b611ec886611ca1565b9450611ed660208701611ca1565b9350604086013567ffffffffffffffff80821115611ef357600080fd5b611eff89838a01611d4e565b94506060880135915080821115611f1557600080fd5b611f2189838a01611d4e565b93506080880135915080821115611f3757600080fd5b50611f4488828901611e33565b9150509295509295909350565b600080600060608486031215611f6657600080fd5b611f6f84611ca1565b95602085013595506040909401359392505050565b60008060408385031215611f9757600080fd5b823567ffffffffffffffff80821115611faf57600080fd5b818501915085601f830112611fc357600080fd5b81356020611fd082611d2a565b604051611fdd8282611cfd565b83815260059390931b8501820192828101915089841115611ffd57600080fd5b948201945b838610156120225761201386611ca1565b82529482019490820190612002565b9650508601359250508082111561203857600080fd5b5061204585828601611d4e565b9150509250929050565b600081518084526020808501945080840160005b8381101561207f57815187529582019590820190600101612063565b509495945050505050565b602081526000610358602083018461204f565b6000602082840312156120af57600080fd5b5035919050565b80151581146120c457600080fd5b50565b600080604083850312156120da57600080fd5b6120e383611ca1565b915060208301356120f3816120b6565b809150509250929050565b60008060006040848603121561211357600080fd5b61211c84611ca1565b9250602084013567ffffffffffffffff8082111561213957600080fd5b818601915086601f83011261214d57600080fd5b81358181111561215c57600080fd5b8760208260051b850101111561217157600080fd5b6020830194508093505050509250925092565b6000806000806080858703121561219a57600080fd5b6121a385611ca1565b93506020850135925060408501359150606085013567ffffffffffffffff8111156121cd57600080fd5b6121d987828801611e33565b91505092959194509250565b600080604083850312156121f857600080fd5b61220183611ca1565b915061220f60208401611ca1565b90509250929050565b600080600080600060a0868803121561223057600080fd5b61223986611ca1565b945061224760208701611ca1565b93506040860135925060608601359150608086013567ffffffffffffffff81111561227157600080fd5b611f4488828901611e33565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156122a557600080fd5b8151610358816120b6565b634e487b7160e01b600052601160045260246000fd5b6000600182016122d8576122d86122b0565b5060010190565b6040815260006122f2604083018561204f565b8281036020840152612304818561204f565b95945050505050565b60008282101561231f5761231f6122b0565b500390565b60008219821115612337576123376122b0565b500190565b6000815180845260005b8181101561236257602081850181015186830182015201612346565b81811115612374576000602083870101525b50601f01601f19169290920160200192915050565b60006001600160a01b03808816835280871660208401525060a060408301526123b560a083018661204f565b82810360608401526123c7818661204f565b905082810360808401526123db818561233c565b98975050505050505050565b6000602082840312156123f957600080fd5b81516001600160e01b03198116811461035857600080fd5b600060033d1115611c9e5760046000803e5060005160e01c90565b600060443d101561243a5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561246a57505050505090565b82850191508151818111156124825750505050505090565b843d870101602082850101111561249c5750505050505090565b6124ab60208286010187611cfd565b509095945050505050565b602081526000610358602083018461233c565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261250160a083018461233c565b97965050505050505056fea26469706673582212204f5cd4da44035af8b160964c564e469d695befca0a318d79d75c007bbdb73c9864736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101505760003560e01c8063869f7594116100cd578063bd85b03911610081578063e985e9c511610066578063e985e9c5146102cb578063f242432a14610326578063f5298aca1461033957600080fd5b8063bd85b039146102a5578063bf7bab73146102b857600080fd5b8063a22cb465116100b2578063a22cb4651461026c578063a91a988a1461027f578063b164884b1461029257600080fd5b8063869f759414610246578063983da1561461025957600080fd5b806348f2f536116101245780634f558e79116101095780634f558e79146101fd5780636708a990146102205780636b20c4541461023357600080fd5b806348f2f536146101ca5780634e1273f4146101dd57600080fd5b8062fdd58e146101555780630ad2bbac1461017b57806314e35aa4146101905780632eb2c2d6146101b7575b600080fd5b610168610163366004611cbd565b61034c565b6040519081526020015b60405180910390f35b61018e610189366004611dbf565b61035f565b005b7f20cb9ad5a22f74f90c7fecbece6b6ab3beb2a63812efb8693c5ff39f2b73ee0f54610168565b61018e6101c5366004611ea7565b61038f565b61018e6101d8366004611f51565b610478565b6101f06101eb366004611f84565b6104a3565b604051610172919061208a565b61021061020b36600461209d565b6106ca565b6040519015158152602001610172565b61018e61022e366004611f51565b610701565b61018e610241366004611dbf565b61072c565b61016861025436600461209d565b61082a565b61018e610267366004611f51565b61085d565b61018e61027a3660046120c7565b610888565b6101f061028d3660046120fe565b6109a8565b61018e6102a0366004612184565b610a8f565b6101686102b336600461209d565b610ac1565b6101686102c6366004611cbd565b610af4565b6102106102d93660046121e5565b6001600160a01b0391821660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a86020908152604080832093909416825291909152205460ff1690565b61018e610334366004612218565b610b3c565b61018e610347366004611f51565b610c18565b60006103588383610d16565b9392505050565b30331461037f576040516328be0e2160e21b815260040160405180910390fd5b61038a838383610ddb565b505050565b6000610399611059565b9050806001600160a01b0316866001600160a01b031614806103ff57506001600160a01b0380871660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a8602090815260408083209385168352929052205460ff165b6104625760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b60648201526084015b60405180910390fd5b610470818787878787611068565b505050505050565b303314610498576040516328be0e2160e21b815260040160405180910390fd5b61038a838383611084565b6060815183511461051c5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610459565b82517ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a79060009067ffffffffffffffff81111561055b5761055b611ce7565b604051908082528060200260200182016040528015610584578160200160208202803683370190505b50905060005b85518110156106c15760006001600160a01b03168682815181106105b0576105b061227d565b60200260200101516001600160a01b0316036106345760405162461bcd60e51b815260206004820152603160248201527f455243313135353a2062617463682062616c616e636520717565727920666f7260448201527f20746865207a65726f20616464726573730000000000000000000000000000006064820152608401610459565b8260008683815181106106495761064961227d565b6020026020010151815260200190815260200160002060008783815181106106735761067361227d565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020548282815181106106ae576106ae61227d565b602090810291909101015260010161058a565b50949350505050565b60008181527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea5602052604081205415155b92915050565b303314610721576040516328be0e2160e21b815260040160405180910390fd5b61038a838383611218565b610734611059565b6001600160a01b0316836001600160a01b031614806107cc57503063e985e9c58461075d611059565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156107a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107cc9190612293565b61037f5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610459565b60008181527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea660205260408120546106fb565b30331461087d576040516328be0e2160e21b815260040160405180910390fd5b61038a8383836112d5565b6000610892611059565b9050826001600160a01b0316816001600160a01b03160361091b5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610459565b6001600160a01b0381811660008181527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a86020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b606060008267ffffffffffffffff8111156109c5576109c5611ce7565b6040519080825280602002602001820160405280156109ee578160200160208202803683370190505b50905060005b838110156106c157610a6086868684818110610a1257610a1261227d565b905060200201356001600160a01b039190911660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b28752782060209081526040808320938352929052205490565b828281518110610a7257610a7261227d565b602090810291909101015280610a87816122c6565b9150506109f4565b303314610aaf576040516328be0e2160e21b815260040160405180910390fd5b610abb8484848461139c565b50505050565b60008181527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea560205260408120546106fb565b6001600160a01b03821660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b28752782060209081526040808320848452909152812054610358565b6000610b46611059565b9050806001600160a01b0316866001600160a01b03161480610bac57506001600160a01b0380871660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a8602090815260408083209385168352929052205460ff165b610c0a5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610459565b6104708187878787876114e2565b610c20611059565b6001600160a01b0316836001600160a01b03161480610cb857503063e985e9c584610c49611059565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610c94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb89190612293565b6104985760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610459565b60006001600160a01b038316610d945760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f20616464726573730000000000000000000000000000000000000000006064820152608401610459565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a76000928352602090815260408084206001600160a01b0395909516845293905250205490565b6001600160a01b038316610e3d5760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610459565b8051825114610e9f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610459565b6000610ea9611059565b9050610ec9818560008686604051806020016040528060008152506114fe565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a760005b8451811015610ff9576000858281518110610f0a57610f0a61227d565b60200260200101519050848281518110610f2657610f2661227d565b602090810291909101810151600083815285835260408082206001600160a01b038c16835290935291909120541015610fad5760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610459565b848281518110610fbf57610fbf61227d565b602090810291909101810151600092835284825260408084206001600160a01b038b16855290925291208054919091039055600101610eed565b5060006001600160a01b0316856001600160a01b0316836001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161104a9291906122df565b60405180910390a45050505050565b6000611063611503565b905090565b61107686868686868661150d565b61047086868686868661179a565b6001600160a01b0383166110e65760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610459565b60006110f0611059565b90506111208185600061110287611948565b61110b87611948565b604051806020016040528060008152506114fe565b60008381527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a7602090815260408083206001600160a01b038816845291829052909120548311156111bf5760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610459565b6001600160a01b0385811660008181526020848152604080832080548990039055805189815291820188905291938616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910161104a565b6001600160a01b03831660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b2875278206020908152604080832085845291829052909120548211156112ac5760405162461bcd60e51b815260206004820152601160248201527f4e4f545f454e4f5547485f4c4f434b45440000000000000000000000000000006044820152606401610459565b600083815260208290526040812080548492906112ca90849061230d565b909155505050505050565b6001600160a01b03831660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b28752782060209081526040808320858452918290529091205482906113268686610d16565b611330919061230d565b101561137e5760405162461bcd60e51b815260206004820152601260248201527f4e4f545f454e4f5547485f42414c414e434500000000000000000000000000006044820152606401610459565b600083815260208290526040812080548492906112ca908490612324565b60006113a6611059565b90506001600160a01b0385166114245760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610459565b6114438160008761143488611948565b61143d88611948565b876114fe565b60008481527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a7602090815260408083206001600160a01b038916845290915281208054859290611494908490612324565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910161104a565b6114f0868686868686611993565b610470868686868686611b5c565b610470565b6000611063611c58565b6001600160a01b0384166115715760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610459565b81518351146115d35760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610459565b6115e18686868686866114fe565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a760005b84518110156117395760008582815181106116225761162261227d565b6020026020010151905060008583815181106116405761164061227d565b602090810291909101810151600084815286835260408082206001600160a01b038e1683529093529190912054909150818110156116e65760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a20696e73756666696369656e742062616c616e636573206660448201527f6f72207472616e736665720000000000000000000000000000000000000000006064820152608401610459565b6000838152602086815260408083206001600160a01b038e811685529252808320938590039093558a16815290812080546001959095019483929061172c908490612324565b9091555061160592505050565b50846001600160a01b0316866001600160a01b0316886001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516117899291906122df565b60405180910390a450505050505050565b6001600160a01b0384163b156104705760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906117de9089908990889088908890600401612389565b6020604051808303816000875af1925050508015611819575060408051601f3d908101601f19168201909252611816918101906123e7565b60015b6118ce57611825612411565b806308c379a00361185e575061183961242c565b806118445750611860565b8060405162461bcd60e51b815260040161045991906124b6565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610459565b6001600160e01b0319811663bc197c8160e01b1461193f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610459565b50505050505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106119825761198261227d565b602090810291909101015292915050565b6001600160a01b0384166119f75760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610459565b611a15868686611a0687611948565b611a0f87611948565b866114fe565b60008381527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a7602081815260408084206001600160a01b038a1685529091529091205483811015611ace5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a20696e73756666696369656e742062616c616e636573206660448201527f6f72207472616e736665720000000000000000000000000000000000000000006064820152608401610459565b6000858152602083815260408083206001600160a01b038b81168552925280832093879003909355871681529081208054859290611b0d908490612324565b909155505060408051858152602081018590526001600160a01b038088169289821692918b16917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629101611789565b6001600160a01b0384163b156104705760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611ba090899089908890889088906004016124c9565b6020604051808303816000875af1925050508015611bdb575060408051601f3d908101601f19168201909252611bd8918101906123e7565b60015b611be757611825612411565b6001600160e01b0319811663f23a6e6160e01b1461193f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610459565b7fdb1d5e345c4903e9a32b6674ecc8b1deaddbbb2551474fb34c9d34becbe7f420546000906001600160a01b03163303611c99575060131936013560601c90565b503390565b90565b80356001600160a01b0381168114611cb857600080fd5b919050565b60008060408385031215611cd057600080fd5b611cd983611ca1565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715611d2357611d23611ce7565b6040525050565b600067ffffffffffffffff821115611d4457611d44611ce7565b5060051b60200190565b600082601f830112611d5f57600080fd5b81356020611d6c82611d2a565b604051611d798282611cfd565b83815260059390931b8501820192828101915086841115611d9957600080fd5b8286015b84811015611db45780358352918301918301611d9d565b509695505050505050565b600080600060608486031215611dd457600080fd5b611ddd84611ca1565b9250602084013567ffffffffffffffff80821115611dfa57600080fd5b611e0687838801611d4e565b93506040860135915080821115611e1c57600080fd5b50611e2986828701611d4e565b9150509250925092565b600082601f830112611e4457600080fd5b813567ffffffffffffffff811115611e5e57611e5e611ce7565b604051611e75601f8301601f191660200182611cfd565b818152846020838601011115611e8a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215611ebf57600080fd5b611ec886611ca1565b9450611ed660208701611ca1565b9350604086013567ffffffffffffffff80821115611ef357600080fd5b611eff89838a01611d4e565b94506060880135915080821115611f1557600080fd5b611f2189838a01611d4e565b93506080880135915080821115611f3757600080fd5b50611f4488828901611e33565b9150509295509295909350565b600080600060608486031215611f6657600080fd5b611f6f84611ca1565b95602085013595506040909401359392505050565b60008060408385031215611f9757600080fd5b823567ffffffffffffffff80821115611faf57600080fd5b818501915085601f830112611fc357600080fd5b81356020611fd082611d2a565b604051611fdd8282611cfd565b83815260059390931b8501820192828101915089841115611ffd57600080fd5b948201945b838610156120225761201386611ca1565b82529482019490820190612002565b9650508601359250508082111561203857600080fd5b5061204585828601611d4e565b9150509250929050565b600081518084526020808501945080840160005b8381101561207f57815187529582019590820190600101612063565b509495945050505050565b602081526000610358602083018461204f565b6000602082840312156120af57600080fd5b5035919050565b80151581146120c457600080fd5b50565b600080604083850312156120da57600080fd5b6120e383611ca1565b915060208301356120f3816120b6565b809150509250929050565b60008060006040848603121561211357600080fd5b61211c84611ca1565b9250602084013567ffffffffffffffff8082111561213957600080fd5b818601915086601f83011261214d57600080fd5b81358181111561215c57600080fd5b8760208260051b850101111561217157600080fd5b6020830194508093505050509250925092565b6000806000806080858703121561219a57600080fd5b6121a385611ca1565b93506020850135925060408501359150606085013567ffffffffffffffff8111156121cd57600080fd5b6121d987828801611e33565b91505092959194509250565b600080604083850312156121f857600080fd5b61220183611ca1565b915061220f60208401611ca1565b90509250929050565b600080600080600060a0868803121561223057600080fd5b61223986611ca1565b945061224760208701611ca1565b93506040860135925060608601359150608086013567ffffffffffffffff81111561227157600080fd5b611f4488828901611e33565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156122a557600080fd5b8151610358816120b6565b634e487b7160e01b600052601160045260246000fd5b6000600182016122d8576122d86122b0565b5060010190565b6040815260006122f2604083018561204f565b8281036020840152612304818561204f565b95945050505050565b60008282101561231f5761231f6122b0565b500390565b60008219821115612337576123376122b0565b500190565b6000815180845260005b8181101561236257602081850181015186830182015201612346565b81811115612374576000602083870101525b50601f01601f19169290920160200192915050565b60006001600160a01b03808816835280871660208401525060a060408301526123b560a083018661204f565b82810360608401526123c7818661204f565b905082810360808401526123db818561233c565b98975050505050505050565b6000602082840312156123f957600080fd5b81516001600160e01b03198116811461035857600080fd5b600060033d1115611c9e5760046000803e5060005160e01c90565b600060443d101561243a5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561246a57505050505090565b82850191508151818111156124825750505050505090565b843d870101602082850101111561249c5750505050505090565b6124ab60208286010187611cfd565b509095945050505050565b602081526000610358602083018461233c565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261250160a083018461233c565b97965050505050505056fea26469706673582212204f5cd4da44035af8b160964c564e469d695befca0a318d79d75c007bbdb73c9864736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/extensions/burnable/ERC1155Burnable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Burnable","sourceName":"src/token/ERC1155/extensions/burnable/ERC1155Burnable.sol","abi":[{"inputs":[],"name":"SenderIsNotSelf","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"burnBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"burnBatchByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnablePausedUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/extensions/burnable/ERC1155BurnableStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155BurnableStorage","sourceName":"src/token/ERC1155/extensions/burnable/ERC1155BurnableStorage.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bf2c07898dec01698a8cdde82bc79219d9c16c7785a7eabf2746a4fdd1b20aa264736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bf2c07898dec01698a8cdde82bc79219d9c16c7785a7eabf2746a4fdd1b20aa264736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/extensions/burnable/IERC1155Burnable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155Burnable","sourceName":"src/token/ERC1155/extensions/burnable/IERC1155Burnable.sol","abi":[{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"burnBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"burnBatchByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnablePausedUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/extensions/lockable/ERC1155Lockable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Lockable","sourceName":"src/token/ERC1155/extensions/lockable/ERC1155Lockable.sol","abi":[{"inputs":[],"name":"SenderIsNotSelf","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"lockByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"locked","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"locked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unlockByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/extensions/lockable/ERC1155LockableInternal":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155LockableInternal","sourceName":"src/token/ERC1155/extensions/lockable/ERC1155LockableInternal.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/extensions/lockable/ERC1155LockableStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155LockableStorage","sourceName":"src/token/ERC1155/extensions/lockable/ERC1155LockableStorage.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e99e09e263c09fb87ca6600069ccf209f120f33ca8d9df4afa01f701eb6a1ef364736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e99e09e263c09fb87ca6600069ccf209f120f33ca8d9df4afa01f701eb6a1ef364736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/extensions/lockable/IERC1155Lockable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155Lockable","sourceName":"src/token/ERC1155/extensions/lockable/IERC1155Lockable.sol","abi":[{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"lockByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unlockByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/extensions/mintable/ERC1155Mintable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Mintable","sourceName":"src/token/ERC1155/extensions/mintable/ERC1155Mintable.sol","abi":[{"inputs":[],"name":"SenderIsNotSelf","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mintByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/extensions/mintable/IERC1155Mintable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155Mintable","sourceName":"src/token/ERC1155/extensions/mintable/IERC1155Mintable.sol","abi":[{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mintByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/extensions/supply/ERC1155Supply":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Supply","sourceName":"src/token/ERC1155/extensions/supply/ERC1155Supply.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/extensions/supply/ERC1155SupplyInternal":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155SupplyInternal","sourceName":"src/token/ERC1155/extensions/supply/ERC1155SupplyInternal.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/extensions/supply/ERC1155SupplyStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155SupplyStorage","sourceName":"src/token/ERC1155/extensions/supply/ERC1155SupplyStorage.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e994c8ba17b4f36ff45a3742c3500b3b3729a83dabbe267c46f37714201a8a8764736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e994c8ba17b4f36ff45a3742c3500b3b3729a83dabbe267c46f37714201a8a8764736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/extensions/supply/IERC1155Supply":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155Supply","sourceName":"src/token/ERC1155/extensions/supply/IERC1155Supply.sol","abi":[{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/burnable/ERC1155BurnableOwnable":{"address":{"3":"0x48F9152b91103E158029921C59Ff844d30468288","4":"0x784F5AE3d12E03112564b0318c60653EB84FA4Cf","rinkeby":"0x784F5AE3d12E03112564b0318c60653EB84FA4Cf","ropsten":"0x48F9152b91103E158029921C59Ff844d30468288"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155BurnableOwnable","sourceName":"src/token/ERC1155/facets/burnable/ERC1155BurnableOwnable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"newTimestamp","type":"uint256"}],"name":"setBurnablePausedUntil","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b5061015c806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063710fb57714610030575b600080fd5b61004361003e36600461010d565b610045565b005b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146100e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e6572000000604482015260640160405180910390fd5b7f20cb9ad5a22f74f90c7fecbece6b6ab3beb2a63812efb8693c5ff39f2b73ee0f55565b60006020828403121561011f57600080fd5b503591905056fea26469706673582212206481751c5dc41ee45c4a72583bfe26e5a3e0966c2db927c3a4d20d00d76807aa64736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063710fb57714610030575b600080fd5b61004361003e36600461010d565b610045565b005b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146100e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e6572000000604482015260640160405180910390fd5b7f20cb9ad5a22f74f90c7fecbece6b6ab3beb2a63812efb8693c5ff39f2b73ee0f55565b60006020828403121561011f57600080fd5b503591905056fea26469706673582212206481751c5dc41ee45c4a72583bfe26e5a3e0966c2db927c3a4d20d00d76807aa64736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/burnable/IERC1155BurnableAdmin":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155BurnableAdmin","sourceName":"src/token/ERC1155/facets/burnable/IERC1155BurnableAdmin.sol","abi":[{"inputs":[{"internalType":"uint256","name":"newTimestamp","type":"uint256"}],"name":"setBurnablePausedUntil","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/metadata/ERC1155Metadata":{"address":{"3":"0x6d018457d731E1EFA8700a454a52e46c2Ce1451e","4":"0x877546CE36fC055d2506aCe87838FD22eED420Be","rinkeby":"0x877546CE36fC055d2506aCe87838FD22eED420Be","ropsten":"0x6d018457d731E1EFA8700a454a52e46c2Ce1451e"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Metadata","sourceName":"src/token/ERC1155/facets/metadata/ERC1155Metadata.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURILocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fallbackURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fallbackURILocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLockedTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"uriBatch","outputs":[{"internalType":"string[]","name":"","type":"string[]"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506109be806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80635d148e5c1161005b5780635d148e5c146100ea5780636b95c504146101145780636c0360eb1461014457806396d7e2291461014c57600080fd5b8063067f0848146100825780630c7d9752146100c25780630e89341c146100d7575b600080fd5b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceed54610100900460ff165b60405190151581526020015b60405180910390f35b6100ca61016c565b6040516100b99190610672565b6100ca6100e536600461068c565b610220565b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceed5460ff166100ad565b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceee546040519081526020016100b9565b6100ca6103f4565b61015f61015a3660046106a5565b610422565b6040516100b9919061071a565b60607f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceeb600101805461019d9061077c565b80601f01602080910402602001604051908101604052809291908181526020018280546101c99061077c565b80156102165780601f106101eb57610100808354040283529160200191610216565b820191906000526020600020905b8154815290600101906020018083116101f957829003601f168201915b5050505050905090565b60008181527f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceef6020526040812080546060927f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceeb92909161027f9061077c565b80601f01602080910402602001604051908101604052809291908181526020018280546102ab9061077c565b80156102f85780601f106102cd576101008083540402835291602001916102f8565b820191906000526020600020905b8154815290600101906020018083116102db57829003601f168201915b5050505050905060008260000180546103109061077c565b80601f016020809104026020016040519081016040528092919081815260200182805461033c9061077c565b80156103895780601f1061035e57610100808354040283529160200191610389565b820191906000526020600020905b81548152906001019060200180831161036c57829003601f168201915b5050505050905080516000036103a157509392505050565b8151156103d45780826040516020016103bb9291906107d2565b6040516020818303038152906040529350505050919050565b80836001016103e2876104d9565b6040516020016103bb93929190610801565b60607f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceeb805461019d9061077c565b606060008267ffffffffffffffff81111561043f5761043f6108c0565b60405190808252806020026020018201604052801561047257816020015b606081526020019060019003908161045d5790505b50905060005b838110156104d1576104a1858583818110610495576104956108d6565b90506020020135610220565b8282815181106104b3576104b36108d6565b602002602001018190525080806104c990610902565b915050610478565b509392505050565b60608160000361051c57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610546578061053081610902565b915061053f9050600a83610931565b9150610520565b60008167ffffffffffffffff811115610561576105616108c0565b6040519080825280601f01601f19166020018201604052801561058b576020820181803683370190505b5090505b841561060e576105a0600183610945565b91506105ad600a8661095c565b6105b8906030610970565b60f81b8183815181106105cd576105cd6108d6565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610607600a86610931565b945061058f565b949350505050565b60005b83811015610631578181015183820152602001610619565b83811115610640576000848401525b50505050565b6000815180845261065e816020860160208601610616565b601f01601f19169290920160200192915050565b6020815260006106856020830184610646565b9392505050565b60006020828403121561069e57600080fd5b5035919050565b600080602083850312156106b857600080fd5b823567ffffffffffffffff808211156106d057600080fd5b818501915085601f8301126106e457600080fd5b8135818111156106f357600080fd5b8660208260051b850101111561070857600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561076f57603f1988860301845261075d858351610646565b94509285019290850190600101610741565b5092979650505050505050565b600181811c9082168061079057607f821691505b6020821081036107b057634e487b7160e01b600052602260045260246000fd5b50919050565b600081516107c8818560208601610616565b9290920192915050565b600083516107e4818460208801610616565b8351908301906107f8818360208801610616565b01949350505050565b6000845160206108148285838a01610616565b855491840191600090600181811c908083168061083257607f831692505b858310810361084f57634e487b7160e01b85526022600452602485fd5b8080156108635760018114610878576108a5565b60ff19851688528315158402880195506108a5565b60008c81526020902060005b8581101561089d5781548a820152908401908801610884565b505083880195505b50505050506108b481876107b6565b98975050505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201610914576109146108ec565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826109405761094061091b565b500490565b600082821015610957576109576108ec565b500390565b60008261096b5761096b61091b565b500690565b60008219821115610983576109836108ec565b50019056fea26469706673582212208a939d158d4672c2d08775d2ffda6d80737cbed4c67e76dccecaac9483d8863164736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80635d148e5c1161005b5780635d148e5c146100ea5780636b95c504146101145780636c0360eb1461014457806396d7e2291461014c57600080fd5b8063067f0848146100825780630c7d9752146100c25780630e89341c146100d7575b600080fd5b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceed54610100900460ff165b60405190151581526020015b60405180910390f35b6100ca61016c565b6040516100b99190610672565b6100ca6100e536600461068c565b610220565b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceed5460ff166100ad565b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceee546040519081526020016100b9565b6100ca6103f4565b61015f61015a3660046106a5565b610422565b6040516100b9919061071a565b60607f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceeb600101805461019d9061077c565b80601f01602080910402602001604051908101604052809291908181526020018280546101c99061077c565b80156102165780601f106101eb57610100808354040283529160200191610216565b820191906000526020600020905b8154815290600101906020018083116101f957829003601f168201915b5050505050905090565b60008181527f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceef6020526040812080546060927f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceeb92909161027f9061077c565b80601f01602080910402602001604051908101604052809291908181526020018280546102ab9061077c565b80156102f85780601f106102cd576101008083540402835291602001916102f8565b820191906000526020600020905b8154815290600101906020018083116102db57829003601f168201915b5050505050905060008260000180546103109061077c565b80601f016020809104026020016040519081016040528092919081815260200182805461033c9061077c565b80156103895780601f1061035e57610100808354040283529160200191610389565b820191906000526020600020905b81548152906001019060200180831161036c57829003601f168201915b5050505050905080516000036103a157509392505050565b8151156103d45780826040516020016103bb9291906107d2565b6040516020818303038152906040529350505050919050565b80836001016103e2876104d9565b6040516020016103bb93929190610801565b60607f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceeb805461019d9061077c565b606060008267ffffffffffffffff81111561043f5761043f6108c0565b60405190808252806020026020018201604052801561047257816020015b606081526020019060019003908161045d5790505b50905060005b838110156104d1576104a1858583818110610495576104956108d6565b90506020020135610220565b8282815181106104b3576104b36108d6565b602002602001018190525080806104c990610902565b915050610478565b509392505050565b60608160000361051c57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610546578061053081610902565b915061053f9050600a83610931565b9150610520565b60008167ffffffffffffffff811115610561576105616108c0565b6040519080825280601f01601f19166020018201604052801561058b576020820181803683370190505b5090505b841561060e576105a0600183610945565b91506105ad600a8661095c565b6105b8906030610970565b60f81b8183815181106105cd576105cd6108d6565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610607600a86610931565b945061058f565b949350505050565b60005b83811015610631578181015183820152602001610619565b83811115610640576000848401525b50505050565b6000815180845261065e816020860160208601610616565b601f01601f19169290920160200192915050565b6020815260006106856020830184610646565b9392505050565b60006020828403121561069e57600080fd5b5035919050565b600080602083850312156106b857600080fd5b823567ffffffffffffffff808211156106d057600080fd5b818501915085601f8301126106e457600080fd5b8135818111156106f357600080fd5b8660208260051b850101111561070857600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561076f57603f1988860301845261075d858351610646565b94509285019290850190600101610741565b5092979650505050505050565b600181811c9082168061079057607f821691505b6020821081036107b057634e487b7160e01b600052602260045260246000fd5b50919050565b600081516107c8818560208601610616565b9290920192915050565b600083516107e4818460208801610616565b8351908301906107f8818360208801610616565b01949350505050565b6000845160206108148285838a01610616565b855491840191600090600181811c908083168061083257607f831692505b858310810361084f57634e487b7160e01b85526022600452602485fd5b8080156108635760018114610878576108a5565b60ff19851688528315158402880195506108a5565b60008c81526020902060005b8581101561089d5781548a820152908401908801610884565b505083880195505b50505050506108b481876107b6565b98975050505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201610914576109146108ec565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826109405761094061091b565b500490565b600082821015610957576109576108ec565b500390565b60008261096b5761096b61091b565b500690565b60008219821115610983576109836108ec565b50019056fea26469706673582212208a939d158d4672c2d08775d2ffda6d80737cbed4c67e76dccecaac9483d8863164736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/metadata/ERC1155MetadataInternal":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155MetadataInternal","sourceName":"src/token/ERC1155/facets/metadata/ERC1155MetadataInternal.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"URI","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/metadata/ERC1155MetadataOwnable":{"address":{"3":"0xE949eBA5548cCAfc29612a41916DcAE6a56ed877","4":"0x7b151958c3Fc4261fF3AD87c614163dAB22e7B6B","rinkeby":"0x7b151958c3Fc4261fF3AD87c614163dAB22e7B6B","ropsten":"0xE949eBA5548cCAfc29612a41916DcAE6a56ed877"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155MetadataOwnable","sourceName":"src/token/ERC1155/facets/metadata/ERC1155MetadataOwnable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[],"name":"lockBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockFallbackURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"lockURIUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newFallbackURI","type":"string"}],"name":"setFallbackURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"newTokenURI","type":"string"}],"name":"setURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"string[]","name":"newTokenURIs","type":"string[]"}],"name":"setURIBatch","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b50610c69806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806353df5c7c1161005b57806353df5c7c146100b257806355f804b3146100ba578063862440e2146100cd578063989143ee146100e057600080fd5b806301b98ea0146100825780630cf14c401461009757806318249af71461009f575b600080fd5b6100956100903660046108a7565b6100f3565b005b61009561020f565b6100956100ad366004610955565b6102bd565b610095610379565b6100956100c8366004610955565b610423565b6100956100db366004610997565b6104db565b6100956100ee3660046109e3565b610599565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146101715760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064015b60405180910390fd5b60005b83811015610208576101f6858583818110610191576101916109fc565b905060200201358484848181106101aa576101aa6109fc565b90506020028101906101bc9190610a12565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061063d92505050565b8061020081610a59565b915050610174565b5050505050565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146102885760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e65720000006044820152606401610168565b6102bb7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceed805461ff001916610100179055565b565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146103365760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e65720000006044820152606401610168565b61037582828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061072192505050565b5050565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146103f25760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e65720000006044820152606401610168565b6102bb7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceed805460ff19166001179055565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b0316331461049c5760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e65720000006044820152606401610168565b61037582828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506107e992505050565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146105545760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e65720000006044820152606401610168565b6105948383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061063d92505050565b505050565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146106125760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e65720000006044820152606401610168565b61063a817f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceee55565b50565b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceee5482116106ad5760405162461bcd60e51b815260206004820181905260248201527f455243313135354d657461646174613a20746f6b656e555249206c6f636b65646044820152606401610168565b60008281527f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceef602052604090206106e48282610b1e565b50817f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b826040516107159190610bde565b60405180910390a25050565b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceed54610100900460ff16156107be5760405162461bcd60e51b815260206004820152602360248201527f455243313135354d657461646174613a2066616c6c6261636b555249206c6f6360448201527f6b656400000000000000000000000000000000000000000000000000000000006064820152608401610168565b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceeb6103758282610b1e565b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceed5460ff16156107be5760405162461bcd60e51b815260206004820152601f60248201527f455243313135354d657461646174613a2062617365555249206c6f636b6564006044820152606401610168565b60008083601f84011261086d57600080fd5b50813567ffffffffffffffff81111561088557600080fd5b6020830191508360208260051b85010111156108a057600080fd5b9250929050565b600080600080604085870312156108bd57600080fd5b843567ffffffffffffffff808211156108d557600080fd5b6108e18883890161085b565b909650945060208701359150808211156108fa57600080fd5b506109078782880161085b565b95989497509550505050565b60008083601f84011261092557600080fd5b50813567ffffffffffffffff81111561093d57600080fd5b6020830191508360208285010111156108a057600080fd5b6000806020838503121561096857600080fd5b823567ffffffffffffffff81111561097f57600080fd5b61098b85828601610913565b90969095509350505050565b6000806000604084860312156109ac57600080fd5b83359250602084013567ffffffffffffffff8111156109ca57600080fd5b6109d686828701610913565b9497909650939450505050565b6000602082840312156109f557600080fd5b5035919050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112610a2957600080fd5b83018035915067ffffffffffffffff821115610a4457600080fd5b6020019150368190038213156108a057600080fd5b600060018201610a7957634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680610aaa57607f821691505b602082108103610aca57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561059457600081815260208120601f850160051c81016020861015610af75750805b601f850160051c820191505b81811015610b1657828155600101610b03565b505050505050565b815167ffffffffffffffff811115610b3857610b38610a80565b610b4c81610b468454610a96565b84610ad0565b602080601f831160018114610b815760008415610b695750858301515b600019600386901b1c1916600185901b178555610b16565b600085815260208120601f198616915b82811015610bb057888601518255948401946001909101908401610b91565b5085821015610bce5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208083528351808285015260005b81811015610c0b57858101830151858201604001528201610bef565b81811115610c1d576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220e4e669e09d54aaed6e0b2a77626adc60af047acb01872a4f56375cb803c0f78d64736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061007d5760003560e01c806353df5c7c1161005b57806353df5c7c146100b257806355f804b3146100ba578063862440e2146100cd578063989143ee146100e057600080fd5b806301b98ea0146100825780630cf14c401461009757806318249af71461009f575b600080fd5b6100956100903660046108a7565b6100f3565b005b61009561020f565b6100956100ad366004610955565b6102bd565b610095610379565b6100956100c8366004610955565b610423565b6100956100db366004610997565b6104db565b6100956100ee3660046109e3565b610599565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146101715760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064015b60405180910390fd5b60005b83811015610208576101f6858583818110610191576101916109fc565b905060200201358484848181106101aa576101aa6109fc565b90506020028101906101bc9190610a12565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061063d92505050565b8061020081610a59565b915050610174565b5050505050565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146102885760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e65720000006044820152606401610168565b6102bb7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceed805461ff001916610100179055565b565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146103365760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e65720000006044820152606401610168565b61037582828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061072192505050565b5050565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146103f25760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e65720000006044820152606401610168565b6102bb7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceed805460ff19166001179055565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b0316331461049c5760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e65720000006044820152606401610168565b61037582828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506107e992505050565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146105545760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e65720000006044820152606401610168565b6105948383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061063d92505050565b505050565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146106125760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e65720000006044820152606401610168565b61063a817f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceee55565b50565b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceee5482116106ad5760405162461bcd60e51b815260206004820181905260248201527f455243313135354d657461646174613a20746f6b656e555249206c6f636b65646044820152606401610168565b60008281527f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceef602052604090206106e48282610b1e565b50817f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b826040516107159190610bde565b60405180910390a25050565b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceed54610100900460ff16156107be5760405162461bcd60e51b815260206004820152602360248201527f455243313135354d657461646174613a2066616c6c6261636b555249206c6f6360448201527f6b656400000000000000000000000000000000000000000000000000000000006064820152608401610168565b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceeb6103758282610b1e565b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceed5460ff16156107be5760405162461bcd60e51b815260206004820152601f60248201527f455243313135354d657461646174613a2062617365555249206c6f636b6564006044820152606401610168565b60008083601f84011261086d57600080fd5b50813567ffffffffffffffff81111561088557600080fd5b6020830191508360208260051b85010111156108a057600080fd5b9250929050565b600080600080604085870312156108bd57600080fd5b843567ffffffffffffffff808211156108d557600080fd5b6108e18883890161085b565b909650945060208701359150808211156108fa57600080fd5b506109078782880161085b565b95989497509550505050565b60008083601f84011261092557600080fd5b50813567ffffffffffffffff81111561093d57600080fd5b6020830191508360208285010111156108a057600080fd5b6000806020838503121561096857600080fd5b823567ffffffffffffffff81111561097f57600080fd5b61098b85828601610913565b90969095509350505050565b6000806000604084860312156109ac57600080fd5b83359250602084013567ffffffffffffffff8111156109ca57600080fd5b6109d686828701610913565b9497909650939450505050565b6000602082840312156109f557600080fd5b5035919050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112610a2957600080fd5b83018035915067ffffffffffffffff821115610a4457600080fd5b6020019150368190038213156108a057600080fd5b600060018201610a7957634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680610aaa57607f821691505b602082108103610aca57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561059457600081815260208120601f850160051c81016020861015610af75750805b601f850160051c820191505b81811015610b1657828155600101610b03565b505050505050565b815167ffffffffffffffff811115610b3857610b38610a80565b610b4c81610b468454610a96565b84610ad0565b602080601f831160018114610b815760008415610b695750858301515b600019600386901b1c1916600185901b178555610b16565b600085815260208120601f198616915b82811015610bb057888601518255948401946001909101908401610b91565b5085821015610bce5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208083528351808285015260005b81811015610c0b57858101830151858201604001528201610bef565b81811115610c1d576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220e4e669e09d54aaed6e0b2a77626adc60af047acb01872a4f56375cb803c0f78d64736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/metadata/ERC1155MetadataStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155MetadataStorage","sourceName":"src/token/ERC1155/facets/metadata/ERC1155MetadataStorage.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bbe8427c5afaccc4ab79b272898d8320ed9d1ba1861a9f10d90b268e722172c564736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bbe8427c5afaccc4ab79b272898d8320ed9d1ba1861a9f10d90b268e722172c564736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/metadata/IERC1155Metadata":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155Metadata","sourceName":"src/token/ERC1155/facets/metadata/IERC1155Metadata.sol","abi":[{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/metadata/IERC1155MetadataAdmin":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155MetadataAdmin","sourceName":"src/token/ERC1155/facets/metadata/IERC1155MetadataAdmin.sol","abi":[{"inputs":[],"name":"lockBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockFallbackURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"lockURIUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newFallbackURI","type":"string"}],"name":"setFallbackURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"newTokenURI","type":"string"}],"name":"setURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"string[]","name":"newTokenURIs","type":"string[]"}],"name":"setURIBatch","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/metadata/IERC1155MetadataEvents":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155MetadataEvents","sourceName":"src/token/ERC1155/facets/metadata/IERC1155MetadataEvents.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"URI","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/metadata/IERC1155MetadataExtra":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155MetadataExtra","sourceName":"src/token/ERC1155/facets/metadata/IERC1155MetadataExtra.sol","abi":[{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURILocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fallbackURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fallbackURILocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLockedTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"uriBatch","outputs":[{"internalType":"string[]","name":"","type":"string[]"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/minting/ERC1155MintByOwner":{"address":{"3":"0x00232A8326af43515C8413A00b49282e25f50017","4":"0x3D8C1631b5666D2E0C9a3D5618d41d4E70DCcb84","rinkeby":"0x3D8C1631b5666D2E0C9a3D5618d41d4E70DCcb84","ropsten":"0x00232A8326af43515C8413A00b49282e25f50017"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155MintByOwner","sourceName":"src/token/ERC1155/facets/minting/ERC1155MintByOwner.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mintByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b50610339806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80635135bec114610030575b600080fd5b61004361003e366004610192565b610045565b005b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146100e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e6572000000604482015260640160405180910390fd5b6040517fb164884b000000000000000000000000000000000000000000000000000000008152309063b164884b9061012b908790879087908790600401610282565b600060405180830381600087803b15801561014557600080fd5b505af1158015610159573d6000803e3d6000fd5b5050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156101a857600080fd5b843573ffffffffffffffffffffffffffffffffffffffff811681146101cc57600080fd5b93506020850135925060408501359150606085013567ffffffffffffffff808211156101f757600080fd5b818701915087601f83011261020b57600080fd5b81358181111561021d5761021d610163565b604051601f8201601f19908116603f0116810190838211818310171561024557610245610163565b816040528281528a602084870101111561025e57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b73ffffffffffffffffffffffffffffffffffffffff8516815260006020858184015284604084015260806060840152835180608085015260005b818110156102d85785810183015185820160a0015282016102bc565b818111156102ea57600060a083870101525b50601f01601f19169290920160a001969550505050505056fea26469706673582212203e7480709fded241f76290028d3a2456f40942830e2cd3f51f94c71f987b0e9164736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80635135bec114610030575b600080fd5b61004361003e366004610192565b610045565b005b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146100e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e6572000000604482015260640160405180910390fd5b6040517fb164884b000000000000000000000000000000000000000000000000000000008152309063b164884b9061012b908790879087908790600401610282565b600060405180830381600087803b15801561014557600080fd5b505af1158015610159573d6000803e3d6000fd5b5050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156101a857600080fd5b843573ffffffffffffffffffffffffffffffffffffffff811681146101cc57600080fd5b93506020850135925060408501359150606085013567ffffffffffffffff808211156101f757600080fd5b818701915087601f83011261020b57600080fd5b81358181111561021d5761021d610163565b604051601f8201601f19908116603f0116810190838211818310171561024557610245610163565b816040528281528a602084870101111561025e57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b73ffffffffffffffffffffffffffffffffffffffff8516815260006020858184015284604084015260806060840152835180608085015260005b818110156102d85785810183015185820160a0015282016102bc565b818111156102ea57600060a083870101525b50601f01601f19169290920160a001969550505050505056fea26469706673582212203e7480709fded241f76290028d3a2456f40942830e2cd3f51f94c71f987b0e9164736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/minting/ERC1155MintByOwnerERC2771":{"address":{"3":"0xBCa9Cd5771322D7BbfabfD4dB816F57195d7B8b1","4":"0xE38322E8201De19c923A0cC16467529a6858174A","rinkeby":"0xE38322E8201De19c923A0cC16467529a6858174A","ropsten":"0xBCa9Cd5771322D7BbfabfD4dB816F57195d7B8b1"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155MintByOwnerERC2771","sourceName":"src/token/ERC1155/facets/minting/ERC1155MintByOwnerERC2771.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mintByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506103b8806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80635135bec114610030575b600080fd5b61004361003e366004610211565b610045565b005b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff16610085610180565b73ffffffffffffffffffffffffffffffffffffffff1614610106576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e6572000000604482015260640160405180910390fd5b6040517fb164884b000000000000000000000000000000000000000000000000000000008152309063b164884b90610148908790879087908790600401610301565b600060405180830381600087803b15801561016257600080fd5b505af1158015610176573d6000803e3d6000fd5b5050505050505050565b600061018a61018f565b905090565b7fdb1d5e345c4903e9a32b6674ecc8b1deaddbbb2551474fb34c9d34becbe7f4205460009073ffffffffffffffffffffffffffffffffffffffff1633036101dd575060131936013560601c90565b503390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806080858703121561022757600080fd5b843573ffffffffffffffffffffffffffffffffffffffff8116811461024b57600080fd5b93506020850135925060408501359150606085013567ffffffffffffffff8082111561027657600080fd5b818701915087601f83011261028a57600080fd5b81358181111561029c5761029c6101e2565b604051601f8201601f19908116603f011681019083821181831017156102c4576102c46101e2565b816040528281528a60208487010111156102dd57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b73ffffffffffffffffffffffffffffffffffffffff8516815260006020858184015284604084015260806060840152835180608085015260005b818110156103575785810183015185820160a00152820161033b565b8181111561036957600060a083870101525b50601f01601f19169290920160a001969550505050505056fea2646970667358221220288de6284c77471571e78fe55ff1f1a66b873d4bb249ae5a897a3a30037eeb0064736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80635135bec114610030575b600080fd5b61004361003e366004610211565b610045565b005b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff16610085610180565b73ffffffffffffffffffffffffffffffffffffffff1614610106576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e6572000000604482015260640160405180910390fd5b6040517fb164884b000000000000000000000000000000000000000000000000000000008152309063b164884b90610148908790879087908790600401610301565b600060405180830381600087803b15801561016257600080fd5b505af1158015610176573d6000803e3d6000fd5b5050505050505050565b600061018a61018f565b905090565b7fdb1d5e345c4903e9a32b6674ecc8b1deaddbbb2551474fb34c9d34becbe7f4205460009073ffffffffffffffffffffffffffffffffffffffff1633036101dd575060131936013560601c90565b503390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806080858703121561022757600080fd5b843573ffffffffffffffffffffffffffffffffffffffff8116811461024b57600080fd5b93506020850135925060408501359150606085013567ffffffffffffffff8082111561027657600080fd5b818701915087601f83011261028a57600080fd5b81358181111561029c5761029c6101e2565b604051601f8201601f19908116603f011681019083821181831017156102c4576102c46101e2565b816040528281528a60208487010111156102dd57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b73ffffffffffffffffffffffffffffffffffffffff8516815260006020858184015284604084015260806060840152835180608085015260005b818110156103575785810183015185820160a00152820161033b565b8181111561036957600060a083870101525b50601f01601f19169290920160a001969550505050505056fea2646970667358221220288de6284c77471571e78fe55ff1f1a66b873d4bb249ae5a897a3a30037eeb0064736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/minting/ERC1155MintByRole":{"address":{"3":"0x3c9BA6fd0b1cd2D3C26a193A760a05E7169e9B5e","4":"0x39bc4AbD6aDD4FE5D0dCcA8778E9fCd8D9a31b76","rinkeby":"0x39bc4AbD6aDD4FE5D0dCcA8778E9fCd8D9a31b76","ropsten":"0x3c9BA6fd0b1cd2D3C26a193A760a05E7169e9B5e"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155MintByRole","sourceName":"src/token/ERC1155/facets/minting/ERC1155MintByRole.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mintByRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b50610740806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806372642f5614610046578063a217fddf1461005b578063d539139314610075575b600080fd5b61005961005436600461046b565b61009c565b005b610063600081565b60405190815260200160405180910390f35b6100637f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66100c681610141565b6040517fb164884b000000000000000000000000000000000000000000000000000000008152309063b164884b906101089088908890889088906004016105b7565b600060405180830381600087803b15801561012257600080fd5b505af1158015610136573d6000803e3d6000fd5b505050505050505050565b61014b813361014e565b50565b60008281527f2e59e4c2e927cdddbb64e181e0668d9a0fa70dd88f94d999cd87d5496a20da626020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166101f8576101ad816101fc565b6101b8836020610225565b6040516020016101c99291906105fc565b60408051601f198184030181529082905262461bcd60e51b82526101ef9160040161067d565b60405180910390fd5b5050565b606061021f73ffffffffffffffffffffffffffffffffffffffff83166014610225565b92915050565b606060006102348360026106a6565b61023f9060026106c5565b67ffffffffffffffff81111561025757610257610455565b6040519080825280601f01601f191660200182016040528015610281576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106102b8576102b86106dd565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061031b5761031b6106dd565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006103578460026106a6565b6103629060016106c5565b90505b60018111156103ff577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106103a3576103a36106dd565b1a60f81b8282815181106103b9576103b96106dd565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936103f8816106f3565b9050610365565b50831561044e5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016101ef565b9392505050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561048157600080fd5b843573ffffffffffffffffffffffffffffffffffffffff811681146104a557600080fd5b93506020850135925060408501359150606085013567ffffffffffffffff808211156104d057600080fd5b818701915087601f8301126104e457600080fd5b8135818111156104f6576104f6610455565b604051601f8201601f19908116603f0116810190838211818310171561051e5761051e610455565b816040528281528a602084870101111561053757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60005b8381101561057657818101518382015260200161055e565b83811115610585576000848401525b50505050565b600081518084526105a381602086016020860161055b565b601f01601f19169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff851681528360208201528260408201526080606082015260006105f2608083018461058b565b9695505050505050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161063481601785016020880161055b565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000601791840191820152835161067181602884016020880161055b565b01602801949350505050565b60208152600061044e602083018461058b565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156106c0576106c0610690565b500290565b600082198211156106d8576106d8610690565b500190565b634e487b7160e01b600052603260045260246000fd5b60008161070257610702610690565b50600019019056fea26469706673582212205192bd73b4ae3f4b62e644ec5a1aa1661738e9639c4b53728ef3ad3add09993564736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100415760003560e01c806372642f5614610046578063a217fddf1461005b578063d539139314610075575b600080fd5b61005961005436600461046b565b61009c565b005b610063600081565b60405190815260200160405180910390f35b6100637f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66100c681610141565b6040517fb164884b000000000000000000000000000000000000000000000000000000008152309063b164884b906101089088908890889088906004016105b7565b600060405180830381600087803b15801561012257600080fd5b505af1158015610136573d6000803e3d6000fd5b505050505050505050565b61014b813361014e565b50565b60008281527f2e59e4c2e927cdddbb64e181e0668d9a0fa70dd88f94d999cd87d5496a20da626020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166101f8576101ad816101fc565b6101b8836020610225565b6040516020016101c99291906105fc565b60408051601f198184030181529082905262461bcd60e51b82526101ef9160040161067d565b60405180910390fd5b5050565b606061021f73ffffffffffffffffffffffffffffffffffffffff83166014610225565b92915050565b606060006102348360026106a6565b61023f9060026106c5565b67ffffffffffffffff81111561025757610257610455565b6040519080825280601f01601f191660200182016040528015610281576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106102b8576102b86106dd565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061031b5761031b6106dd565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006103578460026106a6565b6103629060016106c5565b90505b60018111156103ff577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106103a3576103a36106dd565b1a60f81b8282815181106103b9576103b96106dd565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936103f8816106f3565b9050610365565b50831561044e5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016101ef565b9392505050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561048157600080fd5b843573ffffffffffffffffffffffffffffffffffffffff811681146104a557600080fd5b93506020850135925060408501359150606085013567ffffffffffffffff808211156104d057600080fd5b818701915087601f8301126104e457600080fd5b8135818111156104f6576104f6610455565b604051601f8201601f19908116603f0116810190838211818310171561051e5761051e610455565b816040528281528a602084870101111561053757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60005b8381101561057657818101518382015260200161055e565b83811115610585576000848401525b50505050565b600081518084526105a381602086016020860161055b565b601f01601f19169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff851681528360208201528260408201526080606082015260006105f2608083018461058b565b9695505050505050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161063481601785016020880161055b565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000601791840191820152835161067181602884016020880161055b565b01602801949350505050565b60208152600061044e602083018461058b565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156106c0576106c0610690565b500290565b600082198211156106d8576106d8610690565b500190565b634e487b7160e01b600052603260045260246000fd5b60008161070257610702610690565b50600019019056fea26469706673582212205192bd73b4ae3f4b62e644ec5a1aa1661738e9639c4b53728ef3ad3add09993564736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/minting/ERC1155MintByRoleERC2771":{"address":{"3":"0x6320E3De0548951F6614fF3C1b8F26a1fdAeA208","4":"0x0eD4903a1040Be77dFfD2ae968bC6419e2b4593F","rinkeby":"0x0eD4903a1040Be77dFfD2ae968bC6419e2b4593F","ropsten":"0x6320E3De0548951F6614fF3C1b8F26a1fdAeA208"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155MintByRoleERC2771","sourceName":"src/token/ERC1155/facets/minting/ERC1155MintByRoleERC2771.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mintByRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506107a9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806372642f5614610046578063a217fddf1461005b578063d539139314610075575b600080fd5b6100596100543660046104d4565b61009c565b005b610063600081565b60405190815260200160405180910390f35b6100637f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66100c681610141565b6040517fb164884b000000000000000000000000000000000000000000000000000000008152309063b164884b90610108908890889088908890600401610620565b600060405180830381600087803b15801561012257600080fd5b505af1158015610136573d6000803e3d6000fd5b505050505050505050565b6101528161014d610155565b610164565b50565b600061015f610212565b905090565b60008281527f2e59e4c2e927cdddbb64e181e0668d9a0fa70dd88f94d999cd87d5496a20da626020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661020e576101c381610265565b6101ce83602061028e565b6040516020016101df929190610665565b60408051601f198184030181529082905262461bcd60e51b8252610205916004016106e6565b60405180910390fd5b5050565b7fdb1d5e345c4903e9a32b6674ecc8b1deaddbbb2551474fb34c9d34becbe7f4205460009073ffffffffffffffffffffffffffffffffffffffff163303610260575060131936013560601c90565b503390565b606061028873ffffffffffffffffffffffffffffffffffffffff8316601461028e565b92915050565b6060600061029d83600261070f565b6102a890600261072e565b67ffffffffffffffff8111156102c0576102c06104be565b6040519080825280601f01601f1916602001820160405280156102ea576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061032157610321610746565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061038457610384610746565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006103c084600261070f565b6103cb90600161072e565b90505b6001811115610468577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061040c5761040c610746565b1a60f81b82828151811061042257610422610746565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936104618161075c565b90506103ce565b5083156104b75760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610205565b9392505050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156104ea57600080fd5b843573ffffffffffffffffffffffffffffffffffffffff8116811461050e57600080fd5b93506020850135925060408501359150606085013567ffffffffffffffff8082111561053957600080fd5b818701915087601f83011261054d57600080fd5b81358181111561055f5761055f6104be565b604051601f8201601f19908116603f01168101908382118183101715610587576105876104be565b816040528281528a60208487010111156105a057600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60005b838110156105df5781810151838201526020016105c7565b838111156105ee576000848401525b50505050565b6000815180845261060c8160208601602086016105c4565b601f01601f19169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015282604082015260806060820152600061065b60808301846105f4565b9695505050505050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161069d8160178501602088016105c4565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516106da8160288401602088016105c4565b01602801949350505050565b6020815260006104b760208301846105f4565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615610729576107296106f9565b500290565b60008219821115610741576107416106f9565b500190565b634e487b7160e01b600052603260045260246000fd5b60008161076b5761076b6106f9565b50600019019056fea26469706673582212209bf567503d526d7d91404b1a689812b8d757a746880cf936cca2d446a38b933c64736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100415760003560e01c806372642f5614610046578063a217fddf1461005b578063d539139314610075575b600080fd5b6100596100543660046104d4565b61009c565b005b610063600081565b60405190815260200160405180910390f35b6100637f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66100c681610141565b6040517fb164884b000000000000000000000000000000000000000000000000000000008152309063b164884b90610108908890889088908890600401610620565b600060405180830381600087803b15801561012257600080fd5b505af1158015610136573d6000803e3d6000fd5b505050505050505050565b6101528161014d610155565b610164565b50565b600061015f610212565b905090565b60008281527f2e59e4c2e927cdddbb64e181e0668d9a0fa70dd88f94d999cd87d5496a20da626020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661020e576101c381610265565b6101ce83602061028e565b6040516020016101df929190610665565b60408051601f198184030181529082905262461bcd60e51b8252610205916004016106e6565b60405180910390fd5b5050565b7fdb1d5e345c4903e9a32b6674ecc8b1deaddbbb2551474fb34c9d34becbe7f4205460009073ffffffffffffffffffffffffffffffffffffffff163303610260575060131936013560601c90565b503390565b606061028873ffffffffffffffffffffffffffffffffffffffff8316601461028e565b92915050565b6060600061029d83600261070f565b6102a890600261072e565b67ffffffffffffffff8111156102c0576102c06104be565b6040519080825280601f01601f1916602001820160405280156102ea576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061032157610321610746565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061038457610384610746565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006103c084600261070f565b6103cb90600161072e565b90505b6001811115610468577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061040c5761040c610746565b1a60f81b82828151811061042257610422610746565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936104618161075c565b90506103ce565b5083156104b75760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610205565b9392505050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156104ea57600080fd5b843573ffffffffffffffffffffffffffffffffffffffff8116811461050e57600080fd5b93506020850135925060408501359150606085013567ffffffffffffffff8082111561053957600080fd5b818701915087601f83011261054d57600080fd5b81358181111561055f5761055f6104be565b604051601f8201601f19908116603f01168101908382118183101715610587576105876104be565b816040528281528a60208487010111156105a057600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60005b838110156105df5781810151838201526020016105c7565b838111156105ee576000848401525b50505050565b6000815180845261060c8160208601602086016105c4565b601f01601f19169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015282604082015260806060820152600061065b60808301846105f4565b9695505050505050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161069d8160178501602088016105c4565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516106da8160288401602088016105c4565b01602801949350505050565b6020815260006104b760208301846105f4565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615610729576107296106f9565b500290565b60008219821115610741576107416106f9565b500190565b634e487b7160e01b600052603260045260246000fd5b60008161076b5761076b6106f9565b50600019019056fea26469706673582212209bf567503d526d7d91404b1a689812b8d757a746880cf936cca2d446a38b933c64736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/minting/IERC1155MintByOwner":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155MintByOwner","sourceName":"src/token/ERC1155/facets/minting/IERC1155MintByOwner.sol","abi":[{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mintByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/minting/IERC1155MintByRole":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155MintByRole","sourceName":"src/token/ERC1155/facets/minting/IERC1155MintByRole.sol","abi":[{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mintByRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/sales/ERC1155TieredSales":{"address":{"3":"0x355d2D09CF839D2CBBcdDf29198Fb3460ef0A3F5","4":"0x21c5968a500c87E1116fBf034E131795498d8cBf","rinkeby":"0x21c5968a500c87E1116fBf034E131795498d8cBf","ropsten":"0x355d2D09CF839D2CBBcdDf29198Fb3460ef0A3F5"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155TieredSales","sourceName":"src/token/ERC1155/facets/sales/ERC1155TieredSales.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"eligibleForTier","outputs":[{"internalType":"uint256","name":"maxMintable","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintByTier","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onTierAllowlist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"remainingForTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reservedMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"tierMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"tierToTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tierIds","type":"uint256[]"}],"name":"tierToTokenId","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"tiers","outputs":[{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct ITieredSalesInternal.Tier","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReserved","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"name":"walletMintedByTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b50600160005561133c806100256000396000f3fe6080604052600436106100bc5760003560e01c806353367f081161007457806368c7d37c1161004e57806368c7d37c146102f2578063bd2c18f714610322578063c71b0e1c1461034257600080fd5b806353367f08146102715780635897f878146102bd5780635ea2c91b146102dd57600080fd5b80631123f2ef116100a55780631123f2ef146101ae5780632cb9b2ac1461021057806351607bf41461024457600080fd5b8063039af9eb146100c15780630b81f18014610154575b600080fd5b3480156100cd57600080fd5b506100e16100dc36600461105c565b610376565b60405161014b919060006101008201905082518252602083015160208301526001600160a01b036040840151166040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b60405180910390f35b34801561016057600080fd5b506101a061016f36600461105c565b60009081527f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec67154602052604090205490565b60405190815260200161014b565b3480156101ba57600080fd5b506101a06101c9366004611091565b60009182527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbf602090815260408084206001600160a01b0393909316845291905290205490565b34801561021c57600080fd5b507fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbc546101a0565b34801561025057600080fd5b5061026461025f366004611109565b610460565b60405161014b919061114b565b34801561027d57600080fd5b506101a061028c36600461105c565b60009081527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbe602052604090205490565b3480156102c957600080fd5b506101a06102d836600461105c565b610536565b6102f06102eb36600461118f565b6105ad565b005b3480156102fe57600080fd5b5061031261030d3660046111f0565b6106d7565b604051901515815260200161014b565b34801561032e57600080fd5b506101a061033d3660046111f0565b6106f0565b34801561034e57600080fd5b507fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb546101a0565b6103ca604051806101000160405280600081526020016000815260200160006001600160a01b0316815260200160008152602001600081526020016000801916815260200160008152602001600081525090565b5060009081527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbd60209081526040918290208251610100810184528154815260018201549281019290925260028101546001600160a01b0316928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b606060008267ffffffffffffffff81111561047d5761047d61123b565b6040519080825280602002602001820160405280156104a6578160200160208202803683370190505b50905060005b8381101561052e577f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec6715460008686848181106104e9576104e9611251565b9050602002013581526020019081526020016000205482828151811061051157610511611251565b6020908102919091010152806105268161127d565b9150506104ac565b509392505050565b60007fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb8161056384610723565b60008581526003840160209081526040808320546002870190925282206007015492935090916105939190611296565b9050808210156105a557509392505050565b949350505050565b6002600054036106045760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260005561061685858585856107e2565b60008581527f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec6715460205260408082205481517fb164884b00000000000000000000000000000000000000000000000000000000815233600482015260248101919091526044810187905260806064820152608481018390529051309263b164884b9260a4808201939182900301818387803b1580156106b357600080fd5b505af11580156106c7573d6000803e3d6000fd5b5050600160005550505050505050565b60006106e68686868686610b36565b9695505050505050565b60006106e68686868686610bf2565b7fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb90565b7fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbc547fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb805460009261077491611296565b61077d84610ec4565b6107879190611296565b6000848152600283016020526040902060060154909250156107dc57600083815260038201602090815260408083205460028501909252909120600601546107cf9190611296565b6107d990836112ad565b91505b50919050565b3360006107f28783878787610bf2565b90507fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb818711156108655760405162461bcd60e51b815260206004820152600b60248201527f455843454544535f4d415800000000000000000000000000000000000000000060448201526064016105fb565b61086e88610723565b8711156108bd5760405162461bcd60e51b815260206004820152601260248201527f455843454544535f414c4c4f434154494f4e000000000000000000000000000060448201526064016105fb565b600088815260028201602090815260408083206007015460038501909252909120546108e990896112ad565b11156109375760405162461bcd60e51b815260206004820152601260248201527f455843454544535f414c4c4f434154494f4e000000000000000000000000000060448201526064016105fb565b60008881526002808301602052604090912001546001600160a01b03166109cc57600088815260028201602052604090206003015434906109799089906112c5565b11156109c75760405162461bcd60e51b815260206004820152601360248201527f494e53554646494349454e545f414d4f554e540000000000000000000000000060448201526064016105fb565b610a9b565b600088815260028083016020526040909120908101546003909101546001600160a01b03909116906323b872dd9085903090610a09908c906112c5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015610a75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9991906112e4565b505b600088815260048201602090815260408083206001600160a01b038716845290915281208054899290610acf9084906112ad565b9091555050600088815260038201602052604081208054899290610af49084906112ad565b9091555050600088815260028201602052604090206006015415610b2c5786816001016000828254610b2691906112ad565b90915550505b5050505050505050565b60006106e6838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610b7892506106ff915050565b60008981526002919091016020526040902060050154610bed88886040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b1660208201526034810182905260009060540160405160208183030381529060405280519060200120905092915050565b610fcf565b60008581527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbd60205260408120600401547fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb90610c915760405162461bcd60e51b815260206004820152600a60248201527f4e4f545f4558495354530000000000000000000000000000000000000000000060448201526064016105fb565b6000878152600282016020526040902054421015610cf15760405162461bcd60e51b815260206004820152600b60248201527f4e4f545f5354415254454400000000000000000000000000000000000000000060448201526064016105fb565b6000878152600282016020526040902060010154421115610d545760405162461bcd60e51b815260206004820152600d60248201527f414c52454144595f454e4445440000000000000000000000000000000000000060448201526064016105fb565b60008781526004808301602090815260408084206001600160a01b038b1685528252808420548b8552600286019092529092200154610d939190611296565b600088815260028301602052604090206005015490925015610eba57600087815260048201602090815260408083206001600160a01b038a1684529091529020548511610e225760405162461bcd60e51b815260206004820152600f60248201527f4d415845445f414c4c4f57414e4345000000000000000000000000000000000060448201526064016105fb565b610e2f8787878787610b36565b610e7b5760405162461bcd60e51b815260206004820152600f60248201527f4e4f545f414c4c4f574c4953544544000000000000000000000000000000000060448201526064016105fb565b600087815260048201602090815260408083206001600160a01b038a168452909152812054610eaa9087611296565b905080831115610eb8578092505b505b5095945050505050565b7f744f4bd40000000000000000000000000000000000000000000000000000000060009081527fff923f4a67695a9cdd5da4b8580a5a20edf2183c42aa111dd7fc15dc7bed26406020527f35d3cc196fdbb37c639d9ccf02c0ac54b3a84c388495dbf9ab724144133fc6255460ff16610f405750600019919050565b60008281527f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec6715460209081526040808320548084527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea58352818420547f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea6909352908320549092916105a591611296565b600082610fdc8584610fe5565b14949350505050565b600081815b845181101561052e576110168286838151811061100957611009611251565b602002602001015161102a565b9150806110228161127d565b915050610fea565b6000818310611046576000828152602084905260409020611055565b60008381526020839052604090205b9392505050565b60006020828403121561106e57600080fd5b5035919050565b80356001600160a01b038116811461108c57600080fd5b919050565b600080604083850312156110a457600080fd5b823591506110b460208401611075565b90509250929050565b60008083601f8401126110cf57600080fd5b50813567ffffffffffffffff8111156110e757600080fd5b6020830191508360208260051b850101111561110257600080fd5b9250929050565b6000806020838503121561111c57600080fd5b823567ffffffffffffffff81111561113357600080fd5b61113f858286016110bd565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b8181101561118357835183529284019291840191600101611167565b50909695505050505050565b6000806000806000608086880312156111a757600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff8111156111d357600080fd5b6111df888289016110bd565b969995985093965092949392505050565b60008060008060006080868803121561120857600080fd5b8535945061121860208701611075565b935060408601359250606086013567ffffffffffffffff8111156111d357600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161128f5761128f611267565b5060010190565b6000828210156112a8576112a8611267565b500390565b600082198211156112c0576112c0611267565b500190565b60008160001904831182151516156112df576112df611267565b500290565b6000602082840312156112f657600080fd5b8151801515811461105557600080fdfea2646970667358221220ff18fcae64827d5872da29004e21f4d71f6062827952a1f5e5167e0f17090dc464736f6c634300080f0033","deployedBytecode":"0x6080604052600436106100bc5760003560e01c806353367f081161007457806368c7d37c1161004e57806368c7d37c146102f2578063bd2c18f714610322578063c71b0e1c1461034257600080fd5b806353367f08146102715780635897f878146102bd5780635ea2c91b146102dd57600080fd5b80631123f2ef116100a55780631123f2ef146101ae5780632cb9b2ac1461021057806351607bf41461024457600080fd5b8063039af9eb146100c15780630b81f18014610154575b600080fd5b3480156100cd57600080fd5b506100e16100dc36600461105c565b610376565b60405161014b919060006101008201905082518252602083015160208301526001600160a01b036040840151166040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b60405180910390f35b34801561016057600080fd5b506101a061016f36600461105c565b60009081527f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec67154602052604090205490565b60405190815260200161014b565b3480156101ba57600080fd5b506101a06101c9366004611091565b60009182527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbf602090815260408084206001600160a01b0393909316845291905290205490565b34801561021c57600080fd5b507fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbc546101a0565b34801561025057600080fd5b5061026461025f366004611109565b610460565b60405161014b919061114b565b34801561027d57600080fd5b506101a061028c36600461105c565b60009081527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbe602052604090205490565b3480156102c957600080fd5b506101a06102d836600461105c565b610536565b6102f06102eb36600461118f565b6105ad565b005b3480156102fe57600080fd5b5061031261030d3660046111f0565b6106d7565b604051901515815260200161014b565b34801561032e57600080fd5b506101a061033d3660046111f0565b6106f0565b34801561034e57600080fd5b507fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb546101a0565b6103ca604051806101000160405280600081526020016000815260200160006001600160a01b0316815260200160008152602001600081526020016000801916815260200160008152602001600081525090565b5060009081527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbd60209081526040918290208251610100810184528154815260018201549281019290925260028101546001600160a01b0316928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b606060008267ffffffffffffffff81111561047d5761047d61123b565b6040519080825280602002602001820160405280156104a6578160200160208202803683370190505b50905060005b8381101561052e577f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec6715460008686848181106104e9576104e9611251565b9050602002013581526020019081526020016000205482828151811061051157610511611251565b6020908102919091010152806105268161127d565b9150506104ac565b509392505050565b60007fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb8161056384610723565b60008581526003840160209081526040808320546002870190925282206007015492935090916105939190611296565b9050808210156105a557509392505050565b949350505050565b6002600054036106045760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260005561061685858585856107e2565b60008581527f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec6715460205260408082205481517fb164884b00000000000000000000000000000000000000000000000000000000815233600482015260248101919091526044810187905260806064820152608481018390529051309263b164884b9260a4808201939182900301818387803b1580156106b357600080fd5b505af11580156106c7573d6000803e3d6000fd5b5050600160005550505050505050565b60006106e68686868686610b36565b9695505050505050565b60006106e68686868686610bf2565b7fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb90565b7fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbc547fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb805460009261077491611296565b61077d84610ec4565b6107879190611296565b6000848152600283016020526040902060060154909250156107dc57600083815260038201602090815260408083205460028501909252909120600601546107cf9190611296565b6107d990836112ad565b91505b50919050565b3360006107f28783878787610bf2565b90507fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb818711156108655760405162461bcd60e51b815260206004820152600b60248201527f455843454544535f4d415800000000000000000000000000000000000000000060448201526064016105fb565b61086e88610723565b8711156108bd5760405162461bcd60e51b815260206004820152601260248201527f455843454544535f414c4c4f434154494f4e000000000000000000000000000060448201526064016105fb565b600088815260028201602090815260408083206007015460038501909252909120546108e990896112ad565b11156109375760405162461bcd60e51b815260206004820152601260248201527f455843454544535f414c4c4f434154494f4e000000000000000000000000000060448201526064016105fb565b60008881526002808301602052604090912001546001600160a01b03166109cc57600088815260028201602052604090206003015434906109799089906112c5565b11156109c75760405162461bcd60e51b815260206004820152601360248201527f494e53554646494349454e545f414d4f554e540000000000000000000000000060448201526064016105fb565b610a9b565b600088815260028083016020526040909120908101546003909101546001600160a01b03909116906323b872dd9085903090610a09908c906112c5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015610a75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9991906112e4565b505b600088815260048201602090815260408083206001600160a01b038716845290915281208054899290610acf9084906112ad565b9091555050600088815260038201602052604081208054899290610af49084906112ad565b9091555050600088815260028201602052604090206006015415610b2c5786816001016000828254610b2691906112ad565b90915550505b5050505050505050565b60006106e6838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610b7892506106ff915050565b60008981526002919091016020526040902060050154610bed88886040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b1660208201526034810182905260009060540160405160208183030381529060405280519060200120905092915050565b610fcf565b60008581527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbd60205260408120600401547fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb90610c915760405162461bcd60e51b815260206004820152600a60248201527f4e4f545f4558495354530000000000000000000000000000000000000000000060448201526064016105fb565b6000878152600282016020526040902054421015610cf15760405162461bcd60e51b815260206004820152600b60248201527f4e4f545f5354415254454400000000000000000000000000000000000000000060448201526064016105fb565b6000878152600282016020526040902060010154421115610d545760405162461bcd60e51b815260206004820152600d60248201527f414c52454144595f454e4445440000000000000000000000000000000000000060448201526064016105fb565b60008781526004808301602090815260408084206001600160a01b038b1685528252808420548b8552600286019092529092200154610d939190611296565b600088815260028301602052604090206005015490925015610eba57600087815260048201602090815260408083206001600160a01b038a1684529091529020548511610e225760405162461bcd60e51b815260206004820152600f60248201527f4d415845445f414c4c4f57414e4345000000000000000000000000000000000060448201526064016105fb565b610e2f8787878787610b36565b610e7b5760405162461bcd60e51b815260206004820152600f60248201527f4e4f545f414c4c4f574c4953544544000000000000000000000000000000000060448201526064016105fb565b600087815260048201602090815260408083206001600160a01b038a168452909152812054610eaa9087611296565b905080831115610eb8578092505b505b5095945050505050565b7f744f4bd40000000000000000000000000000000000000000000000000000000060009081527fff923f4a67695a9cdd5da4b8580a5a20edf2183c42aa111dd7fc15dc7bed26406020527f35d3cc196fdbb37c639d9ccf02c0ac54b3a84c388495dbf9ab724144133fc6255460ff16610f405750600019919050565b60008281527f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec6715460209081526040808320548084527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea58352818420547f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea6909352908320549092916105a591611296565b600082610fdc8584610fe5565b14949350505050565b600081815b845181101561052e576110168286838151811061100957611009611251565b602002602001015161102a565b9150806110228161127d565b915050610fea565b6000818310611046576000828152602084905260409020611055565b60008381526020839052604090205b9392505050565b60006020828403121561106e57600080fd5b5035919050565b80356001600160a01b038116811461108c57600080fd5b919050565b600080604083850312156110a457600080fd5b823591506110b460208401611075565b90509250929050565b60008083601f8401126110cf57600080fd5b50813567ffffffffffffffff8111156110e757600080fd5b6020830191508360208260051b850101111561110257600080fd5b9250929050565b6000806020838503121561111c57600080fd5b823567ffffffffffffffff81111561113357600080fd5b61113f858286016110bd565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b8181101561118357835183529284019291840191600101611167565b50909695505050505050565b6000806000806000608086880312156111a757600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff8111156111d357600080fd5b6111df888289016110bd565b969995985093965092949392505050565b60008060008060006080868803121561120857600080fd5b8535945061121860208701611075565b935060408601359250606086013567ffffffffffffffff8111156111d357600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161128f5761128f611267565b5060010190565b6000828210156112a8576112a8611267565b500390565b600082198211156112c0576112c0611267565b500190565b60008160001904831182151516156112df576112df611267565b500290565b6000602082840312156112f657600080fd5b8151801515811461105557600080fdfea2646970667358221220ff18fcae64827d5872da29004e21f4d71f6062827952a1f5e5167e0f17090dc464736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/sales/ERC1155TieredSalesERC2771":{"address":{"3":"0xe9832698308707D18dE429Aaf6260355196CEFB7","4":"0xe492bA2dCb567993f3aE0ea95a5752Ef3Ba2ebb9","rinkeby":"0xe492bA2dCb567993f3aE0ea95a5752Ef3Ba2ebb9","ropsten":"0xe9832698308707D18dE429Aaf6260355196CEFB7"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155TieredSalesERC2771","sourceName":"src/token/ERC1155/facets/sales/ERC1155TieredSalesERC2771.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"eligibleForTier","outputs":[{"internalType":"uint256","name":"maxMintable","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintByTier","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onTierAllowlist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"remainingForTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reservedMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"tierMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"tierToTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tierIds","type":"uint256[]"}],"name":"tierToTokenId","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"tiers","outputs":[{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct ITieredSalesInternal.Tier","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReserved","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"name":"walletMintedByTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b5060016000556113af806100256000396000f3fe6080604052600436106100bc5760003560e01c806353367f081161007457806368c7d37c1161004e57806368c7d37c146102f2578063bd2c18f714610322578063c71b0e1c1461034257600080fd5b806353367f08146102715780635897f878146102bd5780635ea2c91b146102dd57600080fd5b80631123f2ef116100a55780631123f2ef146101ae5780632cb9b2ac1461021057806351607bf41461024457600080fd5b8063039af9eb146100c15780630b81f18014610154575b600080fd5b3480156100cd57600080fd5b506100e16100dc3660046110cf565b610376565b60405161014b919060006101008201905082518252602083015160208301526001600160a01b036040840151166040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b60405180910390f35b34801561016057600080fd5b506101a061016f3660046110cf565b60009081527f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec67154602052604090205490565b60405190815260200161014b565b3480156101ba57600080fd5b506101a06101c9366004611104565b60009182527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbf602090815260408084206001600160a01b0393909316845291905290205490565b34801561021c57600080fd5b507fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbc546101a0565b34801561025057600080fd5b5061026461025f36600461117c565b610460565b60405161014b91906111be565b34801561027d57600080fd5b506101a061028c3660046110cf565b60009081527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbe602052604090205490565b3480156102c957600080fd5b506101a06102d83660046110cf565b610536565b6102f06102eb366004611202565b6105ad565b005b3480156102fe57600080fd5b5061031261030d366004611263565b6106ea565b604051901515815260200161014b565b34801561032e57600080fd5b506101a061033d366004611263565b610703565b34801561034e57600080fd5b507fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb546101a0565b6103ca604051806101000160405280600081526020016000815260200160006001600160a01b0316815260200160008152602001600081526020016000801916815260200160008152602001600081525090565b5060009081527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbd60209081526040918290208251610100810184528154815260018201549281019290925260028101546001600160a01b0316928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b606060008267ffffffffffffffff81111561047d5761047d6112ae565b6040519080825280602002602001820160405280156104a6578160200160208202803683370190505b50905060005b8381101561052e577f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec6715460008686848181106104e9576104e96112c4565b90506020020135815260200190815260200160002054828281518110610511576105116112c4565b602090810291909101015280610526816112f0565b9150506104ac565b509392505050565b60007fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb8161056384610736565b60008581526003840160209081526040808320546002870190925282206007015492935090916105939190611309565b9050808210156105a557509392505050565b949350505050565b6002600054036106045760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260005561061685858585856107f5565b3063b164884b610624610b54565b7f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec67154600089815260209190915260408082205490517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b03909316600484015260248301526044820188905260806064830152608482015260a401600060405180830381600087803b1580156106c657600080fd5b505af11580156106da573d6000803e3d6000fd5b5050600160005550505050505050565b60006106f98686868686610b63565b9695505050505050565b60006106f98686868686610c1f565b7fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb90565b7fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbc547fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb805460009261078791611309565b61079084610ef1565b61079a9190611309565b6000848152600283016020526040902060060154909250156107ef57600083815260038201602090815260408083205460028501909252909120600601546107e29190611309565b6107ec9083611320565b91505b50919050565b60006107ff610b54565b905060006108108783878787610c1f565b90507fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb818711156108835760405162461bcd60e51b815260206004820152600b60248201527f455843454544535f4d415800000000000000000000000000000000000000000060448201526064016105fb565b61088c88610736565b8711156108db5760405162461bcd60e51b815260206004820152601260248201527f455843454544535f414c4c4f434154494f4e000000000000000000000000000060448201526064016105fb565b600088815260028201602090815260408083206007015460038501909252909120546109079089611320565b11156109555760405162461bcd60e51b815260206004820152601260248201527f455843454544535f414c4c4f434154494f4e000000000000000000000000000060448201526064016105fb565b60008881526002808301602052604090912001546001600160a01b03166109ea5760008881526002820160205260409020600301543490610997908990611338565b11156109e55760405162461bcd60e51b815260206004820152601360248201527f494e53554646494349454e545f414d4f554e540000000000000000000000000060448201526064016105fb565b610ab9565b600088815260028083016020526040909120908101546003909101546001600160a01b03909116906323b872dd9085903090610a27908c90611338565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015610a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab79190611357565b505b600088815260048201602090815260408083206001600160a01b038716845290915281208054899290610aed908490611320565b9091555050600088815260038201602052604081208054899290610b12908490611320565b9091555050600088815260028201602052604090206006015415610b4a5786816001016000828254610b449190611320565b90915550505b5050505050505050565b6000610b5e610ffc565b905090565b60006106f9838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610ba59250610712915050565b60008981526002919091016020526040902060050154610c1a88886040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b1660208201526034810182905260009060540160405160208183030381529060405280519060200120905092915050565b611042565b60008581527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbd60205260408120600401547fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb90610cbe5760405162461bcd60e51b815260206004820152600a60248201527f4e4f545f4558495354530000000000000000000000000000000000000000000060448201526064016105fb565b6000878152600282016020526040902054421015610d1e5760405162461bcd60e51b815260206004820152600b60248201527f4e4f545f5354415254454400000000000000000000000000000000000000000060448201526064016105fb565b6000878152600282016020526040902060010154421115610d815760405162461bcd60e51b815260206004820152600d60248201527f414c52454144595f454e4445440000000000000000000000000000000000000060448201526064016105fb565b60008781526004808301602090815260408084206001600160a01b038b1685528252808420548b8552600286019092529092200154610dc09190611309565b600088815260028301602052604090206005015490925015610ee757600087815260048201602090815260408083206001600160a01b038a1684529091529020548511610e4f5760405162461bcd60e51b815260206004820152600f60248201527f4d415845445f414c4c4f57414e4345000000000000000000000000000000000060448201526064016105fb565b610e5c8787878787610b63565b610ea85760405162461bcd60e51b815260206004820152600f60248201527f4e4f545f414c4c4f574c4953544544000000000000000000000000000000000060448201526064016105fb565b600087815260048201602090815260408083206001600160a01b038a168452909152812054610ed79087611309565b905080831115610ee5578092505b505b5095945050505050565b7f744f4bd40000000000000000000000000000000000000000000000000000000060009081527fff923f4a67695a9cdd5da4b8580a5a20edf2183c42aa111dd7fc15dc7bed26406020527f35d3cc196fdbb37c639d9ccf02c0ac54b3a84c388495dbf9ab724144133fc6255460ff16610f6d5750600019919050565b60008281527f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec6715460209081526040808320548084527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea58352818420547f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea6909352908320549092916105a591611309565b7fdb1d5e345c4903e9a32b6674ecc8b1deaddbbb2551474fb34c9d34becbe7f420546000906001600160a01b0316330361103d575060131936013560601c90565b503390565b60008261104f8584611058565b14949350505050565b600081815b845181101561052e576110898286838151811061107c5761107c6112c4565b602002602001015161109d565b915080611095816112f0565b91505061105d565b60008183106110b95760008281526020849052604090206110c8565b60008381526020839052604090205b9392505050565b6000602082840312156110e157600080fd5b5035919050565b80356001600160a01b03811681146110ff57600080fd5b919050565b6000806040838503121561111757600080fd5b82359150611127602084016110e8565b90509250929050565b60008083601f84011261114257600080fd5b50813567ffffffffffffffff81111561115a57600080fd5b6020830191508360208260051b850101111561117557600080fd5b9250929050565b6000806020838503121561118f57600080fd5b823567ffffffffffffffff8111156111a657600080fd5b6111b285828601611130565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156111f6578351835292840192918401916001016111da565b50909695505050505050565b60008060008060006080868803121561121a57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff81111561124657600080fd5b61125288828901611130565b969995985093965092949392505050565b60008060008060006080868803121561127b57600080fd5b8535945061128b602087016110e8565b935060408601359250606086013567ffffffffffffffff81111561124657600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611302576113026112da565b5060010190565b60008282101561131b5761131b6112da565b500390565b60008219821115611333576113336112da565b500190565b6000816000190483118215151615611352576113526112da565b500290565b60006020828403121561136957600080fd5b815180151581146110c857600080fdfea264697066735822122084ea8630b070460108fa4388d0e02fc06325810f20c653ca92da37c48b5e49e264736f6c634300080f0033","deployedBytecode":"0x6080604052600436106100bc5760003560e01c806353367f081161007457806368c7d37c1161004e57806368c7d37c146102f2578063bd2c18f714610322578063c71b0e1c1461034257600080fd5b806353367f08146102715780635897f878146102bd5780635ea2c91b146102dd57600080fd5b80631123f2ef116100a55780631123f2ef146101ae5780632cb9b2ac1461021057806351607bf41461024457600080fd5b8063039af9eb146100c15780630b81f18014610154575b600080fd5b3480156100cd57600080fd5b506100e16100dc3660046110cf565b610376565b60405161014b919060006101008201905082518252602083015160208301526001600160a01b036040840151166040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b60405180910390f35b34801561016057600080fd5b506101a061016f3660046110cf565b60009081527f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec67154602052604090205490565b60405190815260200161014b565b3480156101ba57600080fd5b506101a06101c9366004611104565b60009182527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbf602090815260408084206001600160a01b0393909316845291905290205490565b34801561021c57600080fd5b507fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbc546101a0565b34801561025057600080fd5b5061026461025f36600461117c565b610460565b60405161014b91906111be565b34801561027d57600080fd5b506101a061028c3660046110cf565b60009081527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbe602052604090205490565b3480156102c957600080fd5b506101a06102d83660046110cf565b610536565b6102f06102eb366004611202565b6105ad565b005b3480156102fe57600080fd5b5061031261030d366004611263565b6106ea565b604051901515815260200161014b565b34801561032e57600080fd5b506101a061033d366004611263565b610703565b34801561034e57600080fd5b507fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb546101a0565b6103ca604051806101000160405280600081526020016000815260200160006001600160a01b0316815260200160008152602001600081526020016000801916815260200160008152602001600081525090565b5060009081527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbd60209081526040918290208251610100810184528154815260018201549281019290925260028101546001600160a01b0316928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b606060008267ffffffffffffffff81111561047d5761047d6112ae565b6040519080825280602002602001820160405280156104a6578160200160208202803683370190505b50905060005b8381101561052e577f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec6715460008686848181106104e9576104e96112c4565b90506020020135815260200190815260200160002054828281518110610511576105116112c4565b602090810291909101015280610526816112f0565b9150506104ac565b509392505050565b60007fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb8161056384610736565b60008581526003840160209081526040808320546002870190925282206007015492935090916105939190611309565b9050808210156105a557509392505050565b949350505050565b6002600054036106045760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260005561061685858585856107f5565b3063b164884b610624610b54565b7f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec67154600089815260209190915260408082205490517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b03909316600484015260248301526044820188905260806064830152608482015260a401600060405180830381600087803b1580156106c657600080fd5b505af11580156106da573d6000803e3d6000fd5b5050600160005550505050505050565b60006106f98686868686610b63565b9695505050505050565b60006106f98686868686610c1f565b7fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb90565b7fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbc547fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb805460009261078791611309565b61079084610ef1565b61079a9190611309565b6000848152600283016020526040902060060154909250156107ef57600083815260038201602090815260408083205460028501909252909120600601546107e29190611309565b6107ec9083611320565b91505b50919050565b60006107ff610b54565b905060006108108783878787610c1f565b90507fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb818711156108835760405162461bcd60e51b815260206004820152600b60248201527f455843454544535f4d415800000000000000000000000000000000000000000060448201526064016105fb565b61088c88610736565b8711156108db5760405162461bcd60e51b815260206004820152601260248201527f455843454544535f414c4c4f434154494f4e000000000000000000000000000060448201526064016105fb565b600088815260028201602090815260408083206007015460038501909252909120546109079089611320565b11156109555760405162461bcd60e51b815260206004820152601260248201527f455843454544535f414c4c4f434154494f4e000000000000000000000000000060448201526064016105fb565b60008881526002808301602052604090912001546001600160a01b03166109ea5760008881526002820160205260409020600301543490610997908990611338565b11156109e55760405162461bcd60e51b815260206004820152601360248201527f494e53554646494349454e545f414d4f554e540000000000000000000000000060448201526064016105fb565b610ab9565b600088815260028083016020526040909120908101546003909101546001600160a01b03909116906323b872dd9085903090610a27908c90611338565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015610a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab79190611357565b505b600088815260048201602090815260408083206001600160a01b038716845290915281208054899290610aed908490611320565b9091555050600088815260038201602052604081208054899290610b12908490611320565b9091555050600088815260028201602052604090206006015415610b4a5786816001016000828254610b449190611320565b90915550505b5050505050505050565b6000610b5e610ffc565b905090565b60006106f9838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610ba59250610712915050565b60008981526002919091016020526040902060050154610c1a88886040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b1660208201526034810182905260009060540160405160208183030381529060405280519060200120905092915050565b611042565b60008581527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbd60205260408120600401547fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb90610cbe5760405162461bcd60e51b815260206004820152600a60248201527f4e4f545f4558495354530000000000000000000000000000000000000000000060448201526064016105fb565b6000878152600282016020526040902054421015610d1e5760405162461bcd60e51b815260206004820152600b60248201527f4e4f545f5354415254454400000000000000000000000000000000000000000060448201526064016105fb565b6000878152600282016020526040902060010154421115610d815760405162461bcd60e51b815260206004820152600d60248201527f414c52454144595f454e4445440000000000000000000000000000000000000060448201526064016105fb565b60008781526004808301602090815260408084206001600160a01b038b1685528252808420548b8552600286019092529092200154610dc09190611309565b600088815260028301602052604090206005015490925015610ee757600087815260048201602090815260408083206001600160a01b038a1684529091529020548511610e4f5760405162461bcd60e51b815260206004820152600f60248201527f4d415845445f414c4c4f57414e4345000000000000000000000000000000000060448201526064016105fb565b610e5c8787878787610b63565b610ea85760405162461bcd60e51b815260206004820152600f60248201527f4e4f545f414c4c4f574c4953544544000000000000000000000000000000000060448201526064016105fb565b600087815260048201602090815260408083206001600160a01b038a168452909152812054610ed79087611309565b905080831115610ee5578092505b505b5095945050505050565b7f744f4bd40000000000000000000000000000000000000000000000000000000060009081527fff923f4a67695a9cdd5da4b8580a5a20edf2183c42aa111dd7fc15dc7bed26406020527f35d3cc196fdbb37c639d9ccf02c0ac54b3a84c388495dbf9ab724144133fc6255460ff16610f6d5750600019919050565b60008281527f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec6715460209081526040808320548084527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea58352818420547f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea6909352908320549092916105a591611309565b7fdb1d5e345c4903e9a32b6674ecc8b1deaddbbb2551474fb34c9d34becbe7f420546000906001600160a01b0316330361103d575060131936013560601c90565b503390565b60008261104f8584611058565b14949350505050565b600081815b845181101561052e576110898286838151811061107c5761107c6112c4565b602002602001015161109d565b915080611095816112f0565b91505061105d565b60008183106110b95760008281526020849052604090206110c8565b60008381526020839052604090205b9392505050565b6000602082840312156110e157600080fd5b5035919050565b80356001600160a01b03811681146110ff57600080fd5b919050565b6000806040838503121561111757600080fd5b82359150611127602084016110e8565b90509250929050565b60008083601f84011261114257600080fd5b50813567ffffffffffffffff81111561115a57600080fd5b6020830191508360208260051b850101111561117557600080fd5b9250929050565b6000806020838503121561118f57600080fd5b823567ffffffffffffffff8111156111a657600080fd5b6111b285828601611130565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156111f6578351835292840192918401916001016111da565b50909695505050505050565b60008060008060006080868803121561121a57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff81111561124657600080fd5b61125288828901611130565b969995985093965092949392505050565b60008060008060006080868803121561127b57600080fd5b8535945061128b602087016110e8565b935060408601359250606086013567ffffffffffffffff81111561124657600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611302576113026112da565b5060010190565b60008282101561131b5761131b6112da565b500390565b60008219821115611333576113336112da565b500190565b6000816000190483118215151615611352576113526112da565b500290565b60006020828403121561136957600080fd5b815180151581146110c857600080fdfea264697066735822122084ea8630b070460108fa4388d0e02fc06325810f20c653ca92da37c48b5e49e264736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/sales/ERC1155TieredSalesOwnable":{"address":{"3":"0x73fb9dDfA54EC7d0fecC22c88B8e9E98a2C1bF78","4":"0xD6C73dc3D628BC2f7d422350cEaB79C5f7e878F7","rinkeby":"0xD6C73dc3D628BC2f7d422350cEaB79C5f7e878F7","ropsten":"0x73fb9dDfA54EC7d0fecC22c88B8e9E98a2C1bF78"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155TieredSalesOwnable","sourceName":"src/token/ERC1155/facets/sales/ERC1155TieredSalesOwnable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"configureTierTokenId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tierIds","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"configureTierTokenId","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b5061041f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063bbc2d43d1461003b578063cd07091c14610050575b600080fd5b61004e6100493660046102d2565b610063565b005b61004e61005e366004610340565b61011f565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146100ee5760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064015b60405180910390fd5b60009182527f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec67154602052604090912055565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146101a55760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016100e5565b8281146102405760405162461bcd60e51b815260206004820152604360248201527f4552433131353554696572656453616c65734f776e61626c653a20746965724960448201527f647320616e6420746f6b656e496473206d7573742062652073616d65206c656e60648201527f6774680000000000000000000000000000000000000000000000000000000000608482015260a4016100e5565b60005b838110156102cb5782828281811061025d5761025d6103ac565b9050602002013561028b7f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec6715490565b600087878581811061029f5761029f6103ac565b9050602002013581526020019081526020016000208190555080806102c3906103c2565b915050610243565b5050505050565b600080604083850312156102e557600080fd5b50508035926020909101359150565b60008083601f84011261030657600080fd5b50813567ffffffffffffffff81111561031e57600080fd5b6020830191508360208260051b850101111561033957600080fd5b9250929050565b6000806000806040858703121561035657600080fd5b843567ffffffffffffffff8082111561036e57600080fd5b61037a888389016102f4565b9096509450602087013591508082111561039357600080fd5b506103a0878288016102f4565b95989497509550505050565b634e487b7160e01b600052603260045260246000fd5b6000600182016103e257634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220d3ca763758d0b21b81c8e7afec94207345b71fc6fc05627f79d187dda605d07564736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063bbc2d43d1461003b578063cd07091c14610050575b600080fd5b61004e6100493660046102d2565b610063565b005b61004e61005e366004610340565b61011f565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146100ee5760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064015b60405180910390fd5b60009182527f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec67154602052604090912055565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146101a55760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016100e5565b8281146102405760405162461bcd60e51b815260206004820152604360248201527f4552433131353554696572656453616c65734f776e61626c653a20746965724960448201527f647320616e6420746f6b656e496473206d7573742062652073616d65206c656e60648201527f6774680000000000000000000000000000000000000000000000000000000000608482015260a4016100e5565b60005b838110156102cb5782828281811061025d5761025d6103ac565b9050602002013561028b7f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec6715490565b600087878581811061029f5761029f6103ac565b9050602002013581526020019081526020016000208190555080806102c3906103c2565b915050610243565b5050505050565b600080604083850312156102e557600080fd5b50508035926020909101359150565b60008083601f84011261030657600080fd5b50813567ffffffffffffffff81111561031e57600080fd5b6020830191508360208260051b850101111561033957600080fd5b9250929050565b6000806000806040858703121561035657600080fd5b843567ffffffffffffffff8082111561036e57600080fd5b61037a888389016102f4565b9096509450602087013591508082111561039357600080fd5b506103a0878288016102f4565b95989497509550505050565b634e487b7160e01b600052603260045260246000fd5b6000600182016103e257634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220d3ca763758d0b21b81c8e7afec94207345b71fc6fc05627f79d187dda605d07564736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/sales/ERC1155TieredSalesStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155TieredSalesStorage","sourceName":"src/token/ERC1155/facets/sales/ERC1155TieredSalesStorage.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122081b0052f92ad80bc33de2928513ccf4f563da783a0df12a1923621f83ab01f3964736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122081b0052f92ad80bc33de2928513ccf4f563da783a0df12a1923621f83ab01f3964736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/sales/IERC1155TieredSales":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155TieredSales","sourceName":"src/token/ERC1155/facets/sales/IERC1155TieredSales.sol","abi":[{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"tierToTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tierIds","type":"uint256[]"}],"name":"tierToTokenId","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/sales/IERC1155TieredSalesAdmin":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155TieredSalesAdmin","sourceName":"src/token/ERC1155/facets/sales/IERC1155TieredSalesAdmin.sol","abi":[{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"configureTierTokenId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tierIds","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"configureTierTokenId","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/supply/ERC1155SupplyOwnable":{"address":{"3":"0xD01F2668247FC1c7334591457dc1a8e3C6a5a8E4","4":"0x5ca0011fF1695bd67DB02F4fAEA7328Aa9CF5589","rinkeby":"0x5ca0011fF1695bd67DB02F4fAEA7328Aa9CF5589","ropsten":"0xD01F2668247FC1c7334591457dc1a8e3C6a5a8E4"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155SupplyOwnable","sourceName":"src/token/ERC1155/facets/supply/ERC1155SupplyOwnable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"newValues","type":"uint256[]"}],"name":"setMaxSupplyBatch","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b50610392806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806337da577c1461003b5780636cf6a3fa14610050575b600080fd5b61004e610049366004610245565b610063565b005b61004e61005e3660046102b3565b61011f565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146100ee5760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064015b60405180910390fd5b60009182527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea6602052604090912055565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146101a55760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016100e5565b6101b1848484846101b7565b50505050565b7f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea660005b8481101561023d578383828181106101f5576101f561031f565b905060200201358260008888858181106102115761021161031f565b90506020020135815260200190815260200160002081905550808061023590610335565b9150506101db565b505050505050565b6000806040838503121561025857600080fd5b50508035926020909101359150565b60008083601f84011261027957600080fd5b50813567ffffffffffffffff81111561029157600080fd5b6020830191508360208260051b85010111156102ac57600080fd5b9250929050565b600080600080604085870312156102c957600080fd5b843567ffffffffffffffff808211156102e157600080fd5b6102ed88838901610267565b9096509450602087013591508082111561030657600080fd5b5061031387828801610267565b95989497509550505050565b634e487b7160e01b600052603260045260246000fd5b60006001820161035557634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220aa9584fe3da60424d3ae042b26fb769ec9cbacdfc39991e2785fb68354541b1c64736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c806337da577c1461003b5780636cf6a3fa14610050575b600080fd5b61004e610049366004610245565b610063565b005b61004e61005e3660046102b3565b61011f565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146100ee5760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064015b60405180910390fd5b60009182527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea6602052604090912055565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146101a55760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016100e5565b6101b1848484846101b7565b50505050565b7f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea660005b8481101561023d578383828181106101f5576101f561031f565b905060200201358260008888858181106102115761021161031f565b90506020020135815260200190815260200160002081905550808061023590610335565b9150506101db565b505050505050565b6000806040838503121561025857600080fd5b50508035926020909101359150565b60008083601f84011261027957600080fd5b50813567ffffffffffffffff81111561029157600080fd5b6020830191508360208260051b85010111156102ac57600080fd5b9250929050565b600080600080604085870312156102c957600080fd5b843567ffffffffffffffff808211156102e157600080fd5b6102ed88838901610267565b9096509450602087013591508082111561030657600080fd5b5061031387828801610267565b95989497509550505050565b634e487b7160e01b600052603260045260246000fd5b60006001820161035557634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220aa9584fe3da60424d3ae042b26fb769ec9cbacdfc39991e2785fb68354541b1c64736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/supply/IERC1155SupplyAdmin":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155SupplyAdmin","sourceName":"src/token/ERC1155/facets/supply/IERC1155SupplyAdmin.sol","abi":[{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"newValues","type":"uint256[]"}],"name":"setMaxSupplyBatch","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/IERC1155":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155","sourceName":"src/token/ERC1155/IERC1155.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"status","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/IERC1155Events":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155Events","sourceName":"src/token/ERC1155/IERC1155Events.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/IERC1155Receiver":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155Receiver","sourceName":"src/token/ERC1155/IERC1155Receiver.sol","abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}}}} +{"v1":{"collections/ERC721/extensions/ERC721AutoIdMinterExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721AutoIdMinterExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721AutoIdMinterExtension.sol","abi":[{"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":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/ERC721BulkifyExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721BulkifyExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721BulkifyExtension.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"transferFromBulk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"from","type":"address[]"},{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"transferFromBulk","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/ERC721CollectionMetadataExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721CollectionMetadataExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721CollectionMetadataExtension.sol","abi":[{"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":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/ERC721FreeMintExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721FreeMintExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721FreeMintExtension.sol","abi":[{"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":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintFree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/ERC721LockableExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721LockableExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721LockableExtension.sol","abi":[{"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":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"filterUnlocked","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"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":"tokenIds","type":"uint256[]"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"locked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/ERC721OneOfOneMintExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721OneOfOneMintExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721OneOfOneMintExtension.sol","abi":[{"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":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastFrozenTokenId","type":"uint256"}],"name":"freezeTokenURIs","outputs":[],"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":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastFrozenTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"string[]","name":"tokenURIs","type":"string[]"}],"name":"mintWithTokenURIsByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"string[]","name":"tokenURIs","type":"string[]"}],"name":"mintWithTokenURIsByRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"tokenURI","type":"string"}],"name":"setTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/ERC721OwnerManagedExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721OwnerManagedExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721OwnerManagedExtension.sol","abi":[{"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":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"managementPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeManagementPower","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/ERC721OwnerMintExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721OwnerMintExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721OwnerMintExtension.sol","abi":[{"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":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/ERC721PerTokenMetadataExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721PerTokenMetadataExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721PerTokenMetadataExtension.sol","abi":[{"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":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":"_lastFrozenTokenId","type":"uint256"}],"name":"freezeTokenURIs","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastFrozenTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"tokenURI","type":"string"}],"name":"setTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/ERC721PrefixedMetadataExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721PrefixedMetadataExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721PrefixedMetadataExtension.sol","abi":[{"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":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"freezeTokenURI","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"placeholderURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"string","name":"newValue","type":"string"}],"name":"setPlaceholderURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURIPrefix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURISuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIPrefix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURISuffix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/ERC721PreSaleExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721PreSaleExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721PreSaleExtension.sol","abi":[{"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":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintPreSale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onPreSaleAllowList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","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":[],"name":"preSaleAllowlistMerkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleMaxMintPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSalePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"bytes32","name":"newRoot","type":"bytes32"}],"name":"setAllowlistMerkleRoot","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPreSaleMaxMintPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPreSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"isActive","type":"bool"}],"name":"togglePreSaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/ERC721PublicSaleExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721PublicSaleExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721PublicSaleExtension.sol","abi":[{"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":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintPublicSale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleMaxMintPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSalePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPublicSaleMaxMintPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPublicSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"isActive","type":"bool"}],"name":"togglePublicSaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/ERC721RoleBasedLockableExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721RoleBasedLockableExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721RoleBasedLockableExtension.sol","abi":[{"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":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LOCKER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"filterUnlocked","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasRoleBasedLockableExtension","outputs":[{"internalType":"bool","name":"","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":"tokenIds","type":"uint256[]"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"locked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/ERC721RoleBasedMintExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721RoleBasedMintExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721RoleBasedMintExtension.sol","abi":[{"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":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/ERC721RoyaltyExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721RoyaltyExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721RoyaltyExtension.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"DefaultRoyaltySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"TokenRoyaltyRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"TokenRoyaltySet","type":"event"},{"inputs":[],"name":"defaultRoyalty","outputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getRaribleV2Royalties","outputs":[{"components":[{"internalType":"address payable","name":"account","type":"address"},{"internalType":"uint96","name":"value","type":"uint96"}],"internalType":"struct LibPart.Part[]","name":"result","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenRoyaltiesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getTokenRoyaltyByIndex","outputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyalty","name":"royalty","type":"tuple"}],"name":"setDefaultRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig[]","name":"royaltyConfigs","type":"tuple[]"}],"name":"setTokenRoyalties","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/ERC721TieringExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721TieringExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721TieringExtension.sol","abi":[{"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":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":"tierId","type":"uint256"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct IERC721TieringExtension.Tier","name":"tier","type":"tuple"}],"name":"configureTiering","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tierIds","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct IERC721TieringExtension.Tier[]","name":"_tiers","type":"tuple[]"}],"name":"configureTiering","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"eligibleForTier","outputs":[{"internalType":"uint256","name":"maxMintable","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintByTier","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onTierAllowlist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","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":"tierId","type":"uint256"}],"name":"remainingForTier","outputs":[{"internalType":"uint256","name":"tierRemaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reservedMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tierMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tiers","outputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReserved","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"walletMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"name":"walletMintedByTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721AutoIdMinterExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721AutoIdMinterExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721AutoIdMinterExtension.sol","abi":[{"inputs":[],"name":"freezeMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721BulkifyExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721BulkifyExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721BulkifyExtension.sol","abi":[{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"transferFromBulk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"from","type":"address[]"},{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"transferFromBulk","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721CollectionMetadataExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721CollectionMetadataExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721CollectionMetadataExtension.sol","abi":[{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721FreeMintExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721FreeMintExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721FreeMintExtension.sol","abi":[{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintFree","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721LockableExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721LockableExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721LockableExtension.sol","abi":[{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"locked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721OneOfOneMintExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721OneOfOneMintExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721OneOfOneMintExtension.sol","abi":[{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"string[]","name":"tokenURIs","type":"string[]"}],"name":"mintWithTokenURIsByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"string[]","name":"tokenURIs","type":"string[]"}],"name":"mintWithTokenURIsByRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721OwnerManagedExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721OwnerManagedExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721OwnerManagedExtension.sol","abi":[{"inputs":[],"name":"revokeManagementPower","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721OwnerMintExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721OwnerMintExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721OwnerMintExtension.sol","abi":[{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721PerTokenMetadataExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721PerTokenMetadataExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721PerTokenMetadataExtension.sol","abi":[{"inputs":[{"internalType":"uint256","name":"_lastFrozenTokenId","type":"uint256"}],"name":"freezeTokenURIs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"tokenURI","type":"string"}],"name":"setTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721PrefixedMetadataExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721PrefixedMetadataExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721PrefixedMetadataExtension.sol","abi":[{"inputs":[],"name":"freezeTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"placeholderURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setPlaceholderURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURIPrefix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURISuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIPrefix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURISuffix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721PreSaleExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721PreSaleExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721PreSaleExtension.sol","abi":[{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintPreSale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onPreSaleAllowList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"newRoot","type":"bytes32"}],"name":"setAllowlistMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPreSaleMaxMintPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPreSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isActive","type":"bool"}],"name":"togglePreSaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721PublicSaleExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721PublicSaleExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721PublicSaleExtension.sol","abi":[{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintPublicSale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPublicSaleMaxMintPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPublicSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isActive","type":"bool"}],"name":"togglePublicSaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721RoleBasedLockableExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721RoleBasedLockableExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721RoleBasedLockableExtension.sol","abi":[{"inputs":[],"name":"hasRoleBasedLockableExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721RoleBasedMintExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721RoleBasedMintExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721RoleBasedMintExtension.sol","abi":[{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721RoyaltyExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721RoyaltyExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721RoyaltyExtension.sol","abi":[{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getRaribleV2Royalties","outputs":[{"components":[{"internalType":"address payable","name":"account","type":"address"},{"internalType":"uint96","name":"value","type":"uint96"}],"internalType":"struct LibPart.Part[]","name":"result","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyalty","name":"royalty","type":"tuple"}],"name":"setDefaultRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig[]","name":"royaltyConfigs","type":"tuple[]"}],"name":"setTokenRoyalties","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/extensions/IERC721TieringExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721TieringExtension","sourceName":"contracts/collections/ERC721/extensions/ERC721TieringExtension.sol","abi":[{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"eligibleForTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintByTier","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onTierAllowlist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/presets/ERC721ManagedPrefixedCollection":{"address":{"1":"0x2f6ccd01759b3DB70e15f29fa647873Ed6bD42E3","3":"0xC226F6dFcEb1b2Ae174820de51d077275ceE0E14","4":"0xC5dA76FA5e66Fb9b0e77a9Cb29BA02210D2034bF","5":"0xE949eBA5548cCAfc29612a41916DcAE6a56ed877","25":"0xAd450761261B1C70C7583ff500D291E1A07EE495","56":"0xa79B21B345846224b307212FB7278b2e74Ea3295","66":"0xeeFF78D0184C338E5379F7B16EFbc9Ba3Ae0B42E","97":"0x7Ac4a0cE09D67f1C6Dc25138AdacF8D2195A363F","137":"0x6C2d2c8472Df1522050a71fa0f5868cb00601dbB","250":"0x0e6223dEfF249b5E2Ff966f2f24CE87de1229Df5","280":"0x38a67Eddf0fcdC223a961B5aB96DB0B1C75F262b","4002":"0x0e6223dEfF249b5E2Ff966f2f24CE87de1229Df5","9000":"0x437f9E3A2EF9089Bf3C8A89599b40f62fA2Bb3F9","42161":"0x2759c16F06B07D3Aaea777223068295A0938fe69","43113":"0x933d6a003a024dB27926Ca44bF717658813BA570","43114":"0xC97b52877Aa14987198eA8cABaa678B566baadF1","421611":"0x644962F716f6D75E026Bd9B3b42582C3D1346c4A","arbitrumOne":"0x2759c16F06B07D3Aaea777223068295A0938fe69","arbitrumTestnet":"0x644962F716f6D75E026Bd9B3b42582C3D1346c4A","avalanche":"0xC97b52877Aa14987198eA8cABaa678B566baadF1","avalancheFujiTestnet":"0x933d6a003a024dB27926Ca44bF717658813BA570","bsc":"0xa79B21B345846224b307212FB7278b2e74Ea3295","bscTestnet":"0x7Ac4a0cE09D67f1C6Dc25138AdacF8D2195A363F","cronos":"0xAd450761261B1C70C7583ff500D291E1A07EE495","evmosTestnet":"0x437f9E3A2EF9089Bf3C8A89599b40f62fA2Bb3F9","ftmTestnet":"0x0e6223dEfF249b5E2Ff966f2f24CE87de1229Df5","goerli":"0xE949eBA5548cCAfc29612a41916DcAE6a56ed877","mainnet":"0x2f6ccd01759b3DB70e15f29fa647873Ed6bD42E3","okcMainnet":"0xeeFF78D0184C338E5379F7B16EFbc9Ba3Ae0B42E","opera":"0x0e6223dEfF249b5E2Ff966f2f24CE87de1229Df5","polygon":"0x6C2d2c8472Df1522050a71fa0f5868cb00601dbB","rinkeby":"0xC5dA76FA5e66Fb9b0e77a9Cb29BA02210D2034bF","ropsten":"0xC226F6dFcEb1b2Ae174820de51d077275ceE0E14","zksyncTestnet":"0x38a67Eddf0fcdC223a961B5aB96DB0B1C75F262b"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721ManagedPrefixedCollection","sourceName":"contracts/collections/ERC721/presets/ERC721ManagedPrefixedCollection.sol","abi":[{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"string","name":"placeholderURI","type":"string"},{"internalType":"string","name":"tokenURIPrefix","type":"string"},{"internalType":"address[]","name":"initialHolders","type":"address[]"},{"internalType":"uint256[]","name":"initialAmounts","type":"uint256[]"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"internalType":"address","name":"defaultRoyaltyAddress","type":"address"},{"internalType":"uint16","name":"defaultRoyaltyBps","type":"uint16"},{"internalType":"address","name":"trustedForwarder","type":"address"},{"internalType":"enum LicenseVersion","name":"licenseVersion","type":"uint8"}],"internalType":"struct ERC721ManagedPrefixedCollection.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"DefaultRoyaltySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"TokenRoyaltyRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"TokenRoyaltySet","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"},{"inputs":[],"name":"_trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultRoyalty","outputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"freezeTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getInfo","outputs":[{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"uint256","name":"_totalSupply","type":"uint256"},{"internalType":"uint256","name":"_senderBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getRaribleV2Royalties","outputs":[{"components":[{"internalType":"address payable","name":"account","type":"address"},{"internalType":"uint96","name":"value","type":"uint96"}],"internalType":"struct LibPart.Part[]","name":"result","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenRoyaltiesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getTokenRoyaltyByIndex","outputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"string","name":"placeholderURI","type":"string"},{"internalType":"string","name":"tokenURIPrefix","type":"string"},{"internalType":"address[]","name":"initialHolders","type":"address[]"},{"internalType":"uint256[]","name":"initialAmounts","type":"uint256[]"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"internalType":"address","name":"defaultRoyaltyAddress","type":"address"},{"internalType":"uint16","name":"defaultRoyaltyBps","type":"uint16"},{"internalType":"address","name":"trustedForwarder","type":"address"},{"internalType":"enum LicenseVersion","name":"licenseVersion","type":"uint8"}],"internalType":"struct ERC721ManagedPrefixedCollection.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","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":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersion","outputs":[{"internalType":"enum LicenseVersion","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersionLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"managementPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"placeholderURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeManagementPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyalty","name":"royalty","type":"tuple"}],"name":"setDefaultRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum LicenseVersion","name":"_licenseVersion","type":"uint8"}],"name":"setLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setPlaceholderURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig[]","name":"royaltyConfigs","type":"tuple[]"}],"name":"setTokenRoyalties","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURIPrefix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURISuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"trustedForwarder","type":"address"}],"name":"setTrustedForwarder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIPrefix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURISuffix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"transferFromBulk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"from","type":"address[]"},{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"transferFromBulk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405260006012553480156200001657600080fd5b5060405162004ee638038062004ee68339810160408190526200003991620010ed565b8051602082015160046200005662000050620000b8565b620000d4565b6002805482919060ff19166001836005811115620000785762000078620012b0565b0217905550600390506200008d838262001354565b5060046200009c828262001354565b505050620000b181336200012f60201b60201c565b50620015a9565b6000620000cf620003df60201b620015861760201c565b905090565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620001505750600054600160ff909116105b806200018057506200016d306200041d60201b620015a81760201c565b15801562000180575060005460ff166001145b620001e95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156200020d576000805461ff0019166101001790555b8260c00151518360a001515114620002685760405162461bcd60e51b815260206004820152601b60248201527f4552433732312f494e56414c49445f494e495449414c5f4152475300000000006044820152606401620001e0565b6200027382620000d4565b61016083015162000284906200042c565b8251602084015160408501516200029d92919062000464565b620002b7836060015184608001516200049b60201b60201c565b60e0830151620002c790620004d5565b620002d16200050a565b620002db62000540565b620002f78361010001518461012001516200057460201b60201c565b6101408301516200030890620005aa565b62000312620005df565b60e083015160105560005b8360a001515181101562000392576200037d8460a00151828151811062000348576200034862001420565b60200260200101518560c00151838151811062000369576200036962001420565b60200260200101516200061360201b60201c565b8062000389816200144c565b9150506200031d565b508015620003da576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6002546000906201000090046001600160a01b0316330362000408575060131936013560601c90565b620000cf620006a960201b620015b71760201c565b6001600160a01b03163b151590565b600054610100900460ff16620004565760405162461bcd60e51b8152600401620001e09062001468565b6200046181620006ad565b50565b600054610100900460ff166200048e5760405162461bcd60e51b8152600401620001e09062001468565b620003da83838362000725565b600054610100900460ff16620004c55760405162461bcd60e51b8152600401620001e09062001468565b620004d18282620007b2565b5050565b600054610100900460ff16620004ff5760405162461bcd60e51b8152600401620001e09062001468565b62000461816200084a565b600054610100900460ff16620005345760405162461bcd60e51b8152600401620001e09062001468565b6200053e6200089d565b565b600054610100900460ff166200056a5760405162461bcd60e51b8152600401620001e09062001468565b6200053e620008d9565b600054610100900460ff166200059e5760405162461bcd60e51b8152600401620001e09062001468565b620004d1828262000915565b600054610100900460ff16620005d45760405162461bcd60e51b8152600401620001e09062001468565b6200046181620009b2565b600054610100900460ff16620006095760405162461bcd60e51b8152600401620001e09062001468565b6200053e62000a06565b601054816200062160125490565b6200062d9190620014b3565b11156200066e5760405162461bcd60e51b815260206004820152600e60248201526d455843454544535f535550504c5960901b6044820152606401620001e0565b60005b81811015620003da5760125462000689848262000a42565b6200069362000a64565b5080620006a0816200144c565b91505062000671565b3390565b600054610100900460ff16620006d75760405162461bcd60e51b8152600401620001e09062001468565b620006e963b964efe960e01b62000a7d565b620006fb630c934a3560e31b62000a7d565b6002805482919060ff191660018360058111156200071d576200071d620012b0565b021790555050565b600054610100900460ff166200074f5760405162461bcd60e51b8152600401620001e09062001468565b60096200075d848262001354565b50600a6200076c838262001354565b50600b6200077b828262001354565b506200078e633d96f4ff60e11b62000a7d565b620007a06380ac58cd60e01b62000a7d565b620003da635b5e139f60e01b62000a7d565b600054610100900460ff16620007dc5760405162461bcd60e51b8152600401620001e09062001468565b600c620007ea838262001354565b50600d620007f9828262001354565b50604080518082019091526005815264173539b7b760d91b6020820152600e9062000825908262001354565b5062000838631f2f406b60e01b62000a7d565b620004d1635b5e139f60e01b62000a7d565b600054610100900460ff16620008745760405162461bcd60e51b8152600401620001e09062001468565b60108190556200088b6330f487b560e11b62000a7d565b620004616380ac58cd60e01b62000a7d565b600054610100900460ff16620008c75760405162461bcd60e51b8152600401620001e09062001468565b6200053e631aa1577160e11b62000a7d565b600054610100900460ff16620009035760405162461bcd60e51b8152600401620001e09062001468565b6200053e63948e2d5360e01b62000a7d565b600054610100900460ff166200093f5760405162461bcd60e51b8152600401620001e09062001468565b62000951633a47bf5160e11b62000a7d565b6200096363152a902d60e11b62000a7d565b6200097563c69dbd8f60e01b62000a7d565b6200098763656cb66560e11b62000a7d565b604080518082019091526001600160a01b038316815261ffff82166020820152620003da8162000b01565b600054610100900460ff16620009dc5760405162461bcd60e51b8152600401620001e09062001468565b600280546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b600054610100900460ff1662000a305760405162461bcd60e51b8152600401620001e09062001468565b6200053e632a7c3e4960e01b62000a7d565b620004d182826040518060200160405280600081525062000be760201b60201c565b6012805490600062000a76836200144c565b9190505550565b6001600160e01b0319808216900362000ad95760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e74657266616365206964000000006044820152606401620001e0565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b612710816020015161ffff161062000b4a5760405162461bcd60e51b815260206004820152600b60248201526a496e76616c69642062707360a81b6044820152606401620001e0565b60408051808201825282516001600160a01b03168082526020808501805161ffff169190930181905260148054600160a01b9092026001600160b01b03199092169092171790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe419262000bdc92916001600160a01b0392909216825261ffff16602082015260400190565b60405180910390a150565b62000bf3838362000c21565b62000c02600084848462000d69565b620003da5760405162461bcd60e51b8152600401620001e090620014ce565b6001600160a01b03821662000c795760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401620001e0565b6000818152600560205260409020546001600160a01b03161562000ce05760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401620001e0565b6001600160a01b038216600090815260066020526040812080546001929062000d0b908490620014b3565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600062000d8a846001600160a01b03166200041d60201b620015a81760201c565b1562000e89576001600160a01b03841663150b7a0262000da9620000b8565b8786866040518563ffffffff1660e01b815260040162000dcd949392919062001520565b6020604051808303816000875af192505050801562000e0b575060408051601f3d908101601f1916820190925262000e089181019062001576565b60015b62000e6e573d80801562000e3c576040519150601f19603f3d011682016040523d82523d6000602084013e62000e41565b606091505b50805160000362000e665760405162461bcd60e51b8152600401620001e090620014ce565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905062000e8d565b5060015b949350505050565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b038111828210171562000ed15762000ed162000e95565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000f025762000f0262000e95565b604052919050565b60005b8381101562000f2757818101518382015260200162000f0d565b8381111562000f37576000848401525b50505050565b600082601f83011262000f4f57600080fd5b81516001600160401b0381111562000f6b5762000f6b62000e95565b62000f80601f8201601f191660200162000ed7565b81815284602083860101111562000f9657600080fd5b62000e8d82602083016020870162000f0a565b60006001600160401b0382111562000fc55762000fc562000e95565b5060051b60200190565b80516001600160a01b038116811462000fe757600080fd5b919050565b600082601f83011262000ffe57600080fd5b8151602062001017620010118362000fa9565b62000ed7565b82815260059290921b840181019181810190868411156200103757600080fd5b8286015b848110156200105d576200104f8162000fcf565b83529183019183016200103b565b509695505050505050565b600082601f8301126200107a57600080fd5b815160206200108d620010118362000fa9565b82815260059290921b84018101918181019086841115620010ad57600080fd5b8286015b848110156200105d5780518352918301918301620010b1565b805161ffff8116811462000fe757600080fd5b80516006811062000fe757600080fd5b6000602082840312156200110057600080fd5b81516001600160401b03808211156200111857600080fd5b9083019061018082860312156200112e57600080fd5b6200113862000eab565b8251828111156200114857600080fd5b620011568782860162000f3d565b8252506020830151828111156200116c57600080fd5b6200117a8782860162000f3d565b6020830152506040830151828111156200119357600080fd5b620011a18782860162000f3d565b604083015250606083015182811115620011ba57600080fd5b620011c88782860162000f3d565b606083015250608083015182811115620011e157600080fd5b620011ef8782860162000f3d565b60808301525060a0830151828111156200120857600080fd5b620012168782860162000fec565b60a08301525060c0830151828111156200122f57600080fd5b6200123d8782860162001068565b60c08301525060e083015160e082015261010091506200125f82840162000fcf565b82820152610120915062001275828401620010ca565b8282015261014091506200128b82840162000fcf565b828201526101609150620012a1828401620010dd565b91810191909152949350505050565b634e487b7160e01b600052602160045260246000fd5b600181811c90821680620012db57607f821691505b602082108103620012fc57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003da57600081815260208120601f850160051c810160208610156200132b5750805b601f850160051c820191505b818110156200134c5782815560010162001337565b505050505050565b81516001600160401b0381111562001370576200137062000e95565b6200138881620013818454620012c6565b8462001302565b602080601f831160018114620013c05760008415620013a75750858301515b600019600386901b1c1916600185901b1785556200134c565b600085815260208120601f198616915b82811015620013f157888601518255948401946001909101908401620013d0565b5085821015620014105787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820162001461576200146162001436565b5060010190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008219821115620014c957620014c962001436565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600060018060a01b0380871683528086166020840152508360408301526080606083015282518060808401526200155f8160a085016020870162000f0a565b601f01601f19169190910160a00195945050505050565b6000602082840312156200158957600080fd5b81516001600160e01b031981168114620015a257600080fd5b9392505050565b61392d80620015b96000396000f3fe608060405234801561001057600080fd5b50600436106102825760003560e01c80637e980342116101585780637e980342146105125780638da5cb5b1461051a578063938e3d7b14610522578063948e2d531461053557806395d89b411461053d57806399e0dd7c14610545578063a22cb46514610558578063a341793b1461056b578063a821d90814610573578063a9852bfb14610580578063b88d4fde14610593578063ba4695fd146105a6578063bf9b7a57146105ae578063c0ac9983146105c0578063c29de630146105c8578063c7db2893146105d5578063c87b56dd146105dd578063cad96cca146105f0578063d5abeb0114610610578063da74222814610619578063dbbc853b1461062c578063dd89c6fa14610634578063e8a3d4851461063c578063e985e9c514610644578063ef60ceaf14610657578063f2fde38b1461066a578063f384702f1461067d57600080fd5b806301ffc9a714610287578063059fb6f7146102af5780630653aca5146102c457806306fdde0314610306578063081812fc1461031b578063095ea7b31461033b5780630b4b2ea71461034e578063167446071461036157806318160ddd1461036957806323b872dd1461037b5780632a55205a1461038e5780632fe388be146103c05780633542aee2146103d35780633574a2dd146103e657806342842e0e146103f957806350a5292f1461040c5780635136dcc71461042657806356c022bb14610439578063572b6c05146104525780635a9b0b89146104655780636352211e1461048857806364ed29131461049b5780636f8b44b0146104ae57806370a08231146104c1578063715018a6146104d45780637313cba9146104dc5780637885fdc7146104e4575b600080fd5b61029a610295366004612aa8565b61068a565b60405190151581526020015b60405180910390f35b6102c26102bd366004612bd9565b61069b565b005b6102d76102d2366004612c36565b61073b565b60408051825181526020808401516001600160a01b0316908201529181015161ffff16908201526060016102a6565b61030e6107c0565b6040516102a69190612ca7565b61032e610329366004612c36565b6107cf565b6040516102a69190612cba565b6102c2610349366004612cce565b6107f6565b6102c261035c366004612df2565b610922565b6102c2610b80565b6012545b6040519081526020016102a6565b6102c2610389366004612fa4565b610b97565b6103a161039c366004612fe0565b610bcf565b604080516001600160a01b0390931683526020830191909152016102a6565b6102c26103ce366004613002565b610c94565b6102c26103e1366004612cce565b610df9565b6102c26103f436600461307f565b610e0f565b6102c2610407366004612fa4565b610e23565b6002546104199060ff1681565b6040516102a691906130c9565b6102c26104343660046130f1565b610e3e565b60025461032e906201000090046001600160a01b031681565b61029a610460366004613165565b610ea1565b61046d610ebb565b604080519384526020840192909252908201526060016102a6565b61032e610496366004612c36565b610fb6565b6102c26104a9366004613180565b610feb565b6102c26104bc366004612c36565b611063565b61036d6104cf366004613165565b6110d9565b6102c261115f565b61030e611173565b601454610504906001600160a01b03811690600160a01b900461ffff1682565b6040516102a692919061319b565b61036d611205565b61032e611211565b6102c261053036600461307f565b611226565b6102c261123a565b61030e611251565b6102c261055336600461307f565b61125b565b6102c26105663660046131b8565b611292565b61030e6112a4565b60135461029a9060ff1681565b6102c261058e36600461307f565b6112b6565b6102c26105a13660046131f4565b6112ed565b6102c2611326565b60025461029a90610100900460ff1681565b61030e61133d565b600f5461029a9060ff1681565b61030e61134c565b61030e6105eb366004612c36565b6113ac565b6106036105fe366004612c36565b6113b7565b6040516102a6919061326f565b61036d60105481565b6102c2610627366004613165565b611472565b61030e6114a4565b6102c26114b3565b61030e6114cc565b61029a6106523660046132d0565b6114db565b6102c26106653660046132fa565b6114ee565b6102c2610678366004613165565b611510565b60115461029a9060ff1681565b6000610695826115bb565b92915050565b60005b815181101561073557306001600160a01b03166323b872dd85858585815181106106ca576106ca613312565b60200260200101516040518463ffffffff1660e01b81526004016106f093929190613328565b600060405180830381600087803b15801561070a57600080fd5b505af115801561071e573d6000803e3d6000fd5b50505050808061072d90613362565b91505061069e565b50505050565b60408051606081018252600080825260208201819052918101829052906107636016846115f7565b6000818152601560209081526040918290208251808401845290546001600160a01b03808216835261ffff600160a01b90920482168385019081528551606081018752968752925116928501929092525116908201529392505050565b60606107ca611603565b905090565b60006107da82611612565b506000908152600760205260409020546001600160a01b031690565b600061080182610fb6565b9050806001600160a01b0316836001600160a01b0316036108735760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b0316610885611637565b6001600160a01b031614806108a157506108a181610652611637565b6109135760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161086a565b61091d8383611641565b505050565b600054610100900460ff16158080156109425750600054600160ff909116105b806109635750610951306115a8565b158015610963575060005460ff166001145b6109c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161086a565b6000805460ff1916600117905580156109e9576000805461ff0019166101001790555b8260c00151518360a001515114610a405760405162461bcd60e51b815260206004820152601b60248201527a4552433732312f494e56414c49445f494e495449414c5f4152475360281b604482015260640161086a565b610a49826116af565b610a5783610160015161170a565b610a6e83600001518460200151856040015161173a565b610a808360600151846080015161176c565b610a8d8360e0015161179d565b610a956117cd565b610a9d6117fc565b610ab183610100015184610120015161182b565b610abf83610140015161185c565b610ac761188c565b60e083015160105560005b8360a0015151811015610b3557610b238460a001518281518110610af857610af8613312565b60200260200101518560c001518381518110610b1657610b16613312565b60200260200101516118bb565b80610b2d81613362565b915050610ad2565b50801561091d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b610b88611944565b6011805460ff19166001179055565b610ba8610ba2611637565b826119b3565b610bc45760405162461bcd60e51b815260040161086a9061337b565b61091d838383611a12565b60008281526015602052604081205481906001600160a01b031615610c34576000848152601560205260409020546001600160a01b0381169061271090610c2190600160a01b900461ffff16866133c9565b610c2b91906133fe565b91509150610c8d565b6014546001600160a01b031615801590610c5a5750601454600160a01b900461ffff1615155b15610c86576014546001600160a01b0381169061271090610c2190600160a01b900461ffff16866133c9565b5060009050805b9250929050565b8151835114610cdf5760405162461bcd60e51b815260206004820152601760248201527608ca49e9abea89ebe988a9c8ea890be9a92a69a82a8869604b1b604482015260640161086a565b8051835114610d2d5760405162461bcd60e51b815260206004820152601a60248201527908ca49e9abea89e968a9cbe988a9c8ea890be9a92a69a82a886960331b604482015260640161086a565b60005b815181101561073557306001600160a01b03166323b872dd858381518110610d5a57610d5a613312565b6020026020010151858481518110610d7457610d74613312565b6020026020010151858581518110610d8e57610d8e613312565b60200260200101516040518463ffffffff1660e01b8152600401610db493929190613328565b600060405180830381600087803b158015610dce57600080fd5b505af1158015610de2573d6000803e3d6000fd5b505050508080610df190613362565b915050610d30565b610e01611944565b610e0b82826118bb565b5050565b610e17611944565b600c610e0b8282613494565b61091d838383604051806020016040528060008152506112ed565b610e46611944565b610e0b8282808060200260200160405190810160405280939291908181526020016000905b82821015610e9757610e8860608302860136819003810190613553565b81526020019060010190610e6b565b5050505050611bae565b6002546201000090046001600160a01b0390811691161490565b600080808080610ec9611637565b6001600160a01b031614610f4557306370a08231610ee5611637565b6040518263ffffffff1660e01b8152600401610f019190612cba565b602060405180830381865afa158015610f1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4291906135b7565b90505b601054306001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610faa91906135b7565b90959094509092509050565b6000818152600560205260408120546001600160a01b0316806106955760405162461bcd60e51b815260040161086a906135d0565b610ff3611944565b600254610100900460ff161561103c5760405162461bcd60e51b815260206004820152600e60248201526d131250d15394d157d313d0d2d15160921b604482015260640161086a565b6002805482919060ff1916600183600581111561105b5761105b6130b3565b021790555050565b61106b611944565b60115460ff161561108e5760405162461bcd60e51b815260040161086a90613602565b6012548110156110d45760405162461bcd60e51b81526020600482015260116024820152704c4f5745525f5448414e5f535550504c5960781b604482015260640161086a565b601055565b60006001600160a01b0382166111435760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161086a565b506001600160a01b031660009081526006602052604090205490565b611167611944565b61117160006116af565b565b6060600c805461118290613412565b80601f01602080910402602001604051908101604052809291908181526020018280546111ae90613412565b80156111fb5780601f106111d0576101008083540402835291602001916111fb565b820191906000526020600020905b8154815290600101906020018083116111de57829003601f168201915b5050505050905090565b60006107ca6016611d55565b6000546201000090046001600160a01b031690565b61122e611944565b600b610e0b8282613494565b611242611944565b6013805460ff19166001179055565b60606107ca611d5f565b611263611944565b600f5460ff16156112865760405162461bcd60e51b815260040161086a90613602565b600d610e0b8282613494565b610e0b61129d611637565b8383611d6e565b6002546060906107ca9060ff16611e38565b6112be611944565b600f5460ff16156112e15760405162461bcd60e51b815260040161086a90613602565b600e610e0b8282613494565b6112fe6112f8611637565b836119b3565b61131a5760405162461bcd60e51b815260040161086a9061337b565b61073584848484611fb6565b61132e611944565b600f805460ff19166001179055565b6060600d805461118290613412565b60606040518060600160405280603181526020016138c7603191396002546113879060ff166005811115611382576113826130b3565b611fe9565b604051602001611398929190613622565b604051602081830303815290604052905090565b6060610695826120e9565b604080516001808252818301909252606091816020015b60408051808201909152600080825260208201528152602001906001900390816113ce57505060145481519192506001600160a01b031690829060009061141757611417613312565b60209081029190910101516001600160a01b039190911690526014548151600160a01b90910461ffff1690829060009061145357611453613312565b6020908102919091018101516001600160601b03909216910152919050565b61147a611944565b600280546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6060600e805461118290613412565b6114bb611944565b6002805461ff001916610100179055565b6060600b805461118290613412565b60006114e783836121c5565b9392505050565b6114f6611944565b61150d61150836839003830183613651565b612228565b50565b611518611944565b6001600160a01b03811661157d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161086a565b61150d816116af565b600061159133610ea1565b156115a3575060131936013560601c90565b503390565b6001600160a01b03163b151590565b3390565b60006301ffc9a760e01b6001600160e01b0319831614806106955750506001600160e01b03191660009081526001602052604090205460ff1690565b60006114e783836122d3565b60606009805461118290613412565b61161b816122fd565b61150d5760405162461bcd60e51b815260040161086a906135d0565b60006107ca611586565b600081815260076020526040902080546001600160a01b0319166001600160a01b038416908117909155819061167682610fb6565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff166117315760405162461bcd60e51b815260040161086a906136ab565b61150d8161231a565b600054610100900460ff166117615760405162461bcd60e51b815260040161086a906136ab565b61091d838383612361565b600054610100900460ff166117935760405162461bcd60e51b815260040161086a906136ab565b610e0b82826123df565b600054610100900460ff166117c45760405162461bcd60e51b815260040161086a906136ab565b61150d8161246a565b600054610100900460ff166117f45760405162461bcd60e51b815260040161086a906136ab565b6111716124b6565b600054610100900460ff166118235760405162461bcd60e51b815260040161086a906136ab565b6111716124ed565b600054610100900460ff166118525760405162461bcd60e51b815260040161086a906136ab565b610e0b8282612524565b600054610100900460ff166118835760405162461bcd60e51b815260040161086a906136ab565b61150d816125b4565b600054610100900460ff166118b35760405162461bcd60e51b815260040161086a906136ab565b6111716125db565b601054816118c860125490565b6118d291906136f6565b11156119115760405162461bcd60e51b815260206004820152600e60248201526d455843454544535f535550504c5960901b604482015260640161086a565b60005b8181101561091d576012546119298482612612565b61193161262c565b508061193c81613362565b915050611914565b61194c611637565b6001600160a01b031661195d611211565b6001600160a01b0316146111715760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161086a565b6000806119bf83610fb6565b9050806001600160a01b0316846001600160a01b031614806119e657506119e681856114db565b80611a0a5750836001600160a01b03166119ff846107cf565b6001600160a01b0316145b949350505050565b826001600160a01b0316611a2582610fb6565b6001600160a01b031614611a895760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161086a565b6001600160a01b038216611aeb5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161086a565b611af6600082611641565b6001600160a01b0383166000908152600660205260408120805460019290611b1f90849061370e565b90915550506001600160a01b0382166000908152600660205260408120805460019290611b4d9084906136f6565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60005b8151811015610e0b576000828281518110611bce57611bce613312565b60200260200101519050612710816040015161ffff1610611c015760405162461bcd60e51b815260040161086a90613725565b60208101516001600160a01b0316611c7a578051600090815260156020526040902080546001600160b01b03191690558051611c3f90601690612643565b5080516040519081527fa2870857763bd9ae76c957f869f16b31c18dd3bb4c7b4d3a4496dc5c57c657f99060200160405180910390a1611d42565b6040805180820182526020808401516001600160a01b0390811683528484015161ffff90811683850190815286516000908152601590945294909220925183549451909216600160a01b026001600160b01b03199094169116179190911790558051611ce89060169061264f565b50805160208083015160408085015181519485526001600160a01b039092169284019290925261ffff1682820152517f389b70fb0887f01e83784eb1c4c589f740eca53b00ed0f45e41db5d079719abb9181900360600190a15b5080611d4d81613362565b915050611bb1565b6000610695825490565b6060600a805461118290613412565b816001600160a01b0316836001600160a01b031603611dcb5760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b604482015260640161086a565b6001600160a01b03838116600081815260086020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60606006826005811115611e4e57611e4e6130b3565b60ff161115611e5c57600080fd5b816005811115611e6e57611e6e6130b3565b600003611e9857505060408051808201909152600781526604342455f4343360cc1b602082015290565b816005811115611eaa57611eaa6130b3565b600103611ed457505060408051808201909152600781526621a122afa2a1a960c91b602082015290565b816005811115611ee657611ee66130b3565b600203611f1157505060408051808201909152600881526721a122afa722a1a960c11b602082015290565b816005811115611f2357611f236130b3565b600303611f5157505060408051808201909152600b81526a4342455f4e4543525f485360a81b602082015290565b816005811115611f6357611f636130b3565b600403611f8c57505060408051808201909152600681526521a122afa82960d11b602082015290565b50506040805180820190915260098152684342455f50525f485360b81b602082015290565b919050565b611fc1848484611a12565b611fcd8484848461265b565b6107355760405162461bcd60e51b815260040161086a9061374a565b6060816000036120105750506040805180820190915260018152600360fc1b602082015290565b8160005b811561203a578061202481613362565b91506120339050600a836133fe565b9150612014565b6000816001600160401b0381111561205457612054612adc565b6040519080825280601f01601f19166020018201604052801561207e576020820181803683370190505b5090505b8415611a0a5761209360018361370e565b91506120a0600a8661379c565b6120ab9060306136f6565b60f81b8183815181106120c0576120c0613312565b60200101906001600160f81b031916908160001a9053506120e2600a866133fe565b9450612082565b60606000600d80546120fa90613412565b90501161219157600c805461210e90613412565b80601f016020809104026020016040519081016040528092919081815260200182805461213a90613412565b80156121875780601f1061215c57610100808354040283529160200191612187565b820191906000526020600020905b81548152906001019060200180831161216a57829003601f168201915b5050505050610695565b600d61219c83611fe9565b600e6040516020016121b093929190613823565b60405160208183030381529060405292915050565b60135460009060ff166121fa576121da611211565b6001600160a01b0316826001600160a01b0316036121fa57506001610695565b6001600160a01b0380841660009081526008602090815260408083209386168352929052205460ff166114e7565b612710816020015161ffff16106122515760405162461bcd60e51b815260040161086a90613725565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601480546001600160b01b031916909217600160a01b9091021790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe41926122c8929161319b565b60405180910390a150565b60008260000182815481106122ea576122ea613312565b9060005260206000200154905092915050565b6000908152600560205260409020546001600160a01b0316151590565b600054610100900460ff166123415760405162461bcd60e51b815260040161086a906136ab565b61235163b964efe960e01b61276a565b61103c630c934a3560e31b61276a565b600054610100900460ff166123885760405162461bcd60e51b815260040161086a906136ab565b60096123948482613494565b50600a6123a18382613494565b50600b6123ae8282613494565b506123bf633d96f4ff60e11b61276a565b6123cf6380ac58cd60e01b61276a565b61091d635b5e139f60e01b61276a565b600054610100900460ff166124065760405162461bcd60e51b815260040161086a906136ab565b600c6124128382613494565b50600d61241f8282613494565b50604080518082019091526005815264173539b7b760d91b6020820152600e906124499082613494565b5061245a631f2f406b60e01b61276a565b610e0b635b5e139f60e01b61276a565b600054610100900460ff166124915760405162461bcd60e51b815260040161086a906136ab565b60108190556124a66330f487b560e11b61276a565b61150d6380ac58cd60e01b61276a565b600054610100900460ff166124dd5760405162461bcd60e51b815260040161086a906136ab565b611171631aa1577160e11b61276a565b600054610100900460ff166125145760405162461bcd60e51b815260040161086a906136ab565b61117163948e2d5360e01b61276a565b600054610100900460ff1661254b5760405162461bcd60e51b815260040161086a906136ab565b61255b633a47bf5160e11b61276a565b61256b63152a902d60e11b61276a565b61257b63c69dbd8f60e01b61276a565b61258b63656cb66560e11b61276a565b604080518082019091526001600160a01b038316815261ffff8216602082015261091d81612228565b600054610100900460ff1661147a5760405162461bcd60e51b815260040161086a906136ab565b600054610100900460ff166126025760405162461bcd60e51b815260040161086a906136ab565b611171632a7c3e4960e01b61276a565b610e0b8282604051806020016040528060008152506127eb565b6012805490600061263c83613362565b9190505550565b60006114e7838361281e565b60006114e78383612911565b600061266f846001600160a01b03166115a8565b1561275f57836001600160a01b031663150b7a0261268b611637565b8786866040518563ffffffff1660e01b81526004016126ad9493929190613856565b6020604051808303816000875af19250505080156126e8575060408051601f3d908101601f191682019092526126e591810190613893565b60015b612745573d808015612716576040519150601f19603f3d011682016040523d82523d6000602084013e61271b565b606091505b50805160000361273d5760405162461bcd60e51b815260040161086a9061374a565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611a0a565b506001949350505050565b6001600160e01b031980821690036127c35760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b604482015260640161086a565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b6127f58383612960565b612802600084848461265b565b61091d5760405162461bcd60e51b815260040161086a9061374a565b6000818152600183016020526040812054801561290757600061284260018361370e565b85549091506000906128569060019061370e565b90508181146128bb57600086600001828154811061287657612876613312565b906000526020600020015490508087600001848154811061289957612899613312565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806128cc576128cc6138b0565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610695565b6000915050610695565b600081815260018301602052604081205461295857508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610695565b506000610695565b6001600160a01b0382166129b65760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161086a565b6129bf816122fd565b15612a0b5760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b604482015260640161086a565b6001600160a01b0382166000908152600660205260408120805460019290612a349084906136f6565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b03198116811461150d57600080fd5b600060208284031215612aba57600080fd5b81356114e781612a92565b80356001600160a01b0381168114611fb157600080fd5b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b0381118282101715612b1557612b15612adc565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612b4357612b43612adc565b604052919050565b60006001600160401b03821115612b6457612b64612adc565b5060051b60200190565b600082601f830112612b7f57600080fd5b81356020612b94612b8f83612b4b565b612b1b565b82815260059290921b84018101918181019086841115612bb357600080fd5b8286015b84811015612bce5780358352918301918301612bb7565b509695505050505050565b600080600060608486031215612bee57600080fd5b612bf784612ac5565b9250612c0560208501612ac5565b915060408401356001600160401b03811115612c2057600080fd5b612c2c86828701612b6e565b9150509250925092565b600060208284031215612c4857600080fd5b5035919050565b60005b83811015612c6a578181015183820152602001612c52565b838111156107355750506000910152565b60008151808452612c93816020860160208601612c4f565b601f01601f19169290920160200192915050565b6020815260006114e76020830184612c7b565b6001600160a01b0391909116815260200190565b60008060408385031215612ce157600080fd5b612cea83612ac5565b946020939093013593505050565b60006001600160401b03831115612d1157612d11612adc565b612d24601f8401601f1916602001612b1b565b9050828152838383011115612d3857600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6057600080fd5b6114e783833560208501612cf8565b600082601f830112612d8057600080fd5b81356020612d90612b8f83612b4b565b82815260059290921b84018101918181019086841115612daf57600080fd5b8286015b84811015612bce57612dc481612ac5565b8352918301918301612db3565b803561ffff81168114611fb157600080fd5b803560068110611fb157600080fd5b60008060408385031215612e0557600080fd5b82356001600160401b0380821115612e1c57600080fd5b908401906101808287031215612e3157600080fd5b612e39612af2565b823582811115612e4857600080fd5b612e5488828601612d4f565b825250602083013582811115612e6957600080fd5b612e7588828601612d4f565b602083015250604083013582811115612e8d57600080fd5b612e9988828601612d4f565b604083015250606083013582811115612eb157600080fd5b612ebd88828601612d4f565b606083015250608083013582811115612ed557600080fd5b612ee188828601612d4f565b60808301525060a083013582811115612ef957600080fd5b612f0588828601612d6f565b60a08301525060c083013582811115612f1d57600080fd5b612f2988828601612b6e565b60c08301525060e083013560e08201526101009150612f49828401612ac5565b828201526101209150612f5d828401612dd1565b828201526101409150612f71828401612ac5565b828201526101609150612f85828401612de3565b82820152809450505050612f9b60208401612ac5565b90509250929050565b600080600060608486031215612fb957600080fd5b612fc284612ac5565b9250612fd060208501612ac5565b9150604084013590509250925092565b60008060408385031215612ff357600080fd5b50508035926020909101359150565b60008060006060848603121561301757600080fd5b83356001600160401b038082111561302e57600080fd5b61303a87838801612d6f565b9450602086013591508082111561305057600080fd5b61305c87838801612d6f565b9350604086013591508082111561307257600080fd5b50612c2c86828701612b6e565b60006020828403121561309157600080fd5b81356001600160401b038111156130a757600080fd5b611a0a84828501612d4f565b634e487b7160e01b600052602160045260246000fd5b60208101600683106130eb57634e487b7160e01b600052602160045260246000fd5b91905290565b6000806020838503121561310457600080fd5b82356001600160401b038082111561311b57600080fd5b818501915085601f83011261312f57600080fd5b81358181111561313e57600080fd5b86602060608302850101111561315357600080fd5b60209290920196919550909350505050565b60006020828403121561317757600080fd5b6114e782612ac5565b60006020828403121561319257600080fd5b6114e782612de3565b6001600160a01b0392909216825261ffff16602082015260400190565b600080604083850312156131cb57600080fd5b6131d483612ac5565b9150602083013580151581146131e957600080fd5b809150509250929050565b6000806000806080858703121561320a57600080fd5b61321385612ac5565b935061322160208601612ac5565b92506040850135915060608501356001600160401b0381111561324357600080fd5b8501601f8101871361325457600080fd5b61326387823560208401612cf8565b91505092959194509250565b602080825282518282018190526000919060409081850190868401855b828110156132c357815180516001600160a01b031685528601516001600160601b031686850152928401929085019060010161328c565b5091979650505050505050565b600080604083850312156132e357600080fd5b6132ec83612ac5565b9150612f9b60208401612ac5565b60006040828403121561330c57600080fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b600052601160045260246000fd5b6000600182016133745761337461334c565b5060010190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b60008160001904831182151516156133e3576133e361334c565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261340d5761340d6133e8565b500490565b600181811c9082168061342657607f821691505b60208210810361330c57634e487b7160e01b600052602260045260246000fd5b601f82111561091d57600081815260208120601f850160051c8101602086101561346d5750805b601f850160051c820191505b8181101561348c57828155600101613479565b505050505050565b81516001600160401b038111156134ad576134ad612adc565b6134c1816134bb8454613412565b84613446565b602080601f8311600181146134f657600084156134de5750858301515b600019600386901b1c1916600185901b17855561348c565b600085815260208120601f198616915b8281101561352557888601518255948401946001909101908401613506565b50858210156135435787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060828403121561356557600080fd5b604051606081018181106001600160401b038211171561358757613587612adc565b6040528235815261359a60208401612ac5565b60208201526135ab60408401612dd1565b60408201529392505050565b6000602082840312156135c957600080fd5b5051919050565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b602080825260069082015265232927ad22a760d11b604082015260600190565b60008351613634818460208801612c4f565b835190830190613648818360208801612c4f565b01949350505050565b60006040828403121561366357600080fd5b604051604081018181106001600160401b038211171561368557613685612adc565b60405261369183612ac5565b815261369f60208401612dd1565b60208201529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600082198211156137095761370961334c565b500190565b6000828210156137205761372061334c565b500390565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6000826137ab576137ab6133e8565b500690565b600081546137bd81613412565b600182811680156137d557600181146137ea57613819565b60ff1984168752821515830287019450613819565b8560005260208060002060005b858110156138105781548a8201529084019082016137f7565b50505082870194505b5050505092915050565b600061382f82866137b0565b845161383f818360208901612c4f565b61384b818301866137b0565b979650505050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061388990830184612c7b565b9695505050505050565b6000602082840312156138a557600080fd5b81516114e781612a92565b634e487b7160e01b600052603160045260246000fdfe61723a2f2f5f44396b4e3157724e576243713535425341475262544234625333763851415054596d42546853625833412fa2646970667358221220d5e8b8ddf78359b0b5fd06e30f8258d5154e8f267c23e93443223f5494880a9764736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106102825760003560e01c80637e980342116101585780637e980342146105125780638da5cb5b1461051a578063938e3d7b14610522578063948e2d531461053557806395d89b411461053d57806399e0dd7c14610545578063a22cb46514610558578063a341793b1461056b578063a821d90814610573578063a9852bfb14610580578063b88d4fde14610593578063ba4695fd146105a6578063bf9b7a57146105ae578063c0ac9983146105c0578063c29de630146105c8578063c7db2893146105d5578063c87b56dd146105dd578063cad96cca146105f0578063d5abeb0114610610578063da74222814610619578063dbbc853b1461062c578063dd89c6fa14610634578063e8a3d4851461063c578063e985e9c514610644578063ef60ceaf14610657578063f2fde38b1461066a578063f384702f1461067d57600080fd5b806301ffc9a714610287578063059fb6f7146102af5780630653aca5146102c457806306fdde0314610306578063081812fc1461031b578063095ea7b31461033b5780630b4b2ea71461034e578063167446071461036157806318160ddd1461036957806323b872dd1461037b5780632a55205a1461038e5780632fe388be146103c05780633542aee2146103d35780633574a2dd146103e657806342842e0e146103f957806350a5292f1461040c5780635136dcc71461042657806356c022bb14610439578063572b6c05146104525780635a9b0b89146104655780636352211e1461048857806364ed29131461049b5780636f8b44b0146104ae57806370a08231146104c1578063715018a6146104d45780637313cba9146104dc5780637885fdc7146104e4575b600080fd5b61029a610295366004612aa8565b61068a565b60405190151581526020015b60405180910390f35b6102c26102bd366004612bd9565b61069b565b005b6102d76102d2366004612c36565b61073b565b60408051825181526020808401516001600160a01b0316908201529181015161ffff16908201526060016102a6565b61030e6107c0565b6040516102a69190612ca7565b61032e610329366004612c36565b6107cf565b6040516102a69190612cba565b6102c2610349366004612cce565b6107f6565b6102c261035c366004612df2565b610922565b6102c2610b80565b6012545b6040519081526020016102a6565b6102c2610389366004612fa4565b610b97565b6103a161039c366004612fe0565b610bcf565b604080516001600160a01b0390931683526020830191909152016102a6565b6102c26103ce366004613002565b610c94565b6102c26103e1366004612cce565b610df9565b6102c26103f436600461307f565b610e0f565b6102c2610407366004612fa4565b610e23565b6002546104199060ff1681565b6040516102a691906130c9565b6102c26104343660046130f1565b610e3e565b60025461032e906201000090046001600160a01b031681565b61029a610460366004613165565b610ea1565b61046d610ebb565b604080519384526020840192909252908201526060016102a6565b61032e610496366004612c36565b610fb6565b6102c26104a9366004613180565b610feb565b6102c26104bc366004612c36565b611063565b61036d6104cf366004613165565b6110d9565b6102c261115f565b61030e611173565b601454610504906001600160a01b03811690600160a01b900461ffff1682565b6040516102a692919061319b565b61036d611205565b61032e611211565b6102c261053036600461307f565b611226565b6102c261123a565b61030e611251565b6102c261055336600461307f565b61125b565b6102c26105663660046131b8565b611292565b61030e6112a4565b60135461029a9060ff1681565b6102c261058e36600461307f565b6112b6565b6102c26105a13660046131f4565b6112ed565b6102c2611326565b60025461029a90610100900460ff1681565b61030e61133d565b600f5461029a9060ff1681565b61030e61134c565b61030e6105eb366004612c36565b6113ac565b6106036105fe366004612c36565b6113b7565b6040516102a6919061326f565b61036d60105481565b6102c2610627366004613165565b611472565b61030e6114a4565b6102c26114b3565b61030e6114cc565b61029a6106523660046132d0565b6114db565b6102c26106653660046132fa565b6114ee565b6102c2610678366004613165565b611510565b60115461029a9060ff1681565b6000610695826115bb565b92915050565b60005b815181101561073557306001600160a01b03166323b872dd85858585815181106106ca576106ca613312565b60200260200101516040518463ffffffff1660e01b81526004016106f093929190613328565b600060405180830381600087803b15801561070a57600080fd5b505af115801561071e573d6000803e3d6000fd5b50505050808061072d90613362565b91505061069e565b50505050565b60408051606081018252600080825260208201819052918101829052906107636016846115f7565b6000818152601560209081526040918290208251808401845290546001600160a01b03808216835261ffff600160a01b90920482168385019081528551606081018752968752925116928501929092525116908201529392505050565b60606107ca611603565b905090565b60006107da82611612565b506000908152600760205260409020546001600160a01b031690565b600061080182610fb6565b9050806001600160a01b0316836001600160a01b0316036108735760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b0316610885611637565b6001600160a01b031614806108a157506108a181610652611637565b6109135760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161086a565b61091d8383611641565b505050565b600054610100900460ff16158080156109425750600054600160ff909116105b806109635750610951306115a8565b158015610963575060005460ff166001145b6109c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161086a565b6000805460ff1916600117905580156109e9576000805461ff0019166101001790555b8260c00151518360a001515114610a405760405162461bcd60e51b815260206004820152601b60248201527a4552433732312f494e56414c49445f494e495449414c5f4152475360281b604482015260640161086a565b610a49826116af565b610a5783610160015161170a565b610a6e83600001518460200151856040015161173a565b610a808360600151846080015161176c565b610a8d8360e0015161179d565b610a956117cd565b610a9d6117fc565b610ab183610100015184610120015161182b565b610abf83610140015161185c565b610ac761188c565b60e083015160105560005b8360a0015151811015610b3557610b238460a001518281518110610af857610af8613312565b60200260200101518560c001518381518110610b1657610b16613312565b60200260200101516118bb565b80610b2d81613362565b915050610ad2565b50801561091d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b610b88611944565b6011805460ff19166001179055565b610ba8610ba2611637565b826119b3565b610bc45760405162461bcd60e51b815260040161086a9061337b565b61091d838383611a12565b60008281526015602052604081205481906001600160a01b031615610c34576000848152601560205260409020546001600160a01b0381169061271090610c2190600160a01b900461ffff16866133c9565b610c2b91906133fe565b91509150610c8d565b6014546001600160a01b031615801590610c5a5750601454600160a01b900461ffff1615155b15610c86576014546001600160a01b0381169061271090610c2190600160a01b900461ffff16866133c9565b5060009050805b9250929050565b8151835114610cdf5760405162461bcd60e51b815260206004820152601760248201527608ca49e9abea89ebe988a9c8ea890be9a92a69a82a8869604b1b604482015260640161086a565b8051835114610d2d5760405162461bcd60e51b815260206004820152601a60248201527908ca49e9abea89e968a9cbe988a9c8ea890be9a92a69a82a886960331b604482015260640161086a565b60005b815181101561073557306001600160a01b03166323b872dd858381518110610d5a57610d5a613312565b6020026020010151858481518110610d7457610d74613312565b6020026020010151858581518110610d8e57610d8e613312565b60200260200101516040518463ffffffff1660e01b8152600401610db493929190613328565b600060405180830381600087803b158015610dce57600080fd5b505af1158015610de2573d6000803e3d6000fd5b505050508080610df190613362565b915050610d30565b610e01611944565b610e0b82826118bb565b5050565b610e17611944565b600c610e0b8282613494565b61091d838383604051806020016040528060008152506112ed565b610e46611944565b610e0b8282808060200260200160405190810160405280939291908181526020016000905b82821015610e9757610e8860608302860136819003810190613553565b81526020019060010190610e6b565b5050505050611bae565b6002546201000090046001600160a01b0390811691161490565b600080808080610ec9611637565b6001600160a01b031614610f4557306370a08231610ee5611637565b6040518263ffffffff1660e01b8152600401610f019190612cba565b602060405180830381865afa158015610f1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4291906135b7565b90505b601054306001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610faa91906135b7565b90959094509092509050565b6000818152600560205260408120546001600160a01b0316806106955760405162461bcd60e51b815260040161086a906135d0565b610ff3611944565b600254610100900460ff161561103c5760405162461bcd60e51b815260206004820152600e60248201526d131250d15394d157d313d0d2d15160921b604482015260640161086a565b6002805482919060ff1916600183600581111561105b5761105b6130b3565b021790555050565b61106b611944565b60115460ff161561108e5760405162461bcd60e51b815260040161086a90613602565b6012548110156110d45760405162461bcd60e51b81526020600482015260116024820152704c4f5745525f5448414e5f535550504c5960781b604482015260640161086a565b601055565b60006001600160a01b0382166111435760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161086a565b506001600160a01b031660009081526006602052604090205490565b611167611944565b61117160006116af565b565b6060600c805461118290613412565b80601f01602080910402602001604051908101604052809291908181526020018280546111ae90613412565b80156111fb5780601f106111d0576101008083540402835291602001916111fb565b820191906000526020600020905b8154815290600101906020018083116111de57829003601f168201915b5050505050905090565b60006107ca6016611d55565b6000546201000090046001600160a01b031690565b61122e611944565b600b610e0b8282613494565b611242611944565b6013805460ff19166001179055565b60606107ca611d5f565b611263611944565b600f5460ff16156112865760405162461bcd60e51b815260040161086a90613602565b600d610e0b8282613494565b610e0b61129d611637565b8383611d6e565b6002546060906107ca9060ff16611e38565b6112be611944565b600f5460ff16156112e15760405162461bcd60e51b815260040161086a90613602565b600e610e0b8282613494565b6112fe6112f8611637565b836119b3565b61131a5760405162461bcd60e51b815260040161086a9061337b565b61073584848484611fb6565b61132e611944565b600f805460ff19166001179055565b6060600d805461118290613412565b60606040518060600160405280603181526020016138c7603191396002546113879060ff166005811115611382576113826130b3565b611fe9565b604051602001611398929190613622565b604051602081830303815290604052905090565b6060610695826120e9565b604080516001808252818301909252606091816020015b60408051808201909152600080825260208201528152602001906001900390816113ce57505060145481519192506001600160a01b031690829060009061141757611417613312565b60209081029190910101516001600160a01b039190911690526014548151600160a01b90910461ffff1690829060009061145357611453613312565b6020908102919091018101516001600160601b03909216910152919050565b61147a611944565b600280546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6060600e805461118290613412565b6114bb611944565b6002805461ff001916610100179055565b6060600b805461118290613412565b60006114e783836121c5565b9392505050565b6114f6611944565b61150d61150836839003830183613651565b612228565b50565b611518611944565b6001600160a01b03811661157d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161086a565b61150d816116af565b600061159133610ea1565b156115a3575060131936013560601c90565b503390565b6001600160a01b03163b151590565b3390565b60006301ffc9a760e01b6001600160e01b0319831614806106955750506001600160e01b03191660009081526001602052604090205460ff1690565b60006114e783836122d3565b60606009805461118290613412565b61161b816122fd565b61150d5760405162461bcd60e51b815260040161086a906135d0565b60006107ca611586565b600081815260076020526040902080546001600160a01b0319166001600160a01b038416908117909155819061167682610fb6565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff166117315760405162461bcd60e51b815260040161086a906136ab565b61150d8161231a565b600054610100900460ff166117615760405162461bcd60e51b815260040161086a906136ab565b61091d838383612361565b600054610100900460ff166117935760405162461bcd60e51b815260040161086a906136ab565b610e0b82826123df565b600054610100900460ff166117c45760405162461bcd60e51b815260040161086a906136ab565b61150d8161246a565b600054610100900460ff166117f45760405162461bcd60e51b815260040161086a906136ab565b6111716124b6565b600054610100900460ff166118235760405162461bcd60e51b815260040161086a906136ab565b6111716124ed565b600054610100900460ff166118525760405162461bcd60e51b815260040161086a906136ab565b610e0b8282612524565b600054610100900460ff166118835760405162461bcd60e51b815260040161086a906136ab565b61150d816125b4565b600054610100900460ff166118b35760405162461bcd60e51b815260040161086a906136ab565b6111716125db565b601054816118c860125490565b6118d291906136f6565b11156119115760405162461bcd60e51b815260206004820152600e60248201526d455843454544535f535550504c5960901b604482015260640161086a565b60005b8181101561091d576012546119298482612612565b61193161262c565b508061193c81613362565b915050611914565b61194c611637565b6001600160a01b031661195d611211565b6001600160a01b0316146111715760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161086a565b6000806119bf83610fb6565b9050806001600160a01b0316846001600160a01b031614806119e657506119e681856114db565b80611a0a5750836001600160a01b03166119ff846107cf565b6001600160a01b0316145b949350505050565b826001600160a01b0316611a2582610fb6565b6001600160a01b031614611a895760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161086a565b6001600160a01b038216611aeb5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161086a565b611af6600082611641565b6001600160a01b0383166000908152600660205260408120805460019290611b1f90849061370e565b90915550506001600160a01b0382166000908152600660205260408120805460019290611b4d9084906136f6565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60005b8151811015610e0b576000828281518110611bce57611bce613312565b60200260200101519050612710816040015161ffff1610611c015760405162461bcd60e51b815260040161086a90613725565b60208101516001600160a01b0316611c7a578051600090815260156020526040902080546001600160b01b03191690558051611c3f90601690612643565b5080516040519081527fa2870857763bd9ae76c957f869f16b31c18dd3bb4c7b4d3a4496dc5c57c657f99060200160405180910390a1611d42565b6040805180820182526020808401516001600160a01b0390811683528484015161ffff90811683850190815286516000908152601590945294909220925183549451909216600160a01b026001600160b01b03199094169116179190911790558051611ce89060169061264f565b50805160208083015160408085015181519485526001600160a01b039092169284019290925261ffff1682820152517f389b70fb0887f01e83784eb1c4c589f740eca53b00ed0f45e41db5d079719abb9181900360600190a15b5080611d4d81613362565b915050611bb1565b6000610695825490565b6060600a805461118290613412565b816001600160a01b0316836001600160a01b031603611dcb5760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b604482015260640161086a565b6001600160a01b03838116600081815260086020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60606006826005811115611e4e57611e4e6130b3565b60ff161115611e5c57600080fd5b816005811115611e6e57611e6e6130b3565b600003611e9857505060408051808201909152600781526604342455f4343360cc1b602082015290565b816005811115611eaa57611eaa6130b3565b600103611ed457505060408051808201909152600781526621a122afa2a1a960c91b602082015290565b816005811115611ee657611ee66130b3565b600203611f1157505060408051808201909152600881526721a122afa722a1a960c11b602082015290565b816005811115611f2357611f236130b3565b600303611f5157505060408051808201909152600b81526a4342455f4e4543525f485360a81b602082015290565b816005811115611f6357611f636130b3565b600403611f8c57505060408051808201909152600681526521a122afa82960d11b602082015290565b50506040805180820190915260098152684342455f50525f485360b81b602082015290565b919050565b611fc1848484611a12565b611fcd8484848461265b565b6107355760405162461bcd60e51b815260040161086a9061374a565b6060816000036120105750506040805180820190915260018152600360fc1b602082015290565b8160005b811561203a578061202481613362565b91506120339050600a836133fe565b9150612014565b6000816001600160401b0381111561205457612054612adc565b6040519080825280601f01601f19166020018201604052801561207e576020820181803683370190505b5090505b8415611a0a5761209360018361370e565b91506120a0600a8661379c565b6120ab9060306136f6565b60f81b8183815181106120c0576120c0613312565b60200101906001600160f81b031916908160001a9053506120e2600a866133fe565b9450612082565b60606000600d80546120fa90613412565b90501161219157600c805461210e90613412565b80601f016020809104026020016040519081016040528092919081815260200182805461213a90613412565b80156121875780601f1061215c57610100808354040283529160200191612187565b820191906000526020600020905b81548152906001019060200180831161216a57829003601f168201915b5050505050610695565b600d61219c83611fe9565b600e6040516020016121b093929190613823565b60405160208183030381529060405292915050565b60135460009060ff166121fa576121da611211565b6001600160a01b0316826001600160a01b0316036121fa57506001610695565b6001600160a01b0380841660009081526008602090815260408083209386168352929052205460ff166114e7565b612710816020015161ffff16106122515760405162461bcd60e51b815260040161086a90613725565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601480546001600160b01b031916909217600160a01b9091021790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe41926122c8929161319b565b60405180910390a150565b60008260000182815481106122ea576122ea613312565b9060005260206000200154905092915050565b6000908152600560205260409020546001600160a01b0316151590565b600054610100900460ff166123415760405162461bcd60e51b815260040161086a906136ab565b61235163b964efe960e01b61276a565b61103c630c934a3560e31b61276a565b600054610100900460ff166123885760405162461bcd60e51b815260040161086a906136ab565b60096123948482613494565b50600a6123a18382613494565b50600b6123ae8282613494565b506123bf633d96f4ff60e11b61276a565b6123cf6380ac58cd60e01b61276a565b61091d635b5e139f60e01b61276a565b600054610100900460ff166124065760405162461bcd60e51b815260040161086a906136ab565b600c6124128382613494565b50600d61241f8282613494565b50604080518082019091526005815264173539b7b760d91b6020820152600e906124499082613494565b5061245a631f2f406b60e01b61276a565b610e0b635b5e139f60e01b61276a565b600054610100900460ff166124915760405162461bcd60e51b815260040161086a906136ab565b60108190556124a66330f487b560e11b61276a565b61150d6380ac58cd60e01b61276a565b600054610100900460ff166124dd5760405162461bcd60e51b815260040161086a906136ab565b611171631aa1577160e11b61276a565b600054610100900460ff166125145760405162461bcd60e51b815260040161086a906136ab565b61117163948e2d5360e01b61276a565b600054610100900460ff1661254b5760405162461bcd60e51b815260040161086a906136ab565b61255b633a47bf5160e11b61276a565b61256b63152a902d60e11b61276a565b61257b63c69dbd8f60e01b61276a565b61258b63656cb66560e11b61276a565b604080518082019091526001600160a01b038316815261ffff8216602082015261091d81612228565b600054610100900460ff1661147a5760405162461bcd60e51b815260040161086a906136ab565b600054610100900460ff166126025760405162461bcd60e51b815260040161086a906136ab565b611171632a7c3e4960e01b61276a565b610e0b8282604051806020016040528060008152506127eb565b6012805490600061263c83613362565b9190505550565b60006114e7838361281e565b60006114e78383612911565b600061266f846001600160a01b03166115a8565b1561275f57836001600160a01b031663150b7a0261268b611637565b8786866040518563ffffffff1660e01b81526004016126ad9493929190613856565b6020604051808303816000875af19250505080156126e8575060408051601f3d908101601f191682019092526126e591810190613893565b60015b612745573d808015612716576040519150601f19603f3d011682016040523d82523d6000602084013e61271b565b606091505b50805160000361273d5760405162461bcd60e51b815260040161086a9061374a565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611a0a565b506001949350505050565b6001600160e01b031980821690036127c35760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b604482015260640161086a565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b6127f58383612960565b612802600084848461265b565b61091d5760405162461bcd60e51b815260040161086a9061374a565b6000818152600183016020526040812054801561290757600061284260018361370e565b85549091506000906128569060019061370e565b90508181146128bb57600086600001828154811061287657612876613312565b906000526020600020015490508087600001848154811061289957612899613312565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806128cc576128cc6138b0565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610695565b6000915050610695565b600081815260018301602052604081205461295857508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610695565b506000610695565b6001600160a01b0382166129b65760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161086a565b6129bf816122fd565b15612a0b5760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b604482015260640161086a565b6001600160a01b0382166000908152600660205260408120805460019290612a349084906136f6565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b03198116811461150d57600080fd5b600060208284031215612aba57600080fd5b81356114e781612a92565b80356001600160a01b0381168114611fb157600080fd5b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b0381118282101715612b1557612b15612adc565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612b4357612b43612adc565b604052919050565b60006001600160401b03821115612b6457612b64612adc565b5060051b60200190565b600082601f830112612b7f57600080fd5b81356020612b94612b8f83612b4b565b612b1b565b82815260059290921b84018101918181019086841115612bb357600080fd5b8286015b84811015612bce5780358352918301918301612bb7565b509695505050505050565b600080600060608486031215612bee57600080fd5b612bf784612ac5565b9250612c0560208501612ac5565b915060408401356001600160401b03811115612c2057600080fd5b612c2c86828701612b6e565b9150509250925092565b600060208284031215612c4857600080fd5b5035919050565b60005b83811015612c6a578181015183820152602001612c52565b838111156107355750506000910152565b60008151808452612c93816020860160208601612c4f565b601f01601f19169290920160200192915050565b6020815260006114e76020830184612c7b565b6001600160a01b0391909116815260200190565b60008060408385031215612ce157600080fd5b612cea83612ac5565b946020939093013593505050565b60006001600160401b03831115612d1157612d11612adc565b612d24601f8401601f1916602001612b1b565b9050828152838383011115612d3857600080fd5b828260208301376000602084830101529392505050565b600082601f830112612d6057600080fd5b6114e783833560208501612cf8565b600082601f830112612d8057600080fd5b81356020612d90612b8f83612b4b565b82815260059290921b84018101918181019086841115612daf57600080fd5b8286015b84811015612bce57612dc481612ac5565b8352918301918301612db3565b803561ffff81168114611fb157600080fd5b803560068110611fb157600080fd5b60008060408385031215612e0557600080fd5b82356001600160401b0380821115612e1c57600080fd5b908401906101808287031215612e3157600080fd5b612e39612af2565b823582811115612e4857600080fd5b612e5488828601612d4f565b825250602083013582811115612e6957600080fd5b612e7588828601612d4f565b602083015250604083013582811115612e8d57600080fd5b612e9988828601612d4f565b604083015250606083013582811115612eb157600080fd5b612ebd88828601612d4f565b606083015250608083013582811115612ed557600080fd5b612ee188828601612d4f565b60808301525060a083013582811115612ef957600080fd5b612f0588828601612d6f565b60a08301525060c083013582811115612f1d57600080fd5b612f2988828601612b6e565b60c08301525060e083013560e08201526101009150612f49828401612ac5565b828201526101209150612f5d828401612dd1565b828201526101409150612f71828401612ac5565b828201526101609150612f85828401612de3565b82820152809450505050612f9b60208401612ac5565b90509250929050565b600080600060608486031215612fb957600080fd5b612fc284612ac5565b9250612fd060208501612ac5565b9150604084013590509250925092565b60008060408385031215612ff357600080fd5b50508035926020909101359150565b60008060006060848603121561301757600080fd5b83356001600160401b038082111561302e57600080fd5b61303a87838801612d6f565b9450602086013591508082111561305057600080fd5b61305c87838801612d6f565b9350604086013591508082111561307257600080fd5b50612c2c86828701612b6e565b60006020828403121561309157600080fd5b81356001600160401b038111156130a757600080fd5b611a0a84828501612d4f565b634e487b7160e01b600052602160045260246000fd5b60208101600683106130eb57634e487b7160e01b600052602160045260246000fd5b91905290565b6000806020838503121561310457600080fd5b82356001600160401b038082111561311b57600080fd5b818501915085601f83011261312f57600080fd5b81358181111561313e57600080fd5b86602060608302850101111561315357600080fd5b60209290920196919550909350505050565b60006020828403121561317757600080fd5b6114e782612ac5565b60006020828403121561319257600080fd5b6114e782612de3565b6001600160a01b0392909216825261ffff16602082015260400190565b600080604083850312156131cb57600080fd5b6131d483612ac5565b9150602083013580151581146131e957600080fd5b809150509250929050565b6000806000806080858703121561320a57600080fd5b61321385612ac5565b935061322160208601612ac5565b92506040850135915060608501356001600160401b0381111561324357600080fd5b8501601f8101871361325457600080fd5b61326387823560208401612cf8565b91505092959194509250565b602080825282518282018190526000919060409081850190868401855b828110156132c357815180516001600160a01b031685528601516001600160601b031686850152928401929085019060010161328c565b5091979650505050505050565b600080604083850312156132e357600080fd5b6132ec83612ac5565b9150612f9b60208401612ac5565b60006040828403121561330c57600080fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b600052601160045260246000fd5b6000600182016133745761337461334c565b5060010190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b60008160001904831182151516156133e3576133e361334c565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261340d5761340d6133e8565b500490565b600181811c9082168061342657607f821691505b60208210810361330c57634e487b7160e01b600052602260045260246000fd5b601f82111561091d57600081815260208120601f850160051c8101602086101561346d5750805b601f850160051c820191505b8181101561348c57828155600101613479565b505050505050565b81516001600160401b038111156134ad576134ad612adc565b6134c1816134bb8454613412565b84613446565b602080601f8311600181146134f657600084156134de5750858301515b600019600386901b1c1916600185901b17855561348c565b600085815260208120601f198616915b8281101561352557888601518255948401946001909101908401613506565b50858210156135435787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060828403121561356557600080fd5b604051606081018181106001600160401b038211171561358757613587612adc565b6040528235815261359a60208401612ac5565b60208201526135ab60408401612dd1565b60408201529392505050565b6000602082840312156135c957600080fd5b5051919050565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b602080825260069082015265232927ad22a760d11b604082015260600190565b60008351613634818460208801612c4f565b835190830190613648818360208801612c4f565b01949350505050565b60006040828403121561366357600080fd5b604051604081018181106001600160401b038211171561368557613685612adc565b60405261369183612ac5565b815261369f60208401612dd1565b60208201529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600082198211156137095761370961334c565b500190565b6000828210156137205761372061334c565b500390565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6000826137ab576137ab6133e8565b500690565b600081546137bd81613412565b600182811680156137d557600181146137ea57613819565b60ff1984168752821515830287019450613819565b8560005260208060002060005b858110156138105781548a8201529084019082016137f7565b50505082870194505b5050505092915050565b600061382f82866137b0565b845161383f818360208901612c4f565b61384b818301866137b0565b979650505050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061388990830184612c7b565b9695505050505050565b6000602082840312156138a557600080fd5b81516114e781612a92565b634e487b7160e01b600052603160045260246000fdfe61723a2f2f5f44396b4e3157724e576243713535425341475262544234625333763851415054596d42546853625833412fa2646970667358221220d5e8b8ddf78359b0b5fd06e30f8258d5154e8f267c23e93443223f5494880a9764736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/presets/ERC721OneOfOneCollection":{"address":{"1":"0xff7cbd71bddc5a51bf68054e2f4f0b7df9273e1b","3":"0xa95222e729bEE6E32E23D2AA97cED56cc9b719CA","4":"0xa248486C80B933BCC494a2eA5C217E38f2862B98","5":"0x48F9152b91103E158029921C59Ff844d30468288","25":"0x6910176Ba412F3c3FD94630AA56F1573B9d79B7B","56":"0x26aaa1F0Be85042402C97766EAC22357AeCCEbc6","66":"0xb273f563F6fD19a4B48c027456EBc53c58a661c5","97":"0x2e43759e52d69Eb4561541f6F7A6C4E82CD2448A","137":"0x3C3FD4F5794DC0AEaC2387DAdc4F336a0993866a","250":"0x3E368e34Ae2CD9F2617F397cE6B6310fE1cAEaed","280":"0xcFa78184d7549d57eFc9ab96B6456becf1A07F4D","4002":"0x3E368e34Ae2CD9F2617F397cE6B6310fE1cAEaed","9000":"0xa79B21B345846224b307212FB7278b2e74Ea3295","42161":"0xB3C2dE2f1972f2f1cF3BD5EAC67dECFDA6EF739d","43113":"0xeAE43cFE24194F531A4Dc06d4bb93C39F2C6c665","43114":"0xBB0AA646E8D63d920a7Ab1C96Ba082cbF075DcDA","421611":"0xb6008DA1e10C37F3834F0bF466a168cd1Fc5A6A5","arbitrumOne":"0xB3C2dE2f1972f2f1cF3BD5EAC67dECFDA6EF739d","arbitrumTestnet":"0xb6008DA1e10C37F3834F0bF466a168cd1Fc5A6A5","avalanche":"0xBB0AA646E8D63d920a7Ab1C96Ba082cbF075DcDA","avalancheFujiTestnet":"0xeAE43cFE24194F531A4Dc06d4bb93C39F2C6c665","bsc":"0x26aaa1F0Be85042402C97766EAC22357AeCCEbc6","bscTestnet":"0x2e43759e52d69Eb4561541f6F7A6C4E82CD2448A","cronos":"0x6910176Ba412F3c3FD94630AA56F1573B9d79B7B","evmosTestnet":"0xa79B21B345846224b307212FB7278b2e74Ea3295","ftmTestnet":"0x3E368e34Ae2CD9F2617F397cE6B6310fE1cAEaed","goerli":"0x48F9152b91103E158029921C59Ff844d30468288","mainnet":"0xff7cbd71bddc5a51bf68054e2f4f0b7df9273e1b","okcMainnet":"0xb273f563F6fD19a4B48c027456EBc53c58a661c5","opera":"0x3E368e34Ae2CD9F2617F397cE6B6310fE1cAEaed","polygon":"0x3C3FD4F5794DC0AEaC2387DAdc4F336a0993866a","rinkeby":"0xa248486C80B933BCC494a2eA5C217E38f2862B98","ropsten":"0xa95222e729bEE6E32E23D2AA97cED56cc9b719CA","zksyncTestnet":"0xcFa78184d7549d57eFc9ab96B6456becf1A07F4D"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721OneOfOneCollection","sourceName":"contracts/collections/ERC721/presets/ERC721OneOfOneCollection.sol","abi":[{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"internalType":"address","name":"defaultRoyaltyAddress","type":"address"},{"internalType":"uint16","name":"defaultRoyaltyBps","type":"uint16"},{"internalType":"address","name":"trustedForwarder","type":"address"},{"internalType":"enum LicenseVersion","name":"licenseVersion","type":"uint8"}],"internalType":"struct ERC721OneOfOneCollection.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"DefaultRoyaltySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"TokenRoyaltyRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"TokenRoyaltySet","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"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultRoyalty","outputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastFrozenTokenId","type":"uint256"}],"name":"freezeTokenURIs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getInfo","outputs":[{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"uint256","name":"_totalSupply","type":"uint256"},{"internalType":"uint256","name":"_senderBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getRaribleV2Royalties","outputs":[{"components":[{"internalType":"address payable","name":"account","type":"address"},{"internalType":"uint96","name":"value","type":"uint96"}],"internalType":"struct LibPart.Part[]","name":"result","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenRoyaltiesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getTokenRoyaltyByIndex","outputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"internalType":"address","name":"defaultRoyaltyAddress","type":"address"},{"internalType":"uint16","name":"defaultRoyaltyBps","type":"uint16"},{"internalType":"address","name":"trustedForwarder","type":"address"},{"internalType":"enum LicenseVersion","name":"licenseVersion","type":"uint8"}],"internalType":"struct ERC721OneOfOneCollection.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","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":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastFrozenTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersion","outputs":[{"internalType":"enum LicenseVersion","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersionLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"string[]","name":"tokenURIs","type":"string[]"}],"name":"mintWithTokenURIsByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"string[]","name":"tokenURIs","type":"string[]"}],"name":"mintWithTokenURIsByRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyalty","name":"royalty","type":"tuple"}],"name":"setDefaultRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum LicenseVersion","name":"_licenseVersion","type":"uint8"}],"name":"setLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig[]","name":"royaltyConfigs","type":"tuple[]"}],"name":"setTokenRoyalties","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"tokenURI","type":"string"}],"name":"setTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"trustedForwarder","type":"address"}],"name":"setTrustedForwarder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040526000600f553480156200001657600080fd5b506040516200489938038062004899833981016040819052620000399162000b75565b8051602082015160046200005662000050620000b8565b620000d4565b6002805482919060ff1916600183600581111562000078576200007862000c8e565b0217905550600490506200008d838262000d32565b5060056200009c828262000d32565b505050620000b181336200012f60201b60201c565b5062000e49565b6000620000cf6200031e60201b620014a11760201c565b905090565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620001505750600054600160ff909116105b806200018057506200016d306200035660201b620014c31760201c565b15801562000180575060005460ff166001145b620001e95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156200020d576000805461ff0019166101001790555b6200021a60008362000365565b620002467f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68362000365565b6200025182620000d4565b60e0830151620002619062000375565b8251602084015160408501516200027a929190620003ad565b62000284620003e4565b6200028e6200041a565b620002986200044e565b6060830151620002a89062000482565b620002c283608001518460a00151620004b760201b60201c565b60c0830151620002d290620004ed565b801562000319576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6016546000906001600160a01b0316330362000341575060131936013560601c90565b620000cf6200052260201b620014d21760201c565b6001600160a01b03163b151590565b62000371828262000526565b5050565b600054610100900460ff166200039f5760405162461bcd60e51b8152600401620001e09062000dfe565b620003aa81620005cc565b50565b600054610100900460ff16620003d75760405162461bcd60e51b8152600401620001e09062000dfe565b6200031983838362000644565b600054610100900460ff166200040e5760405162461bcd60e51b8152600401620001e09062000dfe565b62000418620006d1565b565b600054610100900460ff16620004445760405162461bcd60e51b8152600401620001e09062000dfe565b620004186200070d565b600054610100900460ff16620004785760405162461bcd60e51b8152600401620001e09062000dfe565b6200041862000749565b600054610100900460ff16620004ac5760405162461bcd60e51b8152600401620001e09062000dfe565b620003aa8162000785565b600054610100900460ff16620004e15760405162461bcd60e51b8152600401620001e09062000dfe565b620003718282620007d8565b600054610100900460ff16620005175760405162461bcd60e51b8152600401620001e09062000dfe565b620003aa8162000875565b3390565b60008281526003602090815260408083206001600160a01b038516845290915290205460ff16620003715760008281526003602090815260408083206001600160a01b03851684529091529020805460ff1916600117905562000588620000b8565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600054610100900460ff16620005f65760405162461bcd60e51b8152600401620001e09062000dfe565b6200060863b964efe960e01b620008c1565b6200061a630c934a3560e31b620008c1565b6002805482919060ff191660018360058111156200063c576200063c62000c8e565b021790555050565b600054610100900460ff166200066e5760405162461bcd60e51b8152600401620001e09062000dfe565b600a6200067c848262000d32565b50600b6200068b838262000d32565b50600c6200069a828262000d32565b50620006ad633d96f4ff60e11b620008c1565b620006bf6380ac58cd60e01b620008c1565b62000319635b5e139f60e01b620008c1565b600054610100900460ff16620006fb5760405162461bcd60e51b8152600401620001e09062000dfe565b62000418632929b36760e11b620008c1565b600054610100900460ff16620007375760405162461bcd60e51b8152600401620001e09062000dfe565b62000418631aa1577160e11b620008c1565b600054610100900460ff16620007735760405162461bcd60e51b8152600401620001e09062000dfe565b62000418630d169dbf60e31b620008c1565b600054610100900460ff16620007af5760405162461bcd60e51b8152600401620001e09062000dfe565b600d819055620007c66330f487b560e11b620008c1565b620003aa6380ac58cd60e01b620008c1565b600054610100900460ff16620008025760405162461bcd60e51b8152600401620001e09062000dfe565b62000814633a47bf5160e11b620008c1565b6200082663152a902d60e11b620008c1565b6200083863c69dbd8f60e01b620008c1565b6200084a63656cb66560e11b620008c1565b604080518082019091526001600160a01b038316815261ffff82166020820152620003198162000945565b600054610100900460ff166200089f5760405162461bcd60e51b8152600401620001e09062000dfe565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160e01b031980821690036200091d5760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e74657266616365206964000000006044820152606401620001e0565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b612710816020015161ffff16106200098e5760405162461bcd60e51b815260206004820152600b60248201526a496e76616c69642062707360a81b6044820152606401620001e0565b60408051808201825282516001600160a01b03168082526020808501805161ffff169190930181905260128054600160a01b9092026001600160b01b03199092169092171790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe419262000a2092916001600160a01b0392909216825261ffff16602082015260400190565b60405180910390a150565b634e487b7160e01b600052604160045260246000fd5b60405161010081016001600160401b038111828210171562000a675762000a6762000a2b565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000a985762000a9862000a2b565b604052919050565b600082601f83011262000ab257600080fd5b81516001600160401b0381111562000ace5762000ace62000a2b565b602062000ae4601f8301601f1916820162000a6d565b828152858284870101111562000af957600080fd5b60005b8381101562000b1957858101830151828201840152820162000afc565b8381111562000b2b5760008385840101525b5095945050505050565b80516001600160a01b038116811462000b4d57600080fd5b919050565b805161ffff8116811462000b4d57600080fd5b80516006811062000b4d57600080fd5b60006020828403121562000b8857600080fd5b81516001600160401b038082111562000ba057600080fd5b90830190610100828603121562000bb657600080fd5b62000bc062000a41565b82518281111562000bd057600080fd5b62000bde8782860162000aa0565b82525060208301518281111562000bf457600080fd5b62000c028782860162000aa0565b60208301525060408301518281111562000c1b57600080fd5b62000c298782860162000aa0565b6040830152506060830151606082015262000c476080840162000b35565b608082015262000c5a60a0840162000b52565b60a082015262000c6d60c0840162000b35565b60c082015262000c8060e0840162000b65565b60e082015295945050505050565b634e487b7160e01b600052602160045260246000fd5b600181811c9082168062000cb957607f821691505b60208210810362000cda57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200031957600081815260208120601f850160051c8101602086101562000d095750805b601f850160051c820191505b8181101562000d2a5782815560010162000d15565b505050505050565b81516001600160401b0381111562000d4e5762000d4e62000a2b565b62000d668162000d5f845462000ca4565b8462000ce0565b602080601f83116001811462000d9e576000841562000d855750858301515b600019600386901b1c1916600185901b17855562000d2a565b600085815260208120601f198616915b8281101562000dcf5788860151825594840194600190910190840162000dae565b508582101562000dee5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b613a408062000e596000396000f3fe608060405234801561001057600080fd5b50600436106102825760003560e01c80637885fdc7116101585780637885fdc7146104fc5780637e9803421461052a5780638da5cb5b146105325780638e28cf981461053a57806391d148541461054d578063938e3d7b1461056057806394bb53f81461057357806395d89b4114610586578063a217fddf1461058e578063a22cb46514610596578063a341793b146105a9578063b88d4fde146105b1578063b89df8e8146105c4578063bf9b7a57146105cd578063c7db2893146105df578063c87b56dd146105e7578063cad96cca146105fa578063d53913931461061a578063d547741f1461062f578063d5abeb0114610642578063da7422281461064b578063dd89c6fa1461065e578063e8a3d48514610666578063e985e9c51461066e578063ef60ceaf14610681578063f2fde38b14610694578063f384702f146106a757600080fd5b806301ffc9a7146102875780630653aca5146102af57806306fdde03146102f1578063081812fc14610306578063095ea7b314610326578063162094c41461033b578063167446071461034e57806318160ddd1461035657806323b872dd14610368578063248a9ca31461037b5780632a55205a1461038e5780632ee774bd146103c05780632f2ff15d146103d35780633542aee2146103e657806336568abe146103f957806342842e0e1461040c5780634473f20a1461041f57806350a5292f146104325780635136dcc71461044c57806356c022bb1461045f578063572b6c05146104725780635a9b0b89146104855780636352211e146104a857806364ed2913146104bb5780636f8b44b0146104ce57806370a08231146104e1578063715018a6146104f4575b600080fd5b61029a610295366004612cff565b6106b4565b60405190151581526020015b60405180910390f35b6102c26102bd366004612d1c565b6106c5565b60408051825181526020808401516001600160a01b0316908201529181015161ffff16908201526060016102a6565b6102f961074a565b6040516102a69190612d8d565b610319610314366004612d1c565b610759565b6040516102a69190612da0565b610339610334366004612dcb565b610780565b005b610339610349366004612edb565b6108ac565b6103396108e3565b600f545b6040519081526020016102a6565b610339610376366004612f21565b6108fa565b61035a610389366004612d1c565b610932565b6103a161039c366004612f5d565b610947565b604080516001600160a01b0390931683526020830191909152016102a6565b6103396103ce366004612f7f565b610a0c565b6103396103e136600461305d565b610a71565b6103396103f4366004612dcb565b610a8d565b61033961040736600461305d565b610a9f565b61033961041a366004612f21565b610b29565b61033961042d366004612d1c565b610b44565b60025461043f9060ff1681565b6040516102a6919061309f565b61033961045a3660046130c7565b610b94565b601654610319906001600160a01b031681565b61029a61048036600461313b565b610bf7565b61048d610c0b565b604080519384526020840192909252908201526060016102a6565b6103196104b6366004612d1c565b610d06565b6103396104c9366004613165565b610d3b565b6103396104dc366004612d1c565b610db3565b61035a6104ef36600461313b565b610e29565b610339610eaf565b60125461051c906001600160a01b03811690600160a01b900461ffff1682565b6040516102a6929190613180565b61035a610ec3565b610319610ecf565b610339610548366004612f7f565b610ee4565b61029a61055b36600461305d565b610f73565b61033961056e36600461319d565b610f9e565b6103396105813660046131e3565b610fb2565b6102f9611157565b61035a600081565b6103396105a43660046132ef565b611161565b6102f9611173565b6103396105bf36600461332b565b611185565b61035a60115481565b60025461029a90610100900460ff1681565b6102f96111c4565b6102f96105f5366004612d1c565b611224565b61060d610608366004612d1c565b61122f565b6040516102a691906133a6565b61035a6000805160206139eb83398151915281565b61033961063d36600461305d565b6112ea565b61035a600d5481565b61033961065936600461313b565b611306565b610339611330565b6102f9611349565b61029a61067c366004613407565b6113db565b61033961068f366004613431565b611409565b6103396106a236600461313b565b61142b565b600e5461029a9060ff1681565b60006106bf826114d6565b92915050565b60408051606081018252600080825260208201819052918101829052906106ed601484611512565b6000818152601360209081526040918290208251808401845290546001600160a01b03808216835261ffff600160a01b90920482168385019081528551606081018752968752925116928501929092525116908201529392505050565b6060610754611525565b905090565b600061076482611534565b506000908152600860205260409020546001600160a01b031690565b600061078b82610d06565b9050806001600160a01b0316836001600160a01b0316036107fd5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661080f611559565b6001600160a01b0316148061082b575061082b8161067c611559565b61089d5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016107f4565b6108a78383611563565b505050565b6108b46115d1565b60115482116108d55760405162461bcd60e51b81526004016107f490613449565b6108df8282611640565b5050565b6108eb6115d1565b600e805460ff19166001179055565b61090b610905611559565b826116c4565b6109275760405162461bcd60e51b81526004016107f490613469565b6108a7838383611723565b60009081526003602052604090206001015490565b60008281526013602052604081205481906001600160a01b0316156109ac576000848152601360205260409020546001600160a01b038116906127109061099990600160a01b900461ffff16866134cd565b6109a39190613502565b91509150610a05565b6012546001600160a01b0316158015906109d25750601254600160a01b900461ffff1615155b156109fe576012546001600160a01b038116906127109061099990600160a01b900461ffff16866134cd565b5060009050805b9250929050565b610a146115d1565b600f54610a2184846118bf565b60005b83811015610a6a57610a58610a398284613516565b848381518110610a4b57610a4b61352e565b6020026020010151611640565b80610a6281613544565b915050610a24565b5050505050565b610a7a82610932565b610a8381611948565b6108a78383611959565b610a956115d1565b6108df82826118bf565b610aa7611559565b6001600160a01b0316816001600160a01b031614610b1f5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016107f4565b6108df82826119e0565b6108a783838360405180602001604052806000815250611185565b610b4c6115d1565b6011548111610b8f5760405162461bcd60e51b815260206004820152600f60248201526e43414e4e4f545f554e465245455a4560881b60448201526064016107f4565b601155565b610b9c6115d1565b6108df8282808060200260200160405190810160405280939291908181526020016000905b82821015610bed57610bde6060830286013681900381019061355d565b81526020019060010190610bc1565b5050505050611a65565b6016546001600160a01b0391821691161490565b600080808080610c19611559565b6001600160a01b031614610c9557306370a08231610c35611559565b6040518263ffffffff1660e01b8152600401610c519190612da0565b602060405180830381865afa158015610c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9291906135c1565b90505b600d54306001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfa91906135c1565b90959094509092509050565b6000818152600660205260408120546001600160a01b0316806106bf5760405162461bcd60e51b81526004016107f4906135da565b610d436115d1565b600254610100900460ff1615610d8c5760405162461bcd60e51b815260206004820152600e60248201526d131250d15394d157d313d0d2d15160921b60448201526064016107f4565b6002805482919060ff19166001836005811115610dab57610dab613089565b021790555050565b610dbb6115d1565b600e5460ff1615610dde5760405162461bcd60e51b81526004016107f490613449565b600f54811015610e245760405162461bcd60e51b81526020600482015260116024820152704c4f5745525f5448414e5f535550504c5960781b60448201526064016107f4565b600d55565b60006001600160a01b038216610e935760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016107f4565b506001600160a01b031660009081526007602052604090205490565b610eb76115d1565b610ec16000611c0c565b565b60006107546014611c67565b6000546201000090046001600160a01b031690565b610efe6000805160206139eb83398151915261055b611559565b610f3c5760405162461bcd60e51b815260206004820152600f60248201526e4e4f545f4d494e5445525f524f4c4560881b60448201526064016107f4565b600f54610f4984846118bf565b60005b83811015610a6a57610f61610a398284613516565b80610f6b81613544565b915050610f4c565b60009182526003602090815260408084206001600160a01b0393909316845291905290205460ff1690565b610fa66115d1565b600c6108df828261368e565b600054610100900460ff1615808015610fd25750600054600160ff909116105b80610ff35750610fe1306114c3565b158015610ff3575060005460ff166001145b6110565760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107f4565b6000805460ff191660011790558015611079576000805461ff0019166101001790555b611084600083611c71565b61109c6000805160206139eb83398151915283611c71565b6110a582611c0c565b6110b28360e00151611c7b565b6110c9836000015184602001518560400151611cab565b6110d1611cdd565b6110d9611d0c565b6110e1611d3b565b6110ee8360600151611d6a565b61110083608001518460a00151611d9a565b61110d8360c00151611dcb565b80156108a7576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6060610754611dfb565b6108df61116c611559565b8383611e0a565b6002546060906107549060ff16611ed4565b611196611190611559565b836116c4565b6111b25760405162461bcd60e51b81526004016107f490613469565b6111be84848484612052565b50505050565b60606040518060600160405280603181526020016139ba603191396002546111ff9060ff1660058111156111fa576111fa613089565b612085565b60405160200161121092919061374d565b604051602081830303815290604052905090565b60606106bf82612185565b604080516001808252818301909252606091816020015b604080518082019091526000808252602082015281526020019060019003908161124657505060125481519192506001600160a01b031690829060009061128f5761128f61352e565b60209081029190910101516001600160a01b039190911690526012548151600160a01b90910461ffff169082906000906112cb576112cb61352e565b6020908102919091018101516001600160601b03909216910152919050565b6112f382610932565b6112fc81611948565b6108a783836119e0565b61130e6115d1565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6113386115d1565b6002805461ff001916610100179055565b6060600c80546113589061360c565b80601f01602080910402602001604051908101604052809291908181526020018280546113849061360c565b80156113d15780601f106113a6576101008083540402835291602001916113d1565b820191906000526020600020905b8154815290600101906020018083116113b457829003601f168201915b5050505050905090565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205460ff1690565b6114116115d1565b6114286114233683900383018361377c565b612190565b50565b6114336115d1565b6001600160a01b0381166114985760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107f4565b61142881611c0c565b60006114ac33610bf7565b156114be575060131936013560601c90565b503390565b6001600160a01b03163b151590565b3390565b60006301ffc9a760e01b6001600160e01b0319831614806106bf5750506001600160e01b03191660009081526001602052604090205460ff1690565b600061151e838361223b565b9392505050565b6060600a80546113589061360c565b61153d81612265565b6114285760405162461bcd60e51b81526004016107f4906135da565b60006107546114a1565b600081815260086020526040902080546001600160a01b0319166001600160a01b038416908117909155819061159882610d06565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6115d9611559565b6001600160a01b03166115ea610ecf565b6001600160a01b031614610ec15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f4565b61164982612265565b6116ac5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016107f4565b60008281526010602052604090206108a7828261368e565b6000806116d083610d06565b9050806001600160a01b0316846001600160a01b031614806116f757506116f781856113db565b8061171b5750836001600160a01b031661171084610759565b6001600160a01b0316145b949350505050565b826001600160a01b031661173682610d06565b6001600160a01b03161461179a5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016107f4565b6001600160a01b0382166117fc5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016107f4565b611807600082611563565b6001600160a01b03831660009081526007602052604081208054600192906118309084906137d6565b90915550506001600160a01b038216600090815260076020526040812080546001929061185e908490613516565b909155505060008181526006602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600d54816118cc600f5490565b6118d69190613516565b11156119155760405162461bcd60e51b815260206004820152600e60248201526d455843454544535f535550504c5960901b60448201526064016107f4565b60005b818110156108a757600f5461192d8482612282565b61193561229c565b508061194081613544565b915050611918565b61142881611954611559565b6122b3565b6119638282610f73565b6108df5760008281526003602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561199c611559565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6119ea8282610f73565b156108df5760008281526003602090815260408083206001600160a01b03851684529091529020805460ff19169055611a21611559565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b60005b81518110156108df576000828281518110611a8557611a8561352e565b60200260200101519050612710816040015161ffff1610611ab85760405162461bcd60e51b81526004016107f4906137ed565b60208101516001600160a01b0316611b31578051600090815260136020526040902080546001600160b01b03191690558051611af690601490612317565b5080516040519081527fa2870857763bd9ae76c957f869f16b31c18dd3bb4c7b4d3a4496dc5c57c657f99060200160405180910390a1611bf9565b6040805180820182526020808401516001600160a01b0390811683528484015161ffff90811683850190815286516000908152601390945294909220925183549451909216600160a01b026001600160b01b03199094169116179190911790558051611b9f90601490612323565b50805160208083015160408085015181519485526001600160a01b039092169284019290925261ffff1682820152517f389b70fb0887f01e83784eb1c4c589f740eca53b00ed0f45e41db5d079719abb9181900360600190a15b5080611c0481613544565b915050611a68565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b60006106bf825490565b6108df8282611959565b600054610100900460ff16611ca25760405162461bcd60e51b81526004016107f490613812565b6114288161232f565b600054610100900460ff16611cd25760405162461bcd60e51b81526004016107f490613812565b6108a7838383612376565b600054610100900460ff16611d045760405162461bcd60e51b81526004016107f490613812565b610ec16123f4565b600054610100900460ff16611d335760405162461bcd60e51b81526004016107f490613812565b610ec161242b565b600054610100900460ff16611d625760405162461bcd60e51b81526004016107f490613812565b610ec1612462565b600054610100900460ff16611d915760405162461bcd60e51b81526004016107f490613812565b61142881612499565b600054610100900460ff16611dc15760405162461bcd60e51b81526004016107f490613812565b6108df82826124e5565b600054610100900460ff16611df25760405162461bcd60e51b81526004016107f490613812565b61142881612575565b6060600b80546113589061360c565b816001600160a01b0316836001600160a01b031603611e675760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b60448201526064016107f4565b6001600160a01b03838116600081815260096020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60606006826005811115611eea57611eea613089565b60ff161115611ef857600080fd5b816005811115611f0a57611f0a613089565b600003611f3457505060408051808201909152600781526604342455f4343360cc1b602082015290565b816005811115611f4657611f46613089565b600103611f7057505060408051808201909152600781526621a122afa2a1a960c91b602082015290565b816005811115611f8257611f82613089565b600203611fad57505060408051808201909152600881526721a122afa722a1a960c11b602082015290565b816005811115611fbf57611fbf613089565b600303611fed57505060408051808201909152600b81526a4342455f4e4543525f485360a81b602082015290565b816005811115611fff57611fff613089565b60040361202857505060408051808201909152600681526521a122afa82960d11b602082015290565b50506040805180820190915260098152684342455f50525f485360b81b602082015290565b919050565b61205d848484611723565b6120698484848461259c565b6111be5760405162461bcd60e51b81526004016107f49061385d565b6060816000036120ac5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156120d657806120c081613544565b91506120cf9050600a83613502565b91506120b0565b6000816001600160401b038111156120f0576120f0612df5565b6040519080825280601f01601f19166020018201604052801561211a576020820181803683370190505b5090505b841561171b5761212f6001836137d6565b915061213c600a866138af565b612147906030613516565b60f81b81838151811061215c5761215c61352e565b60200101906001600160f81b031916908160001a90535061217e600a86613502565b945061211e565b60606106bf826126ab565b612710816020015161ffff16106121b95760405162461bcd60e51b81526004016107f4906137ed565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601280546001600160b01b031916909217600160a01b9091021790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe41926122309291613180565b60405180910390a150565b60008260000182815481106122525761225261352e565b9060005260206000200154905092915050565b6000908152600660205260409020546001600160a01b0316151590565b6108df8282604051806020016040528060008152506127b3565b600f80549060006122ac83613544565b9190505550565b6122bd8282610f73565b6108df576122d5816001600160a01b031660146127e6565b6122e08360206127e6565b6040516020016122f19291906138c3565b60408051601f198184030181529082905262461bcd60e51b82526107f491600401612d8d565b600061151e8383612981565b600061151e8383612a74565b600054610100900460ff166123565760405162461bcd60e51b81526004016107f490613812565b61236663b964efe960e01b612ac3565b610d8c630c934a3560e31b612ac3565b600054610100900460ff1661239d5760405162461bcd60e51b81526004016107f490613812565b600a6123a9848261368e565b50600b6123b6838261368e565b50600c6123c3828261368e565b506123d4633d96f4ff60e11b612ac3565b6123e46380ac58cd60e01b612ac3565b6108a7635b5e139f60e01b612ac3565b600054610100900460ff1661241b5760405162461bcd60e51b81526004016107f490613812565b610ec1632929b36760e11b612ac3565b600054610100900460ff166124525760405162461bcd60e51b81526004016107f490613812565b610ec1631aa1577160e11b612ac3565b600054610100900460ff166124895760405162461bcd60e51b81526004016107f490613812565b610ec1630d169dbf60e31b612ac3565b600054610100900460ff166124c05760405162461bcd60e51b81526004016107f490613812565b600d8190556124d56330f487b560e11b612ac3565b6114286380ac58cd60e01b612ac3565b600054610100900460ff1661250c5760405162461bcd60e51b81526004016107f490613812565b61251c633a47bf5160e11b612ac3565b61252c63152a902d60e11b612ac3565b61253c63c69dbd8f60e01b612ac3565b61254c63656cb66560e11b612ac3565b604080518082019091526001600160a01b038316815261ffff821660208201526108a781612190565b600054610100900460ff1661130e5760405162461bcd60e51b81526004016107f490613812565b60006125b0846001600160a01b03166114c3565b156126a057836001600160a01b031663150b7a026125cc611559565b8786866040518563ffffffff1660e01b81526004016125ee9493929190613932565b6020604051808303816000875af1925050508015612629575060408051601f3d908101601f191682019092526126269181019061396f565b60015b612686573d808015612657576040519150601f19603f3d011682016040523d82523d6000602084013e61265c565b606091505b50805160000361267e5760405162461bcd60e51b81526004016107f49061385d565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061171b565b506001949350505050565b60606126b682611534565b600082815260106020526040812080546126cf9061360c565b80601f01602080910402602001604051908101604052809291908181526020018280546126fb9061360c565b80156127485780601f1061271d57610100808354040283529160200191612748565b820191906000526020600020905b81548152906001019060200180831161272b57829003601f168201915b50505050509050600061276660408051602081019091526000815290565b90508051600003612778575092915050565b8151156127aa57808260405160200161279292919061374d565b60405160208183030381529060405292505050919050565b61171b84612b44565b6127bd8383612bb7565b6127ca600084848461259c565b6108a75760405162461bcd60e51b81526004016107f49061385d565b606060006127f58360026134cd565b612800906002613516565b6001600160401b0381111561281757612817612df5565b6040519080825280601f01601f191660200182016040528015612841576020820181803683370190505b509050600360fc1b8160008151811061285c5761285c61352e565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061288b5761288b61352e565b60200101906001600160f81b031916908160001a90535060006128af8460026134cd565b6128ba906001613516565b90505b6001811115612932576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106128ee576128ee61352e565b1a60f81b8282815181106129045761290461352e565b60200101906001600160f81b031916908160001a90535060049490941c9361292b8161398c565b90506128bd565b50831561151e5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107f4565b60008181526001830160205260408120548015612a6a5760006129a56001836137d6565b85549091506000906129b9906001906137d6565b9050818114612a1e5760008660000182815481106129d9576129d961352e565b90600052602060002001549050808760000184815481106129fc576129fc61352e565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612a2f57612a2f6139a3565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506106bf565b60009150506106bf565b6000818152600183016020526040812054612abb575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556106bf565b5060006106bf565b6001600160e01b03198082169003612b1c5760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b60448201526064016107f4565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b6060612b4f82611534565b6000612b6660408051602081019091526000815290565b90506000815111612b86576040518060200160405280600081525061151e565b80612b9084612085565b604051602001612ba192919061374d565b6040516020818303038152906040529392505050565b6001600160a01b038216612c0d5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016107f4565b612c1681612265565b15612c625760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b60448201526064016107f4565b6001600160a01b0382166000908152600760205260408120805460019290612c8b908490613516565b909155505060008181526006602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b03198116811461142857600080fd5b600060208284031215612d1157600080fd5b813561151e81612ce9565b600060208284031215612d2e57600080fd5b5035919050565b60005b83811015612d50578181015183820152602001612d38565b838111156111be5750506000910152565b60008151808452612d79816020860160208601612d35565b601f01601f19169290920160200192915050565b60208152600061151e6020830184612d61565b6001600160a01b0391909116815260200190565b80356001600160a01b038116811461204d57600080fd5b60008060408385031215612dde57600080fd5b612de783612db4565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60405161010081016001600160401b0381118282101715612e2e57612e2e612df5565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612e5c57612e5c612df5565b604052919050565b60006001600160401b03831115612e7d57612e7d612df5565b612e90601f8401601f1916602001612e34565b9050828152838383011115612ea457600080fd5b828260208301376000602084830101529392505050565b600082601f830112612ecc57600080fd5b61151e83833560208501612e64565b60008060408385031215612eee57600080fd5b8235915060208301356001600160401b03811115612f0b57600080fd5b612f1785828601612ebb565b9150509250929050565b600080600060608486031215612f3657600080fd5b612f3f84612db4565b9250612f4d60208501612db4565b9150604084013590509250925092565b60008060408385031215612f7057600080fd5b50508035926020909101359150565b600080600060608486031215612f9457600080fd5b612f9d84612db4565b9250602080850135925060408501356001600160401b0380821115612fc157600080fd5b818701915087601f830112612fd557600080fd5b813581811115612fe757612fe7612df5565b8060051b612ff6858201612e34565b918252838101850191858101908b84111561301057600080fd5b86860192505b8383101561304c5782358581111561302e5760008081fd5b61303c8d89838a0101612ebb565b8352509186019190860190613016565b809750505050505050509250925092565b6000806040838503121561307057600080fd5b8235915061308060208401612db4565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600683106130c157634e487b7160e01b600052602160045260246000fd5b91905290565b600080602083850312156130da57600080fd5b82356001600160401b03808211156130f157600080fd5b818501915085601f83011261310557600080fd5b81358181111561311457600080fd5b86602060608302850101111561312957600080fd5b60209290920196919550909350505050565b60006020828403121561314d57600080fd5b61151e82612db4565b80356006811061204d57600080fd5b60006020828403121561317757600080fd5b61151e82613156565b6001600160a01b0392909216825261ffff16602082015260400190565b6000602082840312156131af57600080fd5b81356001600160401b038111156131c557600080fd5b61171b84828501612ebb565b803561ffff8116811461204d57600080fd5b600080604083850312156131f657600080fd5b82356001600160401b038082111561320d57600080fd5b90840190610100828703121561322257600080fd5b61322a612e0b565b82358281111561323957600080fd5b61324588828601612ebb565b82525060208301358281111561325a57600080fd5b61326688828601612ebb565b60208301525060408301358281111561327e57600080fd5b61328a88828601612ebb565b604083015250606083013560608201526132a660808401612db4565b60808201526132b760a084016131d1565b60a08201526132c860c08401612db4565b60c08201526132d960e08401613156565b60e0820152935061308091505060208401612db4565b6000806040838503121561330257600080fd5b61330b83612db4565b91506020830135801515811461332057600080fd5b809150509250929050565b6000806000806080858703121561334157600080fd5b61334a85612db4565b935061335860208601612db4565b92506040850135915060608501356001600160401b0381111561337a57600080fd5b8501601f8101871361338b57600080fd5b61339a87823560208401612e64565b91505092959194509250565b602080825282518282018190526000919060409081850190868401855b828110156133fa57815180516001600160a01b031685528601516001600160601b03168685015292840192908501906001016133c3565b5091979650505050505050565b6000806040838503121561341a57600080fd5b61342383612db4565b915061308060208401612db4565b60006040828403121561344357600080fd5b50919050565b602080825260069082015265232927ad22a760d11b604082015260600190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156134e7576134e76134b7565b500290565b634e487b7160e01b600052601260045260246000fd5b600082613511576135116134ec565b500490565b60008219821115613529576135296134b7565b500190565b634e487b7160e01b600052603260045260246000fd5b600060018201613556576135566134b7565b5060010190565b60006060828403121561356f57600080fd5b604051606081018181106001600160401b038211171561359157613591612df5565b604052823581526135a460208401612db4565b60208201526135b5604084016131d1565b60408201529392505050565b6000602082840312156135d357600080fd5b5051919050565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b600181811c9082168061362057607f821691505b60208210810361344357634e487b7160e01b600052602260045260246000fd5b601f8211156108a757600081815260208120601f850160051c810160208610156136675750805b601f850160051c820191505b8181101561368657828155600101613673565b505050505050565b81516001600160401b038111156136a7576136a7612df5565b6136bb816136b5845461360c565b84613640565b602080601f8311600181146136f057600084156136d85750858301515b600019600386901b1c1916600185901b178555613686565b600085815260208120601f198616915b8281101561371f57888601518255948401946001909101908401613700565b508582101561373d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000835161375f818460208801612d35565b835190830190613773818360208801612d35565b01949350505050565b60006040828403121561378e57600080fd5b604051604081018181106001600160401b03821117156137b0576137b0612df5565b6040526137bc83612db4565b81526137ca602084016131d1565b60208201529392505050565b6000828210156137e8576137e86134b7565b500390565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6000826138be576138be6134ec565b500690565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516138f5816017850160208801612d35565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613926816028840160208801612d35565b01602801949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061396590830184612d61565b9695505050505050565b60006020828403121561398157600080fd5b815161151e81612ce9565b60008161399b5761399b6134b7565b506000190190565b634e487b7160e01b600052603160045260246000fdfe61723a2f2f5f44396b4e3157724e576243713535425341475262544234625333763851415054596d42546853625833412f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a26469706673582212206cd92116012347787cf680c1c79fdc1db0e3153cec328cab68502271966858e864736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106102825760003560e01c80637885fdc7116101585780637885fdc7146104fc5780637e9803421461052a5780638da5cb5b146105325780638e28cf981461053a57806391d148541461054d578063938e3d7b1461056057806394bb53f81461057357806395d89b4114610586578063a217fddf1461058e578063a22cb46514610596578063a341793b146105a9578063b88d4fde146105b1578063b89df8e8146105c4578063bf9b7a57146105cd578063c7db2893146105df578063c87b56dd146105e7578063cad96cca146105fa578063d53913931461061a578063d547741f1461062f578063d5abeb0114610642578063da7422281461064b578063dd89c6fa1461065e578063e8a3d48514610666578063e985e9c51461066e578063ef60ceaf14610681578063f2fde38b14610694578063f384702f146106a757600080fd5b806301ffc9a7146102875780630653aca5146102af57806306fdde03146102f1578063081812fc14610306578063095ea7b314610326578063162094c41461033b578063167446071461034e57806318160ddd1461035657806323b872dd14610368578063248a9ca31461037b5780632a55205a1461038e5780632ee774bd146103c05780632f2ff15d146103d35780633542aee2146103e657806336568abe146103f957806342842e0e1461040c5780634473f20a1461041f57806350a5292f146104325780635136dcc71461044c57806356c022bb1461045f578063572b6c05146104725780635a9b0b89146104855780636352211e146104a857806364ed2913146104bb5780636f8b44b0146104ce57806370a08231146104e1578063715018a6146104f4575b600080fd5b61029a610295366004612cff565b6106b4565b60405190151581526020015b60405180910390f35b6102c26102bd366004612d1c565b6106c5565b60408051825181526020808401516001600160a01b0316908201529181015161ffff16908201526060016102a6565b6102f961074a565b6040516102a69190612d8d565b610319610314366004612d1c565b610759565b6040516102a69190612da0565b610339610334366004612dcb565b610780565b005b610339610349366004612edb565b6108ac565b6103396108e3565b600f545b6040519081526020016102a6565b610339610376366004612f21565b6108fa565b61035a610389366004612d1c565b610932565b6103a161039c366004612f5d565b610947565b604080516001600160a01b0390931683526020830191909152016102a6565b6103396103ce366004612f7f565b610a0c565b6103396103e136600461305d565b610a71565b6103396103f4366004612dcb565b610a8d565b61033961040736600461305d565b610a9f565b61033961041a366004612f21565b610b29565b61033961042d366004612d1c565b610b44565b60025461043f9060ff1681565b6040516102a6919061309f565b61033961045a3660046130c7565b610b94565b601654610319906001600160a01b031681565b61029a61048036600461313b565b610bf7565b61048d610c0b565b604080519384526020840192909252908201526060016102a6565b6103196104b6366004612d1c565b610d06565b6103396104c9366004613165565b610d3b565b6103396104dc366004612d1c565b610db3565b61035a6104ef36600461313b565b610e29565b610339610eaf565b60125461051c906001600160a01b03811690600160a01b900461ffff1682565b6040516102a6929190613180565b61035a610ec3565b610319610ecf565b610339610548366004612f7f565b610ee4565b61029a61055b36600461305d565b610f73565b61033961056e36600461319d565b610f9e565b6103396105813660046131e3565b610fb2565b6102f9611157565b61035a600081565b6103396105a43660046132ef565b611161565b6102f9611173565b6103396105bf36600461332b565b611185565b61035a60115481565b60025461029a90610100900460ff1681565b6102f96111c4565b6102f96105f5366004612d1c565b611224565b61060d610608366004612d1c565b61122f565b6040516102a691906133a6565b61035a6000805160206139eb83398151915281565b61033961063d36600461305d565b6112ea565b61035a600d5481565b61033961065936600461313b565b611306565b610339611330565b6102f9611349565b61029a61067c366004613407565b6113db565b61033961068f366004613431565b611409565b6103396106a236600461313b565b61142b565b600e5461029a9060ff1681565b60006106bf826114d6565b92915050565b60408051606081018252600080825260208201819052918101829052906106ed601484611512565b6000818152601360209081526040918290208251808401845290546001600160a01b03808216835261ffff600160a01b90920482168385019081528551606081018752968752925116928501929092525116908201529392505050565b6060610754611525565b905090565b600061076482611534565b506000908152600860205260409020546001600160a01b031690565b600061078b82610d06565b9050806001600160a01b0316836001600160a01b0316036107fd5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661080f611559565b6001600160a01b0316148061082b575061082b8161067c611559565b61089d5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016107f4565b6108a78383611563565b505050565b6108b46115d1565b60115482116108d55760405162461bcd60e51b81526004016107f490613449565b6108df8282611640565b5050565b6108eb6115d1565b600e805460ff19166001179055565b61090b610905611559565b826116c4565b6109275760405162461bcd60e51b81526004016107f490613469565b6108a7838383611723565b60009081526003602052604090206001015490565b60008281526013602052604081205481906001600160a01b0316156109ac576000848152601360205260409020546001600160a01b038116906127109061099990600160a01b900461ffff16866134cd565b6109a39190613502565b91509150610a05565b6012546001600160a01b0316158015906109d25750601254600160a01b900461ffff1615155b156109fe576012546001600160a01b038116906127109061099990600160a01b900461ffff16866134cd565b5060009050805b9250929050565b610a146115d1565b600f54610a2184846118bf565b60005b83811015610a6a57610a58610a398284613516565b848381518110610a4b57610a4b61352e565b6020026020010151611640565b80610a6281613544565b915050610a24565b5050505050565b610a7a82610932565b610a8381611948565b6108a78383611959565b610a956115d1565b6108df82826118bf565b610aa7611559565b6001600160a01b0316816001600160a01b031614610b1f5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016107f4565b6108df82826119e0565b6108a783838360405180602001604052806000815250611185565b610b4c6115d1565b6011548111610b8f5760405162461bcd60e51b815260206004820152600f60248201526e43414e4e4f545f554e465245455a4560881b60448201526064016107f4565b601155565b610b9c6115d1565b6108df8282808060200260200160405190810160405280939291908181526020016000905b82821015610bed57610bde6060830286013681900381019061355d565b81526020019060010190610bc1565b5050505050611a65565b6016546001600160a01b0391821691161490565b600080808080610c19611559565b6001600160a01b031614610c9557306370a08231610c35611559565b6040518263ffffffff1660e01b8152600401610c519190612da0565b602060405180830381865afa158015610c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9291906135c1565b90505b600d54306001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfa91906135c1565b90959094509092509050565b6000818152600660205260408120546001600160a01b0316806106bf5760405162461bcd60e51b81526004016107f4906135da565b610d436115d1565b600254610100900460ff1615610d8c5760405162461bcd60e51b815260206004820152600e60248201526d131250d15394d157d313d0d2d15160921b60448201526064016107f4565b6002805482919060ff19166001836005811115610dab57610dab613089565b021790555050565b610dbb6115d1565b600e5460ff1615610dde5760405162461bcd60e51b81526004016107f490613449565b600f54811015610e245760405162461bcd60e51b81526020600482015260116024820152704c4f5745525f5448414e5f535550504c5960781b60448201526064016107f4565b600d55565b60006001600160a01b038216610e935760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016107f4565b506001600160a01b031660009081526007602052604090205490565b610eb76115d1565b610ec16000611c0c565b565b60006107546014611c67565b6000546201000090046001600160a01b031690565b610efe6000805160206139eb83398151915261055b611559565b610f3c5760405162461bcd60e51b815260206004820152600f60248201526e4e4f545f4d494e5445525f524f4c4560881b60448201526064016107f4565b600f54610f4984846118bf565b60005b83811015610a6a57610f61610a398284613516565b80610f6b81613544565b915050610f4c565b60009182526003602090815260408084206001600160a01b0393909316845291905290205460ff1690565b610fa66115d1565b600c6108df828261368e565b600054610100900460ff1615808015610fd25750600054600160ff909116105b80610ff35750610fe1306114c3565b158015610ff3575060005460ff166001145b6110565760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107f4565b6000805460ff191660011790558015611079576000805461ff0019166101001790555b611084600083611c71565b61109c6000805160206139eb83398151915283611c71565b6110a582611c0c565b6110b28360e00151611c7b565b6110c9836000015184602001518560400151611cab565b6110d1611cdd565b6110d9611d0c565b6110e1611d3b565b6110ee8360600151611d6a565b61110083608001518460a00151611d9a565b61110d8360c00151611dcb565b80156108a7576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6060610754611dfb565b6108df61116c611559565b8383611e0a565b6002546060906107549060ff16611ed4565b611196611190611559565b836116c4565b6111b25760405162461bcd60e51b81526004016107f490613469565b6111be84848484612052565b50505050565b60606040518060600160405280603181526020016139ba603191396002546111ff9060ff1660058111156111fa576111fa613089565b612085565b60405160200161121092919061374d565b604051602081830303815290604052905090565b60606106bf82612185565b604080516001808252818301909252606091816020015b604080518082019091526000808252602082015281526020019060019003908161124657505060125481519192506001600160a01b031690829060009061128f5761128f61352e565b60209081029190910101516001600160a01b039190911690526012548151600160a01b90910461ffff169082906000906112cb576112cb61352e565b6020908102919091018101516001600160601b03909216910152919050565b6112f382610932565b6112fc81611948565b6108a783836119e0565b61130e6115d1565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6113386115d1565b6002805461ff001916610100179055565b6060600c80546113589061360c565b80601f01602080910402602001604051908101604052809291908181526020018280546113849061360c565b80156113d15780601f106113a6576101008083540402835291602001916113d1565b820191906000526020600020905b8154815290600101906020018083116113b457829003601f168201915b5050505050905090565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205460ff1690565b6114116115d1565b6114286114233683900383018361377c565b612190565b50565b6114336115d1565b6001600160a01b0381166114985760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107f4565b61142881611c0c565b60006114ac33610bf7565b156114be575060131936013560601c90565b503390565b6001600160a01b03163b151590565b3390565b60006301ffc9a760e01b6001600160e01b0319831614806106bf5750506001600160e01b03191660009081526001602052604090205460ff1690565b600061151e838361223b565b9392505050565b6060600a80546113589061360c565b61153d81612265565b6114285760405162461bcd60e51b81526004016107f4906135da565b60006107546114a1565b600081815260086020526040902080546001600160a01b0319166001600160a01b038416908117909155819061159882610d06565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6115d9611559565b6001600160a01b03166115ea610ecf565b6001600160a01b031614610ec15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f4565b61164982612265565b6116ac5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016107f4565b60008281526010602052604090206108a7828261368e565b6000806116d083610d06565b9050806001600160a01b0316846001600160a01b031614806116f757506116f781856113db565b8061171b5750836001600160a01b031661171084610759565b6001600160a01b0316145b949350505050565b826001600160a01b031661173682610d06565b6001600160a01b03161461179a5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016107f4565b6001600160a01b0382166117fc5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016107f4565b611807600082611563565b6001600160a01b03831660009081526007602052604081208054600192906118309084906137d6565b90915550506001600160a01b038216600090815260076020526040812080546001929061185e908490613516565b909155505060008181526006602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600d54816118cc600f5490565b6118d69190613516565b11156119155760405162461bcd60e51b815260206004820152600e60248201526d455843454544535f535550504c5960901b60448201526064016107f4565b60005b818110156108a757600f5461192d8482612282565b61193561229c565b508061194081613544565b915050611918565b61142881611954611559565b6122b3565b6119638282610f73565b6108df5760008281526003602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561199c611559565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6119ea8282610f73565b156108df5760008281526003602090815260408083206001600160a01b03851684529091529020805460ff19169055611a21611559565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b60005b81518110156108df576000828281518110611a8557611a8561352e565b60200260200101519050612710816040015161ffff1610611ab85760405162461bcd60e51b81526004016107f4906137ed565b60208101516001600160a01b0316611b31578051600090815260136020526040902080546001600160b01b03191690558051611af690601490612317565b5080516040519081527fa2870857763bd9ae76c957f869f16b31c18dd3bb4c7b4d3a4496dc5c57c657f99060200160405180910390a1611bf9565b6040805180820182526020808401516001600160a01b0390811683528484015161ffff90811683850190815286516000908152601390945294909220925183549451909216600160a01b026001600160b01b03199094169116179190911790558051611b9f90601490612323565b50805160208083015160408085015181519485526001600160a01b039092169284019290925261ffff1682820152517f389b70fb0887f01e83784eb1c4c589f740eca53b00ed0f45e41db5d079719abb9181900360600190a15b5080611c0481613544565b915050611a68565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b60006106bf825490565b6108df8282611959565b600054610100900460ff16611ca25760405162461bcd60e51b81526004016107f490613812565b6114288161232f565b600054610100900460ff16611cd25760405162461bcd60e51b81526004016107f490613812565b6108a7838383612376565b600054610100900460ff16611d045760405162461bcd60e51b81526004016107f490613812565b610ec16123f4565b600054610100900460ff16611d335760405162461bcd60e51b81526004016107f490613812565b610ec161242b565b600054610100900460ff16611d625760405162461bcd60e51b81526004016107f490613812565b610ec1612462565b600054610100900460ff16611d915760405162461bcd60e51b81526004016107f490613812565b61142881612499565b600054610100900460ff16611dc15760405162461bcd60e51b81526004016107f490613812565b6108df82826124e5565b600054610100900460ff16611df25760405162461bcd60e51b81526004016107f490613812565b61142881612575565b6060600b80546113589061360c565b816001600160a01b0316836001600160a01b031603611e675760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b60448201526064016107f4565b6001600160a01b03838116600081815260096020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60606006826005811115611eea57611eea613089565b60ff161115611ef857600080fd5b816005811115611f0a57611f0a613089565b600003611f3457505060408051808201909152600781526604342455f4343360cc1b602082015290565b816005811115611f4657611f46613089565b600103611f7057505060408051808201909152600781526621a122afa2a1a960c91b602082015290565b816005811115611f8257611f82613089565b600203611fad57505060408051808201909152600881526721a122afa722a1a960c11b602082015290565b816005811115611fbf57611fbf613089565b600303611fed57505060408051808201909152600b81526a4342455f4e4543525f485360a81b602082015290565b816005811115611fff57611fff613089565b60040361202857505060408051808201909152600681526521a122afa82960d11b602082015290565b50506040805180820190915260098152684342455f50525f485360b81b602082015290565b919050565b61205d848484611723565b6120698484848461259c565b6111be5760405162461bcd60e51b81526004016107f49061385d565b6060816000036120ac5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156120d657806120c081613544565b91506120cf9050600a83613502565b91506120b0565b6000816001600160401b038111156120f0576120f0612df5565b6040519080825280601f01601f19166020018201604052801561211a576020820181803683370190505b5090505b841561171b5761212f6001836137d6565b915061213c600a866138af565b612147906030613516565b60f81b81838151811061215c5761215c61352e565b60200101906001600160f81b031916908160001a90535061217e600a86613502565b945061211e565b60606106bf826126ab565b612710816020015161ffff16106121b95760405162461bcd60e51b81526004016107f4906137ed565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601280546001600160b01b031916909217600160a01b9091021790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe41926122309291613180565b60405180910390a150565b60008260000182815481106122525761225261352e565b9060005260206000200154905092915050565b6000908152600660205260409020546001600160a01b0316151590565b6108df8282604051806020016040528060008152506127b3565b600f80549060006122ac83613544565b9190505550565b6122bd8282610f73565b6108df576122d5816001600160a01b031660146127e6565b6122e08360206127e6565b6040516020016122f19291906138c3565b60408051601f198184030181529082905262461bcd60e51b82526107f491600401612d8d565b600061151e8383612981565b600061151e8383612a74565b600054610100900460ff166123565760405162461bcd60e51b81526004016107f490613812565b61236663b964efe960e01b612ac3565b610d8c630c934a3560e31b612ac3565b600054610100900460ff1661239d5760405162461bcd60e51b81526004016107f490613812565b600a6123a9848261368e565b50600b6123b6838261368e565b50600c6123c3828261368e565b506123d4633d96f4ff60e11b612ac3565b6123e46380ac58cd60e01b612ac3565b6108a7635b5e139f60e01b612ac3565b600054610100900460ff1661241b5760405162461bcd60e51b81526004016107f490613812565b610ec1632929b36760e11b612ac3565b600054610100900460ff166124525760405162461bcd60e51b81526004016107f490613812565b610ec1631aa1577160e11b612ac3565b600054610100900460ff166124895760405162461bcd60e51b81526004016107f490613812565b610ec1630d169dbf60e31b612ac3565b600054610100900460ff166124c05760405162461bcd60e51b81526004016107f490613812565b600d8190556124d56330f487b560e11b612ac3565b6114286380ac58cd60e01b612ac3565b600054610100900460ff1661250c5760405162461bcd60e51b81526004016107f490613812565b61251c633a47bf5160e11b612ac3565b61252c63152a902d60e11b612ac3565b61253c63c69dbd8f60e01b612ac3565b61254c63656cb66560e11b612ac3565b604080518082019091526001600160a01b038316815261ffff821660208201526108a781612190565b600054610100900460ff1661130e5760405162461bcd60e51b81526004016107f490613812565b60006125b0846001600160a01b03166114c3565b156126a057836001600160a01b031663150b7a026125cc611559565b8786866040518563ffffffff1660e01b81526004016125ee9493929190613932565b6020604051808303816000875af1925050508015612629575060408051601f3d908101601f191682019092526126269181019061396f565b60015b612686573d808015612657576040519150601f19603f3d011682016040523d82523d6000602084013e61265c565b606091505b50805160000361267e5760405162461bcd60e51b81526004016107f49061385d565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061171b565b506001949350505050565b60606126b682611534565b600082815260106020526040812080546126cf9061360c565b80601f01602080910402602001604051908101604052809291908181526020018280546126fb9061360c565b80156127485780601f1061271d57610100808354040283529160200191612748565b820191906000526020600020905b81548152906001019060200180831161272b57829003601f168201915b50505050509050600061276660408051602081019091526000815290565b90508051600003612778575092915050565b8151156127aa57808260405160200161279292919061374d565b60405160208183030381529060405292505050919050565b61171b84612b44565b6127bd8383612bb7565b6127ca600084848461259c565b6108a75760405162461bcd60e51b81526004016107f49061385d565b606060006127f58360026134cd565b612800906002613516565b6001600160401b0381111561281757612817612df5565b6040519080825280601f01601f191660200182016040528015612841576020820181803683370190505b509050600360fc1b8160008151811061285c5761285c61352e565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061288b5761288b61352e565b60200101906001600160f81b031916908160001a90535060006128af8460026134cd565b6128ba906001613516565b90505b6001811115612932576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106128ee576128ee61352e565b1a60f81b8282815181106129045761290461352e565b60200101906001600160f81b031916908160001a90535060049490941c9361292b8161398c565b90506128bd565b50831561151e5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107f4565b60008181526001830160205260408120548015612a6a5760006129a56001836137d6565b85549091506000906129b9906001906137d6565b9050818114612a1e5760008660000182815481106129d9576129d961352e565b90600052602060002001549050808760000184815481106129fc576129fc61352e565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612a2f57612a2f6139a3565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506106bf565b60009150506106bf565b6000818152600183016020526040812054612abb575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556106bf565b5060006106bf565b6001600160e01b03198082169003612b1c5760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b60448201526064016107f4565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b6060612b4f82611534565b6000612b6660408051602081019091526000815290565b90506000815111612b86576040518060200160405280600081525061151e565b80612b9084612085565b604051602001612ba192919061374d565b6040516020818303038152906040529392505050565b6001600160a01b038216612c0d5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016107f4565b612c1681612265565b15612c625760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b60448201526064016107f4565b6001600160a01b0382166000908152600760205260408120805460019290612c8b908490613516565b909155505060008181526006602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b03198116811461142857600080fd5b600060208284031215612d1157600080fd5b813561151e81612ce9565b600060208284031215612d2e57600080fd5b5035919050565b60005b83811015612d50578181015183820152602001612d38565b838111156111be5750506000910152565b60008151808452612d79816020860160208601612d35565b601f01601f19169290920160200192915050565b60208152600061151e6020830184612d61565b6001600160a01b0391909116815260200190565b80356001600160a01b038116811461204d57600080fd5b60008060408385031215612dde57600080fd5b612de783612db4565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60405161010081016001600160401b0381118282101715612e2e57612e2e612df5565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612e5c57612e5c612df5565b604052919050565b60006001600160401b03831115612e7d57612e7d612df5565b612e90601f8401601f1916602001612e34565b9050828152838383011115612ea457600080fd5b828260208301376000602084830101529392505050565b600082601f830112612ecc57600080fd5b61151e83833560208501612e64565b60008060408385031215612eee57600080fd5b8235915060208301356001600160401b03811115612f0b57600080fd5b612f1785828601612ebb565b9150509250929050565b600080600060608486031215612f3657600080fd5b612f3f84612db4565b9250612f4d60208501612db4565b9150604084013590509250925092565b60008060408385031215612f7057600080fd5b50508035926020909101359150565b600080600060608486031215612f9457600080fd5b612f9d84612db4565b9250602080850135925060408501356001600160401b0380821115612fc157600080fd5b818701915087601f830112612fd557600080fd5b813581811115612fe757612fe7612df5565b8060051b612ff6858201612e34565b918252838101850191858101908b84111561301057600080fd5b86860192505b8383101561304c5782358581111561302e5760008081fd5b61303c8d89838a0101612ebb565b8352509186019190860190613016565b809750505050505050509250925092565b6000806040838503121561307057600080fd5b8235915061308060208401612db4565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600683106130c157634e487b7160e01b600052602160045260246000fd5b91905290565b600080602083850312156130da57600080fd5b82356001600160401b03808211156130f157600080fd5b818501915085601f83011261310557600080fd5b81358181111561311457600080fd5b86602060608302850101111561312957600080fd5b60209290920196919550909350505050565b60006020828403121561314d57600080fd5b61151e82612db4565b80356006811061204d57600080fd5b60006020828403121561317757600080fd5b61151e82613156565b6001600160a01b0392909216825261ffff16602082015260400190565b6000602082840312156131af57600080fd5b81356001600160401b038111156131c557600080fd5b61171b84828501612ebb565b803561ffff8116811461204d57600080fd5b600080604083850312156131f657600080fd5b82356001600160401b038082111561320d57600080fd5b90840190610100828703121561322257600080fd5b61322a612e0b565b82358281111561323957600080fd5b61324588828601612ebb565b82525060208301358281111561325a57600080fd5b61326688828601612ebb565b60208301525060408301358281111561327e57600080fd5b61328a88828601612ebb565b604083015250606083013560608201526132a660808401612db4565b60808201526132b760a084016131d1565b60a08201526132c860c08401612db4565b60c08201526132d960e08401613156565b60e0820152935061308091505060208401612db4565b6000806040838503121561330257600080fd5b61330b83612db4565b91506020830135801515811461332057600080fd5b809150509250929050565b6000806000806080858703121561334157600080fd5b61334a85612db4565b935061335860208601612db4565b92506040850135915060608501356001600160401b0381111561337a57600080fd5b8501601f8101871361338b57600080fd5b61339a87823560208401612e64565b91505092959194509250565b602080825282518282018190526000919060409081850190868401855b828110156133fa57815180516001600160a01b031685528601516001600160601b03168685015292840192908501906001016133c3565b5091979650505050505050565b6000806040838503121561341a57600080fd5b61342383612db4565b915061308060208401612db4565b60006040828403121561344357600080fd5b50919050565b602080825260069082015265232927ad22a760d11b604082015260600190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156134e7576134e76134b7565b500290565b634e487b7160e01b600052601260045260246000fd5b600082613511576135116134ec565b500490565b60008219821115613529576135296134b7565b500190565b634e487b7160e01b600052603260045260246000fd5b600060018201613556576135566134b7565b5060010190565b60006060828403121561356f57600080fd5b604051606081018181106001600160401b038211171561359157613591612df5565b604052823581526135a460208401612db4565b60208201526135b5604084016131d1565b60408201529392505050565b6000602082840312156135d357600080fd5b5051919050565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b600181811c9082168061362057607f821691505b60208210810361344357634e487b7160e01b600052602260045260246000fd5b601f8211156108a757600081815260208120601f850160051c810160208610156136675750805b601f850160051c820191505b8181101561368657828155600101613673565b505050505050565b81516001600160401b038111156136a7576136a7612df5565b6136bb816136b5845461360c565b84613640565b602080601f8311600181146136f057600084156136d85750858301515b600019600386901b1c1916600185901b178555613686565b600085815260208120601f198616915b8281101561371f57888601518255948401946001909101908401613700565b508582101561373d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000835161375f818460208801612d35565b835190830190613773818360208801612d35565b01949350505050565b60006040828403121561378e57600080fd5b604051604081018181106001600160401b03821117156137b0576137b0612df5565b6040526137bc83612db4565b81526137ca602084016131d1565b60208201529392505050565b6000828210156137e8576137e86134b7565b500390565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6000826138be576138be6134ec565b500690565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516138f5816017850160208801612d35565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613926816028840160208801612d35565b01602801949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061396590830184612d61565b9695505050505050565b60006020828403121561398157600080fd5b815161151e81612ce9565b60008161399b5761399b6134b7565b506000190190565b634e487b7160e01b600052603160045260246000fdfe61723a2f2f5f44396b4e3157724e576243713535425341475262544234625333763851415054596d42546853625833412f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a26469706673582212206cd92116012347787cf680c1c79fdc1db0e3153cec328cab68502271966858e864736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/presets/ERC721SimpleSalesCollection":{"address":{"1":"0xa9dB7831CC85960dB16bEf4914e4d3Ce0630d2B0","3":"0x137d31C9E75eeb883d88406944540F2FB8bfDcaF","4":"0x802Bd00A39fc1E21fb665A724845E1C0452246eD","5":"0xD01F2668247FC1c7334591457dc1a8e3C6a5a8E4","25":"0x99cfc48d63e4914A0f94d46B0FCF30bD8775067E","56":"0x1Fc79E01fe724Ef4A1f8995f1299B90565a6AD39","65":"0xb2edC1E98b147137D7f6894403E163236bc6FffC","66":"0x1f0c421312EA02e964Cec73fdC49a350626758D3","97":"0x960327273C346eE9dfa122a757425B350b51F833","137":"0xF33c041551e6945bF8f2C34bd61784Ae6F50a8C9","250":"0x5082a0AAffd7A82B16A15b6Ef42774A94527E69B","280":"0x460acb067040E9E8ed8a8A169cbF078E6C0D01eE","4002":"0x5082a0AAffd7A82B16A15b6Ef42774A94527E69B","9000":"0xb2edC1E98b147137D7f6894403E163236bc6FffC","42161":"0xAcB0dD0A3129859955D610233C0DD18BCb15fB88","43113":"0x8fa6C988b115B46Ed2910C53992864754316305f","43114":"0x0e6223dEfF249b5E2Ff966f2f24CE87de1229Df5","421611":"0xE59823282f481889A1264469ACa219f6aCa2fE40","arbitrumOne":"0xAcB0dD0A3129859955D610233C0DD18BCb15fB88","arbitrumTestnet":"0xE59823282f481889A1264469ACa219f6aCa2fE40","avalanche":"0x0e6223dEfF249b5E2Ff966f2f24CE87de1229Df5","avalancheFujiTestnet":"0x8fa6C988b115B46Ed2910C53992864754316305f","bsc":"0x1Fc79E01fe724Ef4A1f8995f1299B90565a6AD39","bscTestnet":"0x960327273C346eE9dfa122a757425B350b51F833","cronos":"0x99cfc48d63e4914A0f94d46B0FCF30bD8775067E","evmosTestnet":"0xb2edC1E98b147137D7f6894403E163236bc6FffC","ftmTestnet":"0x5082a0AAffd7A82B16A15b6Ef42774A94527E69B","goerli":"0xD01F2668247FC1c7334591457dc1a8e3C6a5a8E4","mainnet":"0xa9dB7831CC85960dB16bEf4914e4d3Ce0630d2B0","okcMainnet":"0x1f0c421312EA02e964Cec73fdC49a350626758D3","okcTestnet":"0xb2edC1E98b147137D7f6894403E163236bc6FffC","opera":"0x5082a0AAffd7A82B16A15b6Ef42774A94527E69B","polygon":"0xF33c041551e6945bF8f2C34bd61784Ae6F50a8C9","rinkeby":"0x802Bd00A39fc1E21fb665A724845E1C0452246eD","ropsten":"0x137d31C9E75eeb883d88406944540F2FB8bfDcaF","zksyncTestnet":"0x460acb067040E9E8ed8a8A169cbF078E6C0D01eE"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721SimpleSalesCollection","sourceName":"contracts/collections/ERC721/presets/ERC721SimpleSalesCollection.sol","abi":[{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"string","name":"placeholderURI","type":"string"},{"internalType":"string","name":"tokenURIPrefix","type":"string"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"internalType":"uint256","name":"preSalePrice","type":"uint256"},{"internalType":"uint256","name":"preSaleMaxMintPerWallet","type":"uint256"},{"internalType":"uint256","name":"publicSalePrice","type":"uint256"},{"internalType":"uint256","name":"publicSaleMaxMintPerTx","type":"uint256"},{"internalType":"address","name":"defaultRoyaltyAddress","type":"address"},{"internalType":"uint16","name":"defaultRoyaltyBps","type":"uint16"},{"internalType":"address","name":"proceedsRecipient","type":"address"},{"internalType":"address","name":"trustedForwarder","type":"address"},{"internalType":"enum LicenseVersion","name":"licenseVersion","type":"uint8"}],"internalType":"struct ERC721SimpleSalesCollection.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"DefaultRoyaltySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"TokenRoyaltyRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"TokenRoyaltySet","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":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LOCKER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultRoyalty","outputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"filterUnlocked","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"freezeTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getInfo","outputs":[{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"uint256","name":"_totalSupply","type":"uint256"},{"internalType":"uint256","name":"_senderBalance","type":"uint256"},{"internalType":"uint256","name":"_preSalePrice","type":"uint256"},{"internalType":"uint256","name":"_preSaleMaxMintPerWallet","type":"uint256"},{"internalType":"uint256","name":"_preSaleAlreadyClaimed","type":"uint256"},{"internalType":"bool","name":"_preSaleActive","type":"bool"},{"internalType":"uint256","name":"_publicSalePrice","type":"uint256"},{"internalType":"uint256","name":"_publicSaleMaxMintPerTx","type":"uint256"},{"internalType":"bool","name":"_publicSaleActive","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getRaribleV2Royalties","outputs":[{"components":[{"internalType":"address payable","name":"account","type":"address"},{"internalType":"uint96","name":"value","type":"uint96"}],"internalType":"struct LibPart.Part[]","name":"result","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenRoyaltiesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getTokenRoyaltyByIndex","outputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasRoleBasedLockableExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"string","name":"placeholderURI","type":"string"},{"internalType":"string","name":"tokenURIPrefix","type":"string"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"internalType":"uint256","name":"preSalePrice","type":"uint256"},{"internalType":"uint256","name":"preSaleMaxMintPerWallet","type":"uint256"},{"internalType":"uint256","name":"publicSalePrice","type":"uint256"},{"internalType":"uint256","name":"publicSaleMaxMintPerTx","type":"uint256"},{"internalType":"address","name":"defaultRoyaltyAddress","type":"address"},{"internalType":"uint16","name":"defaultRoyaltyBps","type":"uint16"},{"internalType":"address","name":"proceedsRecipient","type":"address"},{"internalType":"address","name":"trustedForwarder","type":"address"},{"internalType":"enum LicenseVersion","name":"licenseVersion","type":"uint8"}],"internalType":"struct ERC721SimpleSalesCollection.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","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":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersion","outputs":[{"internalType":"enum LicenseVersion","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersionLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"locked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintPreSale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintPublicSale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onPreSaleAllowList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","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":[],"name":"placeholderURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleAllowlistMerkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleMaxMintPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSalePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleMaxMintPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSalePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"bytes32","name":"newRoot","type":"bytes32"}],"name":"setAllowlistMerkleRoot","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyalty","name":"royalty","type":"tuple"}],"name":"setDefaultRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum LicenseVersion","name":"_licenseVersion","type":"uint8"}],"name":"setLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setPlaceholderURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPreSaleMaxMintPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPreSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPublicSaleMaxMintPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPublicSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig[]","name":"royaltyConfigs","type":"tuple[]"}],"name":"setTokenRoyalties","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURIPrefix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURISuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"trustedForwarder","type":"address"}],"name":"setTrustedForwarder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"isActive","type":"bool"}],"name":"togglePreSaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isActive","type":"bool"}],"name":"togglePublicSaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIPrefix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURISuffix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"transferFromBulk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"from","type":"address[]"},{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"transferFromBulk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405260006012553480156200001657600080fd5b5060405162006e1938038062006e19833981016040819052620000399162000eb2565b8051602082015160046200005662000050620000bd565b620000d9565b6002805482919060ff60c01b1916600160c01b8360058111156200007e576200007e62001067565b0217905550600390506200009383826200110b565b506004620000a282826200110b565b5050600160135550620000b6813362000134565b5062001222565b6000620000d46200036960201b62002acd1760201c565b905090565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620001555750600054600160ff909116105b806200018557506200017230620003a160201b62002aef1760201c565b15801562000185575060005460ff166001145b620001ee5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000212576000805461ff0019166101001790555b6200021f600083620003b0565b6200022a82620000d9565b6101808301516200023d906002620003c0565b6101c08301516200024e90620003f6565b825160208401516040850151620002679291906200042e565b62000281836060015184608001516200046560201b60201c565b60a083015162000291906200049b565b6200029b620004d0565b620002a68262000506565b620002b06200053b565b620002ca8360c001518460e001516200056f60201b60201c565b620002e6836101000151846101200151620005b660201b60201c565b62000302836101400151846101600151620005ec60201b60201c565b6101a0830151620003139062000622565b6200031d62000657565b801562000364576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6022546000906001600160a01b031633036200038c575060131936013560601c90565b620000d46200068b60201b62002afe1760201c565b6001600160a01b03163b151590565b620003bc82826200068f565b5050565b600054610100900460ff16620003ea5760405162461bcd60e51b8152600401620001e590620011d7565b620003bc828262000735565b600054610100900460ff16620004205760405162461bcd60e51b8152600401620001e590620011d7565b6200042b81620007c1565b50565b600054610100900460ff16620004585760405162461bcd60e51b8152600401620001e590620011d7565b620003648383836200083f565b600054610100900460ff166200048f5760405162461bcd60e51b8152600401620001e590620011d7565b620003bc8282620008cc565b600054610100900460ff16620004c55760405162461bcd60e51b8152600401620001e590620011d7565b6200042b8162000964565b600054610100900460ff16620004fa5760405162461bcd60e51b8152600401620001e590620011d7565b62000504620009b7565b565b600054610100900460ff16620005305760405162461bcd60e51b8152600401620001e590620011d7565b6200042b81620009f3565b600054610100900460ff16620005655760405162461bcd60e51b8152600401620001e590620011d7565b6200050462000a5b565b600054610100900460ff16620005995760405162461bcd60e51b8152600401620001e590620011d7565b620005ab63209680f760e11b62000a92565b601491909155601555565b600054610100900460ff16620005e05760405162461bcd60e51b8152600401620001e590620011d7565b620003bc828262000b16565b600054610100900460ff16620006165760405162461bcd60e51b8152600401620001e590620011d7565b620003bc828262000b5d565b600054610100900460ff166200064c5760405162461bcd60e51b8152600401620001e590620011d7565b6200042b8162000bfa565b600054610100900460ff16620006815760405162461bcd60e51b8152600401620001e590620011d7565b6200050462000c46565b3390565b6000828152601d602090815260408083206001600160a01b038516845290915290205460ff16620003bc576000828152601d602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620006f1620000bd565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600054610100900460ff166200075f5760405162461bcd60e51b8152600401620001e590620011d7565b6200077163ac2ba33360e01b62000a92565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b836003811115620007b857620007b862001067565b02179055505050565b600054610100900460ff16620007eb5760405162461bcd60e51b8152600401620001e590620011d7565b620007fd63b964efe960e01b62000a92565b6200080f630c934a3560e31b62000a92565b6002805482919060ff60c01b1916600160c01b83600581111562000837576200083762001067565b021790555050565b600054610100900460ff16620008695760405162461bcd60e51b8152600401620001e590620011d7565b600d6200087784826200110b565b50600e6200088683826200110b565b50600f6200089582826200110b565b50620008a8633d96f4ff60e11b62000a92565b620008ba6380ac58cd60e01b62000a92565b62000364635b5e139f60e01b62000a92565b600054610100900460ff16620008f65760405162461bcd60e51b8152600401620001e590620011d7565b60096200090483826200110b565b50600a6200091382826200110b565b50604080518082019091526005815264173539b7b760d91b6020820152600b906200093f90826200110b565b5062000952631f2f406b60e01b62000a92565b620003bc635b5e139f60e01b62000a92565b600054610100900460ff166200098e5760405162461bcd60e51b8152600401620001e590620011d7565b6010819055620009a56330f487b560e11b62000a92565b6200042b6380ac58cd60e01b62000a92565b600054610100900460ff16620009e15760405162461bcd60e51b8152600401620001e590620011d7565b62000504631aa1577160e11b62000a92565b600054610100900460ff1662000a1d5760405162461bcd60e51b8152600401620001e590620011d7565b62000a2f631a056e7160e01b62000a92565b6200042b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a682620003b0565b600054610100900460ff1662000a855760405162461bcd60e51b8152600401620001e590620011d7565b6200050463714ad8e760e01b5b6001600160e01b0319808216900362000aee5760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e74657266616365206964000000006044820152606401620001e5565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b600054610100900460ff1662000b405760405162461bcd60e51b8152600401620001e590620011d7565b62000b526317e0bac360e31b62000a92565b601991909155601a55565b600054610100900460ff1662000b875760405162461bcd60e51b8152600401620001e590620011d7565b62000b99633a47bf5160e11b62000a92565b62000bab63152a902d60e11b62000a92565b62000bbd63c69dbd8f60e01b62000a92565b62000bcf63656cb66560e11b62000a92565b604080518082019091526001600160a01b038316815261ffff82166020820152620003648162000c82565b600054610100900460ff1662000c245760405162461bcd60e51b8152600401620001e590620011d7565b602280546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1662000c705760405162461bcd60e51b8152600401620001e590620011d7565b62000504632a7c3e4960e01b62000a92565b612710816020015161ffff161062000ccb5760405162461bcd60e51b815260206004820152600b60248201526a496e76616c69642062707360a81b6044820152606401620001e5565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601e8054600160a01b9092026001600160b01b03199092169092171790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe419262000d5d92916001600160a01b0392909216825261ffff16602082015260400190565b60405180910390a150565b634e487b7160e01b600052604160045260246000fd5b6040516101e081016001600160401b038111828210171562000da45762000da462000d68565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000dd55762000dd562000d68565b604052919050565b600082601f83011262000def57600080fd5b81516001600160401b0381111562000e0b5762000e0b62000d68565b602062000e21601f8301601f1916820162000daa565b828152858284870101111562000e3657600080fd5b60005b8381101562000e5657858101830151828201840152820162000e39565b8381111562000e685760008385840101525b5095945050505050565b80516001600160a01b038116811462000e8a57600080fd5b919050565b805161ffff8116811462000e8a57600080fd5b80516006811062000e8a57600080fd5b60006020828403121562000ec557600080fd5b81516001600160401b038082111562000edd57600080fd5b908301906101e0828603121562000ef357600080fd5b62000efd62000d7e565b82518281111562000f0d57600080fd5b62000f1b8782860162000ddd565b82525060208301518281111562000f3157600080fd5b62000f3f8782860162000ddd565b60208301525060408301518281111562000f5857600080fd5b62000f668782860162000ddd565b60408301525060608301518281111562000f7f57600080fd5b62000f8d8782860162000ddd565b60608301525060808301518281111562000fa657600080fd5b62000fb48782860162000ddd565b60808301525060a0838101519082015260c0808401519082015260e080840151908201526101008084015190820152610120808401519082015261014091506200100082840162000e72565b8282015261016091506200101682840162000e8f565b8282015261018091506200102c82840162000e72565b828201526101a091506200104282840162000e72565b828201526101c091506200105882840162000ea2565b91810191909152949350505050565b634e487b7160e01b600052602160045260246000fd5b600181811c908216806200109257607f821691505b602082108103620010b357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200036457600081815260208120601f850160051c81016020861015620010e25750805b601f850160051c820191505b818110156200110357828155600101620010ee565b505050505050565b81516001600160401b0381111562001127576200112762000d68565b6200113f816200113884546200107d565b84620010b9565b602080601f8311600181146200117757600084156200115e5750858301515b600019600386901b1c1916600185901b17855562001103565b600085815260208120601f198616915b82811015620011a85788860151825594840194600190910190840162001187565b5085821015620011c75787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b615be780620012326000396000f3fe6080604052600436106104635760003560e01c80638da5cb5b11610242578063c87b56dd11610135578063c87b56dd14610d73578063cad96cca14610d93578063d539139314610dc0578063d547741f14610de2578063d5abeb0114610e02578063d79ff99d14610e18578063da74222814610e2b578063da82b22714610e4b578063dbbc853b14610e60578063dcbe353f14610e75578063dd46706414610e95578063dd89c6fa14610eb5578063de6d6d9614610eca578063e3b9a7e514610eea578063e757c17d14610f0a578063e8a3d48514610f20578063e985e9c514610f35578063ef60ceaf14610f55578063f2fde38b14610f75578063f362136714610f95578063f384702f14610fb7578063f74bbf5914610fd1578063f95df41414610ff1578063fe50b5871461101157600080fd5b80638da5cb5b14610b0057806391d1485414610b15578063938e3d7b14610b3557806395d89b4114610b5557806399e0dd7c14610b6a5780639b6860c814610b8a5780639e6b2c5b14610ba0578063a217fddf14610bb3578063a22cb46514610bc8578063a341793b14610be8578063a9852bfb14610bfd578063aaeaca4814610c1d578063af121f5414610c33578063b27c6f2d14610c54578063b45a3c0e14610c6a578063b6c693e514610c8a578063b88d4fde14610ca4578063ba4695fd14610cc4578063bf9b7a5714610cd9578063c0ac998314610cfa578063c0bb38ff14610d0f578063c29de63014610d2f578063c723955a14610d49578063c7db289314610d5e57600080fd5b8063464bd6401161035a578063464bd640146107d057806349561cb9146107ea5780634f972f5f1461080b57806350a5292f1461082b5780635136dcc71461085957806356c022bb14610879578063572b6c05146108995780635a9b0b89146108b95780635d36598f1461091c5780636057e0ec1461093c5780636198e3391461095d5780636352211e1461097d57806364ed29131461099d5780636f8b44b0146109bd57806370a08231146109dd578063714ad8e7146109fd578063715018a614610a115780637313cba914610a265780637885fdc714610a3b578063791a251914610a765780637d7eee4214610a965780637e98034214610ab6578063837fe14014610acb578063859610c614610ae057600080fd5b806301ffc9a714610468578063059fb6f71461049d5780630653aca5146104bf57806306fdde031461050e578063081812fc14610530578063095ea7b31461055d578063167446071461057d57806318160ddd146105925780631a056e71146105b157806323b872dd146105d1578063248a9ca3146105f15780632a55205a146106115780632bb684ad1461063f5780632c2330671461066c5780632d00b5871461068c5780632d8e85b0146106ba5780632f2ff15d146106da5780632fe388be146106fa5780633542aee21461071a5780633574a2dd1461073a57806336568abe1461075a5780633acf404d1461077a5780633c0e8f2c1461079057806342842e0e146107b0575b600080fd5b34801561047457600080fd5b50610488610483366004614919565b611031565b60405190151581526020015b60405180910390f35b3480156104a957600080fd5b506104bd6104b8366004614a4a565b611042565b005b3480156104cb57600080fd5b506104df6104da366004614aa7565b6110e2565b60408051825181526020808401516001600160a01b0316908201529181015161ffff1690820152606001610494565b34801561051a57600080fd5b50610523611169565b6040516104949190614b18565b34801561053c57600080fd5b5061055061054b366004614aa7565b611178565b6040516104949190614b2b565b34801561056957600080fd5b506104bd610578366004614b3f565b61119f565b34801561058957600080fd5b506104bd6112cb565b34801561059e57600080fd5b506012545b604051908152602001610494565b3480156105bd57600080fd5b506104bd6105cc366004614b3f565b6112e2565b3480156105dd57600080fd5b506104bd6105ec366004614b69565b611348565b3480156105fd57600080fd5b506105a361060c366004614aa7565b611380565b34801561061d57600080fd5b5061063161062c366004614ba5565b611395565b604051610494929190614bc7565b34801561064b57600080fd5b5061065f61065a366004614c24565b61145a565b6040516104949190614c65565b34801561067857600080fd5b506104bd610687366004614ca9565b611524565b34801561069857600080fd5b506002546106ad90600160b01b900460ff1681565b6040516104949190614ce0565b3480156106c657600080fd5b506104bd6106d5366004614d08565b611583565b3480156106e657600080fd5b506104bd6106f5366004614d25565b61159e565b34801561070657600080fd5b506104bd610715366004614db3565b6115ba565b34801561072657600080fd5b506104bd610735366004614b3f565b61171f565b34801561074657600080fd5b506104bd610755366004614ea7565b611727565b34801561076657600080fd5b506104bd610775366004614d25565b61173b565b34801561078657600080fd5b506105a360165481565b34801561079c57600080fd5b506104bd6107ab366004614aa7565b6117c5565b3480156107bc57600080fd5b506104bd6107cb366004614b69565b6117d2565b3480156107dc57600080fd5b506017546104889060ff1681565b3480156107f657600080fd5b5060025461048890600160b81b900460ff1681565b34801561081757600080fd5b506104bd610826366004614d08565b6117ed565b34801561083757600080fd5b5060025461084c90600160c01b900460ff1681565b6040516104949190614edb565b34801561086557600080fd5b506104bd610874366004614eef565b611808565b34801561088557600080fd5b50602254610550906001600160a01b031681565b3480156108a557600080fd5b506104886108b4366004614f63565b61186b565b3480156108c557600080fd5b506108ce61187f565b604080519a8b5260208b0199909952978901969096526060880194909452608087019290925260a0860152151560c085015260e0840152610100830152151561012082015261014001610494565b34801561092857600080fd5b506104bd610937366004614c24565b6119f0565b34801561094857600080fd5b5060025461048890600160a01b900460ff1681565b34801561096957600080fd5b506104bd610978366004614aa7565b611a93565b34801561098957600080fd5b50610550610998366004614aa7565b611aff565b3480156109a957600080fd5b506104bd6109b8366004614f8d565b611b34565b3480156109c957600080fd5b506104bd6109d8366004614aa7565b611bac565b3480156109e957600080fd5b506105a36109f8366004614f63565b611c22565b348015610a0957600080fd5b506001610488565b348015610a1d57600080fd5b506104bd611ca8565b348015610a3257600080fd5b50610523611cbc565b348015610a4757600080fd5b50601e54610a68906001600160a01b03811690600160a01b900461ffff1682565b604051610494929190614fa8565b348015610a8257600080fd5b506104bd610a91366004614aa7565b611d4e565b348015610aa257600080fd5b506104bd610ab1366004614aa7565b611d5b565b348015610ac257600080fd5b506105a3611d68565b348015610ad757600080fd5b506104bd611d74565b348015610aec57600080fd5b506104bd610afb366004614c24565b611dbb565b348015610b0c57600080fd5b50610550611e54565b348015610b2157600080fd5b50610488610b30366004614d25565b611e69565b348015610b4157600080fd5b506104bd610b50366004614ea7565b611e94565b348015610b6157600080fd5b50610523611ea8565b348015610b7657600080fd5b506104bd610b85366004614ea7565b611eb2565b348015610b9657600080fd5b506105a360195481565b6104bd610bae366004614fc5565b611ee9565b348015610bbf57600080fd5b506105a3600081565b348015610bd457600080fd5b506104bd610be3366004615010565b6120b4565b348015610bf457600080fd5b506105236120c6565b348015610c0957600080fd5b506104bd610c18366004614ea7565b6120df565b348015610c2957600080fd5b506105a360155481565b348015610c3f57600080fd5b5060025461048890600160a81b900460ff1681565b348015610c6057600080fd5b506105a3601a5481565b348015610c7657600080fd5b50610488610c85366004614aa7565b612116565b348015610c9657600080fd5b50601b546104889060ff1681565b348015610cb057600080fd5b506104bd610cbf366004615047565b612123565b348015610cd057600080fd5b506104bd61215c565b348015610ce557600080fd5b5060025461048890600160c81b900460ff1681565b348015610d0657600080fd5b50610523612173565b348015610d1b57600080fd5b506104bd610d2a366004614f63565b612182565b348015610d3b57600080fd5b50600c546104889060ff1681565b348015610d5557600080fd5b506104bd6121d6565b348015610d6a57600080fd5b50610523612235565b348015610d7f57600080fd5b50610523610d8e366004614aa7565b61229c565b348015610d9f57600080fd5b50610db3610dae366004614aa7565b6122a7565b60405161049491906150c2565b348015610dcc57600080fd5b506105a3600080516020615b7283398151915281565b348015610dee57600080fd5b506104bd610dfd366004614d25565b612362565b348015610e0e57600080fd5b506105a360105481565b6104bd610e26366004614b3f565b61237e565b348015610e3757600080fd5b506104bd610e46366004614f63565b612476565b348015610e5757600080fd5b506104bd6124a0565b348015610e6c57600080fd5b506105236124e6565b348015610e8157600080fd5b50600254610550906001600160a01b031681565b348015610ea157600080fd5b506104bd610eb0366004614aa7565b6124f5565b348015610ec157600080fd5b506104bd612559565b348015610ed657600080fd5b506104bd610ee5366004615123565b612576565b348015610ef657600080fd5b50610488610f0536600461518e565b6127ae565b348015610f1657600080fd5b506105a360145481565b348015610f2c57600080fd5b506105236127fc565b348015610f4157600080fd5b50610488610f503660046151c7565b61280b565b348015610f6157600080fd5b506104bd610f703660046151f1565b612839565b348015610f8157600080fd5b506104bd610f90366004614f63565b61285b565b348015610fa157600080fd5b506105a3600080516020615b9283398151915281565b348015610fc357600080fd5b506011546104889060ff1681565b348015610fdd57600080fd5b506104bd610fec366004614aa7565b6128d1565b348015610ffd57600080fd5b506104bd61100c366004614aa7565b6128de565b34801561101d57600080fd5b506104bd61102c36600461521b565b6128eb565b600061103c82612b02565b92915050565b60005b81518110156110dc57306001600160a01b03166323b872dd8585858581518110611071576110716153ba565b60200260200101516040518463ffffffff1660e01b8152600401611097939291906153d0565b600060405180830381600087803b1580156110b157600080fd5b505af11580156110c5573d6000803e3d6000fd5b5050505080806110d49061540a565b915050611045565b50505050565b6040805160608101825260008082526020820181905291810191909152600061110c602084612b3e565b6000818152601f60209081526040918290208251808401845290546001600160a01b03808216835261ffff600160a01b90920482168385019081528551606081018752968752925116928501929092525116908201529392505050565b6060611173612b51565b905090565b600061118382612b60565b506000908152600760205260409020546001600160a01b031690565b60006111aa82611aff565b9050806001600160a01b0316836001600160a01b03160361121c5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661122e612b85565b6001600160a01b0316148061124a575061124a81610f50612b85565b6112bc5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401611213565b6112c68383612b8f565b505050565b6112d3612bfd565b6011805460ff19166001179055565b6112fc600080516020615b72833981519152610b30612b85565b61133a5760405162461bcd60e51b815260206004820152600f60248201526e4e4f545f4d494e5445525f524f4c4560881b6044820152606401611213565b6113448282612c6c565b5050565b611359611353612b85565b82612cf5565b6113755760405162461bcd60e51b815260040161121390615423565b6112c6838383612d53565b6000908152601d602052604090206001015490565b6000828152601f602052604081205481906001600160a01b0316156113fa576000848152601f60205260409020546001600160a01b03811690612710906113e790600160a01b900461ffff1686615471565b6113f191906154a6565b91509150611453565b601e546001600160a01b0316158015906114205750601e54600160a01b900461ffff1615155b1561144c57601e546001600160a01b03811690612710906113e790600160a01b900461ffff1686615471565b5060009050805b9250929050565b60606000826001600160401b038111156114765761147661494d565b60405190808252806020026020018201604052801561149f578160200160208202803683370190505b50905060005b8381101561151c576114ce8585838181106114c2576114c26153ba565b90506020020135612116565b61150a578484828181106114e4576114e46153ba565b905060200201358282815181106114fd576114fd6153ba565b6020026020010181815250505b806115148161540a565b9150506114a5565b509392505050565b61152c612bfd565b600254600160b81b900460ff16156115565760405162461bcd60e51b8152600401611213906154ba565b6002805482919060ff60b01b1916600160b01b83600381111561157b5761157b614cca565b021790555050565b61158b612bfd565b601b805460ff1916911515919091179055565b6115a782611380565b6115b081612efa565b6112c68383612f0b565b81518351146116055760405162461bcd60e51b815260206004820152601760248201527608ca49e9abea89ebe988a9c8ea890be9a92a69a82a8869604b1b6044820152606401611213565b80518351146116535760405162461bcd60e51b815260206004820152601a60248201527908ca49e9abea89e968a9cbe988a9c8ea890be9a92a69a82a886960331b6044820152606401611213565b60005b81518110156110dc57306001600160a01b03166323b872dd858381518110611680576116806153ba565b602002602001015185848151811061169a5761169a6153ba565b60200260200101518585815181106116b4576116b46153ba565b60200260200101516040518463ffffffff1660e01b81526004016116da939291906153d0565b600060405180830381600087803b1580156116f457600080fd5b505af1158015611708573d6000803e3d6000fd5b5050505080806117179061540a565b915050611656565b61133a612bfd565b61172f612bfd565b6009611344828261555c565b611743612b85565b6001600160a01b0316816001600160a01b0316146117bb5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401611213565b6113448282612f92565b6117cd612bfd565b601a55565b6112c683838360405180602001604052806000815250612123565b6117f5612bfd565b6017805460ff1916911515919091179055565b611810612bfd565b6113448282808060200260200160405190810160405280939291908181526020016000905b82821015611861576118526060830286013681900381019061561b565b81526020019060010190611835565b5050505050613017565b6022546001600160a01b0391821691161490565b60008080808080808080808080611894612b85565b6001600160a01b03161461191057306370a082316118b0612b85565b6040518263ffffffff1660e01b81526004016118cc9190614b2b565b602060405180830381865afa1580156118e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190d919061567f565b90505b601054306001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611951573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611975919061567f565b8260145460155460186000611988612b85565b6001600160a01b03166001600160a01b0316815260200190815260200160002054601760009054906101000a900460ff16601954601a54601b60009054906101000a900460ff169a509a509a509a509a509a509a509a509a509a505090919293949596979899565b600260135403611a125760405162461bcd60e51b815260040161121390615698565b6002601355611a2f600080516020615b9283398151915233611e69565b611a4b5760405162461bcd60e51b8152600401611213906156cf565b60005b81811015611a8957611a77838383818110611a6b57611a6b6153ba565b905060200201356131bc565b80611a818161540a565b915050611a4e565b5050600160135550565b600260135403611ab55760405162461bcd60e51b815260040161121390615698565b6002601355611ad2600080516020615b9283398151915233611e69565b611aee5760405162461bcd60e51b8152600401611213906156cf565b611af7816131bc565b506001601355565b6000818152600560205260408120546001600160a01b03168061103c5760405162461bcd60e51b8152600401611213906156f8565b611b3c612bfd565b600254600160c81b900460ff1615611b875760405162461bcd60e51b815260206004820152600e60248201526d131250d15394d157d313d0d2d15160921b6044820152606401611213565b6002805482919060ff60c01b1916600160c01b83600581111561157b5761157b614cca565b611bb4612bfd565b60115460ff1615611bd75760405162461bcd60e51b81526004016112139061572a565b601254811015611c1d5760405162461bcd60e51b81526020600482015260116024820152704c4f5745525f5448414e5f535550504c5960781b6044820152606401611213565b601055565b60006001600160a01b038216611c8c5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401611213565b506001600160a01b031660009081526006602052604090205490565b611cb0612bfd565b611cba6000613223565b565b606060098054611ccb906154da565b80601f0160208091040260200160405190810160405280929190818152602001828054611cf7906154da565b8015611d445780601f10611d1957610100808354040283529160200191611d44565b820191906000526020600020905b815481529060010190602001808311611d2757829003601f168201915b5050505050905090565b611d56612bfd565b601955565b611d63612bfd565b601455565b6000611173602061327e565b611d7c612bfd565b600254600160a01b900460ff1615611da65760405162461bcd60e51b8152600401611213906154ba565b6002805460ff60a01b1916600160a01b179055565b600260135403611ddd5760405162461bcd60e51b815260040161121390615698565b6002601355611dfa600080516020615b9283398151915233611e69565b611e165760405162461bcd60e51b8152600401611213906156cf565b60005b81811015611a8957611e42838383818110611e3657611e366153ba565b90506020020135613288565b80611e4c8161540a565b915050611e19565b6000546201000090046001600160a01b031690565b6000918252601d602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611e9c612bfd565b600f611344828261555c565b60606111736132d2565b611eba612bfd565b600c5460ff1615611edd5760405162461bcd60e51b81526004016112139061572a565b600a611344828261555c565b600260135403611f0b5760405162461bcd60e51b815260040161121390615698565b600260135560175460ff16611f4f5760405162461bcd60e51b815260206004820152600a6024820152694e4f545f41435449564560b01b6044820152606401611213565b6000611f59612b85565b9050611fa4838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506016549150611f9f9050846132e1565b61331b565b611fde5760405162461bcd60e51b815260206004820152600b60248201526a2ba927a723afa82927a7a360a91b6044820152606401611213565b6015546001600160a01b03821660009081526018602052604090205461200590869061574a565b11156120445760405162461bcd60e51b815260206004820152600e60248201526d14149157d4d0531157d31253525560921b6044820152606401611213565b34846014546120539190615471565b11156120715760405162461bcd60e51b815260040161121390615762565b6001600160a01b0381166000908152601860205260408120805486929061209990849061574a565b909155506120a990508185612c6c565b505060016013555050565b6113446120bf612b85565b8383613331565b60025460609061117390600160c01b900460ff166133fb565b6120e7612bfd565b600c5460ff161561210a5760405162461bcd60e51b81526004016112139061572a565b600b611344828261555c565b600061103c601c83613579565b61213461212e612b85565b83612cf5565b6121505760405162461bcd60e51b815260040161121390615423565b6110dc8484848461359d565b612164612bfd565b600c805460ff19166001179055565b6060600a8054611ccb906154da565b61218a612bfd565b600254600160a01b900460ff16156121b45760405162461bcd60e51b8152600401611213906154ba565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6121de612bfd565b600254600160b81b900460ff16156122205760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401611213565b6002805460ff60b81b1916600160b81b179055565b6060604051806060016040528060318152602001615b416031913960025461227790600160c01b900460ff16600581111561227257612272614cca565b6135d0565b60405160200161228892919061578f565b604051602081830303815290604052905090565b606061103c826136d0565b604080516001808252818301909252606091816020015b60408051808201909152600080825260208201528152602001906001900390816122be575050601e5481519192506001600160a01b0316908290600090612307576123076153ba565b60209081029190910101516001600160a01b03919091169052601e548151600160a01b90910461ffff16908290600090612343576123436153ba565b6020908102919091018101516001600160601b03909216910152919050565b61236b82611380565b61237481612efa565b6112c68383612f92565b6002601354036123a05760405162461bcd60e51b815260040161121390615698565b6002601355601b5460ff166123f05760405162461bcd60e51b81526020600482015260166024820152755055424c49435f53414c455f4e4f545f41435449564560501b6044820152606401611213565b601a548111156124365760405162461bcd60e51b8152602060048201526011602482015270141550931250d7d4d0531157d312535255607a1b6044820152606401611213565b34816019546124459190615471565b11156124635760405162461bcd60e51b815260040161121390615762565b61246d8282612c6c565b50506001601355565b61247e612bfd565b602280546001600160a01b0319166001600160a01b0392909216919091179055565b6124a8612bfd565b6002805460ff60a81b1916600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b6060600b8054611ccb906154da565b6002601354036125175760405162461bcd60e51b815260040161121390615698565b6002601355612534600080516020615b9283398151915233611e69565b6125505760405162461bcd60e51b8152600401611213906156cf565b611af781613288565b612561612bfd565b6002805460ff60c81b1916600160c81b179055565b61257f336137ac565b6002546001600160a01b03166125cf5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401611213565b600254600160a81b900460ff16156126295760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401611213565b60005b8381101561276a576000858583818110612648576126486153ba565b905060200201602081019061265d9190614f63565b6001600160a01b0316036126a05761269b838383818110612680576126806153ba565b6002546001600160a01b031692602090910201359050613931565b612758565b8484828181106126b2576126b26153ba565b90506020020160208101906126c79190614f63565b6002546001600160a01b039182169163a9059cbb91168585858181106126ef576126ef6153ba565b905060200201356040518363ffffffff1660e01b8152600401612713929190614bc7565b6020604051808303816000875af1158015612732573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275691906157be565b505b806127628161540a565b91505061262c565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a5848484846040516127a094939291906157db565b60405180910390a150505050565b60006127f4838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506016549150611f9f9050876132e1565b949350505050565b6060600f8054611ccb906154da565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205460ff1690565b612841612bfd565b6128586128533683900383018361585d565b613a47565b50565b612863612bfd565b6001600160a01b0381166128c85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611213565b61285881613223565b6128d9612bfd565b601555565b6128e6612bfd565b601655565b600054610100900460ff161580801561290b5750600054600160ff909116105b8061292c575061291a30612aef565b15801561292c575060005460ff166001145b61298f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611213565b6000805460ff1916600117905580156129b2576000805461ff0019166101001790555b6129bd600083613af2565b6129c682613223565b6129d68361018001516002613afc565b6129e4836101c00151613b2d565b6129fb836000015184602001518560400151613b5d565b612a0d83606001518460800151613b8f565b612a1a8360a00151613bc0565b612a22613bf0565b612a2b82613c1f565b612a33613c4f565b612a458360c001518460e00151613c7e565b612a59836101000151846101200151613cc0565b612a6d836101400151846101600151613cf1565b612a7b836101a00151613d22565b612a83613d52565b80156112c6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6000612ad83361186b565b15612aea575060131936013560601c90565b503390565b6001600160a01b03163b151590565b3390565b60006301ffc9a760e01b6001600160e01b03198316148061103c5750506001600160e01b03191660009081526001602052604090205460ff1690565b6000612b4a8383613d81565b9392505050565b6060600d8054611ccb906154da565b612b6981613dab565b6128585760405162461bcd60e51b8152600401611213906156f8565b6000611173612acd565b600081815260076020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612bc482611aff565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b612c05612b85565b6001600160a01b0316612c16611e54565b6001600160a01b031614611cba5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611213565b60105481612c7960125490565b612c83919061574a565b1115612cc25760405162461bcd60e51b815260206004820152600e60248201526d455843454544535f535550504c5960901b6044820152606401611213565b60005b818110156112c657601254612cda8482613dc8565b612ce2613de2565b5080612ced8161540a565b915050612cc5565b600080612d0183611aff565b9050806001600160a01b0316846001600160a01b03161480612d285750612d28818561280b565b806127f45750836001600160a01b0316612d4184611178565b6001600160a01b031614949350505050565b826001600160a01b0316612d6682611aff565b6001600160a01b031614612dca5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401611213565b6001600160a01b038216612e2c5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401611213565b612e37838383613df9565b612e42600082612b8f565b6001600160a01b0383166000908152600660205260408120805460019290612e6b9084906158b7565b90915550506001600160a01b0382166000908152600660205260408120805460019290612e9990849061574a565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61285881612f06612b85565b613e04565b612f158282611e69565b611344576000828152601d602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612f4e612b85565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b612f9c8282611e69565b15611344576000828152601d602090815260408083206001600160a01b03851684529091529020805460ff19169055612fd3612b85565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b60005b8151811015611344576000828281518110613037576130376153ba565b60200260200101519050612710816040015161ffff161061306a5760405162461bcd60e51b8152600401611213906158ce565b60208101516001600160a01b03166130e45780516000908152601f6020908152604090912080546001600160b01b031916905581516130a99190613e68565b5080516040519081527fa2870857763bd9ae76c957f869f16b31c18dd3bb4c7b4d3a4496dc5c57c657f99060200160405180910390a16131a9565b6040805180820182526020808401516001600160a01b0390811683528484015161ffff90811683850190815286516000908152601f855295909520935184549551909116600160a01b026001600160b01b0319909516911617929092179055815161314f9190613e74565b50805160208083015160408085015181519485526001600160a01b039092169284019290925261ffff1682820152517f389b70fb0887f01e83784eb1c4c589f740eca53b00ed0f45e41db5d079719abb9181900360600190a15b50806131b48161540a565b91505061301a565b6131c7601c82613579565b6132005760405162461bcd60e51b815260206004820152600a6024820152691393d517d313d0d2d15160b21b6044820152606401611213565b600881901c6000908152601c602052604090208054600160ff84161b1916905550565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600061103c825490565b613293601c82613579565b156132b05760405162461bcd60e51b8152600401611213906154ba565b600881901c6000908152601c602052604090208054600160ff84161b17905550565b6060600e8054611ccb906154da565b6040516001600160601b0319606083901b166020820152600090603401604051602081830303815290604052805190602001209050919050565b6000826133288584613e80565b14949350505050565b816001600160a01b0316836001600160a01b03160361338e5760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606401611213565b6001600160a01b03838116600081815260086020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6060600682600581111561341157613411614cca565b60ff16111561341f57600080fd5b81600581111561343157613431614cca565b60000361345b57505060408051808201909152600781526604342455f4343360cc1b602082015290565b81600581111561346d5761346d614cca565b60010361349757505060408051808201909152600781526621a122afa2a1a960c91b602082015290565b8160058111156134a9576134a9614cca565b6002036134d457505060408051808201909152600881526721a122afa722a1a960c11b602082015290565b8160058111156134e6576134e6614cca565b60030361351457505060408051808201909152600b81526a4342455f4e4543525f485360a81b602082015290565b81600581111561352657613526614cca565b60040361354f57505060408051808201909152600681526521a122afa82960d11b602082015290565b50506040805180820190915260098152684342455f50525f485360b81b602082015290565b919050565b600881901c600090815260208390526040902054600160ff83161b16151592915050565b6135a8848484612d53565b6135b484848484613ec5565b6110dc5760405162461bcd60e51b8152600401611213906158f3565b6060816000036135f75750506040805180820190915260018152600360fc1b602082015290565b8160005b8115613621578061360b8161540a565b915061361a9050600a836154a6565b91506135fb565b6000816001600160401b0381111561363b5761363b61494d565b6040519080825280601f01601f191660200182016040528015613665576020820181803683370190505b5090505b84156127f45761367a6001836158b7565b9150613687600a86615945565b61369290603061574a565b60f81b8183815181106136a7576136a76153ba565b60200101906001600160f81b031916908160001a9053506136c9600a866154a6565b9450613669565b60606000600a80546136e1906154da565b90501161377857600980546136f5906154da565b80601f0160208091040260200160405190810160405280929190818152602001828054613721906154da565b801561376e5780601f106137435761010080835404028352916020019161376e565b820191906000526020600020905b81548152906001019060200180831161375157829003601f168201915b505050505061103c565b600a613783836135d0565b600b604051602001613797939291906159cc565b60405160208183030381529060405292915050565b6003600254600160b01b900460ff1660038111156137cc576137cc614cca565b0361380b5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401611213565b60028054600160b01b900460ff16600381111561382a5761382a614cca565b036138325750565b6001600254600160b01b900460ff16600381111561385257613852614cca565b036138ae576002546001600160a01b038281169116146128585760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401611213565b6000600254600160b01b900460ff1660038111156138ce576138ce614cca565b0361285857806001600160a01b03166138e5611e54565b6001600160a01b0316146128585760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401611213565b804710156139815760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611213565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146139ce576040519150601f19603f3d011682016040523d82523d6000602084013e6139d3565b606091505b50509050806112c65760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401611213565b612710816020015161ffff1610613a705760405162461bcd60e51b8152600401611213906158ce565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601e80546001600160b01b031916909217600160a01b9091021790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe4192613ae79291614fa8565b60405180910390a150565b6113448282612f0b565b600054610100900460ff16613b235760405162461bcd60e51b8152600401611213906159ff565b6113448282613fd4565b600054610100900460ff16613b545760405162461bcd60e51b8152600401611213906159ff565b61285881614058565b600054610100900460ff16613b845760405162461bcd60e51b8152600401611213906159ff565b6112c683838361409f565b600054610100900460ff16613bb65760405162461bcd60e51b8152600401611213906159ff565b611344828261411d565b600054610100900460ff16613be75760405162461bcd60e51b8152600401611213906159ff565b612858816141a8565b600054610100900460ff16613c175760405162461bcd60e51b8152600401611213906159ff565b611cba6141f4565b600054610100900460ff16613c465760405162461bcd60e51b8152600401611213906159ff565b6128588161422b565b600054610100900460ff16613c765760405162461bcd60e51b8152600401611213906159ff565b611cba61427a565b600054610100900460ff16613ca55760405162461bcd60e51b8152600401611213906159ff565b613cb563209680f760e11b6142ad565b601491909155601555565b600054610100900460ff16613ce75760405162461bcd60e51b8152600401611213906159ff565b611344828261432e565b600054610100900460ff16613d185760405162461bcd60e51b8152600401611213906159ff565b6113448282614370565b600054610100900460ff16613d495760405162461bcd60e51b8152600401611213906159ff565b61285881614400565b600054610100900460ff16613d795760405162461bcd60e51b8152600401611213906159ff565b611cba614427565b6000826000018281548110613d9857613d986153ba565b9060005260206000200154905092915050565b6000908152600560205260409020546001600160a01b0316151590565b61134482826040518060200160405280600081525061445e565b60128054906000613df28361540a565b9190505550565b6112c6838383614491565b613e0e8282611e69565b61134457613e26816001600160a01b031660146144b9565b613e318360206144b9565b604051602001613e42929190615a4a565b60408051601f198184030181529082905262461bcd60e51b825261121391600401614b18565b6000612b4a8383614654565b6000612b4a8383614747565b600081815b845181101561151c57613eb182868381518110613ea457613ea46153ba565b6020026020010151614796565b915080613ebd8161540a565b915050613e85565b6000613ed9846001600160a01b0316612aef565b15613fc957836001600160a01b031663150b7a02613ef5612b85565b8786866040518563ffffffff1660e01b8152600401613f179493929190615ab9565b6020604051808303816000875af1925050508015613f52575060408051601f3d908101601f19168201909252613f4f91810190615af6565b60015b613faf573d808015613f80576040519150601f19603f3d011682016040523d82523d6000602084013e613f85565b606091505b508051600003613fa75760405162461bcd60e51b8152600401611213906158f3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506127f4565b506001949350505050565b600054610100900460ff16613ffb5760405162461bcd60e51b8152600401611213906159ff565b61400b63ac2ba33360e01b6142ad565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b83600381111561404f5761404f614cca565b02179055505050565b600054610100900460ff1661407f5760405162461bcd60e51b8152600401611213906159ff565b61408f63b964efe960e01b6142ad565b611b87630c934a3560e31b6142ad565b600054610100900460ff166140c65760405162461bcd60e51b8152600401611213906159ff565b600d6140d2848261555c565b50600e6140df838261555c565b50600f6140ec828261555c565b506140fd633d96f4ff60e11b6142ad565b61410d6380ac58cd60e01b6142ad565b6112c6635b5e139f60e01b6142ad565b600054610100900460ff166141445760405162461bcd60e51b8152600401611213906159ff565b6009614150838261555c565b50600a61415d828261555c565b50604080518082019091526005815264173539b7b760d91b6020820152600b90614187908261555c565b50614198631f2f406b60e01b6142ad565b611344635b5e139f60e01b6142ad565b600054610100900460ff166141cf5760405162461bcd60e51b8152600401611213906159ff565b60108190556141e46330f487b560e11b6142ad565b6128586380ac58cd60e01b6142ad565b600054610100900460ff1661421b5760405162461bcd60e51b8152600401611213906159ff565b611cba631aa1577160e11b6142ad565b600054610100900460ff166142525760405162461bcd60e51b8152600401611213906159ff565b614262631a056e7160e01b6142ad565b612858600080516020615b7283398151915282613af2565b600054610100900460ff166142a15760405162461bcd60e51b8152600401611213906159ff565b611cba63714ad8e760e01b5b6001600160e01b031980821690036143065760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401611213565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b600054610100900460ff166143555760405162461bcd60e51b8152600401611213906159ff565b6143656317e0bac360e31b6142ad565b601991909155601a55565b600054610100900460ff166143975760405162461bcd60e51b8152600401611213906159ff565b6143a7633a47bf5160e11b6142ad565b6143b763152a902d60e11b6142ad565b6143c763c69dbd8f60e01b6142ad565b6143d763656cb66560e11b6142ad565b604080518082019091526001600160a01b038316815261ffff821660208201526112c681613a47565b600054610100900460ff1661247e5760405162461bcd60e51b8152600401611213906159ff565b600054610100900460ff1661444e5760405162461bcd60e51b8152600401611213906159ff565b611cba632a7c3e4960e01b6142ad565b61446883836147c5565b6144756000848484613ec5565b6112c65760405162461bcd60e51b8152600401611213906158f3565b61449c601c82613579565b156112c65760405162461bcd60e51b8152600401611213906154ba565b606060006144c8836002615471565b6144d390600261574a565b6001600160401b038111156144ea576144ea61494d565b6040519080825280601f01601f191660200182016040528015614514576020820181803683370190505b509050600360fc1b8160008151811061452f5761452f6153ba565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061455e5761455e6153ba565b60200101906001600160f81b031916908160001a9053506000614582846002615471565b61458d90600161574a565b90505b6001811115614605576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106145c1576145c16153ba565b1a60f81b8282815181106145d7576145d76153ba565b60200101906001600160f81b031916908160001a90535060049490941c936145fe81615b13565b9050614590565b508315612b4a5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401611213565b6000818152600183016020526040812054801561473d5760006146786001836158b7565b855490915060009061468c906001906158b7565b90508181146146f15760008660000182815481106146ac576146ac6153ba565b90600052602060002001549050808760000184815481106146cf576146cf6153ba565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061470257614702615b2a565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061103c565b600091505061103c565b600081815260018301602052604081205461478e5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561103c565b50600061103c565b60008183106147b2576000828152602084905260409020612b4a565b6000838152602083905260409020612b4a565b6001600160a01b03821661481b5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401611213565b61482481613dab565b156148705760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b6044820152606401611213565b61487c60008383613df9565b6001600160a01b03821660009081526006602052604081208054600192906148a590849061574a565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b03198116811461285857600080fd5b60006020828403121561492b57600080fd5b8135612b4a81614903565b80356001600160a01b038116811461357457600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516101e081016001600160401b03811182821017156149865761498661494d565b60405290565b604051601f8201601f191681016001600160401b03811182821017156149b4576149b461494d565b604052919050565b60006001600160401b038211156149d5576149d561494d565b5060051b60200190565b600082601f8301126149f057600080fd5b81356020614a05614a00836149bc565b61498c565b82815260059290921b84018101918181019086841115614a2457600080fd5b8286015b84811015614a3f5780358352918301918301614a28565b509695505050505050565b600080600060608486031215614a5f57600080fd5b614a6884614936565b9250614a7660208501614936565b915060408401356001600160401b03811115614a9157600080fd5b614a9d868287016149df565b9150509250925092565b600060208284031215614ab957600080fd5b5035919050565b60005b83811015614adb578181015183820152602001614ac3565b838111156110dc5750506000910152565b60008151808452614b04816020860160208601614ac0565b601f01601f19169290920160200192915050565b602081526000612b4a6020830184614aec565b6001600160a01b0391909116815260200190565b60008060408385031215614b5257600080fd5b614b5b83614936565b946020939093013593505050565b600080600060608486031215614b7e57600080fd5b614b8784614936565b9250614b9560208501614936565b9150604084013590509250925092565b60008060408385031215614bb857600080fd5b50508035926020909101359150565b6001600160a01b03929092168252602082015260400190565b60008083601f840112614bf257600080fd5b5081356001600160401b03811115614c0957600080fd5b6020830191508360208260051b850101111561145357600080fd5b60008060208385031215614c3757600080fd5b82356001600160401b03811115614c4d57600080fd5b614c5985828601614be0565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b81811015614c9d57835183529284019291840191600101614c81565b50909695505050505050565b600060208284031215614cbb57600080fd5b813560048110612b4a57600080fd5b634e487b7160e01b600052602160045260246000fd5b6020810160048310614cf457614cf4614cca565b91905290565b801515811461285857600080fd5b600060208284031215614d1a57600080fd5b8135612b4a81614cfa565b60008060408385031215614d3857600080fd5b82359150614d4860208401614936565b90509250929050565b600082601f830112614d6257600080fd5b81356020614d72614a00836149bc565b82815260059290921b84018101918181019086841115614d9157600080fd5b8286015b84811015614a3f57614da681614936565b8352918301918301614d95565b600080600060608486031215614dc857600080fd5b83356001600160401b0380821115614ddf57600080fd5b614deb87838801614d51565b94506020860135915080821115614e0157600080fd5b614e0d87838801614d51565b93506040860135915080821115614e2357600080fd5b50614a9d868287016149df565b60006001600160401b03831115614e4957614e4961494d565b614e5c601f8401601f191660200161498c565b9050828152838383011115614e7057600080fd5b828260208301376000602084830101529392505050565b600082601f830112614e9857600080fd5b612b4a83833560208501614e30565b600060208284031215614eb957600080fd5b81356001600160401b03811115614ecf57600080fd5b6127f484828501614e87565b6020810160068310614cf457614cf4614cca565b60008060208385031215614f0257600080fd5b82356001600160401b0380821115614f1957600080fd5b818501915085601f830112614f2d57600080fd5b813581811115614f3c57600080fd5b866020606083028501011115614f5157600080fd5b60209290920196919550909350505050565b600060208284031215614f7557600080fd5b612b4a82614936565b80356006811061357457600080fd5b600060208284031215614f9f57600080fd5b612b4a82614f7e565b6001600160a01b0392909216825261ffff16602082015260400190565b600080600060408486031215614fda57600080fd5b8335925060208401356001600160401b03811115614ff757600080fd5b61500386828701614be0565b9497909650939450505050565b6000806040838503121561502357600080fd5b61502c83614936565b9150602083013561503c81614cfa565b809150509250929050565b6000806000806080858703121561505d57600080fd5b61506685614936565b935061507460208601614936565b92506040850135915060608501356001600160401b0381111561509657600080fd5b8501601f810187136150a757600080fd5b6150b687823560208401614e30565b91505092959194509250565b602080825282518282018190526000919060409081850190868401855b8281101561511657815180516001600160a01b031685528601516001600160601b03168685015292840192908501906001016150df565b5091979650505050505050565b6000806000806040858703121561513957600080fd5b84356001600160401b038082111561515057600080fd5b61515c88838901614be0565b9096509450602087013591508082111561517557600080fd5b5061518287828801614be0565b95989497509550505050565b6000806000604084860312156151a357600080fd5b6151ac84614936565b925060208401356001600160401b03811115614ff757600080fd5b600080604083850312156151da57600080fd5b6151e383614936565b9150614d4860208401614936565b60006040828403121561520357600080fd5b50919050565b803561ffff8116811461357457600080fd5b6000806040838503121561522e57600080fd5b82356001600160401b038082111561524557600080fd5b908401906101e0828703121561525a57600080fd5b615262614963565b82358281111561527157600080fd5b61527d88828601614e87565b82525060208301358281111561529257600080fd5b61529e88828601614e87565b6020830152506040830135828111156152b657600080fd5b6152c288828601614e87565b6040830152506060830135828111156152da57600080fd5b6152e688828601614e87565b6060830152506080830135828111156152fe57600080fd5b61530a88828601614e87565b60808301525060a0838101359082015260c0808401359082015260e08084013590820152610100808401359082015261012080840135908201526101409150615354828401614936565b828201526101609150615368828401615209565b82820152610180915061537c828401614936565b828201526101a09150615390828401614936565b828201526101c091506153a4828401614f7e565b82820152809450505050614d4860208401614936565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b600052601160045260246000fd5b60006001820161541c5761541c6153f4565b5060010190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b600081600019048311821515161561548b5761548b6153f4565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826154b5576154b5615490565b500490565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b600181811c908216806154ee57607f821691505b60208210810361520357634e487b7160e01b600052602260045260246000fd5b601f8211156112c657600081815260208120601f850160051c810160208610156155355750805b601f850160051c820191505b8181101561555457828155600101615541565b505050505050565b81516001600160401b038111156155755761557561494d565b6155898161558384546154da565b8461550e565b602080601f8311600181146155be57600084156155a65750858301515b600019600386901b1c1916600185901b178555615554565b600085815260208120601f198616915b828110156155ed578886015182559484019460019091019084016155ce565b508582101561560b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060828403121561562d57600080fd5b604051606081018181106001600160401b038211171561564f5761564f61494d565b6040528235815261566260208401614936565b602082015261567360408401615209565b60408201529392505050565b60006020828403121561569157600080fd5b5051919050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252600f908201526e4e4f545f4c4f434b45525f524f4c4560881b604082015260600190565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b602080825260069082015265232927ad22a760d11b604082015260600190565b6000821982111561575d5761575d6153f4565b500190565b602080825260139082015272125394d551919250d251539517d05353d55395606a1b604082015260600190565b600083516157a1818460208801614ac0565b8351908301906157b5818360208801614ac0565b01949350505050565b6000602082840312156157d057600080fd5b8151612b4a81614cfa565b6040808252810184905260008560608301825b8781101561581c576001600160a01b0361580784614936565b168252602092830192909101906001016157ee565b5083810360208501528481526001600160fb1b0385111561583c57600080fd5b8460051b915081866020830137600091016020019081529695505050505050565b60006040828403121561586f57600080fd5b604051604081018181106001600160401b03821117156158915761589161494d565b60405261589d83614936565b81526158ab60208401615209565b60208201529392505050565b6000828210156158c9576158c96153f4565b500390565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008261595457615954615490565b500690565b60008154615966816154da565b6001828116801561597e5760018114615993576159c2565b60ff19841687528215158302870194506159c2565b8560005260208060002060005b858110156159b95781548a8201529084019082016159a0565b50505082870194505b5050505092915050565b60006159d88286615959565b84516159e8818360208901614ac0565b6159f481830186615959565b979650505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351615a7c816017850160208801614ac0565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615aad816028840160208801614ac0565b01602801949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090615aec90830184614aec565b9695505050505050565b600060208284031215615b0857600080fd5b8151612b4a81614903565b600081615b2257615b226153f4565b506000190190565b634e487b7160e01b600052603160045260246000fdfe61723a2f2f5f44396b4e3157724e576243713535425341475262544234625333763851415054596d42546853625833412f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6af9a8bb3cbd6b84fbccefa71ff73e26e798553c6914585a84886212a46a90279a2646970667358221220b683f77f5a93a62f86d2aead7f82e25cac9c01b2fa32a8c025bbd71d8a3e337864736f6c634300080f0033","deployedBytecode":"0x6080604052600436106104635760003560e01c80638da5cb5b11610242578063c87b56dd11610135578063c87b56dd14610d73578063cad96cca14610d93578063d539139314610dc0578063d547741f14610de2578063d5abeb0114610e02578063d79ff99d14610e18578063da74222814610e2b578063da82b22714610e4b578063dbbc853b14610e60578063dcbe353f14610e75578063dd46706414610e95578063dd89c6fa14610eb5578063de6d6d9614610eca578063e3b9a7e514610eea578063e757c17d14610f0a578063e8a3d48514610f20578063e985e9c514610f35578063ef60ceaf14610f55578063f2fde38b14610f75578063f362136714610f95578063f384702f14610fb7578063f74bbf5914610fd1578063f95df41414610ff1578063fe50b5871461101157600080fd5b80638da5cb5b14610b0057806391d1485414610b15578063938e3d7b14610b3557806395d89b4114610b5557806399e0dd7c14610b6a5780639b6860c814610b8a5780639e6b2c5b14610ba0578063a217fddf14610bb3578063a22cb46514610bc8578063a341793b14610be8578063a9852bfb14610bfd578063aaeaca4814610c1d578063af121f5414610c33578063b27c6f2d14610c54578063b45a3c0e14610c6a578063b6c693e514610c8a578063b88d4fde14610ca4578063ba4695fd14610cc4578063bf9b7a5714610cd9578063c0ac998314610cfa578063c0bb38ff14610d0f578063c29de63014610d2f578063c723955a14610d49578063c7db289314610d5e57600080fd5b8063464bd6401161035a578063464bd640146107d057806349561cb9146107ea5780634f972f5f1461080b57806350a5292f1461082b5780635136dcc71461085957806356c022bb14610879578063572b6c05146108995780635a9b0b89146108b95780635d36598f1461091c5780636057e0ec1461093c5780636198e3391461095d5780636352211e1461097d57806364ed29131461099d5780636f8b44b0146109bd57806370a08231146109dd578063714ad8e7146109fd578063715018a614610a115780637313cba914610a265780637885fdc714610a3b578063791a251914610a765780637d7eee4214610a965780637e98034214610ab6578063837fe14014610acb578063859610c614610ae057600080fd5b806301ffc9a714610468578063059fb6f71461049d5780630653aca5146104bf57806306fdde031461050e578063081812fc14610530578063095ea7b31461055d578063167446071461057d57806318160ddd146105925780631a056e71146105b157806323b872dd146105d1578063248a9ca3146105f15780632a55205a146106115780632bb684ad1461063f5780632c2330671461066c5780632d00b5871461068c5780632d8e85b0146106ba5780632f2ff15d146106da5780632fe388be146106fa5780633542aee21461071a5780633574a2dd1461073a57806336568abe1461075a5780633acf404d1461077a5780633c0e8f2c1461079057806342842e0e146107b0575b600080fd5b34801561047457600080fd5b50610488610483366004614919565b611031565b60405190151581526020015b60405180910390f35b3480156104a957600080fd5b506104bd6104b8366004614a4a565b611042565b005b3480156104cb57600080fd5b506104df6104da366004614aa7565b6110e2565b60408051825181526020808401516001600160a01b0316908201529181015161ffff1690820152606001610494565b34801561051a57600080fd5b50610523611169565b6040516104949190614b18565b34801561053c57600080fd5b5061055061054b366004614aa7565b611178565b6040516104949190614b2b565b34801561056957600080fd5b506104bd610578366004614b3f565b61119f565b34801561058957600080fd5b506104bd6112cb565b34801561059e57600080fd5b506012545b604051908152602001610494565b3480156105bd57600080fd5b506104bd6105cc366004614b3f565b6112e2565b3480156105dd57600080fd5b506104bd6105ec366004614b69565b611348565b3480156105fd57600080fd5b506105a361060c366004614aa7565b611380565b34801561061d57600080fd5b5061063161062c366004614ba5565b611395565b604051610494929190614bc7565b34801561064b57600080fd5b5061065f61065a366004614c24565b61145a565b6040516104949190614c65565b34801561067857600080fd5b506104bd610687366004614ca9565b611524565b34801561069857600080fd5b506002546106ad90600160b01b900460ff1681565b6040516104949190614ce0565b3480156106c657600080fd5b506104bd6106d5366004614d08565b611583565b3480156106e657600080fd5b506104bd6106f5366004614d25565b61159e565b34801561070657600080fd5b506104bd610715366004614db3565b6115ba565b34801561072657600080fd5b506104bd610735366004614b3f565b61171f565b34801561074657600080fd5b506104bd610755366004614ea7565b611727565b34801561076657600080fd5b506104bd610775366004614d25565b61173b565b34801561078657600080fd5b506105a360165481565b34801561079c57600080fd5b506104bd6107ab366004614aa7565b6117c5565b3480156107bc57600080fd5b506104bd6107cb366004614b69565b6117d2565b3480156107dc57600080fd5b506017546104889060ff1681565b3480156107f657600080fd5b5060025461048890600160b81b900460ff1681565b34801561081757600080fd5b506104bd610826366004614d08565b6117ed565b34801561083757600080fd5b5060025461084c90600160c01b900460ff1681565b6040516104949190614edb565b34801561086557600080fd5b506104bd610874366004614eef565b611808565b34801561088557600080fd5b50602254610550906001600160a01b031681565b3480156108a557600080fd5b506104886108b4366004614f63565b61186b565b3480156108c557600080fd5b506108ce61187f565b604080519a8b5260208b0199909952978901969096526060880194909452608087019290925260a0860152151560c085015260e0840152610100830152151561012082015261014001610494565b34801561092857600080fd5b506104bd610937366004614c24565b6119f0565b34801561094857600080fd5b5060025461048890600160a01b900460ff1681565b34801561096957600080fd5b506104bd610978366004614aa7565b611a93565b34801561098957600080fd5b50610550610998366004614aa7565b611aff565b3480156109a957600080fd5b506104bd6109b8366004614f8d565b611b34565b3480156109c957600080fd5b506104bd6109d8366004614aa7565b611bac565b3480156109e957600080fd5b506105a36109f8366004614f63565b611c22565b348015610a0957600080fd5b506001610488565b348015610a1d57600080fd5b506104bd611ca8565b348015610a3257600080fd5b50610523611cbc565b348015610a4757600080fd5b50601e54610a68906001600160a01b03811690600160a01b900461ffff1682565b604051610494929190614fa8565b348015610a8257600080fd5b506104bd610a91366004614aa7565b611d4e565b348015610aa257600080fd5b506104bd610ab1366004614aa7565b611d5b565b348015610ac257600080fd5b506105a3611d68565b348015610ad757600080fd5b506104bd611d74565b348015610aec57600080fd5b506104bd610afb366004614c24565b611dbb565b348015610b0c57600080fd5b50610550611e54565b348015610b2157600080fd5b50610488610b30366004614d25565b611e69565b348015610b4157600080fd5b506104bd610b50366004614ea7565b611e94565b348015610b6157600080fd5b50610523611ea8565b348015610b7657600080fd5b506104bd610b85366004614ea7565b611eb2565b348015610b9657600080fd5b506105a360195481565b6104bd610bae366004614fc5565b611ee9565b348015610bbf57600080fd5b506105a3600081565b348015610bd457600080fd5b506104bd610be3366004615010565b6120b4565b348015610bf457600080fd5b506105236120c6565b348015610c0957600080fd5b506104bd610c18366004614ea7565b6120df565b348015610c2957600080fd5b506105a360155481565b348015610c3f57600080fd5b5060025461048890600160a81b900460ff1681565b348015610c6057600080fd5b506105a3601a5481565b348015610c7657600080fd5b50610488610c85366004614aa7565b612116565b348015610c9657600080fd5b50601b546104889060ff1681565b348015610cb057600080fd5b506104bd610cbf366004615047565b612123565b348015610cd057600080fd5b506104bd61215c565b348015610ce557600080fd5b5060025461048890600160c81b900460ff1681565b348015610d0657600080fd5b50610523612173565b348015610d1b57600080fd5b506104bd610d2a366004614f63565b612182565b348015610d3b57600080fd5b50600c546104889060ff1681565b348015610d5557600080fd5b506104bd6121d6565b348015610d6a57600080fd5b50610523612235565b348015610d7f57600080fd5b50610523610d8e366004614aa7565b61229c565b348015610d9f57600080fd5b50610db3610dae366004614aa7565b6122a7565b60405161049491906150c2565b348015610dcc57600080fd5b506105a3600080516020615b7283398151915281565b348015610dee57600080fd5b506104bd610dfd366004614d25565b612362565b348015610e0e57600080fd5b506105a360105481565b6104bd610e26366004614b3f565b61237e565b348015610e3757600080fd5b506104bd610e46366004614f63565b612476565b348015610e5757600080fd5b506104bd6124a0565b348015610e6c57600080fd5b506105236124e6565b348015610e8157600080fd5b50600254610550906001600160a01b031681565b348015610ea157600080fd5b506104bd610eb0366004614aa7565b6124f5565b348015610ec157600080fd5b506104bd612559565b348015610ed657600080fd5b506104bd610ee5366004615123565b612576565b348015610ef657600080fd5b50610488610f0536600461518e565b6127ae565b348015610f1657600080fd5b506105a360145481565b348015610f2c57600080fd5b506105236127fc565b348015610f4157600080fd5b50610488610f503660046151c7565b61280b565b348015610f6157600080fd5b506104bd610f703660046151f1565b612839565b348015610f8157600080fd5b506104bd610f90366004614f63565b61285b565b348015610fa157600080fd5b506105a3600080516020615b9283398151915281565b348015610fc357600080fd5b506011546104889060ff1681565b348015610fdd57600080fd5b506104bd610fec366004614aa7565b6128d1565b348015610ffd57600080fd5b506104bd61100c366004614aa7565b6128de565b34801561101d57600080fd5b506104bd61102c36600461521b565b6128eb565b600061103c82612b02565b92915050565b60005b81518110156110dc57306001600160a01b03166323b872dd8585858581518110611071576110716153ba565b60200260200101516040518463ffffffff1660e01b8152600401611097939291906153d0565b600060405180830381600087803b1580156110b157600080fd5b505af11580156110c5573d6000803e3d6000fd5b5050505080806110d49061540a565b915050611045565b50505050565b6040805160608101825260008082526020820181905291810191909152600061110c602084612b3e565b6000818152601f60209081526040918290208251808401845290546001600160a01b03808216835261ffff600160a01b90920482168385019081528551606081018752968752925116928501929092525116908201529392505050565b6060611173612b51565b905090565b600061118382612b60565b506000908152600760205260409020546001600160a01b031690565b60006111aa82611aff565b9050806001600160a01b0316836001600160a01b03160361121c5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b031661122e612b85565b6001600160a01b0316148061124a575061124a81610f50612b85565b6112bc5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401611213565b6112c68383612b8f565b505050565b6112d3612bfd565b6011805460ff19166001179055565b6112fc600080516020615b72833981519152610b30612b85565b61133a5760405162461bcd60e51b815260206004820152600f60248201526e4e4f545f4d494e5445525f524f4c4560881b6044820152606401611213565b6113448282612c6c565b5050565b611359611353612b85565b82612cf5565b6113755760405162461bcd60e51b815260040161121390615423565b6112c6838383612d53565b6000908152601d602052604090206001015490565b6000828152601f602052604081205481906001600160a01b0316156113fa576000848152601f60205260409020546001600160a01b03811690612710906113e790600160a01b900461ffff1686615471565b6113f191906154a6565b91509150611453565b601e546001600160a01b0316158015906114205750601e54600160a01b900461ffff1615155b1561144c57601e546001600160a01b03811690612710906113e790600160a01b900461ffff1686615471565b5060009050805b9250929050565b60606000826001600160401b038111156114765761147661494d565b60405190808252806020026020018201604052801561149f578160200160208202803683370190505b50905060005b8381101561151c576114ce8585838181106114c2576114c26153ba565b90506020020135612116565b61150a578484828181106114e4576114e46153ba565b905060200201358282815181106114fd576114fd6153ba565b6020026020010181815250505b806115148161540a565b9150506114a5565b509392505050565b61152c612bfd565b600254600160b81b900460ff16156115565760405162461bcd60e51b8152600401611213906154ba565b6002805482919060ff60b01b1916600160b01b83600381111561157b5761157b614cca565b021790555050565b61158b612bfd565b601b805460ff1916911515919091179055565b6115a782611380565b6115b081612efa565b6112c68383612f0b565b81518351146116055760405162461bcd60e51b815260206004820152601760248201527608ca49e9abea89ebe988a9c8ea890be9a92a69a82a8869604b1b6044820152606401611213565b80518351146116535760405162461bcd60e51b815260206004820152601a60248201527908ca49e9abea89e968a9cbe988a9c8ea890be9a92a69a82a886960331b6044820152606401611213565b60005b81518110156110dc57306001600160a01b03166323b872dd858381518110611680576116806153ba565b602002602001015185848151811061169a5761169a6153ba565b60200260200101518585815181106116b4576116b46153ba565b60200260200101516040518463ffffffff1660e01b81526004016116da939291906153d0565b600060405180830381600087803b1580156116f457600080fd5b505af1158015611708573d6000803e3d6000fd5b5050505080806117179061540a565b915050611656565b61133a612bfd565b61172f612bfd565b6009611344828261555c565b611743612b85565b6001600160a01b0316816001600160a01b0316146117bb5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401611213565b6113448282612f92565b6117cd612bfd565b601a55565b6112c683838360405180602001604052806000815250612123565b6117f5612bfd565b6017805460ff1916911515919091179055565b611810612bfd565b6113448282808060200260200160405190810160405280939291908181526020016000905b82821015611861576118526060830286013681900381019061561b565b81526020019060010190611835565b5050505050613017565b6022546001600160a01b0391821691161490565b60008080808080808080808080611894612b85565b6001600160a01b03161461191057306370a082316118b0612b85565b6040518263ffffffff1660e01b81526004016118cc9190614b2b565b602060405180830381865afa1580156118e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190d919061567f565b90505b601054306001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611951573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611975919061567f565b8260145460155460186000611988612b85565b6001600160a01b03166001600160a01b0316815260200190815260200160002054601760009054906101000a900460ff16601954601a54601b60009054906101000a900460ff169a509a509a509a509a509a509a509a509a509a505090919293949596979899565b600260135403611a125760405162461bcd60e51b815260040161121390615698565b6002601355611a2f600080516020615b9283398151915233611e69565b611a4b5760405162461bcd60e51b8152600401611213906156cf565b60005b81811015611a8957611a77838383818110611a6b57611a6b6153ba565b905060200201356131bc565b80611a818161540a565b915050611a4e565b5050600160135550565b600260135403611ab55760405162461bcd60e51b815260040161121390615698565b6002601355611ad2600080516020615b9283398151915233611e69565b611aee5760405162461bcd60e51b8152600401611213906156cf565b611af7816131bc565b506001601355565b6000818152600560205260408120546001600160a01b03168061103c5760405162461bcd60e51b8152600401611213906156f8565b611b3c612bfd565b600254600160c81b900460ff1615611b875760405162461bcd60e51b815260206004820152600e60248201526d131250d15394d157d313d0d2d15160921b6044820152606401611213565b6002805482919060ff60c01b1916600160c01b83600581111561157b5761157b614cca565b611bb4612bfd565b60115460ff1615611bd75760405162461bcd60e51b81526004016112139061572a565b601254811015611c1d5760405162461bcd60e51b81526020600482015260116024820152704c4f5745525f5448414e5f535550504c5960781b6044820152606401611213565b601055565b60006001600160a01b038216611c8c5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401611213565b506001600160a01b031660009081526006602052604090205490565b611cb0612bfd565b611cba6000613223565b565b606060098054611ccb906154da565b80601f0160208091040260200160405190810160405280929190818152602001828054611cf7906154da565b8015611d445780601f10611d1957610100808354040283529160200191611d44565b820191906000526020600020905b815481529060010190602001808311611d2757829003601f168201915b5050505050905090565b611d56612bfd565b601955565b611d63612bfd565b601455565b6000611173602061327e565b611d7c612bfd565b600254600160a01b900460ff1615611da65760405162461bcd60e51b8152600401611213906154ba565b6002805460ff60a01b1916600160a01b179055565b600260135403611ddd5760405162461bcd60e51b815260040161121390615698565b6002601355611dfa600080516020615b9283398151915233611e69565b611e165760405162461bcd60e51b8152600401611213906156cf565b60005b81811015611a8957611e42838383818110611e3657611e366153ba565b90506020020135613288565b80611e4c8161540a565b915050611e19565b6000546201000090046001600160a01b031690565b6000918252601d602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611e9c612bfd565b600f611344828261555c565b60606111736132d2565b611eba612bfd565b600c5460ff1615611edd5760405162461bcd60e51b81526004016112139061572a565b600a611344828261555c565b600260135403611f0b5760405162461bcd60e51b815260040161121390615698565b600260135560175460ff16611f4f5760405162461bcd60e51b815260206004820152600a6024820152694e4f545f41435449564560b01b6044820152606401611213565b6000611f59612b85565b9050611fa4838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506016549150611f9f9050846132e1565b61331b565b611fde5760405162461bcd60e51b815260206004820152600b60248201526a2ba927a723afa82927a7a360a91b6044820152606401611213565b6015546001600160a01b03821660009081526018602052604090205461200590869061574a565b11156120445760405162461bcd60e51b815260206004820152600e60248201526d14149157d4d0531157d31253525560921b6044820152606401611213565b34846014546120539190615471565b11156120715760405162461bcd60e51b815260040161121390615762565b6001600160a01b0381166000908152601860205260408120805486929061209990849061574a565b909155506120a990508185612c6c565b505060016013555050565b6113446120bf612b85565b8383613331565b60025460609061117390600160c01b900460ff166133fb565b6120e7612bfd565b600c5460ff161561210a5760405162461bcd60e51b81526004016112139061572a565b600b611344828261555c565b600061103c601c83613579565b61213461212e612b85565b83612cf5565b6121505760405162461bcd60e51b815260040161121390615423565b6110dc8484848461359d565b612164612bfd565b600c805460ff19166001179055565b6060600a8054611ccb906154da565b61218a612bfd565b600254600160a01b900460ff16156121b45760405162461bcd60e51b8152600401611213906154ba565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6121de612bfd565b600254600160b81b900460ff16156122205760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401611213565b6002805460ff60b81b1916600160b81b179055565b6060604051806060016040528060318152602001615b416031913960025461227790600160c01b900460ff16600581111561227257612272614cca565b6135d0565b60405160200161228892919061578f565b604051602081830303815290604052905090565b606061103c826136d0565b604080516001808252818301909252606091816020015b60408051808201909152600080825260208201528152602001906001900390816122be575050601e5481519192506001600160a01b0316908290600090612307576123076153ba565b60209081029190910101516001600160a01b03919091169052601e548151600160a01b90910461ffff16908290600090612343576123436153ba565b6020908102919091018101516001600160601b03909216910152919050565b61236b82611380565b61237481612efa565b6112c68383612f92565b6002601354036123a05760405162461bcd60e51b815260040161121390615698565b6002601355601b5460ff166123f05760405162461bcd60e51b81526020600482015260166024820152755055424c49435f53414c455f4e4f545f41435449564560501b6044820152606401611213565b601a548111156124365760405162461bcd60e51b8152602060048201526011602482015270141550931250d7d4d0531157d312535255607a1b6044820152606401611213565b34816019546124459190615471565b11156124635760405162461bcd60e51b815260040161121390615762565b61246d8282612c6c565b50506001601355565b61247e612bfd565b602280546001600160a01b0319166001600160a01b0392909216919091179055565b6124a8612bfd565b6002805460ff60a81b1916600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b6060600b8054611ccb906154da565b6002601354036125175760405162461bcd60e51b815260040161121390615698565b6002601355612534600080516020615b9283398151915233611e69565b6125505760405162461bcd60e51b8152600401611213906156cf565b611af781613288565b612561612bfd565b6002805460ff60c81b1916600160c81b179055565b61257f336137ac565b6002546001600160a01b03166125cf5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401611213565b600254600160a81b900460ff16156126295760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401611213565b60005b8381101561276a576000858583818110612648576126486153ba565b905060200201602081019061265d9190614f63565b6001600160a01b0316036126a05761269b838383818110612680576126806153ba565b6002546001600160a01b031692602090910201359050613931565b612758565b8484828181106126b2576126b26153ba565b90506020020160208101906126c79190614f63565b6002546001600160a01b039182169163a9059cbb91168585858181106126ef576126ef6153ba565b905060200201356040518363ffffffff1660e01b8152600401612713929190614bc7565b6020604051808303816000875af1158015612732573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275691906157be565b505b806127628161540a565b91505061262c565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a5848484846040516127a094939291906157db565b60405180910390a150505050565b60006127f4838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506016549150611f9f9050876132e1565b949350505050565b6060600f8054611ccb906154da565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205460ff1690565b612841612bfd565b6128586128533683900383018361585d565b613a47565b50565b612863612bfd565b6001600160a01b0381166128c85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611213565b61285881613223565b6128d9612bfd565b601555565b6128e6612bfd565b601655565b600054610100900460ff161580801561290b5750600054600160ff909116105b8061292c575061291a30612aef565b15801561292c575060005460ff166001145b61298f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611213565b6000805460ff1916600117905580156129b2576000805461ff0019166101001790555b6129bd600083613af2565b6129c682613223565b6129d68361018001516002613afc565b6129e4836101c00151613b2d565b6129fb836000015184602001518560400151613b5d565b612a0d83606001518460800151613b8f565b612a1a8360a00151613bc0565b612a22613bf0565b612a2b82613c1f565b612a33613c4f565b612a458360c001518460e00151613c7e565b612a59836101000151846101200151613cc0565b612a6d836101400151846101600151613cf1565b612a7b836101a00151613d22565b612a83613d52565b80156112c6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6000612ad83361186b565b15612aea575060131936013560601c90565b503390565b6001600160a01b03163b151590565b3390565b60006301ffc9a760e01b6001600160e01b03198316148061103c5750506001600160e01b03191660009081526001602052604090205460ff1690565b6000612b4a8383613d81565b9392505050565b6060600d8054611ccb906154da565b612b6981613dab565b6128585760405162461bcd60e51b8152600401611213906156f8565b6000611173612acd565b600081815260076020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612bc482611aff565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b612c05612b85565b6001600160a01b0316612c16611e54565b6001600160a01b031614611cba5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611213565b60105481612c7960125490565b612c83919061574a565b1115612cc25760405162461bcd60e51b815260206004820152600e60248201526d455843454544535f535550504c5960901b6044820152606401611213565b60005b818110156112c657601254612cda8482613dc8565b612ce2613de2565b5080612ced8161540a565b915050612cc5565b600080612d0183611aff565b9050806001600160a01b0316846001600160a01b03161480612d285750612d28818561280b565b806127f45750836001600160a01b0316612d4184611178565b6001600160a01b031614949350505050565b826001600160a01b0316612d6682611aff565b6001600160a01b031614612dca5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401611213565b6001600160a01b038216612e2c5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401611213565b612e37838383613df9565b612e42600082612b8f565b6001600160a01b0383166000908152600660205260408120805460019290612e6b9084906158b7565b90915550506001600160a01b0382166000908152600660205260408120805460019290612e9990849061574a565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61285881612f06612b85565b613e04565b612f158282611e69565b611344576000828152601d602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612f4e612b85565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b612f9c8282611e69565b15611344576000828152601d602090815260408083206001600160a01b03851684529091529020805460ff19169055612fd3612b85565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b60005b8151811015611344576000828281518110613037576130376153ba565b60200260200101519050612710816040015161ffff161061306a5760405162461bcd60e51b8152600401611213906158ce565b60208101516001600160a01b03166130e45780516000908152601f6020908152604090912080546001600160b01b031916905581516130a99190613e68565b5080516040519081527fa2870857763bd9ae76c957f869f16b31c18dd3bb4c7b4d3a4496dc5c57c657f99060200160405180910390a16131a9565b6040805180820182526020808401516001600160a01b0390811683528484015161ffff90811683850190815286516000908152601f855295909520935184549551909116600160a01b026001600160b01b0319909516911617929092179055815161314f9190613e74565b50805160208083015160408085015181519485526001600160a01b039092169284019290925261ffff1682820152517f389b70fb0887f01e83784eb1c4c589f740eca53b00ed0f45e41db5d079719abb9181900360600190a15b50806131b48161540a565b91505061301a565b6131c7601c82613579565b6132005760405162461bcd60e51b815260206004820152600a6024820152691393d517d313d0d2d15160b21b6044820152606401611213565b600881901c6000908152601c602052604090208054600160ff84161b1916905550565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600061103c825490565b613293601c82613579565b156132b05760405162461bcd60e51b8152600401611213906154ba565b600881901c6000908152601c602052604090208054600160ff84161b17905550565b6060600e8054611ccb906154da565b6040516001600160601b0319606083901b166020820152600090603401604051602081830303815290604052805190602001209050919050565b6000826133288584613e80565b14949350505050565b816001600160a01b0316836001600160a01b03160361338e5760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606401611213565b6001600160a01b03838116600081815260086020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6060600682600581111561341157613411614cca565b60ff16111561341f57600080fd5b81600581111561343157613431614cca565b60000361345b57505060408051808201909152600781526604342455f4343360cc1b602082015290565b81600581111561346d5761346d614cca565b60010361349757505060408051808201909152600781526621a122afa2a1a960c91b602082015290565b8160058111156134a9576134a9614cca565b6002036134d457505060408051808201909152600881526721a122afa722a1a960c11b602082015290565b8160058111156134e6576134e6614cca565b60030361351457505060408051808201909152600b81526a4342455f4e4543525f485360a81b602082015290565b81600581111561352657613526614cca565b60040361354f57505060408051808201909152600681526521a122afa82960d11b602082015290565b50506040805180820190915260098152684342455f50525f485360b81b602082015290565b919050565b600881901c600090815260208390526040902054600160ff83161b16151592915050565b6135a8848484612d53565b6135b484848484613ec5565b6110dc5760405162461bcd60e51b8152600401611213906158f3565b6060816000036135f75750506040805180820190915260018152600360fc1b602082015290565b8160005b8115613621578061360b8161540a565b915061361a9050600a836154a6565b91506135fb565b6000816001600160401b0381111561363b5761363b61494d565b6040519080825280601f01601f191660200182016040528015613665576020820181803683370190505b5090505b84156127f45761367a6001836158b7565b9150613687600a86615945565b61369290603061574a565b60f81b8183815181106136a7576136a76153ba565b60200101906001600160f81b031916908160001a9053506136c9600a866154a6565b9450613669565b60606000600a80546136e1906154da565b90501161377857600980546136f5906154da565b80601f0160208091040260200160405190810160405280929190818152602001828054613721906154da565b801561376e5780601f106137435761010080835404028352916020019161376e565b820191906000526020600020905b81548152906001019060200180831161375157829003601f168201915b505050505061103c565b600a613783836135d0565b600b604051602001613797939291906159cc565b60405160208183030381529060405292915050565b6003600254600160b01b900460ff1660038111156137cc576137cc614cca565b0361380b5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401611213565b60028054600160b01b900460ff16600381111561382a5761382a614cca565b036138325750565b6001600254600160b01b900460ff16600381111561385257613852614cca565b036138ae576002546001600160a01b038281169116146128585760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401611213565b6000600254600160b01b900460ff1660038111156138ce576138ce614cca565b0361285857806001600160a01b03166138e5611e54565b6001600160a01b0316146128585760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401611213565b804710156139815760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611213565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146139ce576040519150601f19603f3d011682016040523d82523d6000602084013e6139d3565b606091505b50509050806112c65760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401611213565b612710816020015161ffff1610613a705760405162461bcd60e51b8152600401611213906158ce565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601e80546001600160b01b031916909217600160a01b9091021790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe4192613ae79291614fa8565b60405180910390a150565b6113448282612f0b565b600054610100900460ff16613b235760405162461bcd60e51b8152600401611213906159ff565b6113448282613fd4565b600054610100900460ff16613b545760405162461bcd60e51b8152600401611213906159ff565b61285881614058565b600054610100900460ff16613b845760405162461bcd60e51b8152600401611213906159ff565b6112c683838361409f565b600054610100900460ff16613bb65760405162461bcd60e51b8152600401611213906159ff565b611344828261411d565b600054610100900460ff16613be75760405162461bcd60e51b8152600401611213906159ff565b612858816141a8565b600054610100900460ff16613c175760405162461bcd60e51b8152600401611213906159ff565b611cba6141f4565b600054610100900460ff16613c465760405162461bcd60e51b8152600401611213906159ff565b6128588161422b565b600054610100900460ff16613c765760405162461bcd60e51b8152600401611213906159ff565b611cba61427a565b600054610100900460ff16613ca55760405162461bcd60e51b8152600401611213906159ff565b613cb563209680f760e11b6142ad565b601491909155601555565b600054610100900460ff16613ce75760405162461bcd60e51b8152600401611213906159ff565b611344828261432e565b600054610100900460ff16613d185760405162461bcd60e51b8152600401611213906159ff565b6113448282614370565b600054610100900460ff16613d495760405162461bcd60e51b8152600401611213906159ff565b61285881614400565b600054610100900460ff16613d795760405162461bcd60e51b8152600401611213906159ff565b611cba614427565b6000826000018281548110613d9857613d986153ba565b9060005260206000200154905092915050565b6000908152600560205260409020546001600160a01b0316151590565b61134482826040518060200160405280600081525061445e565b60128054906000613df28361540a565b9190505550565b6112c6838383614491565b613e0e8282611e69565b61134457613e26816001600160a01b031660146144b9565b613e318360206144b9565b604051602001613e42929190615a4a565b60408051601f198184030181529082905262461bcd60e51b825261121391600401614b18565b6000612b4a8383614654565b6000612b4a8383614747565b600081815b845181101561151c57613eb182868381518110613ea457613ea46153ba565b6020026020010151614796565b915080613ebd8161540a565b915050613e85565b6000613ed9846001600160a01b0316612aef565b15613fc957836001600160a01b031663150b7a02613ef5612b85565b8786866040518563ffffffff1660e01b8152600401613f179493929190615ab9565b6020604051808303816000875af1925050508015613f52575060408051601f3d908101601f19168201909252613f4f91810190615af6565b60015b613faf573d808015613f80576040519150601f19603f3d011682016040523d82523d6000602084013e613f85565b606091505b508051600003613fa75760405162461bcd60e51b8152600401611213906158f3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506127f4565b506001949350505050565b600054610100900460ff16613ffb5760405162461bcd60e51b8152600401611213906159ff565b61400b63ac2ba33360e01b6142ad565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b83600381111561404f5761404f614cca565b02179055505050565b600054610100900460ff1661407f5760405162461bcd60e51b8152600401611213906159ff565b61408f63b964efe960e01b6142ad565b611b87630c934a3560e31b6142ad565b600054610100900460ff166140c65760405162461bcd60e51b8152600401611213906159ff565b600d6140d2848261555c565b50600e6140df838261555c565b50600f6140ec828261555c565b506140fd633d96f4ff60e11b6142ad565b61410d6380ac58cd60e01b6142ad565b6112c6635b5e139f60e01b6142ad565b600054610100900460ff166141445760405162461bcd60e51b8152600401611213906159ff565b6009614150838261555c565b50600a61415d828261555c565b50604080518082019091526005815264173539b7b760d91b6020820152600b90614187908261555c565b50614198631f2f406b60e01b6142ad565b611344635b5e139f60e01b6142ad565b600054610100900460ff166141cf5760405162461bcd60e51b8152600401611213906159ff565b60108190556141e46330f487b560e11b6142ad565b6128586380ac58cd60e01b6142ad565b600054610100900460ff1661421b5760405162461bcd60e51b8152600401611213906159ff565b611cba631aa1577160e11b6142ad565b600054610100900460ff166142525760405162461bcd60e51b8152600401611213906159ff565b614262631a056e7160e01b6142ad565b612858600080516020615b7283398151915282613af2565b600054610100900460ff166142a15760405162461bcd60e51b8152600401611213906159ff565b611cba63714ad8e760e01b5b6001600160e01b031980821690036143065760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401611213565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b600054610100900460ff166143555760405162461bcd60e51b8152600401611213906159ff565b6143656317e0bac360e31b6142ad565b601991909155601a55565b600054610100900460ff166143975760405162461bcd60e51b8152600401611213906159ff565b6143a7633a47bf5160e11b6142ad565b6143b763152a902d60e11b6142ad565b6143c763c69dbd8f60e01b6142ad565b6143d763656cb66560e11b6142ad565b604080518082019091526001600160a01b038316815261ffff821660208201526112c681613a47565b600054610100900460ff1661247e5760405162461bcd60e51b8152600401611213906159ff565b600054610100900460ff1661444e5760405162461bcd60e51b8152600401611213906159ff565b611cba632a7c3e4960e01b6142ad565b61446883836147c5565b6144756000848484613ec5565b6112c65760405162461bcd60e51b8152600401611213906158f3565b61449c601c82613579565b156112c65760405162461bcd60e51b8152600401611213906154ba565b606060006144c8836002615471565b6144d390600261574a565b6001600160401b038111156144ea576144ea61494d565b6040519080825280601f01601f191660200182016040528015614514576020820181803683370190505b509050600360fc1b8160008151811061452f5761452f6153ba565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061455e5761455e6153ba565b60200101906001600160f81b031916908160001a9053506000614582846002615471565b61458d90600161574a565b90505b6001811115614605576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106145c1576145c16153ba565b1a60f81b8282815181106145d7576145d76153ba565b60200101906001600160f81b031916908160001a90535060049490941c936145fe81615b13565b9050614590565b508315612b4a5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401611213565b6000818152600183016020526040812054801561473d5760006146786001836158b7565b855490915060009061468c906001906158b7565b90508181146146f15760008660000182815481106146ac576146ac6153ba565b90600052602060002001549050808760000184815481106146cf576146cf6153ba565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061470257614702615b2a565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061103c565b600091505061103c565b600081815260018301602052604081205461478e5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561103c565b50600061103c565b60008183106147b2576000828152602084905260409020612b4a565b6000838152602083905260409020612b4a565b6001600160a01b03821661481b5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401611213565b61482481613dab565b156148705760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b6044820152606401611213565b61487c60008383613df9565b6001600160a01b03821660009081526006602052604081208054600192906148a590849061574a565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b03198116811461285857600080fd5b60006020828403121561492b57600080fd5b8135612b4a81614903565b80356001600160a01b038116811461357457600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516101e081016001600160401b03811182821017156149865761498661494d565b60405290565b604051601f8201601f191681016001600160401b03811182821017156149b4576149b461494d565b604052919050565b60006001600160401b038211156149d5576149d561494d565b5060051b60200190565b600082601f8301126149f057600080fd5b81356020614a05614a00836149bc565b61498c565b82815260059290921b84018101918181019086841115614a2457600080fd5b8286015b84811015614a3f5780358352918301918301614a28565b509695505050505050565b600080600060608486031215614a5f57600080fd5b614a6884614936565b9250614a7660208501614936565b915060408401356001600160401b03811115614a9157600080fd5b614a9d868287016149df565b9150509250925092565b600060208284031215614ab957600080fd5b5035919050565b60005b83811015614adb578181015183820152602001614ac3565b838111156110dc5750506000910152565b60008151808452614b04816020860160208601614ac0565b601f01601f19169290920160200192915050565b602081526000612b4a6020830184614aec565b6001600160a01b0391909116815260200190565b60008060408385031215614b5257600080fd5b614b5b83614936565b946020939093013593505050565b600080600060608486031215614b7e57600080fd5b614b8784614936565b9250614b9560208501614936565b9150604084013590509250925092565b60008060408385031215614bb857600080fd5b50508035926020909101359150565b6001600160a01b03929092168252602082015260400190565b60008083601f840112614bf257600080fd5b5081356001600160401b03811115614c0957600080fd5b6020830191508360208260051b850101111561145357600080fd5b60008060208385031215614c3757600080fd5b82356001600160401b03811115614c4d57600080fd5b614c5985828601614be0565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b81811015614c9d57835183529284019291840191600101614c81565b50909695505050505050565b600060208284031215614cbb57600080fd5b813560048110612b4a57600080fd5b634e487b7160e01b600052602160045260246000fd5b6020810160048310614cf457614cf4614cca565b91905290565b801515811461285857600080fd5b600060208284031215614d1a57600080fd5b8135612b4a81614cfa565b60008060408385031215614d3857600080fd5b82359150614d4860208401614936565b90509250929050565b600082601f830112614d6257600080fd5b81356020614d72614a00836149bc565b82815260059290921b84018101918181019086841115614d9157600080fd5b8286015b84811015614a3f57614da681614936565b8352918301918301614d95565b600080600060608486031215614dc857600080fd5b83356001600160401b0380821115614ddf57600080fd5b614deb87838801614d51565b94506020860135915080821115614e0157600080fd5b614e0d87838801614d51565b93506040860135915080821115614e2357600080fd5b50614a9d868287016149df565b60006001600160401b03831115614e4957614e4961494d565b614e5c601f8401601f191660200161498c565b9050828152838383011115614e7057600080fd5b828260208301376000602084830101529392505050565b600082601f830112614e9857600080fd5b612b4a83833560208501614e30565b600060208284031215614eb957600080fd5b81356001600160401b03811115614ecf57600080fd5b6127f484828501614e87565b6020810160068310614cf457614cf4614cca565b60008060208385031215614f0257600080fd5b82356001600160401b0380821115614f1957600080fd5b818501915085601f830112614f2d57600080fd5b813581811115614f3c57600080fd5b866020606083028501011115614f5157600080fd5b60209290920196919550909350505050565b600060208284031215614f7557600080fd5b612b4a82614936565b80356006811061357457600080fd5b600060208284031215614f9f57600080fd5b612b4a82614f7e565b6001600160a01b0392909216825261ffff16602082015260400190565b600080600060408486031215614fda57600080fd5b8335925060208401356001600160401b03811115614ff757600080fd5b61500386828701614be0565b9497909650939450505050565b6000806040838503121561502357600080fd5b61502c83614936565b9150602083013561503c81614cfa565b809150509250929050565b6000806000806080858703121561505d57600080fd5b61506685614936565b935061507460208601614936565b92506040850135915060608501356001600160401b0381111561509657600080fd5b8501601f810187136150a757600080fd5b6150b687823560208401614e30565b91505092959194509250565b602080825282518282018190526000919060409081850190868401855b8281101561511657815180516001600160a01b031685528601516001600160601b03168685015292840192908501906001016150df565b5091979650505050505050565b6000806000806040858703121561513957600080fd5b84356001600160401b038082111561515057600080fd5b61515c88838901614be0565b9096509450602087013591508082111561517557600080fd5b5061518287828801614be0565b95989497509550505050565b6000806000604084860312156151a357600080fd5b6151ac84614936565b925060208401356001600160401b03811115614ff757600080fd5b600080604083850312156151da57600080fd5b6151e383614936565b9150614d4860208401614936565b60006040828403121561520357600080fd5b50919050565b803561ffff8116811461357457600080fd5b6000806040838503121561522e57600080fd5b82356001600160401b038082111561524557600080fd5b908401906101e0828703121561525a57600080fd5b615262614963565b82358281111561527157600080fd5b61527d88828601614e87565b82525060208301358281111561529257600080fd5b61529e88828601614e87565b6020830152506040830135828111156152b657600080fd5b6152c288828601614e87565b6040830152506060830135828111156152da57600080fd5b6152e688828601614e87565b6060830152506080830135828111156152fe57600080fd5b61530a88828601614e87565b60808301525060a0838101359082015260c0808401359082015260e08084013590820152610100808401359082015261012080840135908201526101409150615354828401614936565b828201526101609150615368828401615209565b82820152610180915061537c828401614936565b828201526101a09150615390828401614936565b828201526101c091506153a4828401614f7e565b82820152809450505050614d4860208401614936565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b600052601160045260246000fd5b60006001820161541c5761541c6153f4565b5060010190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b600081600019048311821515161561548b5761548b6153f4565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826154b5576154b5615490565b500490565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b600181811c908216806154ee57607f821691505b60208210810361520357634e487b7160e01b600052602260045260246000fd5b601f8211156112c657600081815260208120601f850160051c810160208610156155355750805b601f850160051c820191505b8181101561555457828155600101615541565b505050505050565b81516001600160401b038111156155755761557561494d565b6155898161558384546154da565b8461550e565b602080601f8311600181146155be57600084156155a65750858301515b600019600386901b1c1916600185901b178555615554565b600085815260208120601f198616915b828110156155ed578886015182559484019460019091019084016155ce565b508582101561560b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060828403121561562d57600080fd5b604051606081018181106001600160401b038211171561564f5761564f61494d565b6040528235815261566260208401614936565b602082015261567360408401615209565b60408201529392505050565b60006020828403121561569157600080fd5b5051919050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252600f908201526e4e4f545f4c4f434b45525f524f4c4560881b604082015260600190565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b602080825260069082015265232927ad22a760d11b604082015260600190565b6000821982111561575d5761575d6153f4565b500190565b602080825260139082015272125394d551919250d251539517d05353d55395606a1b604082015260600190565b600083516157a1818460208801614ac0565b8351908301906157b5818360208801614ac0565b01949350505050565b6000602082840312156157d057600080fd5b8151612b4a81614cfa565b6040808252810184905260008560608301825b8781101561581c576001600160a01b0361580784614936565b168252602092830192909101906001016157ee565b5083810360208501528481526001600160fb1b0385111561583c57600080fd5b8460051b915081866020830137600091016020019081529695505050505050565b60006040828403121561586f57600080fd5b604051604081018181106001600160401b03821117156158915761589161494d565b60405261589d83614936565b81526158ab60208401615209565b60208201529392505050565b6000828210156158c9576158c96153f4565b500390565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008261595457615954615490565b500690565b60008154615966816154da565b6001828116801561597e5760018114615993576159c2565b60ff19841687528215158302870194506159c2565b8560005260208060002060005b858110156159b95781548a8201529084019082016159a0565b50505082870194505b5050505092915050565b60006159d88286615959565b84516159e8818360208901614ac0565b6159f481830186615959565b979650505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351615a7c816017850160208801614ac0565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615aad816028840160208801614ac0565b01602801949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090615aec90830184614aec565b9695505050505050565b600060208284031215615b0857600080fd5b8151612b4a81614903565b600081615b2257615b226153f4565b506000190190565b634e487b7160e01b600052603160045260246000fdfe61723a2f2f5f44396b4e3157724e576243713535425341475262544234625333763851415054596d42546853625833412f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6af9a8bb3cbd6b84fbccefa71ff73e26e798553c6914585a84886212a46a90279a2646970667358221220b683f77f5a93a62f86d2aead7f82e25cac9c01b2fa32a8c025bbd71d8a3e337864736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721/presets/ERC721TieredSalesCollection":{"address":{"1":"0xc21AC86C664015e9Eb122313cb520720e67a532b","3":"0x1ee1fEd614B687D913fD9874FBC60CBfE15964d9","4":"0xFC84a2Fa55983D1dDE73191A4e667DddA15f9117","5":"0xf0bC1455b81Cd9eFa6C89eF3ee304345450530A8","25":"0xee3fcdF6e5D1d5c5900D9B8DC388D03801d633c9","56":"0x437f9E3A2EF9089Bf3C8A89599b40f62fA2Bb3F9","65":"0x1Fc79E01fe724Ef4A1f8995f1299B90565a6AD39","66":"0x0b83BaeDCEc970EB2F695Fd0Eb07Cd6a7F31E485","97":"0x0681a5288FEFb24B65369B3f91c9281dD9d17Eba","137":"0x9aC4204908C45A88Ef92B420552d206Cc0931CeC","250":"0x8043d592263311ccCaAeeC871Df6ad1e127A52E1","280":"0x163b990d02124777104736c2b6626aDA53A1Ad4d","4002":"0x8043d592263311ccCaAeeC871Df6ad1e127A52E1","9000":"0x1Fc79E01fe724Ef4A1f8995f1299B90565a6AD39","42161":"0x3F5db007aBDcB9cA84ec4f8187A3c6Da83c44f7E","43113":"0xb91057014bFB01df21e541335a78D930266f7869","43114":"0x3E368e34Ae2CD9F2617F397cE6B6310fE1cAEaed","421611":"0x52AF631599F413FdfDD8AEC5D72578B73708Dd3C","arbitrumOne":"0x3F5db007aBDcB9cA84ec4f8187A3c6Da83c44f7E","arbitrumTestnet":"0x52AF631599F413FdfDD8AEC5D72578B73708Dd3C","avalanche":"0x3E368e34Ae2CD9F2617F397cE6B6310fE1cAEaed","avalancheFujiTestnet":"0xb91057014bFB01df21e541335a78D930266f7869","bsc":"0x437f9E3A2EF9089Bf3C8A89599b40f62fA2Bb3F9","bscTestnet":"0x0681a5288FEFb24B65369B3f91c9281dD9d17Eba","cronos":"0xee3fcdF6e5D1d5c5900D9B8DC388D03801d633c9","evmosTestnet":"0x1Fc79E01fe724Ef4A1f8995f1299B90565a6AD39","ftmTestnet":"0x8043d592263311ccCaAeeC871Df6ad1e127A52E1","goerli":"0xf0bC1455b81Cd9eFa6C89eF3ee304345450530A8","mainnet":"0xc21AC86C664015e9Eb122313cb520720e67a532b","okcMainnet":"0x0b83BaeDCEc970EB2F695Fd0Eb07Cd6a7F31E485","okcTestnet":"0x1Fc79E01fe724Ef4A1f8995f1299B90565a6AD39","opera":"0x8043d592263311ccCaAeeC871Df6ad1e127A52E1","polygon":"0x9aC4204908C45A88Ef92B420552d206Cc0931CeC","rinkeby":"0xFC84a2Fa55983D1dDE73191A4e667DddA15f9117","ropsten":"0x1ee1fEd614B687D913fD9874FBC60CBfE15964d9","zksyncTestnet":"0x163b990d02124777104736c2b6626aDA53A1Ad4d"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721TieredSalesCollection","sourceName":"contracts/collections/ERC721/presets/ERC721TieredSalesCollection.sol","abi":[{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"string","name":"placeholderURI","type":"string"},{"internalType":"string","name":"tokenURIPrefix","type":"string"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct IERC721TieringExtension.Tier[]","name":"tiers","type":"tuple[]"},{"internalType":"address","name":"defaultRoyaltyAddress","type":"address"},{"internalType":"uint16","name":"defaultRoyaltyBps","type":"uint16"},{"internalType":"address","name":"proceedsRecipient","type":"address"},{"internalType":"address","name":"trustedForwarder","type":"address"},{"internalType":"enum LicenseVersion","name":"licenseVersion","type":"uint8"}],"internalType":"struct ERC721TieredSalesCollection.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"DefaultRoyaltySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"TokenRoyaltyRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"TokenRoyaltySet","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":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LOCKER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"tierId","type":"uint256"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct IERC721TieringExtension.Tier","name":"tier","type":"tuple"}],"name":"configureTiering","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tierIds","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct IERC721TieringExtension.Tier[]","name":"_tiers","type":"tuple[]"}],"name":"configureTiering","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultRoyalty","outputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"eligibleForTier","outputs":[{"internalType":"uint256","name":"maxMintable","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"filterUnlocked","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"freezeTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getRaribleV2Royalties","outputs":[{"components":[{"internalType":"address payable","name":"account","type":"address"},{"internalType":"uint96","name":"value","type":"uint96"}],"internalType":"struct LibPart.Part[]","name":"result","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenRoyaltiesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getTokenRoyaltyByIndex","outputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasRoleBasedLockableExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"string","name":"placeholderURI","type":"string"},{"internalType":"string","name":"tokenURIPrefix","type":"string"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct IERC721TieringExtension.Tier[]","name":"tiers","type":"tuple[]"},{"internalType":"address","name":"defaultRoyaltyAddress","type":"address"},{"internalType":"uint16","name":"defaultRoyaltyBps","type":"uint16"},{"internalType":"address","name":"proceedsRecipient","type":"address"},{"internalType":"address","name":"trustedForwarder","type":"address"},{"internalType":"enum LicenseVersion","name":"licenseVersion","type":"uint8"}],"internalType":"struct ERC721TieredSalesCollection.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","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":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersion","outputs":[{"internalType":"enum LicenseVersion","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersionLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"locked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintByTier","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onTierAllowlist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","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":[],"name":"placeholderURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"remainingForTier","outputs":[{"internalType":"uint256","name":"tierRemaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reservedMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyalty","name":"royalty","type":"tuple"}],"name":"setDefaultRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum LicenseVersion","name":"_licenseVersion","type":"uint8"}],"name":"setLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setPlaceholderURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig[]","name":"royaltyConfigs","type":"tuple[]"}],"name":"setTokenRoyalties","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURIPrefix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURISuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"trustedForwarder","type":"address"}],"name":"setTrustedForwarder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tierMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tiers","outputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIPrefix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURISuffix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReserved","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"walletMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"name":"walletMintedByTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405260006012553480156200001657600080fd5b506040516200713138038062007131833981016040819052620000399162000fd0565b8051602082015160046200005662000050620000bd565b620000d9565b6002805482919060ff60c01b1916600160c01b8360058111156200007e576200007e6200117f565b02179055506003905062000093838262001223565b506004620000a2828262001223565b5050600160135550620000b6813362000134565b506200139d565b6000620000d46200033860201b62002b381760201c565b905090565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620001555750600054600160ff909116105b8062000185575062000172306200037060201b62002b5a1760201c565b15801562000185575060005460ff166001145b620001ee5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000212576000805461ff0019166101001790555b6200021f6000836200037f565b6200022a82620000d9565b6101208301516200023d9060026200038f565b6101608301516200024e90620003c5565b82516020840151604085015162000267929190620003fd565b62000281836060015184608001516200043460201b60201c565b60a083015162000291906200046a565b6200029b6200049f565b620002a682620004d5565b620002b06200050a565b60c0830151620002c0906200053e565b620002db8360e001518461010001516200057360201b60201c565b610140830151620002ec90620005a9565b801562000333576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b601f546000906001600160a01b031633036200035b575060131936013560601c90565b620000d4620005de60201b62002b691760201c565b6001600160a01b03163b151590565b6200038b8282620005e2565b5050565b600054610100900460ff16620003b95760405162461bcd60e51b8152600401620001e590620012ef565b6200038b828262000688565b600054610100900460ff16620003ef5760405162461bcd60e51b8152600401620001e590620012ef565b620003fa8162000714565b50565b600054610100900460ff16620004275760405162461bcd60e51b8152600401620001e590620012ef565b6200033383838362000792565b600054610100900460ff166200045e5760405162461bcd60e51b8152600401620001e590620012ef565b6200038b82826200081f565b600054610100900460ff16620004945760405162461bcd60e51b8152600401620001e590620012ef565b620003fa81620008b7565b600054610100900460ff16620004c95760405162461bcd60e51b8152600401620001e590620012ef565b620004d36200090a565b565b600054610100900460ff16620004ff5760405162461bcd60e51b8152600401620001e590620012ef565b620003fa8162000946565b600054610100900460ff16620005345760405162461bcd60e51b8152600401620001e590620012ef565b620004d3620009ae565b600054610100900460ff16620005685760405162461bcd60e51b8152600401620001e590620012ef565b620003fa81620009ea565b600054610100900460ff166200059d5760405162461bcd60e51b8152600401620001e590620012ef565b6200038b828262000b17565b600054610100900460ff16620005d35760405162461bcd60e51b8152600401620001e590620012ef565b620003fa8162000bb4565b3390565b6000828152601a602090815260408083206001600160a01b038516845290915290205460ff166200038b576000828152601a602090815260408083206001600160a01b03851684529091529020805460ff1916600117905562000644620000bd565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600054610100900460ff16620006b25760405162461bcd60e51b8152600401620001e590620012ef565b620006c463ac2ba33360e01b62000c00565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b8360038111156200070b576200070b6200117f565b02179055505050565b600054610100900460ff166200073e5760405162461bcd60e51b8152600401620001e590620012ef565b6200075063b964efe960e01b62000c00565b62000762630c934a3560e31b62000c00565b6002805482919060ff60c01b1916600160c01b8360058111156200078a576200078a6200117f565b021790555050565b600054610100900460ff16620007bc5760405162461bcd60e51b8152600401620001e590620012ef565b600d620007ca848262001223565b50600e620007d9838262001223565b50600f620007e8828262001223565b50620007fb633d96f4ff60e11b62000c00565b6200080d6380ac58cd60e01b62000c00565b62000333635b5e139f60e01b62000c00565b600054610100900460ff16620008495760405162461bcd60e51b8152600401620001e590620012ef565b600962000857838262001223565b50600a62000866828262001223565b50604080518082019091526005815264173539b7b760d91b6020820152600b9062000892908262001223565b50620008a5631f2f406b60e01b62000c00565b6200038b635b5e139f60e01b62000c00565b600054610100900460ff16620008e15760405162461bcd60e51b8152600401620001e590620012ef565b6010819055620008f86330f487b560e11b62000c00565b620003fa6380ac58cd60e01b62000c00565b600054610100900460ff16620009345760405162461bcd60e51b8152600401620001e590620012ef565b620004d3631aa1577160e11b62000c00565b600054610100900460ff16620009705760405162461bcd60e51b8152600401620001e590620012ef565b62000982631a056e7160e01b62000c00565b620003fa7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6826200037f565b600054610100900460ff16620009d85760405162461bcd60e51b8152600401620001e590620012ef565b620004d363714ad8e760e01b62000c00565b600054610100900460ff1662000a145760405162461bcd60e51b8152600401620001e590620012ef565b62000a266308b4902960e41b62000c00565b60005b81518110156200038b5781818151811062000a485762000a486200133a565b602090810291909101810151600083815260148352604090819020825181559282015160018401558101516002830180546001600160a01b0319166001600160a01b03909216919091179055606081015160038301556080810151600483015560a0810151600583015560c0810151600683015560e00151600790910155815182908290811062000add5762000add6200133a565b602002602001015160c001516015600082825462000afc919062001366565b9091555081905062000b0e8162001381565b91505062000a29565b600054610100900460ff1662000b415760405162461bcd60e51b8152600401620001e590620012ef565b62000b53633a47bf5160e11b62000c00565b62000b6563152a902d60e11b62000c00565b62000b7763c69dbd8f60e01b62000c00565b62000b8963656cb66560e11b62000c00565b604080518082019091526001600160a01b038316815261ffff82166020820152620003338162000c84565b600054610100900460ff1662000bde5760405162461bcd60e51b8152600401620001e590620012ef565b601f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160e01b0319808216900362000c5c5760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e74657266616365206964000000006044820152606401620001e5565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b612710816020015161ffff161062000ccd5760405162461bcd60e51b815260206004820152600b60248201526a496e76616c69642062707360a81b6044820152606401620001e5565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601b8054600160a01b9092026001600160b01b03199092169092171790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe419262000d5f92916001600160a01b0392909216825261ffff16602082015260400190565b60405180910390a150565b634e487b7160e01b600052604160045260246000fd5b60405161010081016001600160401b038111828210171562000da65762000da662000d6a565b60405290565b60405161018081016001600160401b038111828210171562000da65762000da662000d6a565b604051601f8201601f191681016001600160401b038111828210171562000dfd5762000dfd62000d6a565b604052919050565b600082601f83011262000e1757600080fd5b81516001600160401b0381111562000e335762000e3362000d6a565b602062000e49601f8301601f1916820162000dd2565b828152858284870101111562000e5e57600080fd5b60005b8381101562000e7e57858101830151828201840152820162000e61565b8381111562000e905760008385840101525b5095945050505050565b80516001600160a01b038116811462000eb257600080fd5b919050565b600082601f83011262000ec957600080fd5b815160206001600160401b0382111562000ee75762000ee762000d6a565b62000ef7818360051b0162000dd2565b82815260089290921b8401810191818101908684111562000f1757600080fd5b8286015b8481101562000fa257610100818903121562000f375760008081fd5b62000f4162000d80565b815181528482015185820152604062000f5c81840162000e9a565b90820152606082810151908201526080808301519082015260a0808301519082015260c0808301519082015260e080830151908201528352918301916101000162000f1b565b509695505050505050565b805161ffff8116811462000eb257600080fd5b80516006811062000eb257600080fd5b60006020828403121562000fe357600080fd5b81516001600160401b038082111562000ffb57600080fd5b9083019061018082860312156200101157600080fd5b6200101b62000dac565b8251828111156200102b57600080fd5b620010398782860162000e05565b8252506020830151828111156200104f57600080fd5b6200105d8782860162000e05565b6020830152506040830151828111156200107657600080fd5b620010848782860162000e05565b6040830152506060830151828111156200109d57600080fd5b620010ab8782860162000e05565b606083015250608083015182811115620010c457600080fd5b620010d28782860162000e05565b60808301525060a083015160a082015260c083015182811115620010f557600080fd5b620011038782860162000eb7565b60c0830152506200111760e0840162000e9a565b60e082015261010091506200112e82840162000fad565b8282015261012091506200114482840162000e9a565b8282015261014091506200115a82840162000e9a565b8282015261016091506200117082840162000fc0565b91810191909152949350505050565b634e487b7160e01b600052602160045260246000fd5b600181811c90821680620011aa57607f821691505b602082108103620011cb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033357600081815260208120601f850160051c81016020861015620011fa5750805b601f850160051c820191505b818110156200121b5782815560010162001206565b505050505050565b81516001600160401b038111156200123f576200123f62000d6a565b620012578162001250845462001195565b84620011d1565b602080601f8311600181146200128f5760008415620012765750858301515b600019600386901b1c1916600185901b1785556200121b565b600085815260208120601f198616915b82811015620012c0578886015182559484019460019091019084016200129f565b5085821015620012df5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156200137c576200137c62001350565b500190565b60006001820162001396576200139662001350565b5060010190565b615d8480620013ad6000396000f3fe60806040526004361061040b5760003560e01c8063837fe14011610216578063c71b0e1c1161011f578063c71b0e1c14610d40578063c723955a14610d56578063c7db289314610d6b578063c87b56dd14610d80578063cad96cca14610da0578063d539139314610dcd578063d547741f14610def578063d5abeb0114610e0f578063d8b436fd14610e25578063da74222814610e45578063da82b22714610e65578063dbbc853b14610e7a578063dcbe353f14610e8f578063dd46706414610eaf578063dd89c6fa14610ecf578063de6d6d9614610ee4578063e8a3d48514610f04578063e985e9c514610f19578063ef60ceaf14610f39578063f2fde38b14610f59578063f362136714610f79578063f384702f14610f9b57600080fd5b8063837fe14014610ab9578063859610c614610ace5780638da5cb5b14610aee57806391d1485414610b03578063938e3d7b14610b235780639598144a14610b4357806395d89b4114610b7b57806399e0dd7c14610b90578063a217fddf14610bb0578063a22cb46514610bc5578063a341793b14610be5578063a65dbda414610bfa578063a9852bfb14610c1a578063af121f5414610c3a578063b45a3c0e14610c5b578063b88d4fde14610c7b578063ba4695fd14610c9b578063bd2c18f714610cb0578063bf9b7a5714610cd0578063c0ac998314610cf1578063c0bb38ff14610d06578063c29de63014610d2657600080fd5b806342842e0e1161031857806342842e0e146107fb57806349561cb91461081b57806350a5292f1461083c5780635136dcc71461086a57806353367f081461088a57806356c022bb146108b7578063572b6c05146108d75780635897f878146108f75780635d36598f146109175780635ea2c91b146109375780636057e0ec1461094a5780636198e3391461096b5780636352211e1461098b57806364ed2913146109ab57806368c7d37c146109cb5780636f8b44b0146109eb57806370a0823114610a0b578063714ad8e714610a2b578063715018a614610a3f5780637313cba914610a545780637885fdc714610a695780637e98034214610aa457600080fd5b806301ffc9a714610410578063039af9eb146104455780630653aca5146104f657806306fdde0314610545578063081812fc14610567578063095ea7b31461059f5780631123f2ef146105c1578063167446071461061257806318160ddd146106275780631a056e711461063c57806320f1bb301461065c57806323b872dd1461067c578063248a9ca31461069c5780632a55205a146106bc5780632bb684ad146106ea5780632c233067146107175780632cb9b2ac146107375780632d00b5871461074d5780632f2ff15d1461077b5780633542aee21461079b5780633574a2dd146107bb57806336568abe146107db575b600080fd5b34801561041c57600080fd5b5061043061042b366004614a65565b610fb5565b60405190151581526020015b60405180910390f35b34801561045157600080fd5b506104ad610460366004614a82565b60146020526000908152604090208054600182015460028301546003840154600485015460058601546006870154600790970154959694956001600160a01b039094169492939192909188565b6040805198895260208901979097526001600160a01b03909516958701959095526060860192909252608085015260a084015260c083019190915260e08201526101000161043c565b34801561050257600080fd5b50610516610511366004614a82565b610fc6565b60408051825181526020808401516001600160a01b0316908201529181015161ffff169082015260600161043c565b34801561055157600080fd5b5061055a61104b565b60405161043c9190614af3565b34801561057357600080fd5b50610587610582366004614a82565b61105a565b6040516001600160a01b03909116815260200161043c565b3480156105ab57600080fd5b506105bf6105ba366004614b26565b611081565b005b3480156105cd57600080fd5b506106046105dc366004614b52565b60009182526017602090815260408084206001600160a01b0393909316845291905290205490565b60405190815260200161043c565b34801561061e57600080fd5b506105bf6111ad565b34801561063357600080fd5b50601254610604565b34801561064857600080fd5b506105bf610657366004614b26565b6111c4565b34801561066857600080fd5b506105bf610677366004614b82565b61122a565b34801561068857600080fd5b506105bf610697366004614bbc565b611410565b3480156106a857600080fd5b506106046106b7366004614a82565b611448565b3480156106c857600080fd5b506106dc6106d7366004614bfd565b61145d565b60405161043c929190614c1f565b3480156106f657600080fd5b5061070a610705366004614c7c565b611522565b60405161043c9190614cbd565b34801561072357600080fd5b506105bf610732366004614d01565b6115ec565b34801561074357600080fd5b5061060460185481565b34801561075957600080fd5b5060025461076e90600160b01b900460ff1681565b60405161043c9190614d38565b34801561078757600080fd5b506105bf610796366004614b52565b61164b565b3480156107a757600080fd5b506105bf6107b6366004614b26565b611667565b3480156107c757600080fd5b506105bf6107d6366004614e5b565b61166f565b3480156107e757600080fd5b506105bf6107f6366004614b52565b611683565b34801561080757600080fd5b506105bf610816366004614bbc565b61170d565b34801561082757600080fd5b5060025461043090600160b81b900460ff1681565b34801561084857600080fd5b5060025461085d90600160c01b900460ff1681565b60405161043c9190614e8f565b34801561087657600080fd5b506105bf610885366004614ea3565b611728565b34801561089657600080fd5b506106046108a5366004614a82565b60166020526000908152604090205481565b3480156108c357600080fd5b50601f54610587906001600160a01b031681565b3480156108e357600080fd5b506104306108f2366004614f17565b61178b565b34801561090357600080fd5b50610604610912366004614a82565b61179f565b34801561092357600080fd5b506105bf610932366004614c7c565b61181c565b6105bf610945366004614f34565b6118bf565b34801561095657600080fd5b5060025461043090600160a01b900460ff1681565b34801561097757600080fd5b506105bf610986366004614a82565b611b8b565b34801561099757600080fd5b506105876109a6366004614a82565b611bf7565b3480156109b757600080fd5b506105bf6109c6366004614fa3565b611c2c565b3480156109d757600080fd5b506104306109e6366004614fbe565b611ca4565b3480156109f757600080fd5b506105bf610a06366004614a82565b611d46565b348015610a1757600080fd5b50610604610a26366004614f17565b611d5a565b348015610a3757600080fd5b506001610430565b348015610a4b57600080fd5b506105bf611de0565b348015610a6057600080fd5b5061055a611df4565b348015610a7557600080fd5b50601b54610a96906001600160a01b03811690600160a01b900461ffff1682565b60405161043c92919061500a565b348015610ab057600080fd5b50610604611e86565b348015610ac557600080fd5b506105bf611e92565b348015610ada57600080fd5b506105bf610ae9366004614c7c565b611ed9565b348015610afa57600080fd5b50610587611f72565b348015610b0f57600080fd5b50610430610b1e366004614b52565b611f87565b348015610b2f57600080fd5b506105bf610b3e366004614e5b565b611fb2565b348015610b4f57600080fd5b50610604610b5e366004614b52565b601760209081526000928352604080842090915290825290205481565b348015610b8757600080fd5b5061055a611fc6565b348015610b9c57600080fd5b506105bf610bab366004614e5b565b611fd0565b348015610bbc57600080fd5b50610604600081565b348015610bd157600080fd5b506105bf610be0366004615035565b612007565b348015610bf157600080fd5b5061055a612019565b348015610c0657600080fd5b506105bf610c1536600461515f565b612032565b348015610c2657600080fd5b506105bf610c35366004614e5b565b6121f2565b348015610c4657600080fd5b5060025461043090600160a81b900460ff1681565b348015610c6757600080fd5b50610430610c76366004614a82565b612229565b348015610c8757600080fd5b506105bf610c963660046152fe565b612236565b348015610ca757600080fd5b506105bf612275565b348015610cbc57600080fd5b50610604610ccb366004614fbe565b61228c565b348015610cdc57600080fd5b5060025461043090600160c81b900460ff1681565b348015610cfd57600080fd5b5061055a6124bd565b348015610d1257600080fd5b506105bf610d21366004614f17565b6124cc565b348015610d3257600080fd5b50600c546104309060ff1681565b348015610d4c57600080fd5b5061060460155481565b348015610d6257600080fd5b506105bf612520565b348015610d7757600080fd5b5061055a61257f565b348015610d8c57600080fd5b5061055a610d9b366004614a82565b6125e6565b348015610dac57600080fd5b50610dc0610dbb366004614a82565b6125f1565b60405161043c919061537d565b348015610dd957600080fd5b50610604600080516020615d0f83398151915281565b348015610dfb57600080fd5b506105bf610e0a366004614b52565b6126ac565b348015610e1b57600080fd5b5061060460105481565b348015610e3157600080fd5b506105bf610e403660046153de565b6126c8565b348015610e5157600080fd5b506105bf610e60366004614f17565b61272e565b348015610e7157600080fd5b506105bf612758565b348015610e8657600080fd5b5061055a61279e565b348015610e9b57600080fd5b50600254610587906001600160a01b031681565b348015610ebb57600080fd5b506105bf610eca366004614a82565b6127ad565b348015610edb57600080fd5b506105bf612811565b348015610ef057600080fd5b506105bf610eff366004615477565b61282e565b348015610f1057600080fd5b5061055a612a66565b348015610f2557600080fd5b50610430610f343660046154e2565b612a75565b348015610f4557600080fd5b506105bf610f54366004615510565b612aa3565b348015610f6557600080fd5b506105bf610f74366004614f17565b612ac2565b348015610f8557600080fd5b50610604600080516020615d2f83398151915281565b348015610fa757600080fd5b506011546104309060ff1681565b6000610fc082612b6d565b92915050565b6040805160608101825260008082526020820181905291810182905290610fee601d84612ba9565b6000818152601c60209081526040918290208251808401845290546001600160a01b03808216835261ffff600160a01b90920482168385019081528551606081018752968752925116928501929092525116908201529392505050565b6060611055612bbc565b905090565b600061106582612bcb565b506000908152600760205260409020546001600160a01b031690565b600061108c82611bf7565b9050806001600160a01b0316836001600160a01b0316036110fe5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b0316611110612bf0565b6001600160a01b0316148061112c575061112c81610f34612bf0565b61119e5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016110f5565b6111a88383612bfa565b505050565b6111b5612c68565b6011805460ff19166001179055565b6111de600080516020615d0f833981519152610b1e612bf0565b61121c5760405162461bcd60e51b815260206004820152600f60248201526e4e4f545f4d494e5445525f524f4c4560881b60448201526064016110f5565b6112268282612cd7565b5050565b611232612c68565b60008281526016602052604090205460e082013510156112885760405162461bcd60e51b81526020600482015260116024820152701313d5d15497d512105397d35253951151607a1b60448201526064016110f5565b600082815260146020526040902060060154156112f65760008281526016602052604090205460c082013510156112f65760405162461bcd60e51b81526020600482015260126024820152711313d5d7d49154d154959157d05353d5539560721b60448201526064016110f5565b6000828152601660205260409020541561136457600082815260146020526040902060040154608082013510156113645760405162461bcd60e51b81526020600482015260126024820152711313d5d7d3505617d4115497d5d05313115560721b60448201526064016110f5565b600082815260146020526040812060060154601580549192909161138990849061553e565b9091555050600082815260146020526040902081906113a88282615555565b9050508060c00135601560008282546113c191906155c6565b909155505060105460155411156112265760405162461bcd60e51b815260206004820152601360248201527213505617d4d55414131657d15610d151511151606a1b60448201526064016110f5565b61142161141b612bf0565b82612d60565b61143d5760405162461bcd60e51b81526004016110f5906155de565b6111a8838383612dbf565b6000908152601a602052604090206001015490565b6000828152601c602052604081205481906001600160a01b0316156114c2576000848152601c60205260409020546001600160a01b03811690612710906114af90600160a01b900461ffff168661562c565b6114b99190615661565b9150915061151b565b601b546001600160a01b0316158015906114e85750601b54600160a01b900461ffff1615155b1561151457601b546001600160a01b03811690612710906114af90600160a01b900461ffff168661562c565b5060009050805b9250929050565b60606000826001600160401b0381111561153e5761153e614d52565b604051908082528060200260200182016040528015611567578160200160208202803683370190505b50905060005b838110156115e45761159685858381811061158a5761158a615675565b90506020020135612229565b6115d2578484828181106115ac576115ac615675565b905060200201358282815181106115c5576115c5615675565b6020026020010181815250505b806115dc8161568b565b91505061156d565b509392505050565b6115f4612c68565b600254600160b81b900460ff161561161e5760405162461bcd60e51b81526004016110f5906156a4565b6002805482919060ff60b01b1916600160b01b83600381111561164357611643614d22565b021790555050565b61165482611448565b61165d81612f66565b6111a88383612f77565b61121c612c68565b611677612c68565b60096112268282615746565b61168b612bf0565b6001600160a01b0316816001600160a01b0316146117035760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016110f5565b6112268282612ffe565b6111a883838360405180602001604052806000815250612236565b611730612c68565b6112268282808060200260200160405190810160405280939291908181526020016000905b828210156117815761177260608302860136819003810190615805565b81526020019060010190611755565b5050505050613083565b601f546001600160a01b0391821691161490565b60006018546015546117b1919061553e565b6012546010546117c1919061553e565b6117cb919061553e565b600083815260146020526040902060060154909150156118175760008281526016602090815260408083205460149092529091206006015461180d919061553e565b610fc090826155c6565b919050565b60026013540361183e5760405162461bcd60e51b81526004016110f59061586b565b600260135561185b600080516020615d2f83398151915233611f87565b6118775760405162461bcd60e51b81526004016110f5906158a2565b60005b818110156118b5576118a383838381811061189757611897615675565b9050602002013561322a565b806118ad8161568b565b91505061187a565b5050600160135550565b6002601354036118e15760405162461bcd60e51b81526004016110f59061586b565b600260135560006118f0612bf0565b90506000611901878387878761228c565b9050808611156119415760405162461bcd60e51b815260206004820152600b60248201526a08ab0868a8a88a6be9a82b60ab1b60448201526064016110f5565b61194a8761179f565b8611156119695760405162461bcd60e51b81526004016110f5906158cb565b60008781526014602090815260408083206007015460169092529091205461199190886155c6565b11156119af5760405162461bcd60e51b81526004016110f5906158cb565b6000878152601460205260409020600201546001600160a01b0316611a365760008781526014602052604090206003015434906119ed90889061562c565b1115611a315760405162461bcd60e51b8152602060048201526013602482015272125394d551919250d251539517d05353d55395606a1b60448201526064016110f5565b611aea565b600087815260146020526040902060028101546003909101546001600160a01b03909116906323b872dd9084903090611a70908b9061562c565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015611ac4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae891906158f7565b505b60008781526017602090815260408083206001600160a01b038616845290915281208054889290611b1c9084906155c6565b909155505060008781526016602052604081208054889290611b3f9084906155c6565b909155505060008781526014602052604090206006015415611b73578560186000828254611b6d91906155c6565b90915550505b611b7d8287612cd7565b505060016013555050505050565b600260135403611bad5760405162461bcd60e51b81526004016110f59061586b565b6002601355611bca600080516020615d2f83398151915233611f87565b611be65760405162461bcd60e51b81526004016110f5906158a2565b611bef8161322a565b506001601355565b6000818152600560205260408120546001600160a01b031680610fc05760405162461bcd60e51b81526004016110f590615914565b611c34612c68565b600254600160c81b900460ff1615611c7f5760405162461bcd60e51b815260206004820152600e60248201526d131250d15394d157d313d0d2d15160921b60448201526064016110f5565b6002805482919060ff60c01b1916600160c01b83600581111561164357611643614d22565b6000611d3a83838080602002602001604051908101604052809392919081815260200183836020028082843760009201829052508b8152601460205260409020600501549250611d359150899050886040516001600160601b0319606084901b1660208201526034810182905260009060540160405160208183030381529060405280519060200120905092915050565b613291565b90505b95945050505050565b611d4e612c68565b611d57816132a7565b50565b60006001600160a01b038216611dc45760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016110f5565b506001600160a01b031660009081526006602052604090205490565b611de8612c68565b611df26000613319565b565b606060098054611e03906156c4565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2f906156c4565b8015611e7c5780601f10611e5157610100808354040283529160200191611e7c565b820191906000526020600020905b815481529060010190602001808311611e5f57829003601f168201915b5050505050905090565b6000611055601d613374565b611e9a612c68565b600254600160a01b900460ff1615611ec45760405162461bcd60e51b81526004016110f5906156a4565b6002805460ff60a01b1916600160a01b179055565b600260135403611efb5760405162461bcd60e51b81526004016110f59061586b565b6002601355611f18600080516020615d2f83398151915233611f87565b611f345760405162461bcd60e51b81526004016110f5906158a2565b60005b818110156118b557611f60838383818110611f5457611f54615675565b9050602002013561337e565b80611f6a8161568b565b915050611f37565b6000546201000090046001600160a01b031690565b6000918252601a602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611fba612c68565b600f6112268282615746565b60606110556133c8565b611fd8612c68565b600c5460ff1615611ffb5760405162461bcd60e51b81526004016110f590615946565b600a6112268282615746565b611226612012612bf0565b83836133d7565b60025460609061105590600160c01b900460ff166134a1565b600054610100900460ff16158080156120525750600054600160ff909116105b80612073575061206130612b5a565b158015612073575060005460ff166001145b6120d65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016110f5565b6000805460ff1916600117905580156120f9576000805461ff0019166101001790555b61210460008361361a565b61210d82613319565b61211d8361012001516002613624565b61212b836101600151613655565b612142836000015184602001518560400151613685565b612154836060015184608001516136b7565b6121618360a001516136e8565b612169613718565b61217282613747565b61217a613777565b6121878360c001516137a6565b61219a8360e001518461010001516137d6565b6121a8836101400151613807565b80156111a8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6121fa612c68565b600c5460ff161561221d5760405162461bcd60e51b81526004016110f590615946565b600b6112268282615746565b6000610fc0601983613837565b612247612241612bf0565b83612d60565b6122635760405162461bcd60e51b81526004016110f5906155de565b61226f8484848461385b565b50505050565b61227d612c68565b600c805460ff19166001179055565b6000858152601460205260408120600401546122d75760405162461bcd60e51b815260206004820152600a6024820152694e4f545f45584953545360b01b60448201526064016110f5565b6000868152601460205260409020544210156123235760405162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b60448201526064016110f5565b6000868152601460205260409020600101544211156123745760405162461bcd60e51b815260206004820152600d60248201526c1053149150511657d153911151609a1b60448201526064016110f5565b60008681526017602090815260408083206001600160a01b03891684528252808320548984526014909252909120600401546123b0919061553e565b60008781526014602052604090206005015490915015611d3d5760008681526017602090815260408083206001600160a01b0389168452909152902054841161242d5760405162461bcd60e51b815260206004820152600f60248201526e4d415845445f414c4c4f57414e434560881b60448201526064016110f5565b61243a8686868686611ca4565b6124785760405162461bcd60e51b815260206004820152600f60248201526e1393d517d0531313d5d31254d51151608a1b60448201526064016110f5565b60008681526017602090815260408083206001600160a01b03891684529091528120546124a5908661553e565b9050808211156124b3578091505b5095945050505050565b6060600a8054611e03906156c4565b6124d4612c68565b600254600160a01b900460ff16156124fe5760405162461bcd60e51b81526004016110f5906156a4565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b612528612c68565b600254600160b81b900460ff161561256a5760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b60448201526064016110f5565b6002805460ff60b81b1916600160b81b179055565b6060604051806060016040528060318152602001615cde603191396002546125c190600160c01b900460ff1660058111156125bc576125bc614d22565b61388e565b6040516020016125d2929190615966565b604051602081830303815290604052905090565b6060610fc08261398e565b604080516001808252818301909252606091816020015b6040805180820190915260008082526020820152815260200190600190039081612608575050601b5481519192506001600160a01b031690829060009061265157612651615675565b60209081029190910101516001600160a01b03919091169052601b548151600160a01b90910461ffff1690829060009061268d5761268d615675565b6020908102919091018101516001600160601b03909216910152919050565b6126b582611448565b6126be81612f66565b6111a88383612ffe565b6126d0612c68565b60005b83811015612727576127158585838181106126f0576126f0615675565b9050602002013584848481811061270957612709615675565b9050610100020161122a565b8061271f8161568b565b9150506126d3565b5050505050565b612736612c68565b601f80546001600160a01b0319166001600160a01b0392909216919091179055565b612760612c68565b6002805460ff60a81b1916600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b6060600b8054611e03906156c4565b6002601354036127cf5760405162461bcd60e51b81526004016110f59061586b565b60026013556127ec600080516020615d2f83398151915233611f87565b6128085760405162461bcd60e51b81526004016110f5906158a2565b611bef8161337e565b612819612c68565b6002805460ff60c81b1916600160c81b179055565b61283733613a6a565b6002546001600160a01b03166128875760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b60448201526064016110f5565b600254600160a81b900460ff16156128e15760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b454460448201526064016110f5565b60005b83811015612a2257600085858381811061290057612900615675565b90506020020160208101906129159190614f17565b6001600160a01b0316036129585761295383838381811061293857612938615675565b6002546001600160a01b031692602090910201359050613bef565b612a10565b84848281811061296a5761296a615675565b905060200201602081019061297f9190614f17565b6002546001600160a01b039182169163a9059cbb91168585858181106129a7576129a7615675565b905060200201356040518363ffffffff1660e01b81526004016129cb929190614c1f565b6020604051808303816000875af11580156129ea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0e91906158f7565b505b80612a1a8161568b565b9150506128e4565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a584848484604051612a589493929190615995565b60405180910390a150505050565b6060600f8054611e03906156c4565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205460ff1690565b612aab612c68565b611d57612abd36839003830183615a19565b613d05565b612aca612c68565b6001600160a01b038116612b2f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016110f5565b611d5781613319565b6000612b433361178b565b15612b55575060131936013560601c90565b503390565b6001600160a01b03163b151590565b3390565b60006301ffc9a760e01b6001600160e01b031983161480610fc05750506001600160e01b03191660009081526001602052604090205460ff1690565b6000612bb58383613db0565b9392505050565b6060600d8054611e03906156c4565b612bd481613dda565b611d575760405162461bcd60e51b81526004016110f590615914565b6000611055612b38565b600081815260076020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612c2f82611bf7565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b612c70612bf0565b6001600160a01b0316612c81611f72565b6001600160a01b031614611df25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016110f5565b60105481612ce460125490565b612cee91906155c6565b1115612d2d5760405162461bcd60e51b815260206004820152600e60248201526d455843454544535f535550504c5960901b60448201526064016110f5565b60005b818110156111a857601254612d458482613df7565b612d4d613e11565b5080612d588161568b565b915050612d30565b600080612d6c83611bf7565b9050806001600160a01b0316846001600160a01b03161480612d935750612d938185612a75565b80612db75750836001600160a01b0316612dac8461105a565b6001600160a01b0316145b949350505050565b826001600160a01b0316612dd282611bf7565b6001600160a01b031614612e365760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016110f5565b6001600160a01b038216612e985760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016110f5565b612ea3838383613e28565b612eae600082612bfa565b6001600160a01b0383166000908152600660205260408120805460019290612ed790849061553e565b90915550506001600160a01b0382166000908152600660205260408120805460019290612f059084906155c6565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b611d5781612f72612bf0565b613e33565b612f818282611f87565b611226576000828152601a602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612fba612bf0565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6130088282611f87565b15611226576000828152601a602090815260408083206001600160a01b03851684529091529020805460ff1916905561303f612bf0565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b60005b81518110156112265760008282815181106130a3576130a3615675565b60200260200101519050612710816040015161ffff16106130d65760405162461bcd60e51b81526004016110f590615a75565b60208101516001600160a01b031661314f5780516000908152601c6020526040902080546001600160b01b0319169055805161311490601d90613e97565b5080516040519081527fa2870857763bd9ae76c957f869f16b31c18dd3bb4c7b4d3a4496dc5c57c657f99060200160405180910390a1613217565b6040805180820182526020808401516001600160a01b0390811683528484015161ffff90811683850190815286516000908152601c90945294909220925183549451909216600160a01b026001600160b01b031990941691161791909117905580516131bd90601d90613ea3565b50805160208083015160408085015181519485526001600160a01b039092169284019290925261ffff1682820152517f389b70fb0887f01e83784eb1c4c589f740eca53b00ed0f45e41db5d079719abb9181900360600190a15b50806132228161568b565b915050613086565b613235601982613837565b61326e5760405162461bcd60e51b815260206004820152600a6024820152691393d517d313d0d2d15160b21b60448201526064016110f5565b600881901c60009081526019602052604090208054600160ff84161b1916905550565b60008261329e8584613eaf565b14949350505050565b6132af612c68565b6132b881613ef4565b6018546015546132c8919061553e565b6012546132d5908361553e565b1015611d575760405162461bcd60e51b81526020600482015260136024820152721313d5d15497d512105397d49154d154959151606a1b60448201526064016110f5565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6000610fc0825490565b613389601982613837565b156133a65760405162461bcd60e51b81526004016110f5906156a4565b600881901c60009081526019602052604090208054600160ff84161b17905550565b6060600e8054611e03906156c4565b816001600160a01b0316836001600160a01b0316036134345760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b60448201526064016110f5565b6001600160a01b03838116600081815260086020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b606060068260058111156134b7576134b7614d22565b60ff1611156134c557600080fd5b8160058111156134d7576134d7614d22565b60000361350157505060408051808201909152600781526604342455f4343360cc1b602082015290565b81600581111561351357613513614d22565b60010361353d57505060408051808201909152600781526621a122afa2a1a960c91b602082015290565b81600581111561354f5761354f614d22565b60020361357a57505060408051808201909152600881526721a122afa722a1a960c11b602082015290565b81600581111561358c5761358c614d22565b6003036135ba57505060408051808201909152600b81526a4342455f4e4543525f485360a81b602082015290565b8160058111156135cc576135cc614d22565b6004036135f557505060408051808201909152600681526521a122afa82960d11b602082015290565b50506040805180820190915260098152684342455f50525f485360b81b602082015290565b6112268282612f77565b600054610100900460ff1661364b5760405162461bcd60e51b81526004016110f590615a9a565b6112268282613f6a565b600054610100900460ff1661367c5760405162461bcd60e51b81526004016110f590615a9a565b611d5781613fee565b600054610100900460ff166136ac5760405162461bcd60e51b81526004016110f590615a9a565b6111a8838383614035565b600054610100900460ff166136de5760405162461bcd60e51b81526004016110f590615a9a565b61122682826140b3565b600054610100900460ff1661370f5760405162461bcd60e51b81526004016110f590615a9a565b611d578161413e565b600054610100900460ff1661373f5760405162461bcd60e51b81526004016110f590615a9a565b611df261418a565b600054610100900460ff1661376e5760405162461bcd60e51b81526004016110f590615a9a565b611d57816141c1565b600054610100900460ff1661379e5760405162461bcd60e51b81526004016110f590615a9a565b611df2614210565b600054610100900460ff166137cd5760405162461bcd60e51b81526004016110f590615a9a565b611d5781614247565b600054610100900460ff166137fd5760405162461bcd60e51b81526004016110f590615a9a565b6112268282614363565b600054610100900460ff1661382e5760405162461bcd60e51b81526004016110f590615a9a565b611d57816143f3565b600881901c600090815260208390526040902054600160ff83161b16151592915050565b613866848484612dbf565b6138728484848461441a565b61226f5760405162461bcd60e51b81526004016110f590615ae5565b6060816000036138b55750506040805180820190915260018152600360fc1b602082015290565b8160005b81156138df57806138c98161568b565b91506138d89050600a83615661565b91506138b9565b6000816001600160401b038111156138f9576138f9614d52565b6040519080825280601f01601f191660200182016040528015613923576020820181803683370190505b5090505b8415612db75761393860018361553e565b9150613945600a86615b37565b6139509060306155c6565b60f81b81838151811061396557613965615675565b60200101906001600160f81b031916908160001a905350613987600a86615661565b9450613927565b60606000600a805461399f906156c4565b905011613a3657600980546139b3906156c4565b80601f01602080910402602001604051908101604052809291908181526020018280546139df906156c4565b8015613a2c5780601f10613a0157610100808354040283529160200191613a2c565b820191906000526020600020905b815481529060010190602001808311613a0f57829003601f168201915b5050505050610fc0565b600a613a418361388e565b600b604051602001613a5593929190615bbe565b60405160208183030381529060405292915050565b6003600254600160b01b900460ff166003811115613a8a57613a8a614d22565b03613ac95760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b60448201526064016110f5565b60028054600160b01b900460ff166003811115613ae857613ae8614d22565b03613af05750565b6001600254600160b01b900460ff166003811115613b1057613b10614d22565b03613b6c576002546001600160a01b03828116911614611d575760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b60448201526064016110f5565b6000600254600160b01b900460ff166003811115613b8c57613b8c614d22565b03611d5757806001600160a01b0316613ba3611f72565b6001600160a01b031614611d575760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b60448201526064016110f5565b80471015613c3f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016110f5565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613c8c576040519150601f19603f3d011682016040523d82523d6000602084013e613c91565b606091505b50509050806111a85760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b60648201526084016110f5565b612710816020015161ffff1610613d2e5760405162461bcd60e51b81526004016110f590615a75565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601b80546001600160b01b031916909217600160a01b9091021790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe4192613da5929161500a565b60405180910390a150565b6000826000018281548110613dc757613dc7615675565b9060005260206000200154905092915050565b6000908152600560205260409020546001600160a01b0316151590565b611226828260405180602001604052806000815250614529565b60128054906000613e218361568b565b9190505550565b6111a883838361455c565b613e3d8282611f87565b61122657613e55816001600160a01b03166014614584565b613e60836020614584565b604051602001613e71929190615bf1565b60408051601f198184030181529082905262461bcd60e51b82526110f591600401614af3565b6000612bb5838361471f565b6000612bb58383614812565b600081815b84518110156115e457613ee082868381518110613ed357613ed3615675565b6020026020010151614861565b915080613eec8161568b565b915050613eb4565b613efc612c68565b60115460ff1615613f1f5760405162461bcd60e51b81526004016110f590615946565b601254811015613f655760405162461bcd60e51b81526020600482015260116024820152704c4f5745525f5448414e5f535550504c5960781b60448201526064016110f5565b601055565b600054610100900460ff16613f915760405162461bcd60e51b81526004016110f590615a9a565b613fa163ac2ba33360e01b614890565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b836003811115613fe557613fe5614d22565b02179055505050565b600054610100900460ff166140155760405162461bcd60e51b81526004016110f590615a9a565b61402563b964efe960e01b614890565b611c7f630c934a3560e31b614890565b600054610100900460ff1661405c5760405162461bcd60e51b81526004016110f590615a9a565b600d6140688482615746565b50600e6140758382615746565b50600f6140828282615746565b50614093633d96f4ff60e11b614890565b6140a36380ac58cd60e01b614890565b6111a8635b5e139f60e01b614890565b600054610100900460ff166140da5760405162461bcd60e51b81526004016110f590615a9a565b60096140e68382615746565b50600a6140f38282615746565b50604080518082019091526005815264173539b7b760d91b6020820152600b9061411d9082615746565b5061412e631f2f406b60e01b614890565b611226635b5e139f60e01b614890565b600054610100900460ff166141655760405162461bcd60e51b81526004016110f590615a9a565b601081905561417a6330f487b560e11b614890565b611d576380ac58cd60e01b614890565b600054610100900460ff166141b15760405162461bcd60e51b81526004016110f590615a9a565b611df2631aa1577160e11b614890565b600054610100900460ff166141e85760405162461bcd60e51b81526004016110f590615a9a565b6141f8631a056e7160e01b614890565b611d57600080516020615d0f8339815191528261361a565b600054610100900460ff166142375760405162461bcd60e51b81526004016110f590615a9a565b611df263714ad8e760e01b614890565b600054610100900460ff1661426e5760405162461bcd60e51b81526004016110f590615a9a565b61427e6308b4902960e41b614890565b60005b81518110156112265781818151811061429c5761429c615675565b602090810291909101810151600083815260148352604090819020825181559282015160018401558101516002830180546001600160a01b0319166001600160a01b03909216919091179055606081015160038301556080810151600483015560a0810151600583015560c0810151600683015560e00151600790910155815182908290811061432e5761432e615675565b602002602001015160c001516015600082825461434b91906155c6565b9091555081905061435b8161568b565b915050614281565b600054610100900460ff1661438a5760405162461bcd60e51b81526004016110f590615a9a565b61439a633a47bf5160e11b614890565b6143aa63152a902d60e11b614890565b6143ba63c69dbd8f60e01b614890565b6143ca63656cb66560e11b614890565b604080518082019091526001600160a01b038316815261ffff821660208201526111a881613d05565b600054610100900460ff166127365760405162461bcd60e51b81526004016110f590615a9a565b600061442e846001600160a01b0316612b5a565b1561451e57836001600160a01b031663150b7a0261444a612bf0565b8786866040518563ffffffff1660e01b815260040161446c9493929190615c60565b6020604051808303816000875af19250505080156144a7575060408051601f3d908101601f191682019092526144a491810190615c93565b60015b614504573d8080156144d5576040519150601f19603f3d011682016040523d82523d6000602084013e6144da565b606091505b5080516000036144fc5760405162461bcd60e51b81526004016110f590615ae5565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612db7565b506001949350505050565b6145338383614911565b614540600084848461441a565b6111a85760405162461bcd60e51b81526004016110f590615ae5565b614567601982613837565b156111a85760405162461bcd60e51b81526004016110f5906156a4565b6060600061459383600261562c565b61459e9060026155c6565b6001600160401b038111156145b5576145b5614d52565b6040519080825280601f01601f1916602001820160405280156145df576020820181803683370190505b509050600360fc1b816000815181106145fa576145fa615675565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061462957614629615675565b60200101906001600160f81b031916908160001a905350600061464d84600261562c565b6146589060016155c6565b90505b60018111156146d0576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061468c5761468c615675565b1a60f81b8282815181106146a2576146a2615675565b60200101906001600160f81b031916908160001a90535060049490941c936146c981615cb0565b905061465b565b508315612bb55760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016110f5565b6000818152600183016020526040812054801561480857600061474360018361553e565b85549091506000906147579060019061553e565b90508181146147bc57600086600001828154811061477757614777615675565b906000526020600020015490508087600001848154811061479a5761479a615675565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806147cd576147cd615cc7565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610fc0565b6000915050610fc0565b600081815260018301602052604081205461485957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610fc0565b506000610fc0565b600081831061487d576000828152602084905260409020612bb5565b6000838152602083905260409020612bb5565b6001600160e01b031980821690036148e95760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b60448201526064016110f5565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b6001600160a01b0382166149675760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016110f5565b61497081613dda565b156149bc5760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b60448201526064016110f5565b6149c860008383613e28565b6001600160a01b03821660009081526006602052604081208054600192906149f19084906155c6565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b031981168114611d5757600080fd5b600060208284031215614a7757600080fd5b8135612bb581614a4f565b600060208284031215614a9457600080fd5b5035919050565b60005b83811015614ab6578181015183820152602001614a9e565b8381111561226f5750506000910152565b60008151808452614adf816020860160208601614a9b565b601f01601f19169290920160200192915050565b602081526000612bb56020830184614ac7565b6001600160a01b0381168114611d5757600080fd5b803561181781614b06565b60008060408385031215614b3957600080fd5b8235614b4481614b06565b946020939093013593505050565b60008060408385031215614b6557600080fd5b823591506020830135614b7781614b06565b809150509250929050565b600080828403610120811215614b9757600080fd5b83359250610100601f1982011215614bae57600080fd5b506020830190509250929050565b600080600060608486031215614bd157600080fd5b8335614bdc81614b06565b92506020840135614bec81614b06565b929592945050506040919091013590565b60008060408385031215614c1057600080fd5b50508035926020909101359150565b6001600160a01b03929092168252602082015260400190565b60008083601f840112614c4a57600080fd5b5081356001600160401b03811115614c6157600080fd5b6020830191508360208260051b850101111561151b57600080fd5b60008060208385031215614c8f57600080fd5b82356001600160401b03811115614ca557600080fd5b614cb185828601614c38565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b81811015614cf557835183529284019291840191600101614cd9565b50909695505050505050565b600060208284031215614d1357600080fd5b813560048110612bb557600080fd5b634e487b7160e01b600052602160045260246000fd5b6020810160048310614d4c57614d4c614d22565b91905290565b634e487b7160e01b600052604160045260246000fd5b60405161010081016001600160401b0381118282101715614d8b57614d8b614d52565b60405290565b60405161018081016001600160401b0381118282101715614d8b57614d8b614d52565b604051601f8201601f191681016001600160401b0381118282101715614ddc57614ddc614d52565b604052919050565b60006001600160401b03831115614dfd57614dfd614d52565b614e10601f8401601f1916602001614db4565b9050828152838383011115614e2457600080fd5b828260208301376000602084830101529392505050565b600082601f830112614e4c57600080fd5b612bb583833560208501614de4565b600060208284031215614e6d57600080fd5b81356001600160401b03811115614e8357600080fd5b612db784828501614e3b565b6020810160068310614d4c57614d4c614d22565b60008060208385031215614eb657600080fd5b82356001600160401b0380821115614ecd57600080fd5b818501915085601f830112614ee157600080fd5b813581811115614ef057600080fd5b866020606083028501011115614f0557600080fd5b60209290920196919550909350505050565b600060208284031215614f2957600080fd5b8135612bb581614b06565b600080600080600060808688031215614f4c57600080fd5b85359450602086013593506040860135925060608601356001600160401b03811115614f7757600080fd5b614f8388828901614c38565b969995985093965092949392505050565b80356006811061181757600080fd5b600060208284031215614fb557600080fd5b612bb582614f94565b600080600080600060808688031215614fd657600080fd5b853594506020860135614fe881614b06565b93506040860135925060608601356001600160401b03811115614f7757600080fd5b6001600160a01b0392909216825261ffff16602082015260400190565b8015158114611d5757600080fd5b6000806040838503121561504857600080fd5b823561505381614b06565b91506020830135614b7781615027565b600082601f83011261507457600080fd5b813560206001600160401b0382111561508f5761508f614d52565b61509d818360051b01614db4565b82815260089290921b840181019181810190868411156150bc57600080fd5b8286015b848110156151425761010081890312156150da5760008081fd5b6150e2614d68565b8135815284820135858201526040808301356150fd81614b06565b90820152606082810135908201526080808301359082015260a0808301359082015260c0808301359082015260e08083013590820152835291830191610100016150c0565b509695505050505050565b803561ffff8116811461181757600080fd5b6000806040838503121561517257600080fd5b82356001600160401b038082111561518957600080fd5b90840190610180828703121561519e57600080fd5b6151a6614d91565b8235828111156151b557600080fd5b6151c188828601614e3b565b8252506020830135828111156151d657600080fd5b6151e288828601614e3b565b6020830152506040830135828111156151fa57600080fd5b61520688828601614e3b565b60408301525060608301358281111561521e57600080fd5b61522a88828601614e3b565b60608301525060808301358281111561524257600080fd5b61524e88828601614e3b565b60808301525060a083013560a082015260c08301358281111561527057600080fd5b61527c88828601615063565b60c08301525061528e60e08401614b1b565b60e082015261010091506152a382840161514d565b8282015261012091506152b7828401614b1b565b8282015261014091506152cb828401614b1b565b8282015261016091506152df828401614f94565b828201528094505050506152f560208401614b1b565b90509250929050565b6000806000806080858703121561531457600080fd5b843561531f81614b06565b9350602085013561532f81614b06565b92506040850135915060608501356001600160401b0381111561535157600080fd5b8501601f8101871361536257600080fd5b61537187823560208401614de4565b91505092959194509250565b602080825282518282018190526000919060409081850190868401855b828110156153d157815180516001600160a01b031685528601516001600160601b031686850152928401929085019060010161539a565b5091979650505050505050565b600080600080604085870312156153f457600080fd5b84356001600160401b038082111561540b57600080fd5b61541788838901614c38565b9096509450602087013591508082111561543057600080fd5b818701915087601f83011261544457600080fd5b81358181111561545357600080fd5b8860208260081b850101111561546857600080fd5b95989497505060200194505050565b6000806000806040858703121561548d57600080fd5b84356001600160401b03808211156154a457600080fd5b6154b088838901614c38565b909650945060208701359150808211156154c957600080fd5b506154d687828801614c38565b95989497509550505050565b600080604083850312156154f557600080fd5b823561550081614b06565b91506020830135614b7781614b06565b60006040828403121561552257600080fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008282101561555057615550615528565b500390565b813581556020820135600182015560028101604083013561557581614b06565b81546001600160a01b0319166001600160a01b0391909116179055606082013560038201556080820135600482015560a0820135600582015560c0820135600682015560e090910135600790910155565b600082198211156155d9576155d9615528565b500190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b600081600019048311821515161561564657615646615528565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826156705761567061564b565b500490565b634e487b7160e01b600052603260045260246000fd5b60006001820161569d5761569d615528565b5060010190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b600181811c908216806156d857607f821691505b60208210810361552257634e487b7160e01b600052602260045260246000fd5b601f8211156111a857600081815260208120601f850160051c8101602086101561571f5750805b601f850160051c820191505b8181101561573e5782815560010161572b565b505050505050565b81516001600160401b0381111561575f5761575f614d52565b6157738161576d84546156c4565b846156f8565b602080601f8311600181146157a857600084156157905750858301515b600019600386901b1c1916600185901b17855561573e565b600085815260208120601f198616915b828110156157d7578886015182559484019460019091019084016157b8565b50858210156157f55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060828403121561581757600080fd5b604051606081018181106001600160401b038211171561583957615839614d52565b60405282358152602083013561584e81614b06565b602082015261585f6040840161514d565b60408201529392505050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252600f908201526e4e4f545f4c4f434b45525f524f4c4560881b604082015260600190565b60208082526012908201527122ac21a2a2a229afa0a62627a1a0aa24a7a760711b604082015260600190565b60006020828403121561590957600080fd5b8151612bb581615027565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b602080825260069082015265232927ad22a760d11b604082015260600190565b60008351615978818460208801614a9b565b83519083019061598c818360208801614a9b565b01949350505050565b6040808252810184905260008560608301825b878110156159d85782356159bb81614b06565b6001600160a01b03168252602092830192909101906001016159a8565b5083810360208501528481526001600160fb1b038511156159f857600080fd5b8460051b915081866020830137600091016020019081529695505050505050565b600060408284031215615a2b57600080fd5b604051604081018181106001600160401b0382111715615a4d57615a4d614d52565b6040528235615a5b81614b06565b8152615a696020840161514d565b60208201529392505050565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600082615b4657615b4661564b565b500690565b60008154615b58816156c4565b60018281168015615b705760018114615b8557615bb4565b60ff1984168752821515830287019450615bb4565b8560005260208060002060005b85811015615bab5781548a820152908401908201615b92565b50505082870194505b5050505092915050565b6000615bca8286615b4b565b8451615bda818360208901614a9b565b615be681830186615b4b565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351615c23816017850160208801614a9b565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615c54816028840160208801614a9b565b01602801949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611d3a90830184614ac7565b600060208284031215615ca557600080fd5b8151612bb581614a4f565b600081615cbf57615cbf615528565b506000190190565b634e487b7160e01b600052603160045260246000fdfe61723a2f2f5f44396b4e3157724e576243713535425341475262544234625333763851415054596d42546853625833412f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6af9a8bb3cbd6b84fbccefa71ff73e26e798553c6914585a84886212a46a90279a2646970667358221220dcf6d9cdac278714df8259707064a39921911e895c4b948a1bb81be811e1db1364736f6c634300080f0033","deployedBytecode":"0x60806040526004361061040b5760003560e01c8063837fe14011610216578063c71b0e1c1161011f578063c71b0e1c14610d40578063c723955a14610d56578063c7db289314610d6b578063c87b56dd14610d80578063cad96cca14610da0578063d539139314610dcd578063d547741f14610def578063d5abeb0114610e0f578063d8b436fd14610e25578063da74222814610e45578063da82b22714610e65578063dbbc853b14610e7a578063dcbe353f14610e8f578063dd46706414610eaf578063dd89c6fa14610ecf578063de6d6d9614610ee4578063e8a3d48514610f04578063e985e9c514610f19578063ef60ceaf14610f39578063f2fde38b14610f59578063f362136714610f79578063f384702f14610f9b57600080fd5b8063837fe14014610ab9578063859610c614610ace5780638da5cb5b14610aee57806391d1485414610b03578063938e3d7b14610b235780639598144a14610b4357806395d89b4114610b7b57806399e0dd7c14610b90578063a217fddf14610bb0578063a22cb46514610bc5578063a341793b14610be5578063a65dbda414610bfa578063a9852bfb14610c1a578063af121f5414610c3a578063b45a3c0e14610c5b578063b88d4fde14610c7b578063ba4695fd14610c9b578063bd2c18f714610cb0578063bf9b7a5714610cd0578063c0ac998314610cf1578063c0bb38ff14610d06578063c29de63014610d2657600080fd5b806342842e0e1161031857806342842e0e146107fb57806349561cb91461081b57806350a5292f1461083c5780635136dcc71461086a57806353367f081461088a57806356c022bb146108b7578063572b6c05146108d75780635897f878146108f75780635d36598f146109175780635ea2c91b146109375780636057e0ec1461094a5780636198e3391461096b5780636352211e1461098b57806364ed2913146109ab57806368c7d37c146109cb5780636f8b44b0146109eb57806370a0823114610a0b578063714ad8e714610a2b578063715018a614610a3f5780637313cba914610a545780637885fdc714610a695780637e98034214610aa457600080fd5b806301ffc9a714610410578063039af9eb146104455780630653aca5146104f657806306fdde0314610545578063081812fc14610567578063095ea7b31461059f5780631123f2ef146105c1578063167446071461061257806318160ddd146106275780631a056e711461063c57806320f1bb301461065c57806323b872dd1461067c578063248a9ca31461069c5780632a55205a146106bc5780632bb684ad146106ea5780632c233067146107175780632cb9b2ac146107375780632d00b5871461074d5780632f2ff15d1461077b5780633542aee21461079b5780633574a2dd146107bb57806336568abe146107db575b600080fd5b34801561041c57600080fd5b5061043061042b366004614a65565b610fb5565b60405190151581526020015b60405180910390f35b34801561045157600080fd5b506104ad610460366004614a82565b60146020526000908152604090208054600182015460028301546003840154600485015460058601546006870154600790970154959694956001600160a01b039094169492939192909188565b6040805198895260208901979097526001600160a01b03909516958701959095526060860192909252608085015260a084015260c083019190915260e08201526101000161043c565b34801561050257600080fd5b50610516610511366004614a82565b610fc6565b60408051825181526020808401516001600160a01b0316908201529181015161ffff169082015260600161043c565b34801561055157600080fd5b5061055a61104b565b60405161043c9190614af3565b34801561057357600080fd5b50610587610582366004614a82565b61105a565b6040516001600160a01b03909116815260200161043c565b3480156105ab57600080fd5b506105bf6105ba366004614b26565b611081565b005b3480156105cd57600080fd5b506106046105dc366004614b52565b60009182526017602090815260408084206001600160a01b0393909316845291905290205490565b60405190815260200161043c565b34801561061e57600080fd5b506105bf6111ad565b34801561063357600080fd5b50601254610604565b34801561064857600080fd5b506105bf610657366004614b26565b6111c4565b34801561066857600080fd5b506105bf610677366004614b82565b61122a565b34801561068857600080fd5b506105bf610697366004614bbc565b611410565b3480156106a857600080fd5b506106046106b7366004614a82565b611448565b3480156106c857600080fd5b506106dc6106d7366004614bfd565b61145d565b60405161043c929190614c1f565b3480156106f657600080fd5b5061070a610705366004614c7c565b611522565b60405161043c9190614cbd565b34801561072357600080fd5b506105bf610732366004614d01565b6115ec565b34801561074357600080fd5b5061060460185481565b34801561075957600080fd5b5060025461076e90600160b01b900460ff1681565b60405161043c9190614d38565b34801561078757600080fd5b506105bf610796366004614b52565b61164b565b3480156107a757600080fd5b506105bf6107b6366004614b26565b611667565b3480156107c757600080fd5b506105bf6107d6366004614e5b565b61166f565b3480156107e757600080fd5b506105bf6107f6366004614b52565b611683565b34801561080757600080fd5b506105bf610816366004614bbc565b61170d565b34801561082757600080fd5b5060025461043090600160b81b900460ff1681565b34801561084857600080fd5b5060025461085d90600160c01b900460ff1681565b60405161043c9190614e8f565b34801561087657600080fd5b506105bf610885366004614ea3565b611728565b34801561089657600080fd5b506106046108a5366004614a82565b60166020526000908152604090205481565b3480156108c357600080fd5b50601f54610587906001600160a01b031681565b3480156108e357600080fd5b506104306108f2366004614f17565b61178b565b34801561090357600080fd5b50610604610912366004614a82565b61179f565b34801561092357600080fd5b506105bf610932366004614c7c565b61181c565b6105bf610945366004614f34565b6118bf565b34801561095657600080fd5b5060025461043090600160a01b900460ff1681565b34801561097757600080fd5b506105bf610986366004614a82565b611b8b565b34801561099757600080fd5b506105876109a6366004614a82565b611bf7565b3480156109b757600080fd5b506105bf6109c6366004614fa3565b611c2c565b3480156109d757600080fd5b506104306109e6366004614fbe565b611ca4565b3480156109f757600080fd5b506105bf610a06366004614a82565b611d46565b348015610a1757600080fd5b50610604610a26366004614f17565b611d5a565b348015610a3757600080fd5b506001610430565b348015610a4b57600080fd5b506105bf611de0565b348015610a6057600080fd5b5061055a611df4565b348015610a7557600080fd5b50601b54610a96906001600160a01b03811690600160a01b900461ffff1682565b60405161043c92919061500a565b348015610ab057600080fd5b50610604611e86565b348015610ac557600080fd5b506105bf611e92565b348015610ada57600080fd5b506105bf610ae9366004614c7c565b611ed9565b348015610afa57600080fd5b50610587611f72565b348015610b0f57600080fd5b50610430610b1e366004614b52565b611f87565b348015610b2f57600080fd5b506105bf610b3e366004614e5b565b611fb2565b348015610b4f57600080fd5b50610604610b5e366004614b52565b601760209081526000928352604080842090915290825290205481565b348015610b8757600080fd5b5061055a611fc6565b348015610b9c57600080fd5b506105bf610bab366004614e5b565b611fd0565b348015610bbc57600080fd5b50610604600081565b348015610bd157600080fd5b506105bf610be0366004615035565b612007565b348015610bf157600080fd5b5061055a612019565b348015610c0657600080fd5b506105bf610c1536600461515f565b612032565b348015610c2657600080fd5b506105bf610c35366004614e5b565b6121f2565b348015610c4657600080fd5b5060025461043090600160a81b900460ff1681565b348015610c6757600080fd5b50610430610c76366004614a82565b612229565b348015610c8757600080fd5b506105bf610c963660046152fe565b612236565b348015610ca757600080fd5b506105bf612275565b348015610cbc57600080fd5b50610604610ccb366004614fbe565b61228c565b348015610cdc57600080fd5b5060025461043090600160c81b900460ff1681565b348015610cfd57600080fd5b5061055a6124bd565b348015610d1257600080fd5b506105bf610d21366004614f17565b6124cc565b348015610d3257600080fd5b50600c546104309060ff1681565b348015610d4c57600080fd5b5061060460155481565b348015610d6257600080fd5b506105bf612520565b348015610d7757600080fd5b5061055a61257f565b348015610d8c57600080fd5b5061055a610d9b366004614a82565b6125e6565b348015610dac57600080fd5b50610dc0610dbb366004614a82565b6125f1565b60405161043c919061537d565b348015610dd957600080fd5b50610604600080516020615d0f83398151915281565b348015610dfb57600080fd5b506105bf610e0a366004614b52565b6126ac565b348015610e1b57600080fd5b5061060460105481565b348015610e3157600080fd5b506105bf610e403660046153de565b6126c8565b348015610e5157600080fd5b506105bf610e60366004614f17565b61272e565b348015610e7157600080fd5b506105bf612758565b348015610e8657600080fd5b5061055a61279e565b348015610e9b57600080fd5b50600254610587906001600160a01b031681565b348015610ebb57600080fd5b506105bf610eca366004614a82565b6127ad565b348015610edb57600080fd5b506105bf612811565b348015610ef057600080fd5b506105bf610eff366004615477565b61282e565b348015610f1057600080fd5b5061055a612a66565b348015610f2557600080fd5b50610430610f343660046154e2565b612a75565b348015610f4557600080fd5b506105bf610f54366004615510565b612aa3565b348015610f6557600080fd5b506105bf610f74366004614f17565b612ac2565b348015610f8557600080fd5b50610604600080516020615d2f83398151915281565b348015610fa757600080fd5b506011546104309060ff1681565b6000610fc082612b6d565b92915050565b6040805160608101825260008082526020820181905291810182905290610fee601d84612ba9565b6000818152601c60209081526040918290208251808401845290546001600160a01b03808216835261ffff600160a01b90920482168385019081528551606081018752968752925116928501929092525116908201529392505050565b6060611055612bbc565b905090565b600061106582612bcb565b506000908152600760205260409020546001600160a01b031690565b600061108c82611bf7565b9050806001600160a01b0316836001600160a01b0316036110fe5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b0316611110612bf0565b6001600160a01b0316148061112c575061112c81610f34612bf0565b61119e5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016110f5565b6111a88383612bfa565b505050565b6111b5612c68565b6011805460ff19166001179055565b6111de600080516020615d0f833981519152610b1e612bf0565b61121c5760405162461bcd60e51b815260206004820152600f60248201526e4e4f545f4d494e5445525f524f4c4560881b60448201526064016110f5565b6112268282612cd7565b5050565b611232612c68565b60008281526016602052604090205460e082013510156112885760405162461bcd60e51b81526020600482015260116024820152701313d5d15497d512105397d35253951151607a1b60448201526064016110f5565b600082815260146020526040902060060154156112f65760008281526016602052604090205460c082013510156112f65760405162461bcd60e51b81526020600482015260126024820152711313d5d7d49154d154959157d05353d5539560721b60448201526064016110f5565b6000828152601660205260409020541561136457600082815260146020526040902060040154608082013510156113645760405162461bcd60e51b81526020600482015260126024820152711313d5d7d3505617d4115497d5d05313115560721b60448201526064016110f5565b600082815260146020526040812060060154601580549192909161138990849061553e565b9091555050600082815260146020526040902081906113a88282615555565b9050508060c00135601560008282546113c191906155c6565b909155505060105460155411156112265760405162461bcd60e51b815260206004820152601360248201527213505617d4d55414131657d15610d151511151606a1b60448201526064016110f5565b61142161141b612bf0565b82612d60565b61143d5760405162461bcd60e51b81526004016110f5906155de565b6111a8838383612dbf565b6000908152601a602052604090206001015490565b6000828152601c602052604081205481906001600160a01b0316156114c2576000848152601c60205260409020546001600160a01b03811690612710906114af90600160a01b900461ffff168661562c565b6114b99190615661565b9150915061151b565b601b546001600160a01b0316158015906114e85750601b54600160a01b900461ffff1615155b1561151457601b546001600160a01b03811690612710906114af90600160a01b900461ffff168661562c565b5060009050805b9250929050565b60606000826001600160401b0381111561153e5761153e614d52565b604051908082528060200260200182016040528015611567578160200160208202803683370190505b50905060005b838110156115e45761159685858381811061158a5761158a615675565b90506020020135612229565b6115d2578484828181106115ac576115ac615675565b905060200201358282815181106115c5576115c5615675565b6020026020010181815250505b806115dc8161568b565b91505061156d565b509392505050565b6115f4612c68565b600254600160b81b900460ff161561161e5760405162461bcd60e51b81526004016110f5906156a4565b6002805482919060ff60b01b1916600160b01b83600381111561164357611643614d22565b021790555050565b61165482611448565b61165d81612f66565b6111a88383612f77565b61121c612c68565b611677612c68565b60096112268282615746565b61168b612bf0565b6001600160a01b0316816001600160a01b0316146117035760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016110f5565b6112268282612ffe565b6111a883838360405180602001604052806000815250612236565b611730612c68565b6112268282808060200260200160405190810160405280939291908181526020016000905b828210156117815761177260608302860136819003810190615805565b81526020019060010190611755565b5050505050613083565b601f546001600160a01b0391821691161490565b60006018546015546117b1919061553e565b6012546010546117c1919061553e565b6117cb919061553e565b600083815260146020526040902060060154909150156118175760008281526016602090815260408083205460149092529091206006015461180d919061553e565b610fc090826155c6565b919050565b60026013540361183e5760405162461bcd60e51b81526004016110f59061586b565b600260135561185b600080516020615d2f83398151915233611f87565b6118775760405162461bcd60e51b81526004016110f5906158a2565b60005b818110156118b5576118a383838381811061189757611897615675565b9050602002013561322a565b806118ad8161568b565b91505061187a565b5050600160135550565b6002601354036118e15760405162461bcd60e51b81526004016110f59061586b565b600260135560006118f0612bf0565b90506000611901878387878761228c565b9050808611156119415760405162461bcd60e51b815260206004820152600b60248201526a08ab0868a8a88a6be9a82b60ab1b60448201526064016110f5565b61194a8761179f565b8611156119695760405162461bcd60e51b81526004016110f5906158cb565b60008781526014602090815260408083206007015460169092529091205461199190886155c6565b11156119af5760405162461bcd60e51b81526004016110f5906158cb565b6000878152601460205260409020600201546001600160a01b0316611a365760008781526014602052604090206003015434906119ed90889061562c565b1115611a315760405162461bcd60e51b8152602060048201526013602482015272125394d551919250d251539517d05353d55395606a1b60448201526064016110f5565b611aea565b600087815260146020526040902060028101546003909101546001600160a01b03909116906323b872dd9084903090611a70908b9061562c565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015611ac4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae891906158f7565b505b60008781526017602090815260408083206001600160a01b038616845290915281208054889290611b1c9084906155c6565b909155505060008781526016602052604081208054889290611b3f9084906155c6565b909155505060008781526014602052604090206006015415611b73578560186000828254611b6d91906155c6565b90915550505b611b7d8287612cd7565b505060016013555050505050565b600260135403611bad5760405162461bcd60e51b81526004016110f59061586b565b6002601355611bca600080516020615d2f83398151915233611f87565b611be65760405162461bcd60e51b81526004016110f5906158a2565b611bef8161322a565b506001601355565b6000818152600560205260408120546001600160a01b031680610fc05760405162461bcd60e51b81526004016110f590615914565b611c34612c68565b600254600160c81b900460ff1615611c7f5760405162461bcd60e51b815260206004820152600e60248201526d131250d15394d157d313d0d2d15160921b60448201526064016110f5565b6002805482919060ff60c01b1916600160c01b83600581111561164357611643614d22565b6000611d3a83838080602002602001604051908101604052809392919081815260200183836020028082843760009201829052508b8152601460205260409020600501549250611d359150899050886040516001600160601b0319606084901b1660208201526034810182905260009060540160405160208183030381529060405280519060200120905092915050565b613291565b90505b95945050505050565b611d4e612c68565b611d57816132a7565b50565b60006001600160a01b038216611dc45760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016110f5565b506001600160a01b031660009081526006602052604090205490565b611de8612c68565b611df26000613319565b565b606060098054611e03906156c4565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2f906156c4565b8015611e7c5780601f10611e5157610100808354040283529160200191611e7c565b820191906000526020600020905b815481529060010190602001808311611e5f57829003601f168201915b5050505050905090565b6000611055601d613374565b611e9a612c68565b600254600160a01b900460ff1615611ec45760405162461bcd60e51b81526004016110f5906156a4565b6002805460ff60a01b1916600160a01b179055565b600260135403611efb5760405162461bcd60e51b81526004016110f59061586b565b6002601355611f18600080516020615d2f83398151915233611f87565b611f345760405162461bcd60e51b81526004016110f5906158a2565b60005b818110156118b557611f60838383818110611f5457611f54615675565b9050602002013561337e565b80611f6a8161568b565b915050611f37565b6000546201000090046001600160a01b031690565b6000918252601a602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611fba612c68565b600f6112268282615746565b60606110556133c8565b611fd8612c68565b600c5460ff1615611ffb5760405162461bcd60e51b81526004016110f590615946565b600a6112268282615746565b611226612012612bf0565b83836133d7565b60025460609061105590600160c01b900460ff166134a1565b600054610100900460ff16158080156120525750600054600160ff909116105b80612073575061206130612b5a565b158015612073575060005460ff166001145b6120d65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016110f5565b6000805460ff1916600117905580156120f9576000805461ff0019166101001790555b61210460008361361a565b61210d82613319565b61211d8361012001516002613624565b61212b836101600151613655565b612142836000015184602001518560400151613685565b612154836060015184608001516136b7565b6121618360a001516136e8565b612169613718565b61217282613747565b61217a613777565b6121878360c001516137a6565b61219a8360e001518461010001516137d6565b6121a8836101400151613807565b80156111a8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6121fa612c68565b600c5460ff161561221d5760405162461bcd60e51b81526004016110f590615946565b600b6112268282615746565b6000610fc0601983613837565b612247612241612bf0565b83612d60565b6122635760405162461bcd60e51b81526004016110f5906155de565b61226f8484848461385b565b50505050565b61227d612c68565b600c805460ff19166001179055565b6000858152601460205260408120600401546122d75760405162461bcd60e51b815260206004820152600a6024820152694e4f545f45584953545360b01b60448201526064016110f5565b6000868152601460205260409020544210156123235760405162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b60448201526064016110f5565b6000868152601460205260409020600101544211156123745760405162461bcd60e51b815260206004820152600d60248201526c1053149150511657d153911151609a1b60448201526064016110f5565b60008681526017602090815260408083206001600160a01b03891684528252808320548984526014909252909120600401546123b0919061553e565b60008781526014602052604090206005015490915015611d3d5760008681526017602090815260408083206001600160a01b0389168452909152902054841161242d5760405162461bcd60e51b815260206004820152600f60248201526e4d415845445f414c4c4f57414e434560881b60448201526064016110f5565b61243a8686868686611ca4565b6124785760405162461bcd60e51b815260206004820152600f60248201526e1393d517d0531313d5d31254d51151608a1b60448201526064016110f5565b60008681526017602090815260408083206001600160a01b03891684529091528120546124a5908661553e565b9050808211156124b3578091505b5095945050505050565b6060600a8054611e03906156c4565b6124d4612c68565b600254600160a01b900460ff16156124fe5760405162461bcd60e51b81526004016110f5906156a4565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b612528612c68565b600254600160b81b900460ff161561256a5760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b60448201526064016110f5565b6002805460ff60b81b1916600160b81b179055565b6060604051806060016040528060318152602001615cde603191396002546125c190600160c01b900460ff1660058111156125bc576125bc614d22565b61388e565b6040516020016125d2929190615966565b604051602081830303815290604052905090565b6060610fc08261398e565b604080516001808252818301909252606091816020015b6040805180820190915260008082526020820152815260200190600190039081612608575050601b5481519192506001600160a01b031690829060009061265157612651615675565b60209081029190910101516001600160a01b03919091169052601b548151600160a01b90910461ffff1690829060009061268d5761268d615675565b6020908102919091018101516001600160601b03909216910152919050565b6126b582611448565b6126be81612f66565b6111a88383612ffe565b6126d0612c68565b60005b83811015612727576127158585838181106126f0576126f0615675565b9050602002013584848481811061270957612709615675565b9050610100020161122a565b8061271f8161568b565b9150506126d3565b5050505050565b612736612c68565b601f80546001600160a01b0319166001600160a01b0392909216919091179055565b612760612c68565b6002805460ff60a81b1916600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b6060600b8054611e03906156c4565b6002601354036127cf5760405162461bcd60e51b81526004016110f59061586b565b60026013556127ec600080516020615d2f83398151915233611f87565b6128085760405162461bcd60e51b81526004016110f5906158a2565b611bef8161337e565b612819612c68565b6002805460ff60c81b1916600160c81b179055565b61283733613a6a565b6002546001600160a01b03166128875760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b60448201526064016110f5565b600254600160a81b900460ff16156128e15760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b454460448201526064016110f5565b60005b83811015612a2257600085858381811061290057612900615675565b90506020020160208101906129159190614f17565b6001600160a01b0316036129585761295383838381811061293857612938615675565b6002546001600160a01b031692602090910201359050613bef565b612a10565b84848281811061296a5761296a615675565b905060200201602081019061297f9190614f17565b6002546001600160a01b039182169163a9059cbb91168585858181106129a7576129a7615675565b905060200201356040518363ffffffff1660e01b81526004016129cb929190614c1f565b6020604051808303816000875af11580156129ea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0e91906158f7565b505b80612a1a8161568b565b9150506128e4565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a584848484604051612a589493929190615995565b60405180910390a150505050565b6060600f8054611e03906156c4565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205460ff1690565b612aab612c68565b611d57612abd36839003830183615a19565b613d05565b612aca612c68565b6001600160a01b038116612b2f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016110f5565b611d5781613319565b6000612b433361178b565b15612b55575060131936013560601c90565b503390565b6001600160a01b03163b151590565b3390565b60006301ffc9a760e01b6001600160e01b031983161480610fc05750506001600160e01b03191660009081526001602052604090205460ff1690565b6000612bb58383613db0565b9392505050565b6060600d8054611e03906156c4565b612bd481613dda565b611d575760405162461bcd60e51b81526004016110f590615914565b6000611055612b38565b600081815260076020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612c2f82611bf7565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b612c70612bf0565b6001600160a01b0316612c81611f72565b6001600160a01b031614611df25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016110f5565b60105481612ce460125490565b612cee91906155c6565b1115612d2d5760405162461bcd60e51b815260206004820152600e60248201526d455843454544535f535550504c5960901b60448201526064016110f5565b60005b818110156111a857601254612d458482613df7565b612d4d613e11565b5080612d588161568b565b915050612d30565b600080612d6c83611bf7565b9050806001600160a01b0316846001600160a01b03161480612d935750612d938185612a75565b80612db75750836001600160a01b0316612dac8461105a565b6001600160a01b0316145b949350505050565b826001600160a01b0316612dd282611bf7565b6001600160a01b031614612e365760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016110f5565b6001600160a01b038216612e985760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016110f5565b612ea3838383613e28565b612eae600082612bfa565b6001600160a01b0383166000908152600660205260408120805460019290612ed790849061553e565b90915550506001600160a01b0382166000908152600660205260408120805460019290612f059084906155c6565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b611d5781612f72612bf0565b613e33565b612f818282611f87565b611226576000828152601a602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612fba612bf0565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6130088282611f87565b15611226576000828152601a602090815260408083206001600160a01b03851684529091529020805460ff1916905561303f612bf0565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b60005b81518110156112265760008282815181106130a3576130a3615675565b60200260200101519050612710816040015161ffff16106130d65760405162461bcd60e51b81526004016110f590615a75565b60208101516001600160a01b031661314f5780516000908152601c6020526040902080546001600160b01b0319169055805161311490601d90613e97565b5080516040519081527fa2870857763bd9ae76c957f869f16b31c18dd3bb4c7b4d3a4496dc5c57c657f99060200160405180910390a1613217565b6040805180820182526020808401516001600160a01b0390811683528484015161ffff90811683850190815286516000908152601c90945294909220925183549451909216600160a01b026001600160b01b031990941691161791909117905580516131bd90601d90613ea3565b50805160208083015160408085015181519485526001600160a01b039092169284019290925261ffff1682820152517f389b70fb0887f01e83784eb1c4c589f740eca53b00ed0f45e41db5d079719abb9181900360600190a15b50806132228161568b565b915050613086565b613235601982613837565b61326e5760405162461bcd60e51b815260206004820152600a6024820152691393d517d313d0d2d15160b21b60448201526064016110f5565b600881901c60009081526019602052604090208054600160ff84161b1916905550565b60008261329e8584613eaf565b14949350505050565b6132af612c68565b6132b881613ef4565b6018546015546132c8919061553e565b6012546132d5908361553e565b1015611d575760405162461bcd60e51b81526020600482015260136024820152721313d5d15497d512105397d49154d154959151606a1b60448201526064016110f5565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6000610fc0825490565b613389601982613837565b156133a65760405162461bcd60e51b81526004016110f5906156a4565b600881901c60009081526019602052604090208054600160ff84161b17905550565b6060600e8054611e03906156c4565b816001600160a01b0316836001600160a01b0316036134345760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b60448201526064016110f5565b6001600160a01b03838116600081815260086020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b606060068260058111156134b7576134b7614d22565b60ff1611156134c557600080fd5b8160058111156134d7576134d7614d22565b60000361350157505060408051808201909152600781526604342455f4343360cc1b602082015290565b81600581111561351357613513614d22565b60010361353d57505060408051808201909152600781526621a122afa2a1a960c91b602082015290565b81600581111561354f5761354f614d22565b60020361357a57505060408051808201909152600881526721a122afa722a1a960c11b602082015290565b81600581111561358c5761358c614d22565b6003036135ba57505060408051808201909152600b81526a4342455f4e4543525f485360a81b602082015290565b8160058111156135cc576135cc614d22565b6004036135f557505060408051808201909152600681526521a122afa82960d11b602082015290565b50506040805180820190915260098152684342455f50525f485360b81b602082015290565b6112268282612f77565b600054610100900460ff1661364b5760405162461bcd60e51b81526004016110f590615a9a565b6112268282613f6a565b600054610100900460ff1661367c5760405162461bcd60e51b81526004016110f590615a9a565b611d5781613fee565b600054610100900460ff166136ac5760405162461bcd60e51b81526004016110f590615a9a565b6111a8838383614035565b600054610100900460ff166136de5760405162461bcd60e51b81526004016110f590615a9a565b61122682826140b3565b600054610100900460ff1661370f5760405162461bcd60e51b81526004016110f590615a9a565b611d578161413e565b600054610100900460ff1661373f5760405162461bcd60e51b81526004016110f590615a9a565b611df261418a565b600054610100900460ff1661376e5760405162461bcd60e51b81526004016110f590615a9a565b611d57816141c1565b600054610100900460ff1661379e5760405162461bcd60e51b81526004016110f590615a9a565b611df2614210565b600054610100900460ff166137cd5760405162461bcd60e51b81526004016110f590615a9a565b611d5781614247565b600054610100900460ff166137fd5760405162461bcd60e51b81526004016110f590615a9a565b6112268282614363565b600054610100900460ff1661382e5760405162461bcd60e51b81526004016110f590615a9a565b611d57816143f3565b600881901c600090815260208390526040902054600160ff83161b16151592915050565b613866848484612dbf565b6138728484848461441a565b61226f5760405162461bcd60e51b81526004016110f590615ae5565b6060816000036138b55750506040805180820190915260018152600360fc1b602082015290565b8160005b81156138df57806138c98161568b565b91506138d89050600a83615661565b91506138b9565b6000816001600160401b038111156138f9576138f9614d52565b6040519080825280601f01601f191660200182016040528015613923576020820181803683370190505b5090505b8415612db75761393860018361553e565b9150613945600a86615b37565b6139509060306155c6565b60f81b81838151811061396557613965615675565b60200101906001600160f81b031916908160001a905350613987600a86615661565b9450613927565b60606000600a805461399f906156c4565b905011613a3657600980546139b3906156c4565b80601f01602080910402602001604051908101604052809291908181526020018280546139df906156c4565b8015613a2c5780601f10613a0157610100808354040283529160200191613a2c565b820191906000526020600020905b815481529060010190602001808311613a0f57829003601f168201915b5050505050610fc0565b600a613a418361388e565b600b604051602001613a5593929190615bbe565b60405160208183030381529060405292915050565b6003600254600160b01b900460ff166003811115613a8a57613a8a614d22565b03613ac95760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b60448201526064016110f5565b60028054600160b01b900460ff166003811115613ae857613ae8614d22565b03613af05750565b6001600254600160b01b900460ff166003811115613b1057613b10614d22565b03613b6c576002546001600160a01b03828116911614611d575760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b60448201526064016110f5565b6000600254600160b01b900460ff166003811115613b8c57613b8c614d22565b03611d5757806001600160a01b0316613ba3611f72565b6001600160a01b031614611d575760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b60448201526064016110f5565b80471015613c3f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016110f5565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613c8c576040519150601f19603f3d011682016040523d82523d6000602084013e613c91565b606091505b50509050806111a85760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b60648201526084016110f5565b612710816020015161ffff1610613d2e5760405162461bcd60e51b81526004016110f590615a75565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601b80546001600160b01b031916909217600160a01b9091021790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe4192613da5929161500a565b60405180910390a150565b6000826000018281548110613dc757613dc7615675565b9060005260206000200154905092915050565b6000908152600560205260409020546001600160a01b0316151590565b611226828260405180602001604052806000815250614529565b60128054906000613e218361568b565b9190505550565b6111a883838361455c565b613e3d8282611f87565b61122657613e55816001600160a01b03166014614584565b613e60836020614584565b604051602001613e71929190615bf1565b60408051601f198184030181529082905262461bcd60e51b82526110f591600401614af3565b6000612bb5838361471f565b6000612bb58383614812565b600081815b84518110156115e457613ee082868381518110613ed357613ed3615675565b6020026020010151614861565b915080613eec8161568b565b915050613eb4565b613efc612c68565b60115460ff1615613f1f5760405162461bcd60e51b81526004016110f590615946565b601254811015613f655760405162461bcd60e51b81526020600482015260116024820152704c4f5745525f5448414e5f535550504c5960781b60448201526064016110f5565b601055565b600054610100900460ff16613f915760405162461bcd60e51b81526004016110f590615a9a565b613fa163ac2ba33360e01b614890565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b836003811115613fe557613fe5614d22565b02179055505050565b600054610100900460ff166140155760405162461bcd60e51b81526004016110f590615a9a565b61402563b964efe960e01b614890565b611c7f630c934a3560e31b614890565b600054610100900460ff1661405c5760405162461bcd60e51b81526004016110f590615a9a565b600d6140688482615746565b50600e6140758382615746565b50600f6140828282615746565b50614093633d96f4ff60e11b614890565b6140a36380ac58cd60e01b614890565b6111a8635b5e139f60e01b614890565b600054610100900460ff166140da5760405162461bcd60e51b81526004016110f590615a9a565b60096140e68382615746565b50600a6140f38282615746565b50604080518082019091526005815264173539b7b760d91b6020820152600b9061411d9082615746565b5061412e631f2f406b60e01b614890565b611226635b5e139f60e01b614890565b600054610100900460ff166141655760405162461bcd60e51b81526004016110f590615a9a565b601081905561417a6330f487b560e11b614890565b611d576380ac58cd60e01b614890565b600054610100900460ff166141b15760405162461bcd60e51b81526004016110f590615a9a565b611df2631aa1577160e11b614890565b600054610100900460ff166141e85760405162461bcd60e51b81526004016110f590615a9a565b6141f8631a056e7160e01b614890565b611d57600080516020615d0f8339815191528261361a565b600054610100900460ff166142375760405162461bcd60e51b81526004016110f590615a9a565b611df263714ad8e760e01b614890565b600054610100900460ff1661426e5760405162461bcd60e51b81526004016110f590615a9a565b61427e6308b4902960e41b614890565b60005b81518110156112265781818151811061429c5761429c615675565b602090810291909101810151600083815260148352604090819020825181559282015160018401558101516002830180546001600160a01b0319166001600160a01b03909216919091179055606081015160038301556080810151600483015560a0810151600583015560c0810151600683015560e00151600790910155815182908290811061432e5761432e615675565b602002602001015160c001516015600082825461434b91906155c6565b9091555081905061435b8161568b565b915050614281565b600054610100900460ff1661438a5760405162461bcd60e51b81526004016110f590615a9a565b61439a633a47bf5160e11b614890565b6143aa63152a902d60e11b614890565b6143ba63c69dbd8f60e01b614890565b6143ca63656cb66560e11b614890565b604080518082019091526001600160a01b038316815261ffff821660208201526111a881613d05565b600054610100900460ff166127365760405162461bcd60e51b81526004016110f590615a9a565b600061442e846001600160a01b0316612b5a565b1561451e57836001600160a01b031663150b7a0261444a612bf0565b8786866040518563ffffffff1660e01b815260040161446c9493929190615c60565b6020604051808303816000875af19250505080156144a7575060408051601f3d908101601f191682019092526144a491810190615c93565b60015b614504573d8080156144d5576040519150601f19603f3d011682016040523d82523d6000602084013e6144da565b606091505b5080516000036144fc5760405162461bcd60e51b81526004016110f590615ae5565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612db7565b506001949350505050565b6145338383614911565b614540600084848461441a565b6111a85760405162461bcd60e51b81526004016110f590615ae5565b614567601982613837565b156111a85760405162461bcd60e51b81526004016110f5906156a4565b6060600061459383600261562c565b61459e9060026155c6565b6001600160401b038111156145b5576145b5614d52565b6040519080825280601f01601f1916602001820160405280156145df576020820181803683370190505b509050600360fc1b816000815181106145fa576145fa615675565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061462957614629615675565b60200101906001600160f81b031916908160001a905350600061464d84600261562c565b6146589060016155c6565b90505b60018111156146d0576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061468c5761468c615675565b1a60f81b8282815181106146a2576146a2615675565b60200101906001600160f81b031916908160001a90535060049490941c936146c981615cb0565b905061465b565b508315612bb55760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016110f5565b6000818152600183016020526040812054801561480857600061474360018361553e565b85549091506000906147579060019061553e565b90508181146147bc57600086600001828154811061477757614777615675565b906000526020600020015490508087600001848154811061479a5761479a615675565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806147cd576147cd615cc7565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610fc0565b6000915050610fc0565b600081815260018301602052604081205461485957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610fc0565b506000610fc0565b600081831061487d576000828152602084905260409020612bb5565b6000838152602083905260409020612bb5565b6001600160e01b031980821690036148e95760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b60448201526064016110f5565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b6001600160a01b0382166149675760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016110f5565b61497081613dda565b156149bc5760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b60448201526064016110f5565b6149c860008383613e28565b6001600160a01b03821660009081526006602052604081208054600192906149f19084906155c6565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b031981168114611d5757600080fd5b600060208284031215614a7757600080fd5b8135612bb581614a4f565b600060208284031215614a9457600080fd5b5035919050565b60005b83811015614ab6578181015183820152602001614a9e565b8381111561226f5750506000910152565b60008151808452614adf816020860160208601614a9b565b601f01601f19169290920160200192915050565b602081526000612bb56020830184614ac7565b6001600160a01b0381168114611d5757600080fd5b803561181781614b06565b60008060408385031215614b3957600080fd5b8235614b4481614b06565b946020939093013593505050565b60008060408385031215614b6557600080fd5b823591506020830135614b7781614b06565b809150509250929050565b600080828403610120811215614b9757600080fd5b83359250610100601f1982011215614bae57600080fd5b506020830190509250929050565b600080600060608486031215614bd157600080fd5b8335614bdc81614b06565b92506020840135614bec81614b06565b929592945050506040919091013590565b60008060408385031215614c1057600080fd5b50508035926020909101359150565b6001600160a01b03929092168252602082015260400190565b60008083601f840112614c4a57600080fd5b5081356001600160401b03811115614c6157600080fd5b6020830191508360208260051b850101111561151b57600080fd5b60008060208385031215614c8f57600080fd5b82356001600160401b03811115614ca557600080fd5b614cb185828601614c38565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b81811015614cf557835183529284019291840191600101614cd9565b50909695505050505050565b600060208284031215614d1357600080fd5b813560048110612bb557600080fd5b634e487b7160e01b600052602160045260246000fd5b6020810160048310614d4c57614d4c614d22565b91905290565b634e487b7160e01b600052604160045260246000fd5b60405161010081016001600160401b0381118282101715614d8b57614d8b614d52565b60405290565b60405161018081016001600160401b0381118282101715614d8b57614d8b614d52565b604051601f8201601f191681016001600160401b0381118282101715614ddc57614ddc614d52565b604052919050565b60006001600160401b03831115614dfd57614dfd614d52565b614e10601f8401601f1916602001614db4565b9050828152838383011115614e2457600080fd5b828260208301376000602084830101529392505050565b600082601f830112614e4c57600080fd5b612bb583833560208501614de4565b600060208284031215614e6d57600080fd5b81356001600160401b03811115614e8357600080fd5b612db784828501614e3b565b6020810160068310614d4c57614d4c614d22565b60008060208385031215614eb657600080fd5b82356001600160401b0380821115614ecd57600080fd5b818501915085601f830112614ee157600080fd5b813581811115614ef057600080fd5b866020606083028501011115614f0557600080fd5b60209290920196919550909350505050565b600060208284031215614f2957600080fd5b8135612bb581614b06565b600080600080600060808688031215614f4c57600080fd5b85359450602086013593506040860135925060608601356001600160401b03811115614f7757600080fd5b614f8388828901614c38565b969995985093965092949392505050565b80356006811061181757600080fd5b600060208284031215614fb557600080fd5b612bb582614f94565b600080600080600060808688031215614fd657600080fd5b853594506020860135614fe881614b06565b93506040860135925060608601356001600160401b03811115614f7757600080fd5b6001600160a01b0392909216825261ffff16602082015260400190565b8015158114611d5757600080fd5b6000806040838503121561504857600080fd5b823561505381614b06565b91506020830135614b7781615027565b600082601f83011261507457600080fd5b813560206001600160401b0382111561508f5761508f614d52565b61509d818360051b01614db4565b82815260089290921b840181019181810190868411156150bc57600080fd5b8286015b848110156151425761010081890312156150da5760008081fd5b6150e2614d68565b8135815284820135858201526040808301356150fd81614b06565b90820152606082810135908201526080808301359082015260a0808301359082015260c0808301359082015260e08083013590820152835291830191610100016150c0565b509695505050505050565b803561ffff8116811461181757600080fd5b6000806040838503121561517257600080fd5b82356001600160401b038082111561518957600080fd5b90840190610180828703121561519e57600080fd5b6151a6614d91565b8235828111156151b557600080fd5b6151c188828601614e3b565b8252506020830135828111156151d657600080fd5b6151e288828601614e3b565b6020830152506040830135828111156151fa57600080fd5b61520688828601614e3b565b60408301525060608301358281111561521e57600080fd5b61522a88828601614e3b565b60608301525060808301358281111561524257600080fd5b61524e88828601614e3b565b60808301525060a083013560a082015260c08301358281111561527057600080fd5b61527c88828601615063565b60c08301525061528e60e08401614b1b565b60e082015261010091506152a382840161514d565b8282015261012091506152b7828401614b1b565b8282015261014091506152cb828401614b1b565b8282015261016091506152df828401614f94565b828201528094505050506152f560208401614b1b565b90509250929050565b6000806000806080858703121561531457600080fd5b843561531f81614b06565b9350602085013561532f81614b06565b92506040850135915060608501356001600160401b0381111561535157600080fd5b8501601f8101871361536257600080fd5b61537187823560208401614de4565b91505092959194509250565b602080825282518282018190526000919060409081850190868401855b828110156153d157815180516001600160a01b031685528601516001600160601b031686850152928401929085019060010161539a565b5091979650505050505050565b600080600080604085870312156153f457600080fd5b84356001600160401b038082111561540b57600080fd5b61541788838901614c38565b9096509450602087013591508082111561543057600080fd5b818701915087601f83011261544457600080fd5b81358181111561545357600080fd5b8860208260081b850101111561546857600080fd5b95989497505060200194505050565b6000806000806040858703121561548d57600080fd5b84356001600160401b03808211156154a457600080fd5b6154b088838901614c38565b909650945060208701359150808211156154c957600080fd5b506154d687828801614c38565b95989497509550505050565b600080604083850312156154f557600080fd5b823561550081614b06565b91506020830135614b7781614b06565b60006040828403121561552257600080fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008282101561555057615550615528565b500390565b813581556020820135600182015560028101604083013561557581614b06565b81546001600160a01b0319166001600160a01b0391909116179055606082013560038201556080820135600482015560a0820135600582015560c0820135600682015560e090910135600790910155565b600082198211156155d9576155d9615528565b500190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b600081600019048311821515161561564657615646615528565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826156705761567061564b565b500490565b634e487b7160e01b600052603260045260246000fd5b60006001820161569d5761569d615528565b5060010190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b600181811c908216806156d857607f821691505b60208210810361552257634e487b7160e01b600052602260045260246000fd5b601f8211156111a857600081815260208120601f850160051c8101602086101561571f5750805b601f850160051c820191505b8181101561573e5782815560010161572b565b505050505050565b81516001600160401b0381111561575f5761575f614d52565b6157738161576d84546156c4565b846156f8565b602080601f8311600181146157a857600084156157905750858301515b600019600386901b1c1916600185901b17855561573e565b600085815260208120601f198616915b828110156157d7578886015182559484019460019091019084016157b8565b50858210156157f55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060828403121561581757600080fd5b604051606081018181106001600160401b038211171561583957615839614d52565b60405282358152602083013561584e81614b06565b602082015261585f6040840161514d565b60408201529392505050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252600f908201526e4e4f545f4c4f434b45525f524f4c4560881b604082015260600190565b60208082526012908201527122ac21a2a2a229afa0a62627a1a0aa24a7a760711b604082015260600190565b60006020828403121561590957600080fd5b8151612bb581615027565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b602080825260069082015265232927ad22a760d11b604082015260600190565b60008351615978818460208801614a9b565b83519083019061598c818360208801614a9b565b01949350505050565b6040808252810184905260008560608301825b878110156159d85782356159bb81614b06565b6001600160a01b03168252602092830192909101906001016159a8565b5083810360208501528481526001600160fb1b038511156159f857600080fd5b8460051b915081866020830137600091016020019081529695505050505050565b600060408284031215615a2b57600080fd5b604051604081018181106001600160401b0382111715615a4d57615a4d614d52565b6040528235615a5b81614b06565b8152615a696020840161514d565b60208201529392505050565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600082615b4657615b4661564b565b500690565b60008154615b58816156c4565b60018281168015615b705760018114615b8557615bb4565b60ff1984168752821515830287019450615bb4565b8560005260208060002060005b85811015615bab5781548a820152908401908201615b92565b50505082870194505b5050505092915050565b6000615bca8286615b4b565b8451615bda818360208901614a9b565b615be681830186615b4b565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351615c23816017850160208801614a9b565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615c54816028840160208801614a9b565b01602801949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611d3a90830184614ac7565b600060208284031215615ca557600080fd5b8151612bb581614a4f565b600081615cbf57615cbf615528565b506000190190565b634e487b7160e01b600052603160045260246000fdfe61723a2f2f5f44396b4e3157724e576243713535425341475262544234625333763851415054596d42546853625833412f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6af9a8bb3cbd6b84fbccefa71ff73e26e798553c6914585a84886212a46a90279a2646970667358221220dcf6d9cdac278714df8259707064a39921911e895c4b948a1bb81be811e1db1364736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/ERC721ACollectionMetadataExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721ACollectionMetadataExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721ACollectionMetadataExtension.sol","abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/ERC721AFreeMintExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721AFreeMintExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721AFreeMintExtension.sol","abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintFree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/ERC721ALockableExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721ALockableExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721ALockableExtension.sol","abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"filterUnlocked","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"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":"tokenIds","type":"uint256[]"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"locked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/ERC721AMinterExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721AMinterExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721AMinterExtension.sol","abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/ERC721AOneOfOneMintExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721AOneOfOneMintExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721AOneOfOneMintExtension.sol","abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastFrozenTokenId","type":"uint256"}],"name":"freezeTokenURIs","outputs":[],"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":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastFrozenTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"string[]","name":"tokenURIs","type":"string[]"}],"name":"mintWithTokenURIsByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"string[]","name":"tokenURIs","type":"string[]"}],"name":"mintWithTokenURIsByRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"tokenURI","type":"string"}],"name":"setTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/ERC721AOwnerManagedExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721AOwnerManagedExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721AOwnerManagedExtension.sol","abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"managementPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeManagementPower","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/ERC721AOwnerMintExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721AOwnerMintExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721AOwnerMintExtension.sol","abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/ERC721APerTokenMetadataExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721APerTokenMetadataExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721APerTokenMetadataExtension.sol","abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":"_lastFrozenTokenId","type":"uint256"}],"name":"freezeTokenURIs","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastFrozenTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"tokenURI","type":"string"}],"name":"setTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/ERC721APrefixedMetadataExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721APrefixedMetadataExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721APrefixedMetadataExtension.sol","abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"freezeTokenURI","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"placeholderURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"string","name":"newValue","type":"string"}],"name":"setPlaceholderURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURIPrefix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURISuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIPrefix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURISuffix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/ERC721APreSaleExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721APreSaleExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721APreSaleExtension.sol","abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintPreSale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onPreSaleAllowList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","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":[],"name":"preSaleAllowlistMerkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleMaxMintPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSalePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"bytes32","name":"newRoot","type":"bytes32"}],"name":"setAllowlistMerkleRoot","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPreSaleMaxMintPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPreSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"isActive","type":"bool"}],"name":"togglePreSaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/ERC721APublicSaleExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721APublicSaleExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721APublicSaleExtension.sol","abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintPublicSale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleMaxMintPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSalePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPublicSaleMaxMintPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPublicSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"isActive","type":"bool"}],"name":"togglePublicSaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/ERC721ARoleBasedLockableExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721ARoleBasedLockableExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721ARoleBasedLockableExtension.sol","abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LOCKER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"filterUnlocked","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasRoleBasedLockableExtension","outputs":[{"internalType":"bool","name":"","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":"tokenIds","type":"uint256[]"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"locked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/ERC721ARoleBasedMintExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721ARoleBasedMintExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721ARoleBasedMintExtension.sol","abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/ERC721ATieringExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721ATieringExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721ATieringExtension.sol","abi":[{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"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":"tierId","type":"uint256"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct IERC721TieringExtension.Tier","name":"tier","type":"tuple"}],"name":"configureTiering","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tierIds","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct IERC721TieringExtension.Tier[]","name":"_tiers","type":"tuple[]"}],"name":"configureTiering","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"eligibleForTier","outputs":[{"internalType":"uint256","name":"maxMintable","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintByTier","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onTierAllowlist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","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":"tierId","type":"uint256"}],"name":"remainingForTier","outputs":[{"internalType":"uint256","name":"tierRemaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reservedMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tierMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tiers","outputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReserved","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"name":"walletMintedByTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/IERC721ALockableExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721ALockableExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721ALockableExtension.sol","abi":[{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"locked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/extensions/IERC721ARoleBasedLockableExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721ARoleBasedLockableExtension","sourceName":"contracts/collections/ERC721A/extensions/ERC721ARoleBasedLockableExtension.sol","abi":[{"inputs":[],"name":"hasRoleBasedLockableExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/presets/ERC721AOneOfOneCollection":{"address":{"1":"0x21e829BaFF29509e87E94D59d57d200B50Eaeb7F","3":"0x4461377e03cD75bc5B9b3D5514318b10b05B76d1","4":"0xCA330578E5339296BAc19371073F694AAf5aB9b6","5":"0x73fb9dDfA54EC7d0fecC22c88B8e9E98a2C1bF78","25":"0x00Dc371b553B7be2dF5D5E42e49b4F9236f588B7","56":"0xAd450761261B1C70C7583ff500D291E1A07EE495","66":"0xe69E05f4f2b86aA996d76b43A407a93d3Fa84345","97":"0xF5CB96fC0866235CbB17919c4b3416B2247e36A6","137":"0xB362BDF95d36c81afee71ef97f9da280295CBe76","250":"0x8fa6C988b115B46Ed2910C53992864754316305f","280":"0x89B67dC34F83e214ed4FF1e20af34170762B2252","4002":"0x8fa6C988b115B46Ed2910C53992864754316305f","9000":"0xee3fcdF6e5D1d5c5900D9B8DC388D03801d633c9","42161":"0x232A1C44b1E3353a1F25fFc537d1879A5d6e8ec7","43113":"0x453ebb329780CFB54CE183f63F21db28b3106762","43114":"0x933d6a003a024dB27926Ca44bF717658813BA570","421611":"0xedE905c334D4278194fF240a3B2009E05C09879A","arbitrumOne":"0x232A1C44b1E3353a1F25fFc537d1879A5d6e8ec7","arbitrumTestnet":"0xedE905c334D4278194fF240a3B2009E05C09879A","avalanche":"0x933d6a003a024dB27926Ca44bF717658813BA570","avalancheFujiTestnet":"0x453ebb329780CFB54CE183f63F21db28b3106762","bsc":"0xAd450761261B1C70C7583ff500D291E1A07EE495","bscTestnet":"0xF5CB96fC0866235CbB17919c4b3416B2247e36A6","cronos":"0x00Dc371b553B7be2dF5D5E42e49b4F9236f588B7","evmosTestnet":"0xee3fcdF6e5D1d5c5900D9B8DC388D03801d633c9","ftmTestnet":"0x8fa6C988b115B46Ed2910C53992864754316305f","goerli":"0x73fb9dDfA54EC7d0fecC22c88B8e9E98a2C1bF78","mainnet":"0x21e829BaFF29509e87E94D59d57d200B50Eaeb7F","okcMainnet":"0xe69E05f4f2b86aA996d76b43A407a93d3Fa84345","opera":"0x8fa6C988b115B46Ed2910C53992864754316305f","polygon":"0xB362BDF95d36c81afee71ef97f9da280295CBe76","rinkeby":"0xCA330578E5339296BAc19371073F694AAf5aB9b6","ropsten":"0x4461377e03cD75bc5B9b3D5514318b10b05B76d1","zksyncTestnet":"0x89B67dC34F83e214ed4FF1e20af34170762B2252"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721AOneOfOneCollection","sourceName":"contracts/collections/ERC721A/presets/ERC721AOneOfOneCollection.sol","abi":[{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"internalType":"address","name":"defaultRoyaltyAddress","type":"address"},{"internalType":"uint16","name":"defaultRoyaltyBps","type":"uint16"},{"internalType":"address","name":"trustedForwarder","type":"address"},{"internalType":"enum LicenseVersion","name":"licenseVersion","type":"uint8"}],"internalType":"struct ERC721AOneOfOneCollection.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"DefaultRoyaltySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"TokenRoyaltyRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"TokenRoyaltySet","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"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultRoyalty","outputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastFrozenTokenId","type":"uint256"}],"name":"freezeTokenURIs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getInfo","outputs":[{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"uint256","name":"_totalSupply","type":"uint256"},{"internalType":"uint256","name":"_senderBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getRaribleV2Royalties","outputs":[{"components":[{"internalType":"address payable","name":"account","type":"address"},{"internalType":"uint96","name":"value","type":"uint96"}],"internalType":"struct LibPart.Part[]","name":"result","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenRoyaltiesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getTokenRoyaltyByIndex","outputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"internalType":"address","name":"defaultRoyaltyAddress","type":"address"},{"internalType":"uint16","name":"defaultRoyaltyBps","type":"uint16"},{"internalType":"address","name":"trustedForwarder","type":"address"},{"internalType":"enum LicenseVersion","name":"licenseVersion","type":"uint8"}],"internalType":"struct ERC721AOneOfOneCollection.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","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":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastFrozenTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersion","outputs":[{"internalType":"enum LicenseVersion","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersionLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"string[]","name":"tokenURIs","type":"string[]"}],"name":"mintWithTokenURIsByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"string[]","name":"tokenURIs","type":"string[]"}],"name":"mintWithTokenURIsByRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyalty","name":"royalty","type":"tuple"}],"name":"setDefaultRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum LicenseVersion","name":"_licenseVersion","type":"uint8"}],"name":"setLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig[]","name":"royaltyConfigs","type":"tuple[]"}],"name":"setTokenRoyalties","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"tokenURI","type":"string"}],"name":"setTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"trustedForwarder","type":"address"}],"name":"setTrustedForwarder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b50604051620046f3380380620046f3833981016040819052620000349162000b9b565b805160208201516004620000516200004b620000b2565b620000ce565b6003805482919060ff1916600183600581111562000073576200007362000cb4565b02179055506006905062000088838262000d58565b50600762000097828262000d58565b5050600060045550620000ab813362000129565b5062000e6f565b6000620000c96200031860201b6200160a1760201c565b905090565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff16158080156200014a5750600054600160ff909116105b806200017a575062000167306200035060201b6200162c1760201c565b1580156200017a575060005460ff166001145b620001e35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000207576000805461ff0019166101001790555b620002146000836200035f565b620002407f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6836200035f565b6200024b82620000ce565b825160208401516040850151620002649291906200036f565b6200026e620003a6565b62000278620003dc565b6200028262000410565b606083015162000292906200044e565b620002ac83608001518460a001516200048660201b60201c565b60c0830151620002bc90620004bc565b60e0830151620002cc90620004f1565b801562000313576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6017546000906001600160a01b031633036200033b575060131936013560601c90565b620000c96200052660201b6200163b1760201c565b6001600160a01b03163b151590565b6200036b82826200052a565b5050565b600054610100900460ff16620003995760405162461bcd60e51b8152600401620001da9062000e24565b62000313838383620005d1565b600054610100900460ff16620003d05760405162461bcd60e51b8152600401620001da9062000e24565b620003da62000670565b565b600054610100900460ff16620004065760405162461bcd60e51b8152600401620001da9062000e24565b620003da620006ac565b600054610100900460ff166200043a5760405162461bcd60e51b8152600401620001da9062000e24565b62000444620003a6565b620003da620006e8565b600054610100900460ff16620004785760405162461bcd60e51b8152600401620001da9062000e24565b620004838162000724565b50565b600054610100900460ff16620004b05760405162461bcd60e51b8152600401620001da9062000e24565b6200036b828262000789565b600054610100900460ff16620004e65760405162461bcd60e51b8152600401620001da9062000e24565b620004838162000826565b600054610100900460ff166200051b5760405162461bcd60e51b8152600401620001da9062000e24565b620004838162000872565b3390565b60008281526001602090815260408083206001600160a01b038516845290915290205460ff166200036b5760008281526001602081815260408084206001600160a01b0386168552909152909120805460ff191690911790556200058d620000b2565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600054610100900460ff16620005fb5760405162461bcd60e51b8152600401620001da9062000e24565b600c62000609848262000d58565b50600d62000618838262000d58565b50600e62000627828262000d58565b506200063a633d96f4ff60e11b620008ea565b6200064c6380ac58cd60e01b620008ea565b6200065e63184371e560e31b620008ea565b62000313635b5e139f60e01b620008ea565b600054610100900460ff166200069a5760405162461bcd60e51b8152600401620001da9062000e24565b620003da632929b36760e11b620008ea565b600054610100900460ff16620006d65760405162461bcd60e51b8152600401620001da9062000e24565b620003da631aa1577160e11b620008ea565b600054610100900460ff16620007125760405162461bcd60e51b8152600401620001da9062000e24565b620003da630d169dbf60e31b620008ea565b600054610100900460ff166200074e5760405162461bcd60e51b8152600401620001da9062000e24565b600f819055620007656330f487b560e11b620008ea565b620007776380ac58cd60e01b620008ea565b6200048363184371e560e31b620008ea565b600054610100900460ff16620007b35760405162461bcd60e51b8152600401620001da9062000e24565b620007c5633a47bf5160e11b620008ea565b620007d763152a902d60e11b620008ea565b620007e963c69dbd8f60e01b620008ea565b620007fb63656cb66560e11b620008ea565b604080518082019091526001600160a01b038316815261ffff8216602082015262000313816200096b565b600054610100900460ff16620008505760405162461bcd60e51b8152600401620001da9062000e24565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166200089c5760405162461bcd60e51b8152600401620001da9062000e24565b620008ae63b964efe960e01b620008ea565b620008c0630c934a3560e31b620008ea565b6003805482919060ff19166001836005811115620008e257620008e262000cb4565b021790555050565b6001600160e01b03198082169003620009465760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e74657266616365206964000000006044820152606401620001da565b6001600160e01b0319166000908152600260205260409020805460ff19166001179055565b612710816020015161ffff1610620009b45760405162461bcd60e51b815260206004820152600b60248201526a496e76616c69642062707360a81b6044820152606401620001da565b60408051808201825282516001600160a01b03168082526020808501805161ffff169190930181905260138054600160a01b9092026001600160b01b03199092169092171790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe419262000a4692916001600160a01b0392909216825261ffff16602082015260400190565b60405180910390a150565b634e487b7160e01b600052604160045260246000fd5b60405161010081016001600160401b038111828210171562000a8d5762000a8d62000a51565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000abe5762000abe62000a51565b604052919050565b600082601f83011262000ad857600080fd5b81516001600160401b0381111562000af45762000af462000a51565b602062000b0a601f8301601f1916820162000a93565b828152858284870101111562000b1f57600080fd5b60005b8381101562000b3f57858101830151828201840152820162000b22565b8381111562000b515760008385840101525b5095945050505050565b80516001600160a01b038116811462000b7357600080fd5b919050565b805161ffff8116811462000b7357600080fd5b80516006811062000b7357600080fd5b60006020828403121562000bae57600080fd5b81516001600160401b038082111562000bc657600080fd5b90830190610100828603121562000bdc57600080fd5b62000be662000a67565b82518281111562000bf657600080fd5b62000c048782860162000ac6565b82525060208301518281111562000c1a57600080fd5b62000c288782860162000ac6565b60208301525060408301518281111562000c4157600080fd5b62000c4f8782860162000ac6565b6040830152506060830151606082015262000c6d6080840162000b5b565b608082015262000c8060a0840162000b78565b60a082015262000c9360c0840162000b5b565b60c082015262000ca660e0840162000b8b565b60e082015295945050505050565b634e487b7160e01b600052602160045260246000fd5b600181811c9082168062000cdf57607f821691505b60208210810362000d0057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200031357600081815260208120601f850160051c8101602086101562000d2f5750805b601f850160051c820191505b8181101562000d505782815560010162000d3b565b505050505050565b81516001600160401b0381111562000d745762000d7462000a51565b62000d8c8162000d85845462000cca565b8462000d06565b602080601f83116001811462000dc4576000841562000dab5750858301515b600019600386901b1c1916600185901b17855562000d50565b600085815260208120601f198616915b8281101562000df55788860151825594840194600190910190840162000dd4565b508582101562000e145787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6138748062000e7f6000396000f3fe608060405234801561001057600080fd5b50600436106102825760003560e01c80637885fdc7116101585780637885fdc7146105005780637e9803421461052e5780638da5cb5b146105365780638e28cf981461053e57806391d1485414610551578063938e3d7b1461056457806394bb53f81461057757806395d89b411461058a578063a217fddf14610592578063a22cb4651461059a578063a341793b146105ad578063b88d4fde146105b5578063b89df8e8146105c8578063bf9b7a57146105d1578063c7db2893146105e3578063c87b56dd146105eb578063cad96cca146105fe578063d53913931461061e578063d547741f14610633578063d5abeb0114610646578063da7422281461064f578063dd89c6fa14610662578063e8a3d4851461066a578063e985e9c514610672578063ef60ceaf146106ae578063f2fde38b146106c1578063f384702f146106d457600080fd5b806301ffc9a7146102875780630653aca5146102af57806306fdde03146102f1578063081812fc14610306578063095ea7b314610326578063162094c41461033b578063167446071461034e57806318160ddd1461035657806323b872dd1461036c578063248a9ca31461037f5780632a55205a146103925780632ee774bd146103c45780632f2ff15d146103d75780633542aee2146103ea57806336568abe146103fd57806342842e0e146104105780634473f20a1461042357806350a5292f146104365780635136dcc71461045057806356c022bb14610463578063572b6c05146104765780635a9b0b89146104895780636352211e146104ac57806364ed2913146104bf5780636f8b44b0146104d257806370a08231146104e5578063715018a6146104f8575b600080fd5b61029a610295366004612c0d565b6106e1565b60405190151581526020015b60405180910390f35b6102c26102bd366004612c2a565b6106f2565b60408051825181526020808401516001600160a01b0316908201529181015161ffff16908201526060016102a6565b6102f9610777565b6040516102a69190612c9b565b610319610314366004612c2a565b610786565b6040516102a69190612cae565b610339610334366004612cd9565b6107ca565b005b610339610349366004612de9565b61086a565b6103396108bf565b600554600454035b6040519081526020016102a6565b61033961037a366004612e2f565b6108d6565b61035e61038d366004612c2a565b610a5d565b6103a56103a0366004612e6b565b610a73565b604080516001600160a01b0390931683526020830191909152016102a6565b6103396103d2366004612e8d565b610b38565b6103396103e5366004612f6b565b610ba7565b6103396103f8366004612cd9565b610bc8565b61033961040b366004612f6b565b610bda565b61033961041e366004612e2f565b610c64565b610339610431366004612c2a565b610c7f565b6003546104439060ff1681565b6040516102a69190612fad565b61033961045e366004612fd5565b610ccf565b601754610319906001600160a01b031681565b61029a610484366004613049565b610d32565b610491610d46565b604080519384526020840192909252908201526060016102a6565b6103196104ba366004612c2a565b610e41565b6103396104cd366004613073565b610e4c565b6103396104e0366004612c2a565b610ec4565b61035e6104f3366004613049565b610f60565b610339610fae565b601354610520906001600160a01b03811690600160a01b900461ffff1682565b6040516102a692919061308e565b61035e610fc2565b610319610fce565b61033961054c366004612e8d565b610fe3565b61029a61055f366004612f6b565b61107c565b6103396105723660046130ab565b6110a7565b6103396105853660046130f1565b6110bb565b6102f9611260565b61035e600081565b6103396105a83660046131fd565b61126a565b6102f96112ff565b6103396105c3366004613239565b611311565b61035e60115481565b60035461029a90610100900460ff1681565b6102f961135b565b6102f96105f9366004612c2a565b6113bb565b61061161060c366004612c2a565b6113c6565b6040516102a691906132b4565b61035e6000805160206137ff83398151915281565b610339610641366004612f6b565b611481565b61035e600f5481565b61033961065d366004613049565b61149d565b6103396114c7565b6102f96114e0565b61029a610680366004613315565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205460ff1690565b6103396106bc36600461333f565b611572565b6103396106cf366004613049565b611594565b60105461029a9060ff1681565b60006106ec8261163f565b92915050565b604080516060810182526000808252602082018190529181018290529061071a601584611670565b6000818152601460209081526040918290208251808401845290546001600160a01b03808216835261ffff600160a01b90920482168385019081528551606081018752968752925116928501929092525116908201529392505050565b6060610781611683565b905090565b60006107918261168d565b6107ae576040516333d1c03960e21b815260040160405180910390fd5b506000908152600a60205260409020546001600160a01b031690565b60006107d582610e41565b9050336001600160a01b0382161461080e576107f18133610680565b61080e576040516367d9dca160e11b815260040160405180910390fd5b6000828152600a602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6108726116b5565b60115482116108b15760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b60448201526064015b60405180910390fd5b6108bb8282611724565b5050565b6108c76116b5565b6010805460ff19166001179055565b60006108e1826117a8565b9050836001600160a01b0316816001600160a01b0316146109145760405162a1148160e81b815260040160405180910390fd5b6000828152600a602052604090208054338082146001600160a01b03881690911417610961576109448633610680565b61096157604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03851661098857604051633a954ecd60e21b815260040160405180910390fd5b801561099357600082555b6001600160a01b038681166000908152600960205260408082208054600019019055918716815220805460010190556109d085600160e11b61180f565b600085815260086020526040812091909155600160e11b84169003610a2557600184016000818152600860205260408120549003610a23576004548114610a235760008181526008602052604090208490555b505b83856001600160a01b0316876001600160a01b031660008051602061381f83398151915260405160405180910390a45b505050505050565b6000908152600160208190526040909120015490565b60008281526014602052604081205481906001600160a01b031615610ad8576000848152601460205260409020546001600160a01b0381169061271090610ac590600160a01b900461ffff168661336d565b610acf91906133a2565b91509150610b31565b6013546001600160a01b031615801590610afe5750601354600160a01b900461ffff1615155b15610b2a576013546001600160a01b0381169061271090610ac590600160a01b900461ffff168661336d565b5060009050805b9250929050565b610b406116b5565b6000610b4b60045490565b9050610b578484611824565b60005b83811015610ba057610b8e610b6f82846133b6565b848381518110610b8157610b816133ce565b6020026020010151611724565b80610b98816133e4565b915050610b5a565b5050505050565b610bb082610a5d565b610bb981611888565b610bc38383611899565b505050565b610bd06116b5565b6108bb8282611824565b610be2611921565b6001600160a01b0316816001600160a01b031614610c5a5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016108a8565b6108bb828261192b565b610bc383838360405180602001604052806000815250611311565b610c876116b5565b6011548111610cca5760405162461bcd60e51b815260206004820152600f60248201526e43414e4e4f545f554e465245455a4560881b60448201526064016108a8565b601155565b610cd76116b5565b6108bb8282808060200260200160405190810160405280939291908181526020016000905b82821015610d2857610d19606083028601368190038101906133fd565b81526020019060010190610cfc565b50505050506119b0565b6017546001600160a01b0391821691161490565b600080808080610d54611921565b6001600160a01b031614610dd057306370a08231610d70611921565b6040518263ffffffff1660e01b8152600401610d8c9190612cae565b602060405180830381865afa158015610da9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcd9190613461565b90505b600f54306001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e359190613461565b90959094509092509050565b60006106ec826117a8565b610e546116b5565b600354610100900460ff1615610e9d5760405162461bcd60e51b815260206004820152600e60248201526d131250d15394d157d313d0d2d15160921b60448201526064016108a8565b6003805482919060ff19166001836005811115610ebc57610ebc612f97565b021790555050565b610ecc6116b5565b60105460ff1615610f115760405162461bcd60e51b815260206004820152600f60248201526e2120a9a2afaaa924afa32927ad22a760891b60448201526064016108a8565b60055460045403811015610f5b5760405162461bcd60e51b81526020600482015260116024820152704c4f5745525f5448414e5f535550504c5960781b60448201526064016108a8565b600f55565b60006001600160a01b038216610f89576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600960205260409020546001600160401b031690565b610fb66116b5565b610fc06000611b57565b565b60006107816015611bb2565b6000546201000090046001600160a01b031690565b610ffd6000805160206137ff83398151915261055f611921565b61103b5760405162461bcd60e51b815260206004820152600f60248201526e4e4f545f4d494e5445525f524f4c4560881b60448201526064016108a8565b600061104660045490565b90506110528484611824565b60005b83811015610ba05761106a610b6f82846133b6565b80611074816133e4565b915050611055565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6110af6116b5565b600e6108bb82826134f4565b600054610100900460ff16158080156110db5750600054600160ff909116105b806110fc57506110ea3061162c565b1580156110fc575060005460ff166001145b61115f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108a8565b6000805460ff191660011790558015611182576000805461ff0019166101001790555b61118d600083611bbc565b6111a56000805160206137ff83398151915283611bbc565b6111ae82611b57565b6111c5836000015184602001518560400151611bc6565b6111cd611bf8565b6111d5611c27565b6111dd611c56565b6111ea8360600151611c8d565b6111fc83608001518460a00151611cbd565b6112098360c00151611cee565b6112168360e00151611d1e565b8015610bc3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6060610781611d4e565b336001600160a01b038316036112935760405163b06307db60e01b815260040160405180910390fd5b336000818152600b602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6003546060906107819060ff16611d58565b61131c8484846108d6565b6001600160a01b0383163b156113555761133884848484611ed6565b611355576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b60606040518060600160405280603181526020016137ce603191396003546113969060ff16600581111561139157611391612f97565b611fc2565b6040516020016113a79291906135b3565b604051602081830303815290604052905090565b60606106ec826120c2565b604080516001808252818301909252606091816020015b60408051808201909152600080825260208201528152602001906001900390816113dd57505060135481519192506001600160a01b0316908290600090611426576114266133ce565b60209081029190910101516001600160a01b039190911690526013548151600160a01b90910461ffff16908290600090611462576114626133ce565b6020908102919091018101516001600160601b03909216910152919050565b61148a82610a5d565b61149381611888565b610bc3838361192b565b6114a56116b5565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6114cf6116b5565b6003805461ff001916610100179055565b6060600e80546114ef9061347a565b80601f016020809104026020016040519081016040528092919081815260200182805461151b9061347a565b80156115685780601f1061153d57610100808354040283529160200191611568565b820191906000526020600020905b81548152906001019060200180831161154b57829003601f168201915b5050505050905090565b61157a6116b5565b61159161158c368390038301836135e2565b6120cd565b50565b61159c6116b5565b6001600160a01b0381166116015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108a8565b61159181611b57565b600061161533610d32565b15611627575060131936013560601c90565b503390565b6001600160a01b03163b151590565b3390565b600061164a82612178565b806106ec5750506001600160e01b03191660009081526002602052604090205460ff1690565b600061167c83836121ad565b9392505050565b60606107816121d7565b6000600454821080156106ec575050600090815260086020526040902054600160e01b161590565b6116bd611921565b6001600160a01b03166116ce610fce565b6001600160a01b031614610fc05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108a8565b61172d8261168d565b6117905760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016108a8565b6000828152601260205260409020610bc382826134f4565b6000816004548110156117f65760008181526008602052604081205490600160e01b821690036117f4575b8060000361167c5750600019016000818152600860205260409020546117d3565b505b604051636f96cda160e11b815260040160405180910390fd5b4260a01b176001600160a01b03919091161790565b600f54816118356005546004540390565b61183f91906133b6565b111561187e5760405162461bcd60e51b815260206004820152600e60248201526d455843454544535f535550504c5960901b60448201526064016108a8565b6108bb82826121e6565b61159181611894611921565b612200565b6118a3828261107c565b6108bb5760008281526001602081815260408084206001600160a01b0386168552909152909120805460ff191690911790556118dd611921565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600061078161160a565b611935828261107c565b156108bb5760008281526001602090815260408083206001600160a01b03851684529091529020805460ff1916905561196c611921565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b60005b81518110156108bb5760008282815181106119d0576119d06133ce565b60200260200101519050612710816040015161ffff1610611a035760405162461bcd60e51b81526004016108a89061363c565b60208101516001600160a01b0316611a7c578051600090815260146020526040902080546001600160b01b03191690558051611a4190601590612264565b5080516040519081527fa2870857763bd9ae76c957f869f16b31c18dd3bb4c7b4d3a4496dc5c57c657f99060200160405180910390a1611b44565b6040805180820182526020808401516001600160a01b0390811683528484015161ffff90811683850190815286516000908152601490945294909220925183549451909216600160a01b026001600160b01b03199094169116179190911790558051611aea90601590612270565b50805160208083015160408085015181519485526001600160a01b039092169284019290925261ffff1682820152517f389b70fb0887f01e83784eb1c4c589f740eca53b00ed0f45e41db5d079719abb9181900360600190a15b5080611b4f816133e4565b9150506119b3565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b60006106ec825490565b6108bb8282611899565b600054610100900460ff16611bed5760405162461bcd60e51b81526004016108a890613661565b610bc383838361227c565b600054610100900460ff16611c1f5760405162461bcd60e51b81526004016108a890613661565b610fc061230a565b600054610100900460ff16611c4e5760405162461bcd60e51b81526004016108a890613661565b610fc0612341565b600054610100900460ff16611c7d5760405162461bcd60e51b81526004016108a890613661565b611c85611bf8565b610fc0612378565b600054610100900460ff16611cb45760405162461bcd60e51b81526004016108a890613661565b611591816123af565b600054610100900460ff16611ce45760405162461bcd60e51b81526004016108a890613661565b6108bb828261240b565b600054610100900460ff16611d155760405162461bcd60e51b81526004016108a890613661565b6115918161249b565b600054610100900460ff16611d455760405162461bcd60e51b81526004016108a890613661565b611591816124c2565b6060610781612509565b60606006826005811115611d6e57611d6e612f97565b60ff161115611d7c57600080fd5b816005811115611d8e57611d8e612f97565b600003611db857505060408051808201909152600781526604342455f4343360cc1b602082015290565b816005811115611dca57611dca612f97565b600103611df457505060408051808201909152600781526621a122afa2a1a960c91b602082015290565b816005811115611e0657611e06612f97565b600203611e3157505060408051808201909152600881526721a122afa722a1a960c11b602082015290565b816005811115611e4357611e43612f97565b600303611e7157505060408051808201909152600b81526a4342455f4e4543525f485360a81b602082015290565b816005811115611e8357611e83612f97565b600403611eac57505060408051808201909152600681526521a122afa82960d11b602082015290565b50506040805180820190915260098152684342455f50525f485360b81b602082015290565b919050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290611f0b9033908990889088906004016136ac565b6020604051808303816000875af1925050508015611f46575060408051601f3d908101601f19168201909252611f43918101906136e9565b60015b611fa4573d808015611f74576040519150601f19603f3d011682016040523d82523d6000602084013e611f79565b606091505b508051600003611f9c576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b606081600003611fe95750506040805180820190915260018152600360fc1b602082015290565b8160005b81156120135780611ffd816133e4565b915061200c9050600a836133a2565b9150611fed565b6000816001600160401b0381111561202d5761202d612d03565b6040519080825280601f01601f191660200182016040528015612057576020820181803683370190505b5090505b8415611fba5761206c600183613706565b9150612079600a8661371d565b6120849060306133b6565b60f81b818381518110612099576120996133ce565b60200101906001600160f81b031916908160001a9053506120bb600a866133a2565b945061205b565b60606106ec82612518565b612710816020015161ffff16106120f65760405162461bcd60e51b81526004016108a89061363c565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601380546001600160b01b031916909217600160a01b9091021790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe419261216d929161308e565b60405180910390a150565b60006001600160e01b03198216637965db0b60e01b14806106ec57506301ffc9a760e01b6001600160e01b03198316146106ec565b60008260000182815481106121c4576121c46133ce565b9060005260206000200154905092915050565b6060600c80546114ef9061347a565b6108bb828260405180602001604052806000815250612686565b61220a828261107c565b6108bb57612222816001600160a01b031660146126ec565b61222d8360206126ec565b60405160200161223e929190613731565b60408051601f198184030181529082905262461bcd60e51b82526108a891600401612c9b565b600061167c8383612887565b600061167c838361297a565b600054610100900460ff166122a35760405162461bcd60e51b81526004016108a890613661565b600c6122af84826134f4565b50600d6122bc83826134f4565b50600e6122c982826134f4565b506122da633d96f4ff60e11b6129c9565b6122ea6380ac58cd60e01b6129c9565b6122fa63184371e560e31b6129c9565b610bc3635b5e139f60e01b6129c9565b600054610100900460ff166123315760405162461bcd60e51b81526004016108a890613661565b610fc0632929b36760e11b6129c9565b600054610100900460ff166123685760405162461bcd60e51b81526004016108a890613661565b610fc0631aa1577160e11b6129c9565b600054610100900460ff1661239f5760405162461bcd60e51b81526004016108a890613661565b610fc0630d169dbf60e31b6129c9565b600054610100900460ff166123d65760405162461bcd60e51b81526004016108a890613661565b600f8190556123eb6330f487b560e11b6129c9565b6123fb6380ac58cd60e01b6129c9565b61159163184371e560e31b6129c9565b600054610100900460ff166124325760405162461bcd60e51b81526004016108a890613661565b612442633a47bf5160e11b6129c9565b61245263152a902d60e11b6129c9565b61246263c69dbd8f60e01b6129c9565b61247263656cb66560e11b6129c9565b604080518082019091526001600160a01b038316815261ffff82166020820152610bc3816120cd565b600054610100900460ff166114a55760405162461bcd60e51b81526004016108a890613661565b600054610100900460ff166124e95760405162461bcd60e51b81526004016108a890613661565b6124f963b964efe960e01b6129c9565b610e9d630c934a3560e31b6129c9565b6060600d80546114ef9061347a565b60606125238261168d565b6125895760405162461bcd60e51b815260206004820152603160248201527f45524337323155524953746f726167653a2055524920717565727920666f72206044820152703737b732bc34b9ba32b73a103a37b5b2b760791b60648201526084016108a8565b600082815260126020526040812080546125a29061347a565b80601f01602080910402602001604051908101604052809291908181526020018280546125ce9061347a565b801561261b5780601f106125f05761010080835404028352916020019161261b565b820191906000526020600020905b8154815290600101906020018083116125fe57829003601f168201915b50505050509050600061263960408051602081019091526000815290565b9050805160000361264b575092915050565b81511561267d5780826040516020016126659291906135b3565b60405160208183030381529060405292505050919050565b611fba84612a47565b6126908383612ad7565b6001600160a01b0383163b15610bc3576004548281035b6126ba6000868380600101945086611ed6565b6126d7576040516368d2bf6b60e11b815260040160405180910390fd5b8181106126a7578160045414610ba057600080fd5b606060006126fb83600261336d565b6127069060026133b6565b6001600160401b0381111561271d5761271d612d03565b6040519080825280601f01601f191660200182016040528015612747576020820181803683370190505b509050600360fc1b81600081518110612762576127626133ce565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612791576127916133ce565b60200101906001600160f81b031916908160001a90535060006127b584600261336d565b6127c09060016133b6565b90505b6001811115612838576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106127f4576127f46133ce565b1a60f81b82828151811061280a5761280a6133ce565b60200101906001600160f81b031916908160001a90535060049490941c93612831816137a0565b90506127c3565b50831561167c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016108a8565b600081815260018301602052604081205480156129705760006128ab600183613706565b85549091506000906128bf90600190613706565b90508181146129245760008660000182815481106128df576128df6133ce565b9060005260206000200154905080876000018481548110612902576129026133ce565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612935576129356137b7565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506106ec565b60009150506106ec565b60008181526001830160205260408120546129c1575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556106ec565b5060006106ec565b6001600160e01b03198082169003612a225760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b60448201526064016108a8565b6001600160e01b0319166000908152600260205260409020805460ff19166001179055565b6060612a528261168d565b612a6f57604051630a14c4b560e41b815260040160405180910390fd5b6000612a8660408051602081019091526000815290565b90508051600003612aa6576040518060200160405280600081525061167c565b80612ab084612bbf565b604051602001612ac19291906135b3565b6040516020818303038152906040529392505050565b6004546000829003612afc5760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b038316600090815260096020526040902080546001600160401b018402019055612b33836001841460e11b61180f565b6000828152600860205260408120919091556001600160a01b03841690838301908390839060008051602061381f8339815191528180a4600183015b818114612b95578083600060008051602061381f833981519152600080a4600101612b6f565b5081600003612bb657604051622e076360e81b815260040160405180910390fd5b60045550505050565b604080516080019081905280825b600183039250600a81066030018353600a900480612bcd5750819003601f19909101908152919050565b6001600160e01b03198116811461159157600080fd5b600060208284031215612c1f57600080fd5b813561167c81612bf7565b600060208284031215612c3c57600080fd5b5035919050565b60005b83811015612c5e578181015183820152602001612c46565b838111156113555750506000910152565b60008151808452612c87816020860160208601612c43565b601f01601f19169290920160200192915050565b60208152600061167c6020830184612c6f565b6001600160a01b0391909116815260200190565b80356001600160a01b0381168114611ed157600080fd5b60008060408385031215612cec57600080fd5b612cf583612cc2565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60405161010081016001600160401b0381118282101715612d3c57612d3c612d03565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612d6a57612d6a612d03565b604052919050565b60006001600160401b03831115612d8b57612d8b612d03565b612d9e601f8401601f1916602001612d42565b9050828152838383011115612db257600080fd5b828260208301376000602084830101529392505050565b600082601f830112612dda57600080fd5b61167c83833560208501612d72565b60008060408385031215612dfc57600080fd5b8235915060208301356001600160401b03811115612e1957600080fd5b612e2585828601612dc9565b9150509250929050565b600080600060608486031215612e4457600080fd5b612e4d84612cc2565b9250612e5b60208501612cc2565b9150604084013590509250925092565b60008060408385031215612e7e57600080fd5b50508035926020909101359150565b600080600060608486031215612ea257600080fd5b612eab84612cc2565b9250602080850135925060408501356001600160401b0380821115612ecf57600080fd5b818701915087601f830112612ee357600080fd5b813581811115612ef557612ef5612d03565b8060051b612f04858201612d42565b918252838101850191858101908b841115612f1e57600080fd5b86860192505b83831015612f5a57823585811115612f3c5760008081fd5b612f4a8d89838a0101612dc9565b8352509186019190860190612f24565b809750505050505050509250925092565b60008060408385031215612f7e57600080fd5b82359150612f8e60208401612cc2565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b6020810160068310612fcf57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060208385031215612fe857600080fd5b82356001600160401b0380821115612fff57600080fd5b818501915085601f83011261301357600080fd5b81358181111561302257600080fd5b86602060608302850101111561303757600080fd5b60209290920196919550909350505050565b60006020828403121561305b57600080fd5b61167c82612cc2565b803560068110611ed157600080fd5b60006020828403121561308557600080fd5b61167c82613064565b6001600160a01b0392909216825261ffff16602082015260400190565b6000602082840312156130bd57600080fd5b81356001600160401b038111156130d357600080fd5b611fba84828501612dc9565b803561ffff81168114611ed157600080fd5b6000806040838503121561310457600080fd5b82356001600160401b038082111561311b57600080fd5b90840190610100828703121561313057600080fd5b613138612d19565b82358281111561314757600080fd5b61315388828601612dc9565b82525060208301358281111561316857600080fd5b61317488828601612dc9565b60208301525060408301358281111561318c57600080fd5b61319888828601612dc9565b604083015250606083013560608201526131b460808401612cc2565b60808201526131c560a084016130df565b60a08201526131d660c08401612cc2565b60c08201526131e760e08401613064565b60e08201529350612f8e91505060208401612cc2565b6000806040838503121561321057600080fd5b61321983612cc2565b91506020830135801515811461322e57600080fd5b809150509250929050565b6000806000806080858703121561324f57600080fd5b61325885612cc2565b935061326660208601612cc2565b92506040850135915060608501356001600160401b0381111561328857600080fd5b8501601f8101871361329957600080fd5b6132a887823560208401612d72565b91505092959194509250565b602080825282518282018190526000919060409081850190868401855b8281101561330857815180516001600160a01b031685528601516001600160601b03168685015292840192908501906001016132d1565b5091979650505050505050565b6000806040838503121561332857600080fd5b61333183612cc2565b9150612f8e60208401612cc2565b60006040828403121561335157600080fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561338757613387613357565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826133b1576133b161338c565b500490565b600082198211156133c9576133c9613357565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600182016133f6576133f6613357565b5060010190565b60006060828403121561340f57600080fd5b604051606081018181106001600160401b038211171561343157613431612d03565b6040528235815261344460208401612cc2565b6020820152613455604084016130df565b60408201529392505050565b60006020828403121561347357600080fd5b5051919050565b600181811c9082168061348e57607f821691505b60208210810361335157634e487b7160e01b600052602260045260246000fd5b601f821115610bc357600081815260208120601f850160051c810160208610156134d55750805b601f850160051c820191505b81811015610a55578281556001016134e1565b81516001600160401b0381111561350d5761350d612d03565b6135218161351b845461347a565b846134ae565b602080601f831160018114613556576000841561353e5750858301515b600019600386901b1c1916600185901b178555610a55565b600085815260208120601f198616915b8281101561358557888601518255948401946001909101908401613566565b50858210156135a35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600083516135c5818460208801612c43565b8351908301906135d9818360208801612c43565b01949350505050565b6000604082840312156135f457600080fd5b604051604081018181106001600160401b038211171561361657613616612d03565b60405261362283612cc2565b8152613630602084016130df565b60208201529392505050565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136df90830184612c6f565b9695505050505050565b6000602082840312156136fb57600080fd5b815161167c81612bf7565b60008282101561371857613718613357565b500390565b60008261372c5761372c61338c565b500690565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613763816017850160208801612c43565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613794816028840160208801612c43565b01602801949350505050565b6000816137af576137af613357565b506000190190565b634e487b7160e01b600052603160045260246000fdfe61723a2f2f5f44396b4e3157724e576243713535425341475262544234625333763851415054596d42546853625833412f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212201ee0c4a2e468336b570314601f89641efa56f7221308e2a5089a49f53793a85e64736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106102825760003560e01c80637885fdc7116101585780637885fdc7146105005780637e9803421461052e5780638da5cb5b146105365780638e28cf981461053e57806391d1485414610551578063938e3d7b1461056457806394bb53f81461057757806395d89b411461058a578063a217fddf14610592578063a22cb4651461059a578063a341793b146105ad578063b88d4fde146105b5578063b89df8e8146105c8578063bf9b7a57146105d1578063c7db2893146105e3578063c87b56dd146105eb578063cad96cca146105fe578063d53913931461061e578063d547741f14610633578063d5abeb0114610646578063da7422281461064f578063dd89c6fa14610662578063e8a3d4851461066a578063e985e9c514610672578063ef60ceaf146106ae578063f2fde38b146106c1578063f384702f146106d457600080fd5b806301ffc9a7146102875780630653aca5146102af57806306fdde03146102f1578063081812fc14610306578063095ea7b314610326578063162094c41461033b578063167446071461034e57806318160ddd1461035657806323b872dd1461036c578063248a9ca31461037f5780632a55205a146103925780632ee774bd146103c45780632f2ff15d146103d75780633542aee2146103ea57806336568abe146103fd57806342842e0e146104105780634473f20a1461042357806350a5292f146104365780635136dcc71461045057806356c022bb14610463578063572b6c05146104765780635a9b0b89146104895780636352211e146104ac57806364ed2913146104bf5780636f8b44b0146104d257806370a08231146104e5578063715018a6146104f8575b600080fd5b61029a610295366004612c0d565b6106e1565b60405190151581526020015b60405180910390f35b6102c26102bd366004612c2a565b6106f2565b60408051825181526020808401516001600160a01b0316908201529181015161ffff16908201526060016102a6565b6102f9610777565b6040516102a69190612c9b565b610319610314366004612c2a565b610786565b6040516102a69190612cae565b610339610334366004612cd9565b6107ca565b005b610339610349366004612de9565b61086a565b6103396108bf565b600554600454035b6040519081526020016102a6565b61033961037a366004612e2f565b6108d6565b61035e61038d366004612c2a565b610a5d565b6103a56103a0366004612e6b565b610a73565b604080516001600160a01b0390931683526020830191909152016102a6565b6103396103d2366004612e8d565b610b38565b6103396103e5366004612f6b565b610ba7565b6103396103f8366004612cd9565b610bc8565b61033961040b366004612f6b565b610bda565b61033961041e366004612e2f565b610c64565b610339610431366004612c2a565b610c7f565b6003546104439060ff1681565b6040516102a69190612fad565b61033961045e366004612fd5565b610ccf565b601754610319906001600160a01b031681565b61029a610484366004613049565b610d32565b610491610d46565b604080519384526020840192909252908201526060016102a6565b6103196104ba366004612c2a565b610e41565b6103396104cd366004613073565b610e4c565b6103396104e0366004612c2a565b610ec4565b61035e6104f3366004613049565b610f60565b610339610fae565b601354610520906001600160a01b03811690600160a01b900461ffff1682565b6040516102a692919061308e565b61035e610fc2565b610319610fce565b61033961054c366004612e8d565b610fe3565b61029a61055f366004612f6b565b61107c565b6103396105723660046130ab565b6110a7565b6103396105853660046130f1565b6110bb565b6102f9611260565b61035e600081565b6103396105a83660046131fd565b61126a565b6102f96112ff565b6103396105c3366004613239565b611311565b61035e60115481565b60035461029a90610100900460ff1681565b6102f961135b565b6102f96105f9366004612c2a565b6113bb565b61061161060c366004612c2a565b6113c6565b6040516102a691906132b4565b61035e6000805160206137ff83398151915281565b610339610641366004612f6b565b611481565b61035e600f5481565b61033961065d366004613049565b61149d565b6103396114c7565b6102f96114e0565b61029a610680366004613315565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205460ff1690565b6103396106bc36600461333f565b611572565b6103396106cf366004613049565b611594565b60105461029a9060ff1681565b60006106ec8261163f565b92915050565b604080516060810182526000808252602082018190529181018290529061071a601584611670565b6000818152601460209081526040918290208251808401845290546001600160a01b03808216835261ffff600160a01b90920482168385019081528551606081018752968752925116928501929092525116908201529392505050565b6060610781611683565b905090565b60006107918261168d565b6107ae576040516333d1c03960e21b815260040160405180910390fd5b506000908152600a60205260409020546001600160a01b031690565b60006107d582610e41565b9050336001600160a01b0382161461080e576107f18133610680565b61080e576040516367d9dca160e11b815260040160405180910390fd5b6000828152600a602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6108726116b5565b60115482116108b15760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b60448201526064015b60405180910390fd5b6108bb8282611724565b5050565b6108c76116b5565b6010805460ff19166001179055565b60006108e1826117a8565b9050836001600160a01b0316816001600160a01b0316146109145760405162a1148160e81b815260040160405180910390fd5b6000828152600a602052604090208054338082146001600160a01b03881690911417610961576109448633610680565b61096157604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03851661098857604051633a954ecd60e21b815260040160405180910390fd5b801561099357600082555b6001600160a01b038681166000908152600960205260408082208054600019019055918716815220805460010190556109d085600160e11b61180f565b600085815260086020526040812091909155600160e11b84169003610a2557600184016000818152600860205260408120549003610a23576004548114610a235760008181526008602052604090208490555b505b83856001600160a01b0316876001600160a01b031660008051602061381f83398151915260405160405180910390a45b505050505050565b6000908152600160208190526040909120015490565b60008281526014602052604081205481906001600160a01b031615610ad8576000848152601460205260409020546001600160a01b0381169061271090610ac590600160a01b900461ffff168661336d565b610acf91906133a2565b91509150610b31565b6013546001600160a01b031615801590610afe5750601354600160a01b900461ffff1615155b15610b2a576013546001600160a01b0381169061271090610ac590600160a01b900461ffff168661336d565b5060009050805b9250929050565b610b406116b5565b6000610b4b60045490565b9050610b578484611824565b60005b83811015610ba057610b8e610b6f82846133b6565b848381518110610b8157610b816133ce565b6020026020010151611724565b80610b98816133e4565b915050610b5a565b5050505050565b610bb082610a5d565b610bb981611888565b610bc38383611899565b505050565b610bd06116b5565b6108bb8282611824565b610be2611921565b6001600160a01b0316816001600160a01b031614610c5a5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016108a8565b6108bb828261192b565b610bc383838360405180602001604052806000815250611311565b610c876116b5565b6011548111610cca5760405162461bcd60e51b815260206004820152600f60248201526e43414e4e4f545f554e465245455a4560881b60448201526064016108a8565b601155565b610cd76116b5565b6108bb8282808060200260200160405190810160405280939291908181526020016000905b82821015610d2857610d19606083028601368190038101906133fd565b81526020019060010190610cfc565b50505050506119b0565b6017546001600160a01b0391821691161490565b600080808080610d54611921565b6001600160a01b031614610dd057306370a08231610d70611921565b6040518263ffffffff1660e01b8152600401610d8c9190612cae565b602060405180830381865afa158015610da9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcd9190613461565b90505b600f54306001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e359190613461565b90959094509092509050565b60006106ec826117a8565b610e546116b5565b600354610100900460ff1615610e9d5760405162461bcd60e51b815260206004820152600e60248201526d131250d15394d157d313d0d2d15160921b60448201526064016108a8565b6003805482919060ff19166001836005811115610ebc57610ebc612f97565b021790555050565b610ecc6116b5565b60105460ff1615610f115760405162461bcd60e51b815260206004820152600f60248201526e2120a9a2afaaa924afa32927ad22a760891b60448201526064016108a8565b60055460045403811015610f5b5760405162461bcd60e51b81526020600482015260116024820152704c4f5745525f5448414e5f535550504c5960781b60448201526064016108a8565b600f55565b60006001600160a01b038216610f89576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600960205260409020546001600160401b031690565b610fb66116b5565b610fc06000611b57565b565b60006107816015611bb2565b6000546201000090046001600160a01b031690565b610ffd6000805160206137ff83398151915261055f611921565b61103b5760405162461bcd60e51b815260206004820152600f60248201526e4e4f545f4d494e5445525f524f4c4560881b60448201526064016108a8565b600061104660045490565b90506110528484611824565b60005b83811015610ba05761106a610b6f82846133b6565b80611074816133e4565b915050611055565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6110af6116b5565b600e6108bb82826134f4565b600054610100900460ff16158080156110db5750600054600160ff909116105b806110fc57506110ea3061162c565b1580156110fc575060005460ff166001145b61115f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108a8565b6000805460ff191660011790558015611182576000805461ff0019166101001790555b61118d600083611bbc565b6111a56000805160206137ff83398151915283611bbc565b6111ae82611b57565b6111c5836000015184602001518560400151611bc6565b6111cd611bf8565b6111d5611c27565b6111dd611c56565b6111ea8360600151611c8d565b6111fc83608001518460a00151611cbd565b6112098360c00151611cee565b6112168360e00151611d1e565b8015610bc3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6060610781611d4e565b336001600160a01b038316036112935760405163b06307db60e01b815260040160405180910390fd5b336000818152600b602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6003546060906107819060ff16611d58565b61131c8484846108d6565b6001600160a01b0383163b156113555761133884848484611ed6565b611355576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b60606040518060600160405280603181526020016137ce603191396003546113969060ff16600581111561139157611391612f97565b611fc2565b6040516020016113a79291906135b3565b604051602081830303815290604052905090565b60606106ec826120c2565b604080516001808252818301909252606091816020015b60408051808201909152600080825260208201528152602001906001900390816113dd57505060135481519192506001600160a01b0316908290600090611426576114266133ce565b60209081029190910101516001600160a01b039190911690526013548151600160a01b90910461ffff16908290600090611462576114626133ce565b6020908102919091018101516001600160601b03909216910152919050565b61148a82610a5d565b61149381611888565b610bc3838361192b565b6114a56116b5565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6114cf6116b5565b6003805461ff001916610100179055565b6060600e80546114ef9061347a565b80601f016020809104026020016040519081016040528092919081815260200182805461151b9061347a565b80156115685780601f1061153d57610100808354040283529160200191611568565b820191906000526020600020905b81548152906001019060200180831161154b57829003601f168201915b5050505050905090565b61157a6116b5565b61159161158c368390038301836135e2565b6120cd565b50565b61159c6116b5565b6001600160a01b0381166116015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108a8565b61159181611b57565b600061161533610d32565b15611627575060131936013560601c90565b503390565b6001600160a01b03163b151590565b3390565b600061164a82612178565b806106ec5750506001600160e01b03191660009081526002602052604090205460ff1690565b600061167c83836121ad565b9392505050565b60606107816121d7565b6000600454821080156106ec575050600090815260086020526040902054600160e01b161590565b6116bd611921565b6001600160a01b03166116ce610fce565b6001600160a01b031614610fc05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108a8565b61172d8261168d565b6117905760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016108a8565b6000828152601260205260409020610bc382826134f4565b6000816004548110156117f65760008181526008602052604081205490600160e01b821690036117f4575b8060000361167c5750600019016000818152600860205260409020546117d3565b505b604051636f96cda160e11b815260040160405180910390fd5b4260a01b176001600160a01b03919091161790565b600f54816118356005546004540390565b61183f91906133b6565b111561187e5760405162461bcd60e51b815260206004820152600e60248201526d455843454544535f535550504c5960901b60448201526064016108a8565b6108bb82826121e6565b61159181611894611921565b612200565b6118a3828261107c565b6108bb5760008281526001602081815260408084206001600160a01b0386168552909152909120805460ff191690911790556118dd611921565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600061078161160a565b611935828261107c565b156108bb5760008281526001602090815260408083206001600160a01b03851684529091529020805460ff1916905561196c611921565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b60005b81518110156108bb5760008282815181106119d0576119d06133ce565b60200260200101519050612710816040015161ffff1610611a035760405162461bcd60e51b81526004016108a89061363c565b60208101516001600160a01b0316611a7c578051600090815260146020526040902080546001600160b01b03191690558051611a4190601590612264565b5080516040519081527fa2870857763bd9ae76c957f869f16b31c18dd3bb4c7b4d3a4496dc5c57c657f99060200160405180910390a1611b44565b6040805180820182526020808401516001600160a01b0390811683528484015161ffff90811683850190815286516000908152601490945294909220925183549451909216600160a01b026001600160b01b03199094169116179190911790558051611aea90601590612270565b50805160208083015160408085015181519485526001600160a01b039092169284019290925261ffff1682820152517f389b70fb0887f01e83784eb1c4c589f740eca53b00ed0f45e41db5d079719abb9181900360600190a15b5080611b4f816133e4565b9150506119b3565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b60006106ec825490565b6108bb8282611899565b600054610100900460ff16611bed5760405162461bcd60e51b81526004016108a890613661565b610bc383838361227c565b600054610100900460ff16611c1f5760405162461bcd60e51b81526004016108a890613661565b610fc061230a565b600054610100900460ff16611c4e5760405162461bcd60e51b81526004016108a890613661565b610fc0612341565b600054610100900460ff16611c7d5760405162461bcd60e51b81526004016108a890613661565b611c85611bf8565b610fc0612378565b600054610100900460ff16611cb45760405162461bcd60e51b81526004016108a890613661565b611591816123af565b600054610100900460ff16611ce45760405162461bcd60e51b81526004016108a890613661565b6108bb828261240b565b600054610100900460ff16611d155760405162461bcd60e51b81526004016108a890613661565b6115918161249b565b600054610100900460ff16611d455760405162461bcd60e51b81526004016108a890613661565b611591816124c2565b6060610781612509565b60606006826005811115611d6e57611d6e612f97565b60ff161115611d7c57600080fd5b816005811115611d8e57611d8e612f97565b600003611db857505060408051808201909152600781526604342455f4343360cc1b602082015290565b816005811115611dca57611dca612f97565b600103611df457505060408051808201909152600781526621a122afa2a1a960c91b602082015290565b816005811115611e0657611e06612f97565b600203611e3157505060408051808201909152600881526721a122afa722a1a960c11b602082015290565b816005811115611e4357611e43612f97565b600303611e7157505060408051808201909152600b81526a4342455f4e4543525f485360a81b602082015290565b816005811115611e8357611e83612f97565b600403611eac57505060408051808201909152600681526521a122afa82960d11b602082015290565b50506040805180820190915260098152684342455f50525f485360b81b602082015290565b919050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290611f0b9033908990889088906004016136ac565b6020604051808303816000875af1925050508015611f46575060408051601f3d908101601f19168201909252611f43918101906136e9565b60015b611fa4573d808015611f74576040519150601f19603f3d011682016040523d82523d6000602084013e611f79565b606091505b508051600003611f9c576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b606081600003611fe95750506040805180820190915260018152600360fc1b602082015290565b8160005b81156120135780611ffd816133e4565b915061200c9050600a836133a2565b9150611fed565b6000816001600160401b0381111561202d5761202d612d03565b6040519080825280601f01601f191660200182016040528015612057576020820181803683370190505b5090505b8415611fba5761206c600183613706565b9150612079600a8661371d565b6120849060306133b6565b60f81b818381518110612099576120996133ce565b60200101906001600160f81b031916908160001a9053506120bb600a866133a2565b945061205b565b60606106ec82612518565b612710816020015161ffff16106120f65760405162461bcd60e51b81526004016108a89061363c565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601380546001600160b01b031916909217600160a01b9091021790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe419261216d929161308e565b60405180910390a150565b60006001600160e01b03198216637965db0b60e01b14806106ec57506301ffc9a760e01b6001600160e01b03198316146106ec565b60008260000182815481106121c4576121c46133ce565b9060005260206000200154905092915050565b6060600c80546114ef9061347a565b6108bb828260405180602001604052806000815250612686565b61220a828261107c565b6108bb57612222816001600160a01b031660146126ec565b61222d8360206126ec565b60405160200161223e929190613731565b60408051601f198184030181529082905262461bcd60e51b82526108a891600401612c9b565b600061167c8383612887565b600061167c838361297a565b600054610100900460ff166122a35760405162461bcd60e51b81526004016108a890613661565b600c6122af84826134f4565b50600d6122bc83826134f4565b50600e6122c982826134f4565b506122da633d96f4ff60e11b6129c9565b6122ea6380ac58cd60e01b6129c9565b6122fa63184371e560e31b6129c9565b610bc3635b5e139f60e01b6129c9565b600054610100900460ff166123315760405162461bcd60e51b81526004016108a890613661565b610fc0632929b36760e11b6129c9565b600054610100900460ff166123685760405162461bcd60e51b81526004016108a890613661565b610fc0631aa1577160e11b6129c9565b600054610100900460ff1661239f5760405162461bcd60e51b81526004016108a890613661565b610fc0630d169dbf60e31b6129c9565b600054610100900460ff166123d65760405162461bcd60e51b81526004016108a890613661565b600f8190556123eb6330f487b560e11b6129c9565b6123fb6380ac58cd60e01b6129c9565b61159163184371e560e31b6129c9565b600054610100900460ff166124325760405162461bcd60e51b81526004016108a890613661565b612442633a47bf5160e11b6129c9565b61245263152a902d60e11b6129c9565b61246263c69dbd8f60e01b6129c9565b61247263656cb66560e11b6129c9565b604080518082019091526001600160a01b038316815261ffff82166020820152610bc3816120cd565b600054610100900460ff166114a55760405162461bcd60e51b81526004016108a890613661565b600054610100900460ff166124e95760405162461bcd60e51b81526004016108a890613661565b6124f963b964efe960e01b6129c9565b610e9d630c934a3560e31b6129c9565b6060600d80546114ef9061347a565b60606125238261168d565b6125895760405162461bcd60e51b815260206004820152603160248201527f45524337323155524953746f726167653a2055524920717565727920666f72206044820152703737b732bc34b9ba32b73a103a37b5b2b760791b60648201526084016108a8565b600082815260126020526040812080546125a29061347a565b80601f01602080910402602001604051908101604052809291908181526020018280546125ce9061347a565b801561261b5780601f106125f05761010080835404028352916020019161261b565b820191906000526020600020905b8154815290600101906020018083116125fe57829003601f168201915b50505050509050600061263960408051602081019091526000815290565b9050805160000361264b575092915050565b81511561267d5780826040516020016126659291906135b3565b60405160208183030381529060405292505050919050565b611fba84612a47565b6126908383612ad7565b6001600160a01b0383163b15610bc3576004548281035b6126ba6000868380600101945086611ed6565b6126d7576040516368d2bf6b60e11b815260040160405180910390fd5b8181106126a7578160045414610ba057600080fd5b606060006126fb83600261336d565b6127069060026133b6565b6001600160401b0381111561271d5761271d612d03565b6040519080825280601f01601f191660200182016040528015612747576020820181803683370190505b509050600360fc1b81600081518110612762576127626133ce565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612791576127916133ce565b60200101906001600160f81b031916908160001a90535060006127b584600261336d565b6127c09060016133b6565b90505b6001811115612838576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106127f4576127f46133ce565b1a60f81b82828151811061280a5761280a6133ce565b60200101906001600160f81b031916908160001a90535060049490941c93612831816137a0565b90506127c3565b50831561167c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016108a8565b600081815260018301602052604081205480156129705760006128ab600183613706565b85549091506000906128bf90600190613706565b90508181146129245760008660000182815481106128df576128df6133ce565b9060005260206000200154905080876000018481548110612902576129026133ce565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612935576129356137b7565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506106ec565b60009150506106ec565b60008181526001830160205260408120546129c1575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556106ec565b5060006106ec565b6001600160e01b03198082169003612a225760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b60448201526064016108a8565b6001600160e01b0319166000908152600260205260409020805460ff19166001179055565b6060612a528261168d565b612a6f57604051630a14c4b560e41b815260040160405180910390fd5b6000612a8660408051602081019091526000815290565b90508051600003612aa6576040518060200160405280600081525061167c565b80612ab084612bbf565b604051602001612ac19291906135b3565b6040516020818303038152906040529392505050565b6004546000829003612afc5760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b038316600090815260096020526040902080546001600160401b018402019055612b33836001841460e11b61180f565b6000828152600860205260408120919091556001600160a01b03841690838301908390839060008051602061381f8339815191528180a4600183015b818114612b95578083600060008051602061381f833981519152600080a4600101612b6f565b5081600003612bb657604051622e076360e81b815260040160405180910390fd5b60045550505050565b604080516080019081905280825b600183039250600a81066030018353600a900480612bcd5750819003601f19909101908152919050565b6001600160e01b03198116811461159157600080fd5b600060208284031215612c1f57600080fd5b813561167c81612bf7565b600060208284031215612c3c57600080fd5b5035919050565b60005b83811015612c5e578181015183820152602001612c46565b838111156113555750506000910152565b60008151808452612c87816020860160208601612c43565b601f01601f19169290920160200192915050565b60208152600061167c6020830184612c6f565b6001600160a01b0391909116815260200190565b80356001600160a01b0381168114611ed157600080fd5b60008060408385031215612cec57600080fd5b612cf583612cc2565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60405161010081016001600160401b0381118282101715612d3c57612d3c612d03565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612d6a57612d6a612d03565b604052919050565b60006001600160401b03831115612d8b57612d8b612d03565b612d9e601f8401601f1916602001612d42565b9050828152838383011115612db257600080fd5b828260208301376000602084830101529392505050565b600082601f830112612dda57600080fd5b61167c83833560208501612d72565b60008060408385031215612dfc57600080fd5b8235915060208301356001600160401b03811115612e1957600080fd5b612e2585828601612dc9565b9150509250929050565b600080600060608486031215612e4457600080fd5b612e4d84612cc2565b9250612e5b60208501612cc2565b9150604084013590509250925092565b60008060408385031215612e7e57600080fd5b50508035926020909101359150565b600080600060608486031215612ea257600080fd5b612eab84612cc2565b9250602080850135925060408501356001600160401b0380821115612ecf57600080fd5b818701915087601f830112612ee357600080fd5b813581811115612ef557612ef5612d03565b8060051b612f04858201612d42565b918252838101850191858101908b841115612f1e57600080fd5b86860192505b83831015612f5a57823585811115612f3c5760008081fd5b612f4a8d89838a0101612dc9565b8352509186019190860190612f24565b809750505050505050509250925092565b60008060408385031215612f7e57600080fd5b82359150612f8e60208401612cc2565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b6020810160068310612fcf57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060208385031215612fe857600080fd5b82356001600160401b0380821115612fff57600080fd5b818501915085601f83011261301357600080fd5b81358181111561302257600080fd5b86602060608302850101111561303757600080fd5b60209290920196919550909350505050565b60006020828403121561305b57600080fd5b61167c82612cc2565b803560068110611ed157600080fd5b60006020828403121561308557600080fd5b61167c82613064565b6001600160a01b0392909216825261ffff16602082015260400190565b6000602082840312156130bd57600080fd5b81356001600160401b038111156130d357600080fd5b611fba84828501612dc9565b803561ffff81168114611ed157600080fd5b6000806040838503121561310457600080fd5b82356001600160401b038082111561311b57600080fd5b90840190610100828703121561313057600080fd5b613138612d19565b82358281111561314757600080fd5b61315388828601612dc9565b82525060208301358281111561316857600080fd5b61317488828601612dc9565b60208301525060408301358281111561318c57600080fd5b61319888828601612dc9565b604083015250606083013560608201526131b460808401612cc2565b60808201526131c560a084016130df565b60a08201526131d660c08401612cc2565b60c08201526131e760e08401613064565b60e08201529350612f8e91505060208401612cc2565b6000806040838503121561321057600080fd5b61321983612cc2565b91506020830135801515811461322e57600080fd5b809150509250929050565b6000806000806080858703121561324f57600080fd5b61325885612cc2565b935061326660208601612cc2565b92506040850135915060608501356001600160401b0381111561328857600080fd5b8501601f8101871361329957600080fd5b6132a887823560208401612d72565b91505092959194509250565b602080825282518282018190526000919060409081850190868401855b8281101561330857815180516001600160a01b031685528601516001600160601b03168685015292840192908501906001016132d1565b5091979650505050505050565b6000806040838503121561332857600080fd5b61333183612cc2565b9150612f8e60208401612cc2565b60006040828403121561335157600080fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561338757613387613357565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826133b1576133b161338c565b500490565b600082198211156133c9576133c9613357565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600182016133f6576133f6613357565b5060010190565b60006060828403121561340f57600080fd5b604051606081018181106001600160401b038211171561343157613431612d03565b6040528235815261344460208401612cc2565b6020820152613455604084016130df565b60408201529392505050565b60006020828403121561347357600080fd5b5051919050565b600181811c9082168061348e57607f821691505b60208210810361335157634e487b7160e01b600052602260045260246000fd5b601f821115610bc357600081815260208120601f850160051c810160208610156134d55750805b601f850160051c820191505b81811015610a55578281556001016134e1565b81516001600160401b0381111561350d5761350d612d03565b6135218161351b845461347a565b846134ae565b602080601f831160018114613556576000841561353e5750858301515b600019600386901b1c1916600185901b178555610a55565b600085815260208120601f198616915b8281101561358557888601518255948401946001909101908401613566565b50858210156135a35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600083516135c5818460208801612c43565b8351908301906135d9818360208801612c43565b01949350505050565b6000604082840312156135f457600080fd5b604051604081018181106001600160401b038211171561361657613616612d03565b60405261362283612cc2565b8152613630602084016130df565b60208201529392505050565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906136df90830184612c6f565b9695505050505050565b6000602082840312156136fb57600080fd5b815161167c81612bf7565b60008282101561371857613718613357565b500390565b60008261372c5761372c61338c565b500690565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613763816017850160208801612c43565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613794816028840160208801612c43565b01602801949350505050565b6000816137af576137af613357565b506000190190565b634e487b7160e01b600052603160045260246000fdfe61723a2f2f5f44396b4e3157724e576243713535425341475262544234625333763851415054596d42546853625833412f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212201ee0c4a2e468336b570314601f89641efa56f7221308e2a5089a49f53793a85e64736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/presets/ERC721ASimpleSalesCollection":{"address":{"1":"0xFADbF74931C8a1eD22e80b390524A83717161eAe","3":"0x4597efD61417c940aF99a73127c89187B63539F5","4":"0x15269eBCEa27d47Da7363C8Cc3FC34ddf589Aa8b","5":"0x355d2D09CF839D2CBBcdDf29198Fb3460ef0A3F5","25":"0x871075393948FdA247fAE1bc396543c2Ffa36F79","56":"0x99cfc48d63e4914A0f94d46B0FCF30bD8775067E","66":"0xB19105DfCC8CF80240e86aC7F2CFa9264D6167a8","97":"0x41fe70fC286f7E3e842DE6142a79C89fdCE3bace","137":"0x894479F8FaD3d61B7a1E3859329F813033BB605f","250":"0xC97b52877Aa14987198eA8cABaa678B566baadF1","280":"0xBc2695D48DB3cAA68afb993ada3A02F596193bc5","4002":"0xC97b52877Aa14987198eA8cABaa678B566baadF1","9000":"0x26aaa1F0Be85042402C97766EAC22357AeCCEbc6","42161":"0x76067992fE097Af6186Cf1157d5AF2e9d7429BFC","43113":"0x7cd170485d3540b87f5e4675c1068a60cc81CB89","43114":"0x8fa6C988b115B46Ed2910C53992864754316305f","421611":"0x40BD4F6B9D5d4CAF28909dC679146101099C5895","arbitrumOne":"0x76067992fE097Af6186Cf1157d5AF2e9d7429BFC","arbitrumTestnet":"0x40BD4F6B9D5d4CAF28909dC679146101099C5895","avalanche":"0x8fa6C988b115B46Ed2910C53992864754316305f","avalancheFujiTestnet":"0x7cd170485d3540b87f5e4675c1068a60cc81CB89","bsc":"0x99cfc48d63e4914A0f94d46B0FCF30bD8775067E","bscTestnet":"0x41fe70fC286f7E3e842DE6142a79C89fdCE3bace","cronos":"0x871075393948FdA247fAE1bc396543c2Ffa36F79","evmosTestnet":"0x26aaa1F0Be85042402C97766EAC22357AeCCEbc6","ftmTestnet":"0xC97b52877Aa14987198eA8cABaa678B566baadF1","goerli":"0x355d2D09CF839D2CBBcdDf29198Fb3460ef0A3F5","mainnet":"0xFADbF74931C8a1eD22e80b390524A83717161eAe","okcMainnet":"0xB19105DfCC8CF80240e86aC7F2CFa9264D6167a8","opera":"0xC97b52877Aa14987198eA8cABaa678B566baadF1","polygon":"0x894479F8FaD3d61B7a1E3859329F813033BB605f","rinkeby":"0x15269eBCEa27d47Da7363C8Cc3FC34ddf589Aa8b","ropsten":"0x4597efD61417c940aF99a73127c89187B63539F5","zksyncTestnet":"0xBc2695D48DB3cAA68afb993ada3A02F596193bc5"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721ASimpleSalesCollection","sourceName":"contracts/collections/ERC721A/presets/ERC721ASimpleSalesCollection.sol","abi":[{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"string","name":"placeholderURI","type":"string"},{"internalType":"string","name":"tokenURIPrefix","type":"string"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"internalType":"uint256","name":"preSalePrice","type":"uint256"},{"internalType":"uint256","name":"preSaleMaxMintPerWallet","type":"uint256"},{"internalType":"uint256","name":"publicSalePrice","type":"uint256"},{"internalType":"uint256","name":"publicSaleMaxMintPerTx","type":"uint256"},{"internalType":"address","name":"defaultRoyaltyAddress","type":"address"},{"internalType":"uint16","name":"defaultRoyaltyBps","type":"uint16"},{"internalType":"address","name":"proceedsRecipient","type":"address"},{"internalType":"address","name":"trustedForwarder","type":"address"},{"internalType":"enum LicenseVersion","name":"licenseVersion","type":"uint8"}],"internalType":"struct ERC721ASimpleSalesCollection.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"DefaultRoyaltySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"TokenRoyaltyRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"TokenRoyaltySet","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":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LOCKER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultRoyalty","outputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"filterUnlocked","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"freezeTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getRaribleV2Royalties","outputs":[{"components":[{"internalType":"address payable","name":"account","type":"address"},{"internalType":"uint96","name":"value","type":"uint96"}],"internalType":"struct LibPart.Part[]","name":"result","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenRoyaltiesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getTokenRoyaltyByIndex","outputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasRoleBasedLockableExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"string","name":"placeholderURI","type":"string"},{"internalType":"string","name":"tokenURIPrefix","type":"string"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"internalType":"uint256","name":"preSalePrice","type":"uint256"},{"internalType":"uint256","name":"preSaleMaxMintPerWallet","type":"uint256"},{"internalType":"uint256","name":"publicSalePrice","type":"uint256"},{"internalType":"uint256","name":"publicSaleMaxMintPerTx","type":"uint256"},{"internalType":"address","name":"defaultRoyaltyAddress","type":"address"},{"internalType":"uint16","name":"defaultRoyaltyBps","type":"uint16"},{"internalType":"address","name":"proceedsRecipient","type":"address"},{"internalType":"address","name":"trustedForwarder","type":"address"},{"internalType":"enum LicenseVersion","name":"licenseVersion","type":"uint8"}],"internalType":"struct ERC721ASimpleSalesCollection.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","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":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersion","outputs":[{"internalType":"enum LicenseVersion","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersionLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"locked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintPreSale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintPublicSale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onPreSaleAllowList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","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":[],"name":"placeholderURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleAllowlistMerkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleMaxMintPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSalePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleMaxMintPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSalePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"bytes32","name":"newRoot","type":"bytes32"}],"name":"setAllowlistMerkleRoot","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyalty","name":"royalty","type":"tuple"}],"name":"setDefaultRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum LicenseVersion","name":"_licenseVersion","type":"uint8"}],"name":"setLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setPlaceholderURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPreSaleMaxMintPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPreSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPublicSaleMaxMintPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPublicSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig[]","name":"royaltyConfigs","type":"tuple[]"}],"name":"setTokenRoyalties","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURIPrefix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURISuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"trustedForwarder","type":"address"}],"name":"setTrustedForwarder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"isActive","type":"bool"}],"name":"togglePreSaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isActive","type":"bool"}],"name":"togglePublicSaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIPrefix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURISuffix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b506040516200646138038062006461833981016040819052620000349162000e5c565b805160208201516004620000516200004b620000bd565b620000d9565b6002805482919060ff60c01b1916600160c01b83600581111562000079576200007962001011565b0217905550600590506200008e8382620010b5565b5060066200009d8282620010b5565b50600060035550506001601455620000b6813362000134565b50620011cc565b6000620000d46200035f60201b620027de1760201c565b905090565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620001555750600054600160ff909116105b8062000185575062000172306200039760201b620028001760201c565b15801562000185575060005460ff166001145b620001ee5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000212576000805461ff0019166101001790555b6200021f600083620003a6565b6200022a82620000d9565b6101808301516200023d906002620003b6565b6101c08301516200024e90620003ec565b8251602084015160408501516200026792919062000424565b62000281836060015184608001516200045b60201b60201c565b60a0830151620002919062000491565b6200029b620004c6565b620002a682620004fc565b620002b062000531565b620002ca8360c001518460e001516200056560201b60201c565b620002e6836101000151846101200151620005ac60201b60201c565b62000302836101400151846101600151620005e260201b60201c565b6101a0830151620003139062000618565b80156200035a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6023546000906001600160a01b0316330362000382575060131936013560601c90565b620000d46200064d60201b6200280f1760201c565b6001600160a01b03163b151590565b620003b2828262000651565b5050565b600054610100900460ff16620003e05760405162461bcd60e51b8152600401620001e59062001181565b620003b28282620006f7565b600054610100900460ff16620004165760405162461bcd60e51b8152600401620001e59062001181565b620004218162000783565b50565b600054610100900460ff166200044e5760405162461bcd60e51b8152600401620001e59062001181565b6200035a83838362000801565b600054610100900460ff16620004855760405162461bcd60e51b8152600401620001e59062001181565b620003b28282620008a0565b600054610100900460ff16620004bb5760405162461bcd60e51b8152600401620001e59062001181565b620004218162000938565b600054610100900460ff16620004f05760405162461bcd60e51b8152600401620001e59062001181565b620004fa6200099d565b565b600054610100900460ff16620005265760405162461bcd60e51b8152600401620001e59062001181565b6200042181620009d9565b600054610100900460ff166200055b5760405162461bcd60e51b8152600401620001e59062001181565b620004fa62000a41565b600054610100900460ff166200058f5760405162461bcd60e51b8152600401620001e59062001181565b620005a163209680f760e11b62000a78565b601591909155601655565b600054610100900460ff16620005d65760405162461bcd60e51b8152600401620001e59062001181565b620003b2828262000afc565b600054610100900460ff166200060c5760405162461bcd60e51b8152600401620001e59062001181565b620003b2828262000b43565b600054610100900460ff16620006425760405162461bcd60e51b8152600401620001e59062001181565b620004218162000be0565b3390565b6000828152601e602090815260408083206001600160a01b038516845290915290205460ff16620003b2576000828152601e602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620006b3620000bd565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600054610100900460ff16620007215760405162461bcd60e51b8152600401620001e59062001181565b6200073363ac2ba33360e01b62000a78565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b8360038111156200077a576200077a62001011565b02179055505050565b600054610100900460ff16620007ad5760405162461bcd60e51b8152600401620001e59062001181565b620007bf63b964efe960e01b62000a78565b620007d1630c934a3560e31b62000a78565b6002805482919060ff60c01b1916600160c01b836005811115620007f957620007f962001011565b021790555050565b600054610100900460ff166200082b5760405162461bcd60e51b8152600401620001e59062001181565b600b620008398482620010b5565b50600c620008488382620010b5565b50600d620008578282620010b5565b506200086a633d96f4ff60e11b62000a78565b6200087c6380ac58cd60e01b62000a78565b6200088e63184371e560e31b62000a78565b6200035a635b5e139f60e01b62000a78565b600054610100900460ff16620008ca5760405162461bcd60e51b8152600401620001e59062001181565b600e620008d88382620010b5565b50600f620008e78282620010b5565b50604080518082019091526005815264173539b7b760d91b6020820152601090620009139082620010b5565b5062000926631f2f406b60e01b62000a78565b620003b2635b5e139f60e01b62000a78565b600054610100900460ff16620009625760405162461bcd60e51b8152600401620001e59062001181565b6012819055620009796330f487b560e11b62000a78565b6200098b6380ac58cd60e01b62000a78565b6200042163184371e560e31b62000a78565b600054610100900460ff16620009c75760405162461bcd60e51b8152600401620001e59062001181565b620004fa631aa1577160e11b62000a78565b600054610100900460ff1662000a035760405162461bcd60e51b8152600401620001e59062001181565b62000a15631a056e7160e01b62000a78565b620004217f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a682620003a6565b600054610100900460ff1662000a6b5760405162461bcd60e51b8152600401620001e59062001181565b620004fa63714ad8e760e01b5b6001600160e01b0319808216900362000ad45760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e74657266616365206964000000006044820152606401620001e5565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b600054610100900460ff1662000b265760405162461bcd60e51b8152600401620001e59062001181565b62000b386317e0bac360e31b62000a78565b601a91909155601b55565b600054610100900460ff1662000b6d5760405162461bcd60e51b8152600401620001e59062001181565b62000b7f633a47bf5160e11b62000a78565b62000b9163152a902d60e11b62000a78565b62000ba363c69dbd8f60e01b62000a78565b62000bb563656cb66560e11b62000a78565b604080518082019091526001600160a01b038316815261ffff821660208201526200035a8162000c2c565b600054610100900460ff1662000c0a5760405162461bcd60e51b8152600401620001e59062001181565b602380546001600160a01b0319166001600160a01b0392909216919091179055565b612710816020015161ffff161062000c755760405162461bcd60e51b815260206004820152600b60248201526a496e76616c69642062707360a81b6044820152606401620001e5565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601f8054600160a01b9092026001600160b01b03199092169092171790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe419262000d0792916001600160a01b0392909216825261ffff16602082015260400190565b60405180910390a150565b634e487b7160e01b600052604160045260246000fd5b6040516101e081016001600160401b038111828210171562000d4e5762000d4e62000d12565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000d7f5762000d7f62000d12565b604052919050565b600082601f83011262000d9957600080fd5b81516001600160401b0381111562000db55762000db562000d12565b602062000dcb601f8301601f1916820162000d54565b828152858284870101111562000de057600080fd5b60005b8381101562000e0057858101830151828201840152820162000de3565b8381111562000e125760008385840101525b5095945050505050565b80516001600160a01b038116811462000e3457600080fd5b919050565b805161ffff8116811462000e3457600080fd5b80516006811062000e3457600080fd5b60006020828403121562000e6f57600080fd5b81516001600160401b038082111562000e8757600080fd5b908301906101e0828603121562000e9d57600080fd5b62000ea762000d28565b82518281111562000eb757600080fd5b62000ec58782860162000d87565b82525060208301518281111562000edb57600080fd5b62000ee98782860162000d87565b60208301525060408301518281111562000f0257600080fd5b62000f108782860162000d87565b60408301525060608301518281111562000f2957600080fd5b62000f378782860162000d87565b60608301525060808301518281111562000f5057600080fd5b62000f5e8782860162000d87565b60808301525060a0838101519082015260c0808401519082015260e0808401519082015261010080840151908201526101208084015190820152610140915062000faa82840162000e1c565b82820152610160915062000fc082840162000e39565b82820152610180915062000fd682840162000e1c565b828201526101a0915062000fec82840162000e1c565b828201526101c091506200100282840162000e4c565b91810191909152949350505050565b634e487b7160e01b600052602160045260246000fd5b600181811c908216806200103c57607f821691505b6020821081036200105d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035a57600081815260208120601f850160051c810160208610156200108c5750805b601f850160051c820191505b81811015620010ad5782815560010162001098565b505050505050565b81516001600160401b03811115620010d157620010d162000d12565b620010e981620010e2845462001027565b8462001063565b602080601f831160018114620011215760008415620011085750858301515b600019600386901b1c1916600185901b178555620010ad565b600085815260208120601f198616915b82811015620011525788860151825594840194600190910190840162001131565b5085821015620011715787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b61528580620011dc6000396000f3fe6080604052600436106104425760003560e01c806391d1485411610237578063c87b56dd11610135578063c87b56dd14610cbe578063cad96cca14610cde578063d539139314610d0b578063d547741f14610d2d578063d5abeb0114610d4d578063d79ff99d14610d63578063da74222814610d76578063da82b22714610d96578063dbbc853b14610dab578063dcbe353f14610dc0578063dd46706414610de0578063dd89c6fa14610e00578063de6d6d9614610e15578063e3b9a7e514610e35578063e757c17d14610e55578063e8a3d48514610e6b578063e985e9c514610e80578063ef60ceaf14610ec9578063f2fde38b14610ee9578063f362136714610f09578063f384702f14610f2b578063f74bbf5914610f45578063f95df41414610f65578063fe50b58714610f8557600080fd5b806391d1485414610a60578063938e3d7b14610a8057806395d89b4114610aa057806399e0dd7c14610ab55780639b6860c814610ad55780639e6b2c5b14610aeb578063a217fddf14610afe578063a22cb46514610b13578063a341793b14610b33578063a9852bfb14610b48578063aaeaca4814610b68578063af121f5414610b7e578063b27c6f2d14610b9f578063b45a3c0e14610bb5578063b6c693e514610bd5578063b88d4fde14610bef578063ba4695fd14610c0f578063bf9b7a5714610c24578063c0ac998314610c45578063c0bb38ff14610c5a578063c29de63014610c7a578063c723955a14610c94578063c7db289314610ca957600080fd5b806349561cb91161034457806349561cb9146107985780634f972f5f146107b957806350a5292f146107d95780635136dcc71461080757806356c022bb14610827578063572b6c05146108475780635d36598f146108675780636057e0ec146108875780636198e339146108a85780636352211e146108c857806364ed2913146108e85780636f8b44b01461090857806370a0823114610928578063714ad8e714610948578063715018a61461095c5780637313cba9146109715780637885fdc714610986578063791a2519146109c15780637d7eee42146109e15780637e98034214610a01578063837fe14014610a16578063859610c614610a2b5780638da5cb5b14610a4b57600080fd5b806301ffc9a7146104475780630653aca51461047c57806306fdde03146104cb578063081812fc146104ed578063095ea7b314610525578063167446071461054757806318160ddd1461055c5780631a056e711461057f57806323b872dd1461059f578063248a9ca3146105bf5780632a55205a146105df5780632bb684ad1461060d5780632c2330671461063a5780632d00b5871461065a5780632d8e85b0146106885780632f2ff15d146106a85780633542aee2146106c85780633574a2dd146106e857806336568abe146107085780633acf404d146107285780633c0e8f2c1461073e57806342842e0e1461075e578063464bd6401461077e575b600080fd5b34801561045357600080fd5b5061046761046236600461426c565b610fa5565b60405190151581526020015b60405180910390f35b34801561048857600080fd5b5061049c610497366004614289565b610fb6565b60408051825181526020808401516001600160a01b0316908201529181015161ffff1690820152606001610473565b3480156104d757600080fd5b506104e0611039565b60405161047391906142fa565b3480156104f957600080fd5b5061050d610508366004614289565b611048565b6040516001600160a01b039091168152602001610473565b34801561053157600080fd5b50610545610540366004614324565b61108c565b005b34801561055357600080fd5b5061054561112c565b34801561056857600080fd5b50600454600354035b604051908152602001610473565b34801561058b57600080fd5b5061054561059a366004614324565b611143565b3480156105ab57600080fd5b506105456105ba36600461434e565b6111ae565b3480156105cb57600080fd5b506105716105da366004614289565b611342565b3480156105eb57600080fd5b506105ff6105fa36600461438a565b611357565b6040516104739291906143ac565b34801561061957600080fd5b5061062d610628366004614409565b61141a565b604051610473919061444a565b34801561064657600080fd5b5061054561065536600461448e565b6114e4565b34801561066657600080fd5b5060025461067b90600160b01b900460ff1681565b60405161047391906144c5565b34801561069457600080fd5b506105456106a33660046144ed565b611543565b3480156106b457600080fd5b506105456106c336600461450a565b61155e565b3480156106d457600080fd5b506105456106e3366004614324565b61157f565b3480156106f457600080fd5b5061054561070336600461460a565b611587565b34801561071457600080fd5b5061054561072336600461450a565b61159b565b34801561073457600080fd5b5061057160175481565b34801561074a57600080fd5b50610545610759366004614289565b611625565b34801561076a57600080fd5b5061054561077936600461434e565b611632565b34801561078a57600080fd5b506018546104679060ff1681565b3480156107a457600080fd5b5060025461046790600160b81b900460ff1681565b3480156107c557600080fd5b506105456107d43660046144ed565b61164d565b3480156107e557600080fd5b506002546107fa90600160c01b900460ff1681565b604051610473919061463e565b34801561081357600080fd5b50610545610822366004614652565b611668565b34801561083357600080fd5b5060235461050d906001600160a01b031681565b34801561085357600080fd5b506104676108623660046146c6565b6116cb565b34801561087357600080fd5b50610545610882366004614409565b6116df565b34801561089357600080fd5b5060025461046790600160a01b900460ff1681565b3480156108b457600080fd5b506105456108c3366004614289565b611782565b3480156108d457600080fd5b5061050d6108e3366004614289565b6117ee565b3480156108f457600080fd5b506105456109033660046146f0565b6117f9565b34801561091457600080fd5b50610545610923366004614289565b611871565b34801561093457600080fd5b506105716109433660046146c6565b61190d565b34801561095457600080fd5b506001610467565b34801561096857600080fd5b5061054561195b565b34801561097d57600080fd5b506104e061196f565b34801561099257600080fd5b50601f546109b3906001600160a01b03811690600160a01b900461ffff1682565b60405161047392919061470b565b3480156109cd57600080fd5b506105456109dc366004614289565b611a01565b3480156109ed57600080fd5b506105456109fc366004614289565b611a0e565b348015610a0d57600080fd5b50610571611a1b565b348015610a2257600080fd5b50610545611a27565b348015610a3757600080fd5b50610545610a46366004614409565b611a6e565b348015610a5757600080fd5b5061050d611b07565b348015610a6c57600080fd5b50610467610a7b36600461450a565b611b1c565b348015610a8c57600080fd5b50610545610a9b36600461460a565b611b47565b348015610aac57600080fd5b506104e0611b5b565b348015610ac157600080fd5b50610545610ad036600461460a565b611b65565b348015610ae157600080fd5b50610571601a5481565b610545610af9366004614728565b611b9c565b348015610b0a57600080fd5b50610571600081565b348015610b1f57600080fd5b50610545610b2e366004614773565b611d67565b348015610b3f57600080fd5b506104e0611dfc565b348015610b5457600080fd5b50610545610b6336600461460a565b611e15565b348015610b7457600080fd5b5061057160165481565b348015610b8a57600080fd5b5060025461046790600160a81b900460ff1681565b348015610bab57600080fd5b50610571601b5481565b348015610bc157600080fd5b50610467610bd0366004614289565b611e4c565b348015610be157600080fd5b50601c546104679060ff1681565b348015610bfb57600080fd5b50610545610c0a3660046147aa565b611e59565b348015610c1b57600080fd5b50610545611ea3565b348015610c3057600080fd5b5060025461046790600160c81b900460ff1681565b348015610c5157600080fd5b506104e0611eba565b348015610c6657600080fd5b50610545610c753660046146c6565b611ec9565b348015610c8657600080fd5b506011546104679060ff1681565b348015610ca057600080fd5b50610545611f1d565b348015610cb557600080fd5b506104e0611f7c565b348015610cca57600080fd5b506104e0610cd9366004614289565b611fe3565b348015610cea57600080fd5b50610cfe610cf9366004614289565b611fee565b6040516104739190614825565b348015610d1757600080fd5b506105716000805160206151f083398151915281565b348015610d3957600080fd5b50610545610d4836600461450a565b6120a9565b348015610d5957600080fd5b5061057160125481565b610545610d71366004614324565b6120c5565b348015610d8257600080fd5b50610545610d913660046146c6565b6121bd565b348015610da257600080fd5b506105456121e7565b348015610db757600080fd5b506104e061222d565b348015610dcc57600080fd5b5060025461050d906001600160a01b031681565b348015610dec57600080fd5b50610545610dfb366004614289565b61223c565b348015610e0c57600080fd5b506105456122a0565b348015610e2157600080fd5b50610545610e30366004614886565b6122bd565b348015610e4157600080fd5b50610467610e503660046148f1565b6124f5565b348015610e6157600080fd5b5061057160155481565b348015610e7757600080fd5b506104e0612543565b348015610e8c57600080fd5b50610467610e9b36600461492a565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205460ff1690565b348015610ed557600080fd5b50610545610ee4366004614954565b612552565b348015610ef557600080fd5b50610545610f043660046146c6565b612574565b348015610f1557600080fd5b5061057160008051602061523083398151915281565b348015610f3757600080fd5b506013546104679060ff1681565b348015610f5157600080fd5b50610545610f60366004614289565b6125ea565b348015610f7157600080fd5b50610545610f80366004614289565b6125f7565b348015610f9157600080fd5b50610545610fa036600461497e565b612604565b6000610fb082612813565b92915050565b6040805160608101825260008082526020820181905291810182905290610fde60218461284f565b600081815260208080526040918290208251808401845290546001600160a01b03808216835261ffff600160a01b90920482168385019081528551606081018752968752925116928501929092525116908201529392505050565b6060611043612862565b905090565b600061105382612871565b611070576040516333d1c03960e21b815260040160405180910390fd5b506000908152600960205260409020546001600160a01b031690565b6000611097826117ee565b9050336001600160a01b038216146110d0576110b38133610e9b565b6110d0576040516367d9dca160e11b815260040160405180910390fd5b60008281526009602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b611134612899565b6013805460ff19166001179055565b61115d6000805160206151f0833981519152610a7b612908565b6111a05760405162461bcd60e51b815260206004820152600f60248201526e4e4f545f4d494e5445525f524f4c4560881b60448201526064015b60405180910390fd5b6111aa8282612912565b5050565b60006111b982612976565b9050836001600160a01b0316816001600160a01b0316146111ec5760405162a1148160e81b815260040160405180910390fd5b60008281526009602052604090208054338082146001600160a01b038816909114176112395761121c8633610e9b565b61123957604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03851661126057604051633a954ecd60e21b815260040160405180910390fd5b61126d86868660016129dd565b801561127857600082555b6001600160a01b038681166000908152600860205260408082208054600019019055918716815220805460010190556112b585600160e11b6129e9565b600085815260076020526040812091909155600160e11b8416900361130a576001840160008181526007602052604081205490036113085760035481146113085760008181526007602052604090208490555b505b83856001600160a01b0316876001600160a01b031660008051602061521083398151915260405160405180910390a45b505050505050565b6000908152601e602052604090206001015490565b600082815260208052604081205481906001600160a01b0316156113ba5760008481526020805260409020546001600160a01b03811690612710906113a790600160a01b900461ffff1686614b33565b6113b19190614b68565b91509150611413565b601f546001600160a01b0316158015906113e05750601f54600160a01b900461ffff1615155b1561140c57601f546001600160a01b03811690612710906113a790600160a01b900461ffff1686614b33565b5060009050805b9250929050565b60606000826001600160401b0381111561143657611436614536565b60405190808252806020026020018201604052801561145f578160200160208202803683370190505b50905060005b838110156114dc5761148e85858381811061148257611482614b7c565b90506020020135611e4c565b6114ca578484828181106114a4576114a4614b7c565b905060200201358282815181106114bd576114bd614b7c565b6020026020010181815250505b806114d481614b92565b915050611465565b509392505050565b6114ec612899565b600254600160b81b900460ff16156115165760405162461bcd60e51b815260040161119790614bab565b6002805482919060ff60b01b1916600160b01b83600381111561153b5761153b6144af565b021790555050565b61154b612899565b601c805460ff1916911515919091179055565b61156782611342565b611570816129fe565b61157a8383612a0f565b505050565b6111a0612899565b61158f612899565b600e6111aa8282614c45565b6115a3612908565b6001600160a01b0316816001600160a01b03161461161b5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401611197565b6111aa8282612a96565b61162d612899565b601b55565b61157a83838360405180602001604052806000815250611e59565b611655612899565b6018805460ff1916911515919091179055565b611670612899565b6111aa8282808060200260200160405190810160405280939291908181526020016000905b828210156116c1576116b260608302860136819003810190614d04565b81526020019060010190611695565b5050505050612b1b565b6023546001600160a01b0391821691161490565b6002601454036117015760405162461bcd60e51b815260040161119790614d68565b600260145561171e60008051602061523083398151915233611b1c565b61173a5760405162461bcd60e51b815260040161119790614d9f565b60005b818110156117785761176683838381811061175a5761175a614b7c565b90506020020135612cbf565b8061177081614b92565b91505061173d565b5050600160145550565b6002601454036117a45760405162461bcd60e51b815260040161119790614d68565b60026014556117c160008051602061523083398151915233611b1c565b6117dd5760405162461bcd60e51b815260040161119790614dd1565b6117e681612cbf565b506001601455565b6000610fb082612976565b611801612899565b600254600160c81b900460ff161561184c5760405162461bcd60e51b815260206004820152600e60248201526d131250d15394d157d313d0d2d15160921b6044820152606401611197565b6002805482919060ff60c01b1916600160c01b83600581111561153b5761153b6144af565b611879612899565b60135460ff16156118be5760405162461bcd60e51b815260206004820152600f60248201526e2120a9a2afaaa924afa32927ad22a760891b6044820152606401611197565b600454600354038110156119085760405162461bcd60e51b81526020600482015260116024820152704c4f5745525f5448414e5f535550504c5960781b6044820152606401611197565b601255565b60006001600160a01b038216611936576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600860205260409020546001600160401b031690565b611963612899565b61196d6000612d26565b565b6060600e805461197e90614bcb565b80601f01602080910402602001604051908101604052809291908181526020018280546119aa90614bcb565b80156119f75780601f106119cc576101008083540402835291602001916119f7565b820191906000526020600020905b8154815290600101906020018083116119da57829003601f168201915b5050505050905090565b611a09612899565b601a55565b611a16612899565b601555565b60006110436021612d81565b611a2f612899565b600254600160a01b900460ff1615611a595760405162461bcd60e51b815260040161119790614bab565b6002805460ff60a01b1916600160a01b179055565b600260145403611a905760405162461bcd60e51b815260040161119790614d68565b6002601455611aad60008051602061523083398151915233611b1c565b611ac95760405162461bcd60e51b815260040161119790614d9f565b60005b8181101561177857611af5838383818110611ae957611ae9614b7c565b90506020020135612d8b565b80611aff81614b92565b915050611acc565b6000546201000090046001600160a01b031690565b6000918252601e602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611b4f612899565b600d6111aa8282614c45565b6060611043612dd5565b611b6d612899565b60115460ff1615611b905760405162461bcd60e51b815260040161119790614dfa565b600f6111aa8282614c45565b600260145403611bbe5760405162461bcd60e51b815260040161119790614d68565b600260145560185460ff16611c025760405162461bcd60e51b815260206004820152600a6024820152694e4f545f41435449564560b01b6044820152606401611197565b6000611c0c612908565b9050611c57838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506017549150611c52905084612de4565b612e1e565b611c915760405162461bcd60e51b815260206004820152600b60248201526a2ba927a723afa82927a7a360a91b6044820152606401611197565b6016546001600160a01b038216600090815260196020526040902054611cb8908690614e1a565b1115611cf75760405162461bcd60e51b815260206004820152600e60248201526d14149157d4d0531157d31253525560921b6044820152606401611197565b3484601554611d069190614b33565b1115611d245760405162461bcd60e51b815260040161119790614e32565b6001600160a01b03811660009081526019602052604081208054869290611d4c908490614e1a565b90915550611d5c90508185612912565b505060016014555050565b336001600160a01b03831603611d905760405163b06307db60e01b815260040160405180910390fd5b336000818152600a602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60025460609061104390600160c01b900460ff16612e34565b611e1d612899565b60115460ff1615611e405760405162461bcd60e51b815260040161119790614dfa565b60106111aa8282614c45565b6000610fb0601d83612fb2565b611e648484846111ae565b6001600160a01b0383163b15611e9d57611e8084848484612fd6565b611e9d576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b611eab612899565b6011805460ff19166001179055565b6060600f805461197e90614bcb565b611ed1612899565b600254600160a01b900460ff1615611efb5760405162461bcd60e51b815260040161119790614bab565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b611f25612899565b600254600160b81b900460ff1615611f675760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401611197565b6002805460ff60b81b1916600160b81b179055565b60606040518060600160405280603181526020016151bf60319139600254611fbe90600160c01b900460ff166005811115611fb957611fb96144af565b6130c1565b604051602001611fcf929190614e5f565b604051602081830303815290604052905090565b6060610fb0826131c1565b604080516001808252818301909252606091816020015b6040805180820190915260008082526020820152815260200190600190039081612005575050601f5481519192506001600160a01b031690829060009061204e5761204e614b7c565b60209081029190910101516001600160a01b03919091169052601f548151600160a01b90910461ffff1690829060009061208a5761208a614b7c565b6020908102919091018101516001600160601b03909216910152919050565b6120b282611342565b6120bb816129fe565b61157a8383612a96565b6002601454036120e75760405162461bcd60e51b815260040161119790614d68565b6002601455601c5460ff166121375760405162461bcd60e51b81526020600482015260166024820152755055424c49435f53414c455f4e4f545f41435449564560501b6044820152606401611197565b601b5481111561217d5760405162461bcd60e51b8152602060048201526011602482015270141550931250d7d4d0531157d312535255607a1b6044820152606401611197565b3481601a5461218c9190614b33565b11156121aa5760405162461bcd60e51b815260040161119790614e32565b6121b48282612912565b50506001601455565b6121c5612899565b602380546001600160a01b0319166001600160a01b0392909216919091179055565b6121ef612899565b6002805460ff60a81b1916600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b60606010805461197e90614bcb565b60026014540361225e5760405162461bcd60e51b815260040161119790614d68565b600260145561227b60008051602061523083398151915233611b1c565b6122975760405162461bcd60e51b815260040161119790614dd1565b6117e681612d8b565b6122a8612899565b6002805460ff60c81b1916600160c81b179055565b6122c63361329d565b6002546001600160a01b03166123165760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401611197565b600254600160a81b900460ff16156123705760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401611197565b60005b838110156124b157600085858381811061238f5761238f614b7c565b90506020020160208101906123a491906146c6565b6001600160a01b0316036123e7576123e28383838181106123c7576123c7614b7c565b6002546001600160a01b031692602090910201359050613422565b61249f565b8484828181106123f9576123f9614b7c565b905060200201602081019061240e91906146c6565b6002546001600160a01b039182169163a9059cbb911685858581811061243657612436614b7c565b905060200201356040518363ffffffff1660e01b815260040161245a9291906143ac565b6020604051808303816000875af1158015612479573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249d9190614e8e565b505b806124a981614b92565b915050612373565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a5848484846040516124e79493929190614eab565b60405180910390a150505050565b600061253b838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506017549150611c52905087612de4565b949350505050565b6060600d805461197e90614bcb565b61255a612899565b61257161256c36839003830183614f2d565b613538565b50565b61257c612899565b6001600160a01b0381166125e15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611197565b61257181612d26565b6125f2612899565b601655565b6125ff612899565b601755565b600054610100900460ff16158080156126245750600054600160ff909116105b80612645575061263330612800565b158015612645575060005460ff166001145b6126a85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611197565b6000805460ff1916600117905580156126cb576000805461ff0019166101001790555b6126d66000836135e3565b6126df82612d26565b6126ef83610180015160026135ed565b6126fd836101c0015161361e565b61271483600001518460200151856040015161364e565b61272683606001518460800151613680565b6127338360a001516136b1565b61273b6136e1565b61274482613710565b61274c613740565b61275e8360c001518460e0015161376f565b6127728361010001518461012001516137b1565b6127868361014001518461016001516137e2565b612794836101a00151613813565b801561157a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60006127e9336116cb565b156127fb575060131936013560601c90565b503390565b6001600160a01b03163b151590565b3390565b60006301ffc9a760e01b6001600160e01b031983161480610fb05750506001600160e01b03191660009081526001602052604090205460ff1690565b600061285b8383613843565b9392505050565b6060600b805461197e90614bcb565b600060035482108015610fb0575050600090815260076020526040902054600160e01b161590565b6128a1612908565b6001600160a01b03166128b2611b07565b6001600160a01b03161461196d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611197565b60006110436127de565b601254816129236004546003540390565b61292d9190614e1a565b111561296c5760405162461bcd60e51b815260206004820152600e60248201526d455843454544535f535550504c5960901b6044820152606401611197565b6111aa828261386d565b6000816003548110156129c45760008181526007602052604081205490600160e01b821690036129c2575b8060000361285b5750600019016000818152600760205260409020546129a1565b505b604051636f96cda160e11b815260040160405180910390fd5b611e9d84848484613887565b4260a01b176001600160a01b03919091161790565b61257181612a0a612908565b6138b4565b612a198282611b1c565b6111aa576000828152601e602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612a52612908565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b612aa08282611b1c565b156111aa576000828152601e602090815260408083206001600160a01b03851684529091529020805460ff19169055612ad7612908565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b60005b81518110156111aa576000828281518110612b3b57612b3b614b7c565b60200260200101519050612710816040015161ffff1610612b6e5760405162461bcd60e51b815260040161119790614f87565b60208101516001600160a01b0316612be65780516000908152602080526040902080546001600160b01b03191690558051612bab90602190613918565b5080516040519081527fa2870857763bd9ae76c957f869f16b31c18dd3bb4c7b4d3a4496dc5c57c657f99060200160405180910390a1612cac565b6040805180820182526020808401516001600160a01b0390811683528484015161ffff9081168385019081528651600090815293805294909220925183549451909216600160a01b026001600160b01b03199094169116179190911790558051612c5290602190613924565b50805160208083015160408085015181519485526001600160a01b039092169284019290925261ffff1682820152517f389b70fb0887f01e83784eb1c4c589f740eca53b00ed0f45e41db5d079719abb9181900360600190a15b5080612cb781614b92565b915050612b1e565b612cca601d82612fb2565b612d035760405162461bcd60e51b815260206004820152600a6024820152691393d517d313d0d2d15160b21b6044820152606401611197565b600881901c6000908152601d602052604090208054600160ff84161b1916905550565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6000610fb0825490565b612d96601d82612fb2565b15612db35760405162461bcd60e51b815260040161119790614bab565b600881901c6000908152601d602052604090208054600160ff84161b17905550565b6060600c805461197e90614bcb565b6040516001600160601b0319606083901b166020820152600090603401604051602081830303815290604052805190602001209050919050565b600082612e2b8584613930565b14949350505050565b60606006826005811115612e4a57612e4a6144af565b60ff161115612e5857600080fd5b816005811115612e6a57612e6a6144af565b600003612e9457505060408051808201909152600781526604342455f4343360cc1b602082015290565b816005811115612ea657612ea66144af565b600103612ed057505060408051808201909152600781526621a122afa2a1a960c91b602082015290565b816005811115612ee257612ee26144af565b600203612f0d57505060408051808201909152600881526721a122afa722a1a960c11b602082015290565b816005811115612f1f57612f1f6144af565b600303612f4d57505060408051808201909152600b81526a4342455f4e4543525f485360a81b602082015290565b816005811115612f5f57612f5f6144af565b600403612f8857505060408051808201909152600681526521a122afa82960d11b602082015290565b50506040805180820190915260098152684342455f50525f485360b81b602082015290565b919050565b600881901c600090815260208390526040902054600160ff83161b16151592915050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a029061300b903390899088908890600401614fac565b6020604051808303816000875af1925050508015613046575060408051601f3d908101601f1916820190925261304391810190614fe9565b60015b6130a4573d808015613074576040519150601f19603f3d011682016040523d82523d6000602084013e613079565b606091505b50805160000361309c576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b6060816000036130e85750506040805180820190915260018152600360fc1b602082015290565b8160005b811561311257806130fc81614b92565b915061310b9050600a83614b68565b91506130ec565b6000816001600160401b0381111561312c5761312c614536565b6040519080825280601f01601f191660200182016040528015613156576020820181803683370190505b5090505b841561253b5761316b600183615006565b9150613178600a8661501d565b613183906030614e1a565b60f81b81838151811061319857613198614b7c565b60200101906001600160f81b031916908160001a9053506131ba600a86614b68565b945061315a565b60606000600f80546131d290614bcb565b90501161326957600e80546131e690614bcb565b80601f016020809104026020016040519081016040528092919081815260200182805461321290614bcb565b801561325f5780601f106132345761010080835404028352916020019161325f565b820191906000526020600020905b81548152906001019060200180831161324257829003601f168201915b5050505050610fb0565b600f613274836130c1565b6010604051602001613288939291906150a4565b60405160208183030381529060405292915050565b6003600254600160b01b900460ff1660038111156132bd576132bd6144af565b036132fc5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401611197565b60028054600160b01b900460ff16600381111561331b5761331b6144af565b036133235750565b6001600254600160b01b900460ff166003811115613343576133436144af565b0361339f576002546001600160a01b038281169116146125715760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401611197565b6000600254600160b01b900460ff1660038111156133bf576133bf6144af565b0361257157806001600160a01b03166133d6611b07565b6001600160a01b0316146125715760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401611197565b804710156134725760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611197565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146134bf576040519150601f19603f3d011682016040523d82523d6000602084013e6134c4565b606091505b505090508061157a5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401611197565b612710816020015161ffff16106135615760405162461bcd60e51b815260040161119790614f87565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601f80546001600160b01b031916909217600160a01b9091021790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe41926135d8929161470b565b60405180910390a150565b6111aa8282612a0f565b600054610100900460ff166136145760405162461bcd60e51b8152600401611197906150d7565b6111aa8282613975565b600054610100900460ff166136455760405162461bcd60e51b8152600401611197906150d7565b612571816139f9565b600054610100900460ff166136755760405162461bcd60e51b8152600401611197906150d7565b61157a838383613a40565b600054610100900460ff166136a75760405162461bcd60e51b8152600401611197906150d7565b6111aa8282613ace565b600054610100900460ff166136d85760405162461bcd60e51b8152600401611197906150d7565b61257181613b59565b600054610100900460ff166137085760405162461bcd60e51b8152600401611197906150d7565b61196d613bb5565b600054610100900460ff166137375760405162461bcd60e51b8152600401611197906150d7565b61257181613bec565b600054610100900460ff166137675760405162461bcd60e51b8152600401611197906150d7565b61196d613c3b565b600054610100900460ff166137965760405162461bcd60e51b8152600401611197906150d7565b6137a663209680f760e11b613c6e565b601591909155601655565b600054610100900460ff166137d85760405162461bcd60e51b8152600401611197906150d7565b6111aa8282613cef565b600054610100900460ff166138095760405162461bcd60e51b8152600401611197906150d7565b6111aa8282613d31565b600054610100900460ff1661383a5760405162461bcd60e51b8152600401611197906150d7565b61257181613dc1565b600082600001828154811061385a5761385a614b7c565b9060005260206000200154905092915050565b6111aa828260405180602001604052806000815250613de8565b613892601d83612fb2565b156138af5760405162461bcd60e51b815260040161119790614bab565b611e9d565b6138be8282611b1c565b6111aa576138d6816001600160a01b03166014613e55565b6138e1836020613e55565b6040516020016138f2929190615122565b60408051601f198184030181529082905262461bcd60e51b8252611197916004016142fa565b600061285b8383613ff0565b600061285b83836140e3565b600081815b84518110156114dc576139618286838151811061395457613954614b7c565b6020026020010151614132565b91508061396d81614b92565b915050613935565b600054610100900460ff1661399c5760405162461bcd60e51b8152600401611197906150d7565b6139ac63ac2ba33360e01b613c6e565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b8360038111156139f0576139f06144af565b02179055505050565b600054610100900460ff16613a205760405162461bcd60e51b8152600401611197906150d7565b613a3063b964efe960e01b613c6e565b61184c630c934a3560e31b613c6e565b600054610100900460ff16613a675760405162461bcd60e51b8152600401611197906150d7565b600b613a738482614c45565b50600c613a808382614c45565b50600d613a8d8282614c45565b50613a9e633d96f4ff60e11b613c6e565b613aae6380ac58cd60e01b613c6e565b613abe63184371e560e31b613c6e565b61157a635b5e139f60e01b613c6e565b600054610100900460ff16613af55760405162461bcd60e51b8152600401611197906150d7565b600e613b018382614c45565b50600f613b0e8282614c45565b50604080518082019091526005815264173539b7b760d91b6020820152601090613b389082614c45565b50613b49631f2f406b60e01b613c6e565b6111aa635b5e139f60e01b613c6e565b600054610100900460ff16613b805760405162461bcd60e51b8152600401611197906150d7565b6012819055613b956330f487b560e11b613c6e565b613ba56380ac58cd60e01b613c6e565b61257163184371e560e31b613c6e565b600054610100900460ff16613bdc5760405162461bcd60e51b8152600401611197906150d7565b61196d631aa1577160e11b613c6e565b600054610100900460ff16613c135760405162461bcd60e51b8152600401611197906150d7565b613c23631a056e7160e01b613c6e565b6125716000805160206151f0833981519152826135e3565b600054610100900460ff16613c625760405162461bcd60e51b8152600401611197906150d7565b61196d63714ad8e760e01b5b6001600160e01b03198082169003613cc75760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401611197565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b600054610100900460ff16613d165760405162461bcd60e51b8152600401611197906150d7565b613d266317e0bac360e31b613c6e565b601a91909155601b55565b600054610100900460ff16613d585760405162461bcd60e51b8152600401611197906150d7565b613d68633a47bf5160e11b613c6e565b613d7863152a902d60e11b613c6e565b613d8863c69dbd8f60e01b613c6e565b613d9863656cb66560e11b613c6e565b604080518082019091526001600160a01b038316815261ffff8216602082015261157a81613538565b600054610100900460ff166121c55760405162461bcd60e51b8152600401611197906150d7565b613df28383614161565b6001600160a01b0383163b1561157a576003548281035b613e1c6000868380600101945086612fd6565b613e39576040516368d2bf6b60e11b815260040160405180910390fd5b818110613e09578160035414613e4e57600080fd5b5050505050565b60606000613e64836002614b33565b613e6f906002614e1a565b6001600160401b03811115613e8657613e86614536565b6040519080825280601f01601f191660200182016040528015613eb0576020820181803683370190505b509050600360fc1b81600081518110613ecb57613ecb614b7c565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613efa57613efa614b7c565b60200101906001600160f81b031916908160001a9053506000613f1e846002614b33565b613f29906001614e1a565b90505b6001811115613fa1576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613f5d57613f5d614b7c565b1a60f81b828281518110613f7357613f73614b7c565b60200101906001600160f81b031916908160001a90535060049490941c93613f9a81615191565b9050613f2c565b50831561285b5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401611197565b600081815260018301602052604081205480156140d9576000614014600183615006565b855490915060009061402890600190615006565b905081811461408d57600086600001828154811061404857614048614b7c565b906000526020600020015490508087600001848154811061406b5761406b614b7c565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061409e5761409e6151a8565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610fb0565b6000915050610fb0565b600081815260018301602052604081205461412a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610fb0565b506000610fb0565b600081831061414e57600082815260208490526040902061285b565b600083815260208390526040902061285b565b60035460008290036141865760405163b562e8dd60e01b815260040160405180910390fd5b61419360008483856129dd565b6001600160a01b038316600090815260086020526040902080546001600160401b0184020190556141ca836001841460e11b6129e9565b6000828152600760205260408120919091556001600160a01b0384169083830190839083906000805160206152108339815191528180a4600183015b81811461422c5780836000600080516020615210833981519152600080a4600101614206565b508160000361424d57604051622e076360e81b815260040160405180910390fd5b60035550505050565b6001600160e01b03198116811461257157600080fd5b60006020828403121561427e57600080fd5b813561285b81614256565b60006020828403121561429b57600080fd5b5035919050565b60005b838110156142bd5781810151838201526020016142a5565b83811115611e9d5750506000910152565b600081518084526142e68160208601602086016142a2565b601f01601f19169290920160200192915050565b60208152600061285b60208301846142ce565b80356001600160a01b0381168114612fad57600080fd5b6000806040838503121561433757600080fd5b6143408361430d565b946020939093013593505050565b60008060006060848603121561436357600080fd5b61436c8461430d565b925061437a6020850161430d565b9150604084013590509250925092565b6000806040838503121561439d57600080fd5b50508035926020909101359150565b6001600160a01b03929092168252602082015260400190565b60008083601f8401126143d757600080fd5b5081356001600160401b038111156143ee57600080fd5b6020830191508360208260051b850101111561141357600080fd5b6000806020838503121561441c57600080fd5b82356001600160401b0381111561443257600080fd5b61443e858286016143c5565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b8181101561448257835183529284019291840191600101614466565b50909695505050505050565b6000602082840312156144a057600080fd5b81356004811061285b57600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106144d9576144d96144af565b91905290565b801515811461257157600080fd5b6000602082840312156144ff57600080fd5b813561285b816144df565b6000806040838503121561451d57600080fd5b8235915061452d6020840161430d565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6040516101e081016001600160401b038111828210171561456f5761456f614536565b60405290565b60006001600160401b038084111561458f5761458f614536565b604051601f8501601f19908116603f011681019082821181831017156145b7576145b7614536565b816040528093508581528686860111156145d057600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126145fb57600080fd5b61285b83833560208501614575565b60006020828403121561461c57600080fd5b81356001600160401b0381111561463257600080fd5b61253b848285016145ea565b60208101600683106144d9576144d96144af565b6000806020838503121561466557600080fd5b82356001600160401b038082111561467c57600080fd5b818501915085601f83011261469057600080fd5b81358181111561469f57600080fd5b8660206060830285010111156146b457600080fd5b60209290920196919550909350505050565b6000602082840312156146d857600080fd5b61285b8261430d565b803560068110612fad57600080fd5b60006020828403121561470257600080fd5b61285b826146e1565b6001600160a01b0392909216825261ffff16602082015260400190565b60008060006040848603121561473d57600080fd5b8335925060208401356001600160401b0381111561475a57600080fd5b614766868287016143c5565b9497909650939450505050565b6000806040838503121561478657600080fd5b61478f8361430d565b9150602083013561479f816144df565b809150509250929050565b600080600080608085870312156147c057600080fd5b6147c98561430d565b93506147d76020860161430d565b92506040850135915060608501356001600160401b038111156147f957600080fd5b8501601f8101871361480a57600080fd5b61481987823560208401614575565b91505092959194509250565b602080825282518282018190526000919060409081850190868401855b8281101561487957815180516001600160a01b031685528601516001600160601b0316868501529284019290850190600101614842565b5091979650505050505050565b6000806000806040858703121561489c57600080fd5b84356001600160401b03808211156148b357600080fd5b6148bf888389016143c5565b909650945060208701359150808211156148d857600080fd5b506148e5878288016143c5565b95989497509550505050565b60008060006040848603121561490657600080fd5b61490f8461430d565b925060208401356001600160401b0381111561475a57600080fd5b6000806040838503121561493d57600080fd5b6149468361430d565b915061452d6020840161430d565b60006040828403121561496657600080fd5b50919050565b803561ffff81168114612fad57600080fd5b6000806040838503121561499157600080fd5b82356001600160401b03808211156149a857600080fd5b908401906101e082870312156149bd57600080fd5b6149c561454c565b8235828111156149d457600080fd5b6149e0888286016145ea565b8252506020830135828111156149f557600080fd5b614a01888286016145ea565b602083015250604083013582811115614a1957600080fd5b614a25888286016145ea565b604083015250606083013582811115614a3d57600080fd5b614a49888286016145ea565b606083015250608083013582811115614a6157600080fd5b614a6d888286016145ea565b60808301525060a0838101359082015260c0808401359082015260e08084013590820152610100808401359082015261012080840135908201526101409150614ab782840161430d565b828201526101609150614acb82840161496c565b828201526101809150614adf82840161430d565b828201526101a09150614af382840161430d565b828201526101c09150614b078284016146e1565b8282015280945050505061452d6020840161430d565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615614b4d57614b4d614b1d565b500290565b634e487b7160e01b600052601260045260246000fd5b600082614b7757614b77614b52565b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201614ba457614ba4614b1d565b5060010190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b600181811c90821680614bdf57607f821691505b60208210810361496657634e487b7160e01b600052602260045260246000fd5b601f82111561157a57600081815260208120601f850160051c81016020861015614c265750805b601f850160051c820191505b8181101561133a57828155600101614c32565b81516001600160401b03811115614c5e57614c5e614536565b614c7281614c6c8454614bcb565b84614bff565b602080601f831160018114614ca75760008415614c8f5750858301515b600019600386901b1c1916600185901b17855561133a565b600085815260208120601f198616915b82811015614cd657888601518255948401946001909101908401614cb7565b5085821015614cf45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060608284031215614d1657600080fd5b604051606081018181106001600160401b0382111715614d3857614d38614536565b60405282358152614d4b6020840161430d565b6020820152614d5c6040840161496c565b60408201529392505050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601890820152775354414b41424c455f4e4f545f4c4f434b45525f524f4c4560401b604082015260600190565b6020808252600f908201526e4e4f545f4c4f434b45525f524f4c4560881b604082015260600190565b602080825260069082015265232927ad22a760d11b604082015260600190565b60008219821115614e2d57614e2d614b1d565b500190565b602080825260139082015272125394d551919250d251539517d05353d55395606a1b604082015260600190565b60008351614e718184602088016142a2565b835190830190614e858183602088016142a2565b01949350505050565b600060208284031215614ea057600080fd5b815161285b816144df565b6040808252810184905260008560608301825b87811015614eec576001600160a01b03614ed78461430d565b16825260209283019290910190600101614ebe565b5083810360208501528481526001600160fb1b03851115614f0c57600080fd5b8460051b915081866020830137600091016020019081529695505050505050565b600060408284031215614f3f57600080fd5b604051604081018181106001600160401b0382111715614f6157614f61614536565b604052614f6d8361430d565b8152614f7b6020840161496c565b60208201529392505050565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090614fdf908301846142ce565b9695505050505050565b600060208284031215614ffb57600080fd5b815161285b81614256565b60008282101561501857615018614b1d565b500390565b60008261502c5761502c614b52565b500690565b6000815461503e81614bcb565b60018281168015615056576001811461506b5761509a565b60ff198416875282151583028701945061509a565b8560005260208060002060005b858110156150915781548a820152908401908201615078565b50505082870194505b5050505092915050565b60006150b08286615031565b84516150c08183602089016142a2565b6150cc81830186615031565b979650505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516151548160178501602088016142a2565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516151858160288401602088016142a2565b01602801949350505050565b6000816151a0576151a0614b1d565b506000190190565b634e487b7160e01b600052603160045260246000fdfe61723a2f2f5f44396b4e3157724e576243713535425341475262544234625333763851415054596d42546853625833412f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efaf9a8bb3cbd6b84fbccefa71ff73e26e798553c6914585a84886212a46a90279a264697066735822122005e70b51fb70415a646012f3b00e6697760f8c7194e31f8120298fc6d65fece964736f6c634300080f0033","deployedBytecode":"0x6080604052600436106104425760003560e01c806391d1485411610237578063c87b56dd11610135578063c87b56dd14610cbe578063cad96cca14610cde578063d539139314610d0b578063d547741f14610d2d578063d5abeb0114610d4d578063d79ff99d14610d63578063da74222814610d76578063da82b22714610d96578063dbbc853b14610dab578063dcbe353f14610dc0578063dd46706414610de0578063dd89c6fa14610e00578063de6d6d9614610e15578063e3b9a7e514610e35578063e757c17d14610e55578063e8a3d48514610e6b578063e985e9c514610e80578063ef60ceaf14610ec9578063f2fde38b14610ee9578063f362136714610f09578063f384702f14610f2b578063f74bbf5914610f45578063f95df41414610f65578063fe50b58714610f8557600080fd5b806391d1485414610a60578063938e3d7b14610a8057806395d89b4114610aa057806399e0dd7c14610ab55780639b6860c814610ad55780639e6b2c5b14610aeb578063a217fddf14610afe578063a22cb46514610b13578063a341793b14610b33578063a9852bfb14610b48578063aaeaca4814610b68578063af121f5414610b7e578063b27c6f2d14610b9f578063b45a3c0e14610bb5578063b6c693e514610bd5578063b88d4fde14610bef578063ba4695fd14610c0f578063bf9b7a5714610c24578063c0ac998314610c45578063c0bb38ff14610c5a578063c29de63014610c7a578063c723955a14610c94578063c7db289314610ca957600080fd5b806349561cb91161034457806349561cb9146107985780634f972f5f146107b957806350a5292f146107d95780635136dcc71461080757806356c022bb14610827578063572b6c05146108475780635d36598f146108675780636057e0ec146108875780636198e339146108a85780636352211e146108c857806364ed2913146108e85780636f8b44b01461090857806370a0823114610928578063714ad8e714610948578063715018a61461095c5780637313cba9146109715780637885fdc714610986578063791a2519146109c15780637d7eee42146109e15780637e98034214610a01578063837fe14014610a16578063859610c614610a2b5780638da5cb5b14610a4b57600080fd5b806301ffc9a7146104475780630653aca51461047c57806306fdde03146104cb578063081812fc146104ed578063095ea7b314610525578063167446071461054757806318160ddd1461055c5780631a056e711461057f57806323b872dd1461059f578063248a9ca3146105bf5780632a55205a146105df5780632bb684ad1461060d5780632c2330671461063a5780632d00b5871461065a5780632d8e85b0146106885780632f2ff15d146106a85780633542aee2146106c85780633574a2dd146106e857806336568abe146107085780633acf404d146107285780633c0e8f2c1461073e57806342842e0e1461075e578063464bd6401461077e575b600080fd5b34801561045357600080fd5b5061046761046236600461426c565b610fa5565b60405190151581526020015b60405180910390f35b34801561048857600080fd5b5061049c610497366004614289565b610fb6565b60408051825181526020808401516001600160a01b0316908201529181015161ffff1690820152606001610473565b3480156104d757600080fd5b506104e0611039565b60405161047391906142fa565b3480156104f957600080fd5b5061050d610508366004614289565b611048565b6040516001600160a01b039091168152602001610473565b34801561053157600080fd5b50610545610540366004614324565b61108c565b005b34801561055357600080fd5b5061054561112c565b34801561056857600080fd5b50600454600354035b604051908152602001610473565b34801561058b57600080fd5b5061054561059a366004614324565b611143565b3480156105ab57600080fd5b506105456105ba36600461434e565b6111ae565b3480156105cb57600080fd5b506105716105da366004614289565b611342565b3480156105eb57600080fd5b506105ff6105fa36600461438a565b611357565b6040516104739291906143ac565b34801561061957600080fd5b5061062d610628366004614409565b61141a565b604051610473919061444a565b34801561064657600080fd5b5061054561065536600461448e565b6114e4565b34801561066657600080fd5b5060025461067b90600160b01b900460ff1681565b60405161047391906144c5565b34801561069457600080fd5b506105456106a33660046144ed565b611543565b3480156106b457600080fd5b506105456106c336600461450a565b61155e565b3480156106d457600080fd5b506105456106e3366004614324565b61157f565b3480156106f457600080fd5b5061054561070336600461460a565b611587565b34801561071457600080fd5b5061054561072336600461450a565b61159b565b34801561073457600080fd5b5061057160175481565b34801561074a57600080fd5b50610545610759366004614289565b611625565b34801561076a57600080fd5b5061054561077936600461434e565b611632565b34801561078a57600080fd5b506018546104679060ff1681565b3480156107a457600080fd5b5060025461046790600160b81b900460ff1681565b3480156107c557600080fd5b506105456107d43660046144ed565b61164d565b3480156107e557600080fd5b506002546107fa90600160c01b900460ff1681565b604051610473919061463e565b34801561081357600080fd5b50610545610822366004614652565b611668565b34801561083357600080fd5b5060235461050d906001600160a01b031681565b34801561085357600080fd5b506104676108623660046146c6565b6116cb565b34801561087357600080fd5b50610545610882366004614409565b6116df565b34801561089357600080fd5b5060025461046790600160a01b900460ff1681565b3480156108b457600080fd5b506105456108c3366004614289565b611782565b3480156108d457600080fd5b5061050d6108e3366004614289565b6117ee565b3480156108f457600080fd5b506105456109033660046146f0565b6117f9565b34801561091457600080fd5b50610545610923366004614289565b611871565b34801561093457600080fd5b506105716109433660046146c6565b61190d565b34801561095457600080fd5b506001610467565b34801561096857600080fd5b5061054561195b565b34801561097d57600080fd5b506104e061196f565b34801561099257600080fd5b50601f546109b3906001600160a01b03811690600160a01b900461ffff1682565b60405161047392919061470b565b3480156109cd57600080fd5b506105456109dc366004614289565b611a01565b3480156109ed57600080fd5b506105456109fc366004614289565b611a0e565b348015610a0d57600080fd5b50610571611a1b565b348015610a2257600080fd5b50610545611a27565b348015610a3757600080fd5b50610545610a46366004614409565b611a6e565b348015610a5757600080fd5b5061050d611b07565b348015610a6c57600080fd5b50610467610a7b36600461450a565b611b1c565b348015610a8c57600080fd5b50610545610a9b36600461460a565b611b47565b348015610aac57600080fd5b506104e0611b5b565b348015610ac157600080fd5b50610545610ad036600461460a565b611b65565b348015610ae157600080fd5b50610571601a5481565b610545610af9366004614728565b611b9c565b348015610b0a57600080fd5b50610571600081565b348015610b1f57600080fd5b50610545610b2e366004614773565b611d67565b348015610b3f57600080fd5b506104e0611dfc565b348015610b5457600080fd5b50610545610b6336600461460a565b611e15565b348015610b7457600080fd5b5061057160165481565b348015610b8a57600080fd5b5060025461046790600160a81b900460ff1681565b348015610bab57600080fd5b50610571601b5481565b348015610bc157600080fd5b50610467610bd0366004614289565b611e4c565b348015610be157600080fd5b50601c546104679060ff1681565b348015610bfb57600080fd5b50610545610c0a3660046147aa565b611e59565b348015610c1b57600080fd5b50610545611ea3565b348015610c3057600080fd5b5060025461046790600160c81b900460ff1681565b348015610c5157600080fd5b506104e0611eba565b348015610c6657600080fd5b50610545610c753660046146c6565b611ec9565b348015610c8657600080fd5b506011546104679060ff1681565b348015610ca057600080fd5b50610545611f1d565b348015610cb557600080fd5b506104e0611f7c565b348015610cca57600080fd5b506104e0610cd9366004614289565b611fe3565b348015610cea57600080fd5b50610cfe610cf9366004614289565b611fee565b6040516104739190614825565b348015610d1757600080fd5b506105716000805160206151f083398151915281565b348015610d3957600080fd5b50610545610d4836600461450a565b6120a9565b348015610d5957600080fd5b5061057160125481565b610545610d71366004614324565b6120c5565b348015610d8257600080fd5b50610545610d913660046146c6565b6121bd565b348015610da257600080fd5b506105456121e7565b348015610db757600080fd5b506104e061222d565b348015610dcc57600080fd5b5060025461050d906001600160a01b031681565b348015610dec57600080fd5b50610545610dfb366004614289565b61223c565b348015610e0c57600080fd5b506105456122a0565b348015610e2157600080fd5b50610545610e30366004614886565b6122bd565b348015610e4157600080fd5b50610467610e503660046148f1565b6124f5565b348015610e6157600080fd5b5061057160155481565b348015610e7757600080fd5b506104e0612543565b348015610e8c57600080fd5b50610467610e9b36600461492a565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205460ff1690565b348015610ed557600080fd5b50610545610ee4366004614954565b612552565b348015610ef557600080fd5b50610545610f043660046146c6565b612574565b348015610f1557600080fd5b5061057160008051602061523083398151915281565b348015610f3757600080fd5b506013546104679060ff1681565b348015610f5157600080fd5b50610545610f60366004614289565b6125ea565b348015610f7157600080fd5b50610545610f80366004614289565b6125f7565b348015610f9157600080fd5b50610545610fa036600461497e565b612604565b6000610fb082612813565b92915050565b6040805160608101825260008082526020820181905291810182905290610fde60218461284f565b600081815260208080526040918290208251808401845290546001600160a01b03808216835261ffff600160a01b90920482168385019081528551606081018752968752925116928501929092525116908201529392505050565b6060611043612862565b905090565b600061105382612871565b611070576040516333d1c03960e21b815260040160405180910390fd5b506000908152600960205260409020546001600160a01b031690565b6000611097826117ee565b9050336001600160a01b038216146110d0576110b38133610e9b565b6110d0576040516367d9dca160e11b815260040160405180910390fd5b60008281526009602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b611134612899565b6013805460ff19166001179055565b61115d6000805160206151f0833981519152610a7b612908565b6111a05760405162461bcd60e51b815260206004820152600f60248201526e4e4f545f4d494e5445525f524f4c4560881b60448201526064015b60405180910390fd5b6111aa8282612912565b5050565b60006111b982612976565b9050836001600160a01b0316816001600160a01b0316146111ec5760405162a1148160e81b815260040160405180910390fd5b60008281526009602052604090208054338082146001600160a01b038816909114176112395761121c8633610e9b565b61123957604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03851661126057604051633a954ecd60e21b815260040160405180910390fd5b61126d86868660016129dd565b801561127857600082555b6001600160a01b038681166000908152600860205260408082208054600019019055918716815220805460010190556112b585600160e11b6129e9565b600085815260076020526040812091909155600160e11b8416900361130a576001840160008181526007602052604081205490036113085760035481146113085760008181526007602052604090208490555b505b83856001600160a01b0316876001600160a01b031660008051602061521083398151915260405160405180910390a45b505050505050565b6000908152601e602052604090206001015490565b600082815260208052604081205481906001600160a01b0316156113ba5760008481526020805260409020546001600160a01b03811690612710906113a790600160a01b900461ffff1686614b33565b6113b19190614b68565b91509150611413565b601f546001600160a01b0316158015906113e05750601f54600160a01b900461ffff1615155b1561140c57601f546001600160a01b03811690612710906113a790600160a01b900461ffff1686614b33565b5060009050805b9250929050565b60606000826001600160401b0381111561143657611436614536565b60405190808252806020026020018201604052801561145f578160200160208202803683370190505b50905060005b838110156114dc5761148e85858381811061148257611482614b7c565b90506020020135611e4c565b6114ca578484828181106114a4576114a4614b7c565b905060200201358282815181106114bd576114bd614b7c565b6020026020010181815250505b806114d481614b92565b915050611465565b509392505050565b6114ec612899565b600254600160b81b900460ff16156115165760405162461bcd60e51b815260040161119790614bab565b6002805482919060ff60b01b1916600160b01b83600381111561153b5761153b6144af565b021790555050565b61154b612899565b601c805460ff1916911515919091179055565b61156782611342565b611570816129fe565b61157a8383612a0f565b505050565b6111a0612899565b61158f612899565b600e6111aa8282614c45565b6115a3612908565b6001600160a01b0316816001600160a01b03161461161b5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401611197565b6111aa8282612a96565b61162d612899565b601b55565b61157a83838360405180602001604052806000815250611e59565b611655612899565b6018805460ff1916911515919091179055565b611670612899565b6111aa8282808060200260200160405190810160405280939291908181526020016000905b828210156116c1576116b260608302860136819003810190614d04565b81526020019060010190611695565b5050505050612b1b565b6023546001600160a01b0391821691161490565b6002601454036117015760405162461bcd60e51b815260040161119790614d68565b600260145561171e60008051602061523083398151915233611b1c565b61173a5760405162461bcd60e51b815260040161119790614d9f565b60005b818110156117785761176683838381811061175a5761175a614b7c565b90506020020135612cbf565b8061177081614b92565b91505061173d565b5050600160145550565b6002601454036117a45760405162461bcd60e51b815260040161119790614d68565b60026014556117c160008051602061523083398151915233611b1c565b6117dd5760405162461bcd60e51b815260040161119790614dd1565b6117e681612cbf565b506001601455565b6000610fb082612976565b611801612899565b600254600160c81b900460ff161561184c5760405162461bcd60e51b815260206004820152600e60248201526d131250d15394d157d313d0d2d15160921b6044820152606401611197565b6002805482919060ff60c01b1916600160c01b83600581111561153b5761153b6144af565b611879612899565b60135460ff16156118be5760405162461bcd60e51b815260206004820152600f60248201526e2120a9a2afaaa924afa32927ad22a760891b6044820152606401611197565b600454600354038110156119085760405162461bcd60e51b81526020600482015260116024820152704c4f5745525f5448414e5f535550504c5960781b6044820152606401611197565b601255565b60006001600160a01b038216611936576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600860205260409020546001600160401b031690565b611963612899565b61196d6000612d26565b565b6060600e805461197e90614bcb565b80601f01602080910402602001604051908101604052809291908181526020018280546119aa90614bcb565b80156119f75780601f106119cc576101008083540402835291602001916119f7565b820191906000526020600020905b8154815290600101906020018083116119da57829003601f168201915b5050505050905090565b611a09612899565b601a55565b611a16612899565b601555565b60006110436021612d81565b611a2f612899565b600254600160a01b900460ff1615611a595760405162461bcd60e51b815260040161119790614bab565b6002805460ff60a01b1916600160a01b179055565b600260145403611a905760405162461bcd60e51b815260040161119790614d68565b6002601455611aad60008051602061523083398151915233611b1c565b611ac95760405162461bcd60e51b815260040161119790614d9f565b60005b8181101561177857611af5838383818110611ae957611ae9614b7c565b90506020020135612d8b565b80611aff81614b92565b915050611acc565b6000546201000090046001600160a01b031690565b6000918252601e602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611b4f612899565b600d6111aa8282614c45565b6060611043612dd5565b611b6d612899565b60115460ff1615611b905760405162461bcd60e51b815260040161119790614dfa565b600f6111aa8282614c45565b600260145403611bbe5760405162461bcd60e51b815260040161119790614d68565b600260145560185460ff16611c025760405162461bcd60e51b815260206004820152600a6024820152694e4f545f41435449564560b01b6044820152606401611197565b6000611c0c612908565b9050611c57838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506017549150611c52905084612de4565b612e1e565b611c915760405162461bcd60e51b815260206004820152600b60248201526a2ba927a723afa82927a7a360a91b6044820152606401611197565b6016546001600160a01b038216600090815260196020526040902054611cb8908690614e1a565b1115611cf75760405162461bcd60e51b815260206004820152600e60248201526d14149157d4d0531157d31253525560921b6044820152606401611197565b3484601554611d069190614b33565b1115611d245760405162461bcd60e51b815260040161119790614e32565b6001600160a01b03811660009081526019602052604081208054869290611d4c908490614e1a565b90915550611d5c90508185612912565b505060016014555050565b336001600160a01b03831603611d905760405163b06307db60e01b815260040160405180910390fd5b336000818152600a602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60025460609061104390600160c01b900460ff16612e34565b611e1d612899565b60115460ff1615611e405760405162461bcd60e51b815260040161119790614dfa565b60106111aa8282614c45565b6000610fb0601d83612fb2565b611e648484846111ae565b6001600160a01b0383163b15611e9d57611e8084848484612fd6565b611e9d576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b611eab612899565b6011805460ff19166001179055565b6060600f805461197e90614bcb565b611ed1612899565b600254600160a01b900460ff1615611efb5760405162461bcd60e51b815260040161119790614bab565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b611f25612899565b600254600160b81b900460ff1615611f675760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401611197565b6002805460ff60b81b1916600160b81b179055565b60606040518060600160405280603181526020016151bf60319139600254611fbe90600160c01b900460ff166005811115611fb957611fb96144af565b6130c1565b604051602001611fcf929190614e5f565b604051602081830303815290604052905090565b6060610fb0826131c1565b604080516001808252818301909252606091816020015b6040805180820190915260008082526020820152815260200190600190039081612005575050601f5481519192506001600160a01b031690829060009061204e5761204e614b7c565b60209081029190910101516001600160a01b03919091169052601f548151600160a01b90910461ffff1690829060009061208a5761208a614b7c565b6020908102919091018101516001600160601b03909216910152919050565b6120b282611342565b6120bb816129fe565b61157a8383612a96565b6002601454036120e75760405162461bcd60e51b815260040161119790614d68565b6002601455601c5460ff166121375760405162461bcd60e51b81526020600482015260166024820152755055424c49435f53414c455f4e4f545f41435449564560501b6044820152606401611197565b601b5481111561217d5760405162461bcd60e51b8152602060048201526011602482015270141550931250d7d4d0531157d312535255607a1b6044820152606401611197565b3481601a5461218c9190614b33565b11156121aa5760405162461bcd60e51b815260040161119790614e32565b6121b48282612912565b50506001601455565b6121c5612899565b602380546001600160a01b0319166001600160a01b0392909216919091179055565b6121ef612899565b6002805460ff60a81b1916600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b60606010805461197e90614bcb565b60026014540361225e5760405162461bcd60e51b815260040161119790614d68565b600260145561227b60008051602061523083398151915233611b1c565b6122975760405162461bcd60e51b815260040161119790614dd1565b6117e681612d8b565b6122a8612899565b6002805460ff60c81b1916600160c81b179055565b6122c63361329d565b6002546001600160a01b03166123165760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401611197565b600254600160a81b900460ff16156123705760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401611197565b60005b838110156124b157600085858381811061238f5761238f614b7c565b90506020020160208101906123a491906146c6565b6001600160a01b0316036123e7576123e28383838181106123c7576123c7614b7c565b6002546001600160a01b031692602090910201359050613422565b61249f565b8484828181106123f9576123f9614b7c565b905060200201602081019061240e91906146c6565b6002546001600160a01b039182169163a9059cbb911685858581811061243657612436614b7c565b905060200201356040518363ffffffff1660e01b815260040161245a9291906143ac565b6020604051808303816000875af1158015612479573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249d9190614e8e565b505b806124a981614b92565b915050612373565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a5848484846040516124e79493929190614eab565b60405180910390a150505050565b600061253b838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506017549150611c52905087612de4565b949350505050565b6060600d805461197e90614bcb565b61255a612899565b61257161256c36839003830183614f2d565b613538565b50565b61257c612899565b6001600160a01b0381166125e15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611197565b61257181612d26565b6125f2612899565b601655565b6125ff612899565b601755565b600054610100900460ff16158080156126245750600054600160ff909116105b80612645575061263330612800565b158015612645575060005460ff166001145b6126a85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611197565b6000805460ff1916600117905580156126cb576000805461ff0019166101001790555b6126d66000836135e3565b6126df82612d26565b6126ef83610180015160026135ed565b6126fd836101c0015161361e565b61271483600001518460200151856040015161364e565b61272683606001518460800151613680565b6127338360a001516136b1565b61273b6136e1565b61274482613710565b61274c613740565b61275e8360c001518460e0015161376f565b6127728361010001518461012001516137b1565b6127868361014001518461016001516137e2565b612794836101a00151613813565b801561157a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60006127e9336116cb565b156127fb575060131936013560601c90565b503390565b6001600160a01b03163b151590565b3390565b60006301ffc9a760e01b6001600160e01b031983161480610fb05750506001600160e01b03191660009081526001602052604090205460ff1690565b600061285b8383613843565b9392505050565b6060600b805461197e90614bcb565b600060035482108015610fb0575050600090815260076020526040902054600160e01b161590565b6128a1612908565b6001600160a01b03166128b2611b07565b6001600160a01b03161461196d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611197565b60006110436127de565b601254816129236004546003540390565b61292d9190614e1a565b111561296c5760405162461bcd60e51b815260206004820152600e60248201526d455843454544535f535550504c5960901b6044820152606401611197565b6111aa828261386d565b6000816003548110156129c45760008181526007602052604081205490600160e01b821690036129c2575b8060000361285b5750600019016000818152600760205260409020546129a1565b505b604051636f96cda160e11b815260040160405180910390fd5b611e9d84848484613887565b4260a01b176001600160a01b03919091161790565b61257181612a0a612908565b6138b4565b612a198282611b1c565b6111aa576000828152601e602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612a52612908565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b612aa08282611b1c565b156111aa576000828152601e602090815260408083206001600160a01b03851684529091529020805460ff19169055612ad7612908565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b60005b81518110156111aa576000828281518110612b3b57612b3b614b7c565b60200260200101519050612710816040015161ffff1610612b6e5760405162461bcd60e51b815260040161119790614f87565b60208101516001600160a01b0316612be65780516000908152602080526040902080546001600160b01b03191690558051612bab90602190613918565b5080516040519081527fa2870857763bd9ae76c957f869f16b31c18dd3bb4c7b4d3a4496dc5c57c657f99060200160405180910390a1612cac565b6040805180820182526020808401516001600160a01b0390811683528484015161ffff9081168385019081528651600090815293805294909220925183549451909216600160a01b026001600160b01b03199094169116179190911790558051612c5290602190613924565b50805160208083015160408085015181519485526001600160a01b039092169284019290925261ffff1682820152517f389b70fb0887f01e83784eb1c4c589f740eca53b00ed0f45e41db5d079719abb9181900360600190a15b5080612cb781614b92565b915050612b1e565b612cca601d82612fb2565b612d035760405162461bcd60e51b815260206004820152600a6024820152691393d517d313d0d2d15160b21b6044820152606401611197565b600881901c6000908152601d602052604090208054600160ff84161b1916905550565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6000610fb0825490565b612d96601d82612fb2565b15612db35760405162461bcd60e51b815260040161119790614bab565b600881901c6000908152601d602052604090208054600160ff84161b17905550565b6060600c805461197e90614bcb565b6040516001600160601b0319606083901b166020820152600090603401604051602081830303815290604052805190602001209050919050565b600082612e2b8584613930565b14949350505050565b60606006826005811115612e4a57612e4a6144af565b60ff161115612e5857600080fd5b816005811115612e6a57612e6a6144af565b600003612e9457505060408051808201909152600781526604342455f4343360cc1b602082015290565b816005811115612ea657612ea66144af565b600103612ed057505060408051808201909152600781526621a122afa2a1a960c91b602082015290565b816005811115612ee257612ee26144af565b600203612f0d57505060408051808201909152600881526721a122afa722a1a960c11b602082015290565b816005811115612f1f57612f1f6144af565b600303612f4d57505060408051808201909152600b81526a4342455f4e4543525f485360a81b602082015290565b816005811115612f5f57612f5f6144af565b600403612f8857505060408051808201909152600681526521a122afa82960d11b602082015290565b50506040805180820190915260098152684342455f50525f485360b81b602082015290565b919050565b600881901c600090815260208390526040902054600160ff83161b16151592915050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a029061300b903390899088908890600401614fac565b6020604051808303816000875af1925050508015613046575060408051601f3d908101601f1916820190925261304391810190614fe9565b60015b6130a4573d808015613074576040519150601f19603f3d011682016040523d82523d6000602084013e613079565b606091505b50805160000361309c576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b6060816000036130e85750506040805180820190915260018152600360fc1b602082015290565b8160005b811561311257806130fc81614b92565b915061310b9050600a83614b68565b91506130ec565b6000816001600160401b0381111561312c5761312c614536565b6040519080825280601f01601f191660200182016040528015613156576020820181803683370190505b5090505b841561253b5761316b600183615006565b9150613178600a8661501d565b613183906030614e1a565b60f81b81838151811061319857613198614b7c565b60200101906001600160f81b031916908160001a9053506131ba600a86614b68565b945061315a565b60606000600f80546131d290614bcb565b90501161326957600e80546131e690614bcb565b80601f016020809104026020016040519081016040528092919081815260200182805461321290614bcb565b801561325f5780601f106132345761010080835404028352916020019161325f565b820191906000526020600020905b81548152906001019060200180831161324257829003601f168201915b5050505050610fb0565b600f613274836130c1565b6010604051602001613288939291906150a4565b60405160208183030381529060405292915050565b6003600254600160b01b900460ff1660038111156132bd576132bd6144af565b036132fc5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401611197565b60028054600160b01b900460ff16600381111561331b5761331b6144af565b036133235750565b6001600254600160b01b900460ff166003811115613343576133436144af565b0361339f576002546001600160a01b038281169116146125715760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401611197565b6000600254600160b01b900460ff1660038111156133bf576133bf6144af565b0361257157806001600160a01b03166133d6611b07565b6001600160a01b0316146125715760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401611197565b804710156134725760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611197565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146134bf576040519150601f19603f3d011682016040523d82523d6000602084013e6134c4565b606091505b505090508061157a5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401611197565b612710816020015161ffff16106135615760405162461bcd60e51b815260040161119790614f87565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601f80546001600160b01b031916909217600160a01b9091021790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe41926135d8929161470b565b60405180910390a150565b6111aa8282612a0f565b600054610100900460ff166136145760405162461bcd60e51b8152600401611197906150d7565b6111aa8282613975565b600054610100900460ff166136455760405162461bcd60e51b8152600401611197906150d7565b612571816139f9565b600054610100900460ff166136755760405162461bcd60e51b8152600401611197906150d7565b61157a838383613a40565b600054610100900460ff166136a75760405162461bcd60e51b8152600401611197906150d7565b6111aa8282613ace565b600054610100900460ff166136d85760405162461bcd60e51b8152600401611197906150d7565b61257181613b59565b600054610100900460ff166137085760405162461bcd60e51b8152600401611197906150d7565b61196d613bb5565b600054610100900460ff166137375760405162461bcd60e51b8152600401611197906150d7565b61257181613bec565b600054610100900460ff166137675760405162461bcd60e51b8152600401611197906150d7565b61196d613c3b565b600054610100900460ff166137965760405162461bcd60e51b8152600401611197906150d7565b6137a663209680f760e11b613c6e565b601591909155601655565b600054610100900460ff166137d85760405162461bcd60e51b8152600401611197906150d7565b6111aa8282613cef565b600054610100900460ff166138095760405162461bcd60e51b8152600401611197906150d7565b6111aa8282613d31565b600054610100900460ff1661383a5760405162461bcd60e51b8152600401611197906150d7565b61257181613dc1565b600082600001828154811061385a5761385a614b7c565b9060005260206000200154905092915050565b6111aa828260405180602001604052806000815250613de8565b613892601d83612fb2565b156138af5760405162461bcd60e51b815260040161119790614bab565b611e9d565b6138be8282611b1c565b6111aa576138d6816001600160a01b03166014613e55565b6138e1836020613e55565b6040516020016138f2929190615122565b60408051601f198184030181529082905262461bcd60e51b8252611197916004016142fa565b600061285b8383613ff0565b600061285b83836140e3565b600081815b84518110156114dc576139618286838151811061395457613954614b7c565b6020026020010151614132565b91508061396d81614b92565b915050613935565b600054610100900460ff1661399c5760405162461bcd60e51b8152600401611197906150d7565b6139ac63ac2ba33360e01b613c6e565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b8360038111156139f0576139f06144af565b02179055505050565b600054610100900460ff16613a205760405162461bcd60e51b8152600401611197906150d7565b613a3063b964efe960e01b613c6e565b61184c630c934a3560e31b613c6e565b600054610100900460ff16613a675760405162461bcd60e51b8152600401611197906150d7565b600b613a738482614c45565b50600c613a808382614c45565b50600d613a8d8282614c45565b50613a9e633d96f4ff60e11b613c6e565b613aae6380ac58cd60e01b613c6e565b613abe63184371e560e31b613c6e565b61157a635b5e139f60e01b613c6e565b600054610100900460ff16613af55760405162461bcd60e51b8152600401611197906150d7565b600e613b018382614c45565b50600f613b0e8282614c45565b50604080518082019091526005815264173539b7b760d91b6020820152601090613b389082614c45565b50613b49631f2f406b60e01b613c6e565b6111aa635b5e139f60e01b613c6e565b600054610100900460ff16613b805760405162461bcd60e51b8152600401611197906150d7565b6012819055613b956330f487b560e11b613c6e565b613ba56380ac58cd60e01b613c6e565b61257163184371e560e31b613c6e565b600054610100900460ff16613bdc5760405162461bcd60e51b8152600401611197906150d7565b61196d631aa1577160e11b613c6e565b600054610100900460ff16613c135760405162461bcd60e51b8152600401611197906150d7565b613c23631a056e7160e01b613c6e565b6125716000805160206151f0833981519152826135e3565b600054610100900460ff16613c625760405162461bcd60e51b8152600401611197906150d7565b61196d63714ad8e760e01b5b6001600160e01b03198082169003613cc75760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401611197565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b600054610100900460ff16613d165760405162461bcd60e51b8152600401611197906150d7565b613d266317e0bac360e31b613c6e565b601a91909155601b55565b600054610100900460ff16613d585760405162461bcd60e51b8152600401611197906150d7565b613d68633a47bf5160e11b613c6e565b613d7863152a902d60e11b613c6e565b613d8863c69dbd8f60e01b613c6e565b613d9863656cb66560e11b613c6e565b604080518082019091526001600160a01b038316815261ffff8216602082015261157a81613538565b600054610100900460ff166121c55760405162461bcd60e51b8152600401611197906150d7565b613df28383614161565b6001600160a01b0383163b1561157a576003548281035b613e1c6000868380600101945086612fd6565b613e39576040516368d2bf6b60e11b815260040160405180910390fd5b818110613e09578160035414613e4e57600080fd5b5050505050565b60606000613e64836002614b33565b613e6f906002614e1a565b6001600160401b03811115613e8657613e86614536565b6040519080825280601f01601f191660200182016040528015613eb0576020820181803683370190505b509050600360fc1b81600081518110613ecb57613ecb614b7c565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613efa57613efa614b7c565b60200101906001600160f81b031916908160001a9053506000613f1e846002614b33565b613f29906001614e1a565b90505b6001811115613fa1576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613f5d57613f5d614b7c565b1a60f81b828281518110613f7357613f73614b7c565b60200101906001600160f81b031916908160001a90535060049490941c93613f9a81615191565b9050613f2c565b50831561285b5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401611197565b600081815260018301602052604081205480156140d9576000614014600183615006565b855490915060009061402890600190615006565b905081811461408d57600086600001828154811061404857614048614b7c565b906000526020600020015490508087600001848154811061406b5761406b614b7c565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061409e5761409e6151a8565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610fb0565b6000915050610fb0565b600081815260018301602052604081205461412a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610fb0565b506000610fb0565b600081831061414e57600082815260208490526040902061285b565b600083815260208390526040902061285b565b60035460008290036141865760405163b562e8dd60e01b815260040160405180910390fd5b61419360008483856129dd565b6001600160a01b038316600090815260086020526040902080546001600160401b0184020190556141ca836001841460e11b6129e9565b6000828152600760205260408120919091556001600160a01b0384169083830190839083906000805160206152108339815191528180a4600183015b81811461422c5780836000600080516020615210833981519152600080a4600101614206565b508160000361424d57604051622e076360e81b815260040160405180910390fd5b60035550505050565b6001600160e01b03198116811461257157600080fd5b60006020828403121561427e57600080fd5b813561285b81614256565b60006020828403121561429b57600080fd5b5035919050565b60005b838110156142bd5781810151838201526020016142a5565b83811115611e9d5750506000910152565b600081518084526142e68160208601602086016142a2565b601f01601f19169290920160200192915050565b60208152600061285b60208301846142ce565b80356001600160a01b0381168114612fad57600080fd5b6000806040838503121561433757600080fd5b6143408361430d565b946020939093013593505050565b60008060006060848603121561436357600080fd5b61436c8461430d565b925061437a6020850161430d565b9150604084013590509250925092565b6000806040838503121561439d57600080fd5b50508035926020909101359150565b6001600160a01b03929092168252602082015260400190565b60008083601f8401126143d757600080fd5b5081356001600160401b038111156143ee57600080fd5b6020830191508360208260051b850101111561141357600080fd5b6000806020838503121561441c57600080fd5b82356001600160401b0381111561443257600080fd5b61443e858286016143c5565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b8181101561448257835183529284019291840191600101614466565b50909695505050505050565b6000602082840312156144a057600080fd5b81356004811061285b57600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106144d9576144d96144af565b91905290565b801515811461257157600080fd5b6000602082840312156144ff57600080fd5b813561285b816144df565b6000806040838503121561451d57600080fd5b8235915061452d6020840161430d565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6040516101e081016001600160401b038111828210171561456f5761456f614536565b60405290565b60006001600160401b038084111561458f5761458f614536565b604051601f8501601f19908116603f011681019082821181831017156145b7576145b7614536565b816040528093508581528686860111156145d057600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126145fb57600080fd5b61285b83833560208501614575565b60006020828403121561461c57600080fd5b81356001600160401b0381111561463257600080fd5b61253b848285016145ea565b60208101600683106144d9576144d96144af565b6000806020838503121561466557600080fd5b82356001600160401b038082111561467c57600080fd5b818501915085601f83011261469057600080fd5b81358181111561469f57600080fd5b8660206060830285010111156146b457600080fd5b60209290920196919550909350505050565b6000602082840312156146d857600080fd5b61285b8261430d565b803560068110612fad57600080fd5b60006020828403121561470257600080fd5b61285b826146e1565b6001600160a01b0392909216825261ffff16602082015260400190565b60008060006040848603121561473d57600080fd5b8335925060208401356001600160401b0381111561475a57600080fd5b614766868287016143c5565b9497909650939450505050565b6000806040838503121561478657600080fd5b61478f8361430d565b9150602083013561479f816144df565b809150509250929050565b600080600080608085870312156147c057600080fd5b6147c98561430d565b93506147d76020860161430d565b92506040850135915060608501356001600160401b038111156147f957600080fd5b8501601f8101871361480a57600080fd5b61481987823560208401614575565b91505092959194509250565b602080825282518282018190526000919060409081850190868401855b8281101561487957815180516001600160a01b031685528601516001600160601b0316868501529284019290850190600101614842565b5091979650505050505050565b6000806000806040858703121561489c57600080fd5b84356001600160401b03808211156148b357600080fd5b6148bf888389016143c5565b909650945060208701359150808211156148d857600080fd5b506148e5878288016143c5565b95989497509550505050565b60008060006040848603121561490657600080fd5b61490f8461430d565b925060208401356001600160401b0381111561475a57600080fd5b6000806040838503121561493d57600080fd5b6149468361430d565b915061452d6020840161430d565b60006040828403121561496657600080fd5b50919050565b803561ffff81168114612fad57600080fd5b6000806040838503121561499157600080fd5b82356001600160401b03808211156149a857600080fd5b908401906101e082870312156149bd57600080fd5b6149c561454c565b8235828111156149d457600080fd5b6149e0888286016145ea565b8252506020830135828111156149f557600080fd5b614a01888286016145ea565b602083015250604083013582811115614a1957600080fd5b614a25888286016145ea565b604083015250606083013582811115614a3d57600080fd5b614a49888286016145ea565b606083015250608083013582811115614a6157600080fd5b614a6d888286016145ea565b60808301525060a0838101359082015260c0808401359082015260e08084013590820152610100808401359082015261012080840135908201526101409150614ab782840161430d565b828201526101609150614acb82840161496c565b828201526101809150614adf82840161430d565b828201526101a09150614af382840161430d565b828201526101c09150614b078284016146e1565b8282015280945050505061452d6020840161430d565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615614b4d57614b4d614b1d565b500290565b634e487b7160e01b600052601260045260246000fd5b600082614b7757614b77614b52565b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201614ba457614ba4614b1d565b5060010190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b600181811c90821680614bdf57607f821691505b60208210810361496657634e487b7160e01b600052602260045260246000fd5b601f82111561157a57600081815260208120601f850160051c81016020861015614c265750805b601f850160051c820191505b8181101561133a57828155600101614c32565b81516001600160401b03811115614c5e57614c5e614536565b614c7281614c6c8454614bcb565b84614bff565b602080601f831160018114614ca75760008415614c8f5750858301515b600019600386901b1c1916600185901b17855561133a565b600085815260208120601f198616915b82811015614cd657888601518255948401946001909101908401614cb7565b5085821015614cf45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060608284031215614d1657600080fd5b604051606081018181106001600160401b0382111715614d3857614d38614536565b60405282358152614d4b6020840161430d565b6020820152614d5c6040840161496c565b60408201529392505050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601890820152775354414b41424c455f4e4f545f4c4f434b45525f524f4c4560401b604082015260600190565b6020808252600f908201526e4e4f545f4c4f434b45525f524f4c4560881b604082015260600190565b602080825260069082015265232927ad22a760d11b604082015260600190565b60008219821115614e2d57614e2d614b1d565b500190565b602080825260139082015272125394d551919250d251539517d05353d55395606a1b604082015260600190565b60008351614e718184602088016142a2565b835190830190614e858183602088016142a2565b01949350505050565b600060208284031215614ea057600080fd5b815161285b816144df565b6040808252810184905260008560608301825b87811015614eec576001600160a01b03614ed78461430d565b16825260209283019290910190600101614ebe565b5083810360208501528481526001600160fb1b03851115614f0c57600080fd5b8460051b915081866020830137600091016020019081529695505050505050565b600060408284031215614f3f57600080fd5b604051604081018181106001600160401b0382111715614f6157614f61614536565b604052614f6d8361430d565b8152614f7b6020840161496c565b60208201529392505050565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090614fdf908301846142ce565b9695505050505050565b600060208284031215614ffb57600080fd5b815161285b81614256565b60008282101561501857615018614b1d565b500390565b60008261502c5761502c614b52565b500690565b6000815461503e81614bcb565b60018281168015615056576001811461506b5761509a565b60ff198416875282151583028701945061509a565b8560005260208060002060005b858110156150915781548a820152908401908201615078565b50505082870194505b5050505092915050565b60006150b08286615031565b84516150c08183602089016142a2565b6150cc81830186615031565b979650505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516151548160178501602088016142a2565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516151858160288401602088016142a2565b01602801949350505050565b6000816151a0576151a0614b1d565b506000190190565b634e487b7160e01b600052603160045260246000fdfe61723a2f2f5f44396b4e3157724e576243713535425341475262544234625333763851415054596d42546853625833412f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efaf9a8bb3cbd6b84fbccefa71ff73e26e798553c6914585a84886212a46a90279a264697066735822122005e70b51fb70415a646012f3b00e6697760f8c7194e31f8120298fc6d65fece964736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"collections/ERC721A/presets/ERC721ATieredSalesCollection":{"address":{"1":"0x03EcE0a5f417eC136a78F8177De4699762389d2d","3":"0x74c654a0e916bbd1083C4E5409169c2595F64A32","4":"0x967bc91a7F2d88f44d8D69F46d7117e088a0f053","5":"0xe9832698308707D18dE429Aaf6260355196CEFB7","25":"0x4F40fe9Ee1EAB15D38b6D8056b415BbEe1e4CCbF","56":"0xee3fcdF6e5D1d5c5900D9B8DC388D03801d633c9","66":"0xc65C4e0C5f81E7016F75f38387b5D13e8775f729","97":"0x9329dc0e42c1f45661AAd2EeB1538c5dA9187448","137":"0xc420196aC560340a29A384546C0275b6A30CbF42","250":"0xBB0AA646E8D63d920a7Ab1C96Ba082cbF075DcDA","280":"0x1D6a9E244771547d1b27695cfb98157fA72fa320","4002":"0xBB0AA646E8D63d920a7Ab1C96Ba082cbF075DcDA","9000":"0x99cfc48d63e4914A0f94d46B0FCF30bD8775067E","42161":"0x8b5De228363f3f7D3821bee7977527cc8898aa0e","43113":"0xe916B8aD209F43b06be7b4596C87deb6f7911bD0","43114":"0xb91057014bFB01df21e541335a78D930266f7869","421611":"0xa6a7986065BA0aFAf13Fa9155BCFC4C2d0E80a0a","arbitrumOne":"0x8b5De228363f3f7D3821bee7977527cc8898aa0e","arbitrumTestnet":"0xa6a7986065BA0aFAf13Fa9155BCFC4C2d0E80a0a","avalanche":"0xb91057014bFB01df21e541335a78D930266f7869","avalancheFujiTestnet":"0xe916B8aD209F43b06be7b4596C87deb6f7911bD0","bsc":"0xee3fcdF6e5D1d5c5900D9B8DC388D03801d633c9","bscTestnet":"0x9329dc0e42c1f45661AAd2EeB1538c5dA9187448","cronos":"0x4F40fe9Ee1EAB15D38b6D8056b415BbEe1e4CCbF","evmosTestnet":"0x99cfc48d63e4914A0f94d46B0FCF30bD8775067E","ftmTestnet":"0xBB0AA646E8D63d920a7Ab1C96Ba082cbF075DcDA","goerli":"0xe9832698308707D18dE429Aaf6260355196CEFB7","mainnet":"0x03EcE0a5f417eC136a78F8177De4699762389d2d","okcMainnet":"0xc65C4e0C5f81E7016F75f38387b5D13e8775f729","opera":"0xBB0AA646E8D63d920a7Ab1C96Ba082cbF075DcDA","polygon":"0xc420196aC560340a29A384546C0275b6A30CbF42","rinkeby":"0x967bc91a7F2d88f44d8D69F46d7117e088a0f053","ropsten":"0x74c654a0e916bbd1083C4E5409169c2595F64A32","zksyncTestnet":"0x1D6a9E244771547d1b27695cfb98157fA72fa320"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721ATieredSalesCollection","sourceName":"contracts/collections/ERC721A/presets/ERC721ATieredSalesCollection.sol","abi":[{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"string","name":"placeholderURI","type":"string"},{"internalType":"string","name":"tokenURIPrefix","type":"string"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct IERC721TieringExtension.Tier[]","name":"tiers","type":"tuple[]"},{"internalType":"address","name":"defaultRoyaltyAddress","type":"address"},{"internalType":"uint16","name":"defaultRoyaltyBps","type":"uint16"},{"internalType":"address","name":"proceedsRecipient","type":"address"},{"internalType":"address","name":"trustedForwarder","type":"address"},{"internalType":"enum LicenseVersion","name":"licenseVersion","type":"uint8"}],"internalType":"struct ERC721ATieredSalesCollection.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"DefaultRoyaltySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"TokenRoyaltyRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"bps","type":"uint16"}],"name":"TokenRoyaltySet","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":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LOCKER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"tierId","type":"uint256"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct IERC721TieringExtension.Tier","name":"tier","type":"tuple"}],"name":"configureTiering","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tierIds","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct IERC721TieringExtension.Tier[]","name":"_tiers","type":"tuple[]"}],"name":"configureTiering","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultRoyalty","outputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"eligibleForTier","outputs":[{"internalType":"uint256","name":"maxMintable","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"filterUnlocked","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freezeMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"freezeTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getRaribleV2Royalties","outputs":[{"components":[{"internalType":"address payable","name":"account","type":"address"},{"internalType":"uint96","name":"value","type":"uint96"}],"internalType":"struct LibPart.Part[]","name":"result","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenRoyaltiesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getTokenRoyaltyByIndex","outputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasRoleBasedLockableExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"string","name":"placeholderURI","type":"string"},{"internalType":"string","name":"tokenURIPrefix","type":"string"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct IERC721TieringExtension.Tier[]","name":"tiers","type":"tuple[]"},{"internalType":"address","name":"defaultRoyaltyAddress","type":"address"},{"internalType":"uint16","name":"defaultRoyaltyBps","type":"uint16"},{"internalType":"address","name":"proceedsRecipient","type":"address"},{"internalType":"address","name":"trustedForwarder","type":"address"},{"internalType":"enum LicenseVersion","name":"licenseVersion","type":"uint8"}],"internalType":"struct ERC721ATieredSalesCollection.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","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":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersion","outputs":[{"internalType":"enum LicenseVersion","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersionLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"locked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mintByRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintByTier","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onTierAllowlist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","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":[],"name":"placeholderURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"remainingForTier","outputs":[{"internalType":"uint256","name":"tierRemaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reservedMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"string","name":"newValue","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyalty","name":"royalty","type":"tuple"}],"name":"setDefaultRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum LicenseVersion","name":"_licenseVersion","type":"uint8"}],"name":"setLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setPlaceholderURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint16","name":"bps","type":"uint16"}],"internalType":"struct IEIP2981RoyaltyOverride.TokenRoyaltyConfig[]","name":"royaltyConfigs","type":"tuple[]"}],"name":"setTokenRoyalties","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURIPrefix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newValue","type":"string"}],"name":"setTokenURISuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"trustedForwarder","type":"address"}],"name":"setTrustedForwarder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tierMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tiers","outputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURIPrefix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURISuffix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReserved","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"name":"walletMintedByTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162006e7c38038062006e7c833981016040819052620000349162000ff4565b805160208201516004620000516200004b620000bd565b620000d9565b6002805482919060ff60c01b1916600160c01b836005811115620000795762000079620011a3565b0217905550600590506200008e838262001247565b5060066200009d828262001247565b50600060035550506001601455620000b6813362000134565b50620013c1565b6000620000d46200033860201b62002c1b1760201c565b905090565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620001555750600054600160ff909116105b8062000185575062000172306200037060201b62002c3d1760201c565b15801562000185575060005460ff166001145b620001ee5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000212576000805461ff0019166101001790555b6200021f6000836200037f565b6200022a82620000d9565b6101208301516200023d9060026200038f565b6101608301516200024e90620003c5565b82516020840151604085015162000267929190620003fd565b62000281836060015184608001516200043460201b60201c565b60a083015162000291906200046a565b6200029b6200049f565b620002a682620004d5565b620002b06200050a565b60c0830151620002c0906200053e565b620002db8360e001518461010001516200057360201b60201c565b610140830151620002ec90620005a9565b801562000333576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6020546000906001600160a01b031633036200035b575060131936013560601c90565b620000d4620005de60201b62002c4c1760201c565b6001600160a01b03163b151590565b6200038b8282620005e2565b5050565b600054610100900460ff16620003b95760405162461bcd60e51b8152600401620001e59062001313565b6200038b828262000688565b600054610100900460ff16620003ef5760405162461bcd60e51b8152600401620001e59062001313565b620003fa8162000714565b50565b600054610100900460ff16620004275760405162461bcd60e51b8152600401620001e59062001313565b6200033383838362000792565b600054610100900460ff166200045e5760405162461bcd60e51b8152600401620001e59062001313565b6200038b828262000831565b600054610100900460ff16620004945760405162461bcd60e51b8152600401620001e59062001313565b620003fa81620008c9565b600054610100900460ff16620004c95760405162461bcd60e51b8152600401620001e59062001313565b620004d36200092e565b565b600054610100900460ff16620004ff5760405162461bcd60e51b8152600401620001e59062001313565b620003fa816200096a565b600054610100900460ff16620005345760405162461bcd60e51b8152600401620001e59062001313565b620004d3620009d2565b600054610100900460ff16620005685760405162461bcd60e51b8152600401620001e59062001313565b620003fa8162000a0e565b600054610100900460ff166200059d5760405162461bcd60e51b8152600401620001e59062001313565b6200038b828262000b3b565b600054610100900460ff16620005d35760405162461bcd60e51b8152600401620001e59062001313565b620003fa8162000bd8565b3390565b6000828152601b602090815260408083206001600160a01b038516845290915290205460ff166200038b576000828152601b602090815260408083206001600160a01b03851684529091529020805460ff1916600117905562000644620000bd565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600054610100900460ff16620006b25760405162461bcd60e51b8152600401620001e59062001313565b620006c463ac2ba33360e01b62000c24565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b8360038111156200070b576200070b620011a3565b02179055505050565b600054610100900460ff166200073e5760405162461bcd60e51b8152600401620001e59062001313565b6200075063b964efe960e01b62000c24565b62000762630c934a3560e31b62000c24565b6002805482919060ff60c01b1916600160c01b8360058111156200078a576200078a620011a3565b021790555050565b600054610100900460ff16620007bc5760405162461bcd60e51b8152600401620001e59062001313565b600b620007ca848262001247565b50600c620007d9838262001247565b50600d620007e8828262001247565b50620007fb633d96f4ff60e11b62000c24565b6200080d6380ac58cd60e01b62000c24565b6200081f63184371e560e31b62000c24565b62000333635b5e139f60e01b62000c24565b600054610100900460ff166200085b5760405162461bcd60e51b8152600401620001e59062001313565b600e62000869838262001247565b50600f62000878828262001247565b50604080518082019091526005815264173539b7b760d91b6020820152601090620008a4908262001247565b50620008b7631f2f406b60e01b62000c24565b6200038b635b5e139f60e01b62000c24565b600054610100900460ff16620008f35760405162461bcd60e51b8152600401620001e59062001313565b60128190556200090a6330f487b560e11b62000c24565b6200091c6380ac58cd60e01b62000c24565b620003fa63184371e560e31b62000c24565b600054610100900460ff16620009585760405162461bcd60e51b8152600401620001e59062001313565b620004d3631aa1577160e11b62000c24565b600054610100900460ff16620009945760405162461bcd60e51b8152600401620001e59062001313565b620009a6631a056e7160e01b62000c24565b620003fa7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6826200037f565b600054610100900460ff16620009fc5760405162461bcd60e51b8152600401620001e59062001313565b620004d363714ad8e760e01b62000c24565b600054610100900460ff1662000a385760405162461bcd60e51b8152600401620001e59062001313565b62000a4a6308b4902960e41b62000c24565b60005b81518110156200038b5781818151811062000a6c5762000a6c6200135e565b602090810291909101810151600083815260158352604090819020825181559282015160018401558101516002830180546001600160a01b0319166001600160a01b03909216919091179055606081015160038301556080810151600483015560a0810151600583015560c0810151600683015560e00151600790910155815182908290811062000b015762000b016200135e565b602002602001015160c001516016600082825462000b2091906200138a565b9091555081905062000b3281620013a5565b91505062000a4d565b600054610100900460ff1662000b655760405162461bcd60e51b8152600401620001e59062001313565b62000b77633a47bf5160e11b62000c24565b62000b8963152a902d60e11b62000c24565b62000b9b63c69dbd8f60e01b62000c24565b62000bad63656cb66560e11b62000c24565b604080518082019091526001600160a01b038316815261ffff82166020820152620003338162000ca8565b600054610100900460ff1662000c025760405162461bcd60e51b8152600401620001e59062001313565b602080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160e01b0319808216900362000c805760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e74657266616365206964000000006044820152606401620001e5565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b612710816020015161ffff161062000cf15760405162461bcd60e51b815260206004820152600b60248201526a496e76616c69642062707360a81b6044820152606401620001e5565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601c8054600160a01b9092026001600160b01b03199092169092171790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe419262000d8392916001600160a01b0392909216825261ffff16602082015260400190565b60405180910390a150565b634e487b7160e01b600052604160045260246000fd5b60405161010081016001600160401b038111828210171562000dca5762000dca62000d8e565b60405290565b60405161018081016001600160401b038111828210171562000dca5762000dca62000d8e565b604051601f8201601f191681016001600160401b038111828210171562000e215762000e2162000d8e565b604052919050565b600082601f83011262000e3b57600080fd5b81516001600160401b0381111562000e575762000e5762000d8e565b602062000e6d601f8301601f1916820162000df6565b828152858284870101111562000e8257600080fd5b60005b8381101562000ea257858101830151828201840152820162000e85565b8381111562000eb45760008385840101525b5095945050505050565b80516001600160a01b038116811462000ed657600080fd5b919050565b600082601f83011262000eed57600080fd5b815160206001600160401b0382111562000f0b5762000f0b62000d8e565b62000f1b818360051b0162000df6565b82815260089290921b8401810191818101908684111562000f3b57600080fd5b8286015b8481101562000fc657610100818903121562000f5b5760008081fd5b62000f6562000da4565b815181528482015185820152604062000f8081840162000ebe565b90820152606082810151908201526080808301519082015260a0808301519082015260c0808301519082015260e080830151908201528352918301916101000162000f3f565b509695505050505050565b805161ffff8116811462000ed657600080fd5b80516006811062000ed657600080fd5b6000602082840312156200100757600080fd5b81516001600160401b03808211156200101f57600080fd5b9083019061018082860312156200103557600080fd5b6200103f62000dd0565b8251828111156200104f57600080fd5b6200105d8782860162000e29565b8252506020830151828111156200107357600080fd5b620010818782860162000e29565b6020830152506040830151828111156200109a57600080fd5b620010a88782860162000e29565b604083015250606083015182811115620010c157600080fd5b620010cf8782860162000e29565b606083015250608083015182811115620010e857600080fd5b620010f68782860162000e29565b60808301525060a083015160a082015260c0830151828111156200111957600080fd5b620011278782860162000edb565b60c0830152506200113b60e0840162000ebe565b60e082015261010091506200115282840162000fd1565b8282015261012091506200116882840162000ebe565b8282015261014091506200117e82840162000ebe565b8282015261016091506200119482840162000fe4565b91810191909152949350505050565b634e487b7160e01b600052602160045260246000fd5b600181811c90821680620011ce57607f821691505b602082108103620011ef57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033357600081815260208120601f850160051c810160208610156200121e5750805b601f850160051c820191505b818110156200123f578281556001016200122a565b505050505050565b81516001600160401b0381111562001263576200126362000d8e565b6200127b81620012748454620011b9565b84620011f5565b602080601f831160018114620012b357600084156200129a5750858301515b600019600386901b1c1916600185901b1785556200123f565b600085815260208120601f198616915b82811015620012e457888601518255948401946001909101908401620012c3565b5085821015620013035787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115620013a057620013a062001374565b500190565b600060018201620013ba57620013ba62001374565b5060010190565b615aab80620013d16000396000f3fe6080604052600436106104005760003560e01c80637e98034211610216578063c71b0e1c1161011f578063c71b0e1c14610d01578063c723955a14610d17578063c7db289314610d2c578063c87b56dd14610d41578063cad96cca14610d61578063d539139314610d8e578063d547741f14610db0578063d5abeb0114610dd0578063d8b436fd14610de6578063da74222814610e06578063da82b22714610e26578063dbbc853b14610e3b578063dcbe353f14610e50578063dd46706414610e70578063dd89c6fa14610e90578063de6d6d9614610ea5578063e8a3d48514610ec5578063e985e9c514610eda578063ef60ceaf14610f23578063f2fde38b14610f43578063f362136714610f63578063f384702f14610f8557600080fd5b80637e98034214610a9d578063837fe14014610ab2578063859610c614610ac75780638da5cb5b14610ae757806391d1485414610afc578063938e3d7b14610b1c57806395d89b4114610b3c57806399e0dd7c14610b51578063a217fddf14610b71578063a22cb46514610b86578063a341793b14610ba6578063a65dbda414610bbb578063a9852bfb14610bdb578063af121f5414610bfb578063b45a3c0e14610c1c578063b88d4fde14610c3c578063ba4695fd14610c5c578063bd2c18f714610c71578063bf9b7a5714610c91578063c0ac998314610cb2578063c0bb38ff14610cc7578063c29de63014610ce757600080fd5b806336568abe1161031857806336568abe146107d457806342842e0e146107f457806349561cb91461081457806350a5292f146108355780635136dcc71461086357806353367f081461088357806356c022bb146108b0578063572b6c05146108d05780635897f878146108f05780635d36598f146109105780635ea2c91b146109305780636057e0ec146109435780636198e339146109645780636352211e1461098457806364ed2913146109a457806368c7d37c146109c45780636f8b44b0146109e457806370a0823114610a04578063714ad8e714610a24578063715018a614610a385780637313cba914610a4d5780637885fdc714610a6257600080fd5b806301ffc9a714610405578063039af9eb1461043a5780630653aca5146104eb57806306fdde031461053a578063081812fc1461055c578063095ea7b3146105945780631123f2ef146105b6578063167446071461060757806318160ddd1461061c5780631a056e711461063557806320f1bb301461065557806323b872dd14610675578063248a9ca3146106955780632a55205a146106b55780632bb684ad146106e35780632c233067146107105780632cb9b2ac146107305780632d00b587146107465780632f2ff15d146107745780633542aee2146107945780633574a2dd146107b4575b600080fd5b34801561041157600080fd5b50610425610420366004614814565b610f9f565b60405190151581526020015b60405180910390f35b34801561044657600080fd5b506104a2610455366004614831565b60156020526000908152604090208054600182015460028301546003840154600485015460058601546006870154600790970154959694956001600160a01b039094169492939192909188565b6040805198895260208901979097526001600160a01b03909516958701959095526060860192909252608085015260a084015260c083019190915260e082015261010001610431565b3480156104f757600080fd5b5061050b610506366004614831565b610fb0565b60408051825181526020808401516001600160a01b0316908201529181015161ffff1690820152606001610431565b34801561054657600080fd5b5061054f611035565b60405161043191906148a2565b34801561056857600080fd5b5061057c610577366004614831565b611044565b6040516001600160a01b039091168152602001610431565b3480156105a057600080fd5b506105b46105af3660046148d5565b611088565b005b3480156105c257600080fd5b506105f96105d1366004614901565b60009182526018602090815260408084206001600160a01b0393909316845291905290205490565b604051908152602001610431565b34801561061357600080fd5b506105b4611128565b34801561062857600080fd5b50600454600354036105f9565b34801561064157600080fd5b506105b46106503660046148d5565b61113f565b34801561066157600080fd5b506105b4610670366004614931565b6111aa565b34801561068157600080fd5b506105b461069036600461496b565b611390565b3480156106a157600080fd5b506105f96106b0366004614831565b611524565b3480156106c157600080fd5b506106d56106d03660046149ac565b611539565b6040516104319291906149ce565b3480156106ef57600080fd5b506107036106fe366004614a2b565b6115fe565b6040516104319190614a6c565b34801561071c57600080fd5b506105b461072b366004614ab0565b6116c8565b34801561073c57600080fd5b506105f960195481565b34801561075257600080fd5b5060025461076790600160b01b900460ff1681565b6040516104319190614ae7565b34801561078057600080fd5b506105b461078f366004614901565b611727565b3480156107a057600080fd5b506105b46107af3660046148d5565b611748565b3480156107c057600080fd5b506105b46107cf366004614c0a565b611750565b3480156107e057600080fd5b506105b46107ef366004614901565b611764565b34801561080057600080fd5b506105b461080f36600461496b565b6117ee565b34801561082057600080fd5b5060025461042590600160b81b900460ff1681565b34801561084157600080fd5b5060025461085690600160c01b900460ff1681565b6040516104319190614c3e565b34801561086f57600080fd5b506105b461087e366004614c52565b611809565b34801561088f57600080fd5b506105f961089e366004614831565b60176020526000908152604090205481565b3480156108bc57600080fd5b5060205461057c906001600160a01b031681565b3480156108dc57600080fd5b506104256108eb366004614cc6565b61186c565b3480156108fc57600080fd5b506105f961090b366004614831565b611880565b34801561091c57600080fd5b506105b461092b366004614a2b565b611901565b6105b461093e366004614ce3565b6119a4565b34801561094f57600080fd5b5060025461042590600160a01b900460ff1681565b34801561097057600080fd5b506105b461097f366004614831565b611c70565b34801561099057600080fd5b5061057c61099f366004614831565b611cdc565b3480156109b057600080fd5b506105b46109bf366004614d52565b611ce7565b3480156109d057600080fd5b506104256109df366004614d6d565b611d5f565b3480156109f057600080fd5b506105b46109ff366004614831565b611e01565b348015610a1057600080fd5b506105f9610a1f366004614cc6565b611e15565b348015610a3057600080fd5b506001610425565b348015610a4457600080fd5b506105b4611e63565b348015610a5957600080fd5b5061054f611e77565b348015610a6e57600080fd5b50601c54610a8f906001600160a01b03811690600160a01b900461ffff1682565b604051610431929190614db9565b348015610aa957600080fd5b506105f9611f09565b348015610abe57600080fd5b506105b4611f15565b348015610ad357600080fd5b506105b4610ae2366004614a2b565b611f5c565b348015610af357600080fd5b5061057c611ff5565b348015610b0857600080fd5b50610425610b17366004614901565b61200a565b348015610b2857600080fd5b506105b4610b37366004614c0a565b612035565b348015610b4857600080fd5b5061054f612049565b348015610b5d57600080fd5b506105b4610b6c366004614c0a565b612053565b348015610b7d57600080fd5b506105f9600081565b348015610b9257600080fd5b506105b4610ba1366004614de4565b61208a565b348015610bb257600080fd5b5061054f61211f565b348015610bc757600080fd5b506105b4610bd6366004614f0e565b612138565b348015610be757600080fd5b506105b4610bf6366004614c0a565b6122f8565b348015610c0757600080fd5b5060025461042590600160a81b900460ff1681565b348015610c2857600080fd5b50610425610c37366004614831565b61232f565b348015610c4857600080fd5b506105b4610c573660046150ad565b61233c565b348015610c6857600080fd5b506105b4612386565b348015610c7d57600080fd5b506105f9610c8c366004614d6d565b61239d565b348015610c9d57600080fd5b5060025461042590600160c81b900460ff1681565b348015610cbe57600080fd5b5061054f6125ce565b348015610cd357600080fd5b506105b4610ce2366004614cc6565b6125dd565b348015610cf357600080fd5b506011546104259060ff1681565b348015610d0d57600080fd5b506105f960165481565b348015610d2357600080fd5b506105b4612631565b348015610d3857600080fd5b5061054f612690565b348015610d4d57600080fd5b5061054f610d5c366004614831565b6126f7565b348015610d6d57600080fd5b50610d81610d7c366004614831565b612702565b604051610431919061512c565b348015610d9a57600080fd5b506105f9600080516020615a1683398151915281565b348015610dbc57600080fd5b506105b4610dcb366004614901565b6127bd565b348015610ddc57600080fd5b506105f960125481565b348015610df257600080fd5b506105b4610e0136600461518d565b6127d9565b348015610e1257600080fd5b506105b4610e21366004614cc6565b61283f565b348015610e3257600080fd5b506105b4612869565b348015610e4757600080fd5b5061054f6128af565b348015610e5c57600080fd5b5060025461057c906001600160a01b031681565b348015610e7c57600080fd5b506105b4610e8b366004614831565b6128be565b348015610e9c57600080fd5b506105b4612922565b348015610eb157600080fd5b506105b4610ec0366004615226565b61293f565b348015610ed157600080fd5b5061054f612b77565b348015610ee657600080fd5b50610425610ef5366004615291565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205460ff1690565b348015610f2f57600080fd5b506105b4610f3e3660046152bf565b612b86565b348015610f4f57600080fd5b506105b4610f5e366004614cc6565b612ba5565b348015610f6f57600080fd5b506105f9600080516020615a5683398151915281565b348015610f9157600080fd5b506013546104259060ff1681565b6000610faa82612c50565b92915050565b6040805160608101825260008082526020820181905291810182905290610fd8601e84612c8c565b6000818152601d60209081526040918290208251808401845290546001600160a01b03808216835261ffff600160a01b90920482168385019081528551606081018752968752925116928501929092525116908201529392505050565b606061103f612c9f565b905090565b600061104f82612cae565b61106c576040516333d1c03960e21b815260040160405180910390fd5b506000908152600960205260409020546001600160a01b031690565b600061109382611cdc565b9050336001600160a01b038216146110cc576110af8133610ef5565b6110cc576040516367d9dca160e11b815260040160405180910390fd5b60008281526009602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b611130612cd6565b6013805460ff19166001179055565b611159600080516020615a16833981519152610b17612d45565b61119c5760405162461bcd60e51b815260206004820152600f60248201526e4e4f545f4d494e5445525f524f4c4560881b60448201526064015b60405180910390fd5b6111a68282612d4f565b5050565b6111b2612cd6565b60008281526017602052604090205460e082013510156112085760405162461bcd60e51b81526020600482015260116024820152701313d5d15497d512105397d35253951151607a1b6044820152606401611193565b600082815260156020526040902060060154156112765760008281526017602052604090205460c082013510156112765760405162461bcd60e51b81526020600482015260126024820152711313d5d7d49154d154959157d05353d5539560721b6044820152606401611193565b600082815260176020526040902054156112e457600082815260156020526040902060040154608082013510156112e45760405162461bcd60e51b81526020600482015260126024820152711313d5d7d3505617d4115497d5d05313115560721b6044820152606401611193565b60008281526015602052604081206006015460168054919290916113099084906152ed565b9091555050600082815260156020526040902081906113288282615304565b9050508060c00135601660008282546113419190615375565b909155505060125460165411156111a65760405162461bcd60e51b815260206004820152601360248201527213505617d4d55414131657d15610d151511151606a1b6044820152606401611193565b600061139b82612db3565b9050836001600160a01b0316816001600160a01b0316146113ce5760405162a1148160e81b815260040160405180910390fd5b60008281526009602052604090208054338082146001600160a01b0388169091141761141b576113fe8633610ef5565b61141b57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03851661144257604051633a954ecd60e21b815260040160405180910390fd5b61144f8686866001612e1a565b801561145a57600082555b6001600160a01b0386811660009081526008602052604080822080546000190190559187168152208054600101905561149785600160e11b612e26565b600085815260076020526040812091909155600160e11b841690036114ec576001840160008181526007602052604081205490036114ea5760035481146114ea5760008181526007602052604090208490555b505b83856001600160a01b0316876001600160a01b0316600080516020615a3683398151915260405160405180910390a45b505050505050565b6000908152601b602052604090206001015490565b6000828152601d602052604081205481906001600160a01b03161561159e576000848152601d60205260409020546001600160a01b038116906127109061158b90600160a01b900461ffff168661538d565b61159591906153c2565b915091506115f7565b601c546001600160a01b0316158015906115c45750601c54600160a01b900461ffff1615155b156115f057601c546001600160a01b038116906127109061158b90600160a01b900461ffff168661538d565b5060009050805b9250929050565b60606000826001600160401b0381111561161a5761161a614b01565b604051908082528060200260200182016040528015611643578160200160208202803683370190505b50905060005b838110156116c057611672858583818110611666576116666153d6565b9050602002013561232f565b6116ae57848482818110611688576116886153d6565b905060200201358282815181106116a1576116a16153d6565b6020026020010181815250505b806116b8816153ec565b915050611649565b509392505050565b6116d0612cd6565b600254600160b81b900460ff16156116fa5760405162461bcd60e51b815260040161119390615405565b6002805482919060ff60b01b1916600160b01b83600381111561171f5761171f614ad1565b021790555050565b61173082611524565b61173981612e3b565b6117438383612e4c565b505050565b61119c612cd6565b611758612cd6565b600e6111a6828261549f565b61176c612d45565b6001600160a01b0316816001600160a01b0316146117e45760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401611193565b6111a68282612ed3565b6117438383836040518060200160405280600081525061233c565b611811612cd6565b6111a68282808060200260200160405190810160405280939291908181526020016000905b82821015611862576118536060830286013681900381019061555e565b81526020019060010190611836565b5050505050612f58565b6020546001600160a01b0391821691161490565b600060195460165461189291906152ed565b600454600354036012546118a691906152ed565b6118b091906152ed565b600083815260156020526040902060060154909150156118fc576000828152601760209081526040808320546015909252909120600601546118f291906152ed565b610faa9082615375565b919050565b6002601454036119235760405162461bcd60e51b8152600401611193906155c4565b6002601455611940600080516020615a568339815191523361200a565b61195c5760405162461bcd60e51b8152600401611193906155fb565b60005b8181101561199a5761198883838381811061197c5761197c6153d6565b905060200201356130ff565b80611992816153ec565b91505061195f565b5050600160145550565b6002601454036119c65760405162461bcd60e51b8152600401611193906155c4565b600260145560006119d5612d45565b905060006119e6878387878761239d565b905080861115611a265760405162461bcd60e51b815260206004820152600b60248201526a08ab0868a8a88a6be9a82b60ab1b6044820152606401611193565b611a2f87611880565b861115611a4e5760405162461bcd60e51b81526004016111939061562d565b600087815260156020908152604080832060070154601790925290912054611a769088615375565b1115611a945760405162461bcd60e51b81526004016111939061562d565b6000878152601560205260409020600201546001600160a01b0316611b1b576000878152601560205260409020600301543490611ad290889061538d565b1115611b165760405162461bcd60e51b8152602060048201526013602482015272125394d551919250d251539517d05353d55395606a1b6044820152606401611193565b611bcf565b600087815260156020526040902060028101546003909101546001600160a01b03909116906323b872dd9084903090611b55908b9061538d565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015611ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcd9190615659565b505b60008781526018602090815260408083206001600160a01b038616845290915281208054889290611c01908490615375565b909155505060008781526017602052604081208054889290611c24908490615375565b909155505060008781526015602052604090206006015415611c58578560196000828254611c529190615375565b90915550505b611c628287612d4f565b505060016014555050505050565b600260145403611c925760405162461bcd60e51b8152600401611193906155c4565b6002601455611caf600080516020615a568339815191523361200a565b611ccb5760405162461bcd60e51b815260040161119390615676565b611cd4816130ff565b506001601455565b6000610faa82612db3565b611cef612cd6565b600254600160c81b900460ff1615611d3a5760405162461bcd60e51b815260206004820152600e60248201526d131250d15394d157d313d0d2d15160921b6044820152606401611193565b6002805482919060ff60c01b1916600160c01b83600581111561171f5761171f614ad1565b6000611df583838080602002602001604051908101604052809392919081815260200183836020028082843760009201829052508b8152601560205260409020600501549250611df09150899050886040516001600160601b0319606084901b1660208201526034810182905260009060540160405160208183030381529060405280519060200120905092915050565b613166565b90505b95945050505050565b611e09612cd6565b611e128161317c565b50565b60006001600160a01b038216611e3e576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600860205260409020546001600160401b031690565b611e6b612cd6565b611e7560006131f2565b565b6060600e8054611e8690615425565b80601f0160208091040260200160405190810160405280929190818152602001828054611eb290615425565b8015611eff5780601f10611ed457610100808354040283529160200191611eff565b820191906000526020600020905b815481529060010190602001808311611ee257829003601f168201915b5050505050905090565b600061103f601e61324d565b611f1d612cd6565b600254600160a01b900460ff1615611f475760405162461bcd60e51b815260040161119390615405565b6002805460ff60a01b1916600160a01b179055565b600260145403611f7e5760405162461bcd60e51b8152600401611193906155c4565b6002601455611f9b600080516020615a568339815191523361200a565b611fb75760405162461bcd60e51b8152600401611193906155fb565b60005b8181101561199a57611fe3838383818110611fd757611fd76153d6565b90506020020135613257565b80611fed816153ec565b915050611fba565b6000546201000090046001600160a01b031690565b6000918252601b602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61203d612cd6565b600d6111a6828261549f565b606061103f6132a1565b61205b612cd6565b60115460ff161561207e5760405162461bcd60e51b81526004016111939061569f565b600f6111a6828261549f565b336001600160a01b038316036120b35760405163b06307db60e01b815260040160405180910390fd5b336000818152600a602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60025460609061103f90600160c01b900460ff166132b0565b600054610100900460ff16158080156121585750600054600160ff909116105b80612179575061216730612c3d565b158015612179575060005460ff166001145b6121dc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611193565b6000805460ff1916600117905580156121ff576000805461ff0019166101001790555b61220a600083613429565b612213826131f2565b6122238361012001516002613433565b612231836101600151613464565b612248836000015184602001518560400151613494565b61225a836060015184608001516134c6565b6122678360a001516134f7565b61226f613527565b61227882613556565b612280613586565b61228d8360c001516135b5565b6122a08360e001518461010001516135e5565b6122ae836101400151613616565b8015611743576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b612300612cd6565b60115460ff16156123235760405162461bcd60e51b81526004016111939061569f565b60106111a6828261549f565b6000610faa601a83613646565b612347848484611390565b6001600160a01b0383163b15612380576123638484848461366a565b612380576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b61238e612cd6565b6011805460ff19166001179055565b6000858152601560205260408120600401546123e85760405162461bcd60e51b815260206004820152600a6024820152694e4f545f45584953545360b01b6044820152606401611193565b6000868152601560205260409020544210156124345760405162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b6044820152606401611193565b6000868152601560205260409020600101544211156124855760405162461bcd60e51b815260206004820152600d60248201526c1053149150511657d153911151609a1b6044820152606401611193565b60008681526018602090815260408083206001600160a01b03891684528252808320548984526015909252909120600401546124c191906152ed565b60008781526015602052604090206005015490915015611df85760008681526018602090815260408083206001600160a01b0389168452909152902054841161253e5760405162461bcd60e51b815260206004820152600f60248201526e4d415845445f414c4c4f57414e434560881b6044820152606401611193565b61254b8686868686611d5f565b6125895760405162461bcd60e51b815260206004820152600f60248201526e1393d517d0531313d5d31254d51151608a1b6044820152606401611193565b60008681526018602090815260408083206001600160a01b03891684529091528120546125b690866152ed565b9050808211156125c4578091505b5095945050505050565b6060600f8054611e8690615425565b6125e5612cd6565b600254600160a01b900460ff161561260f5760405162461bcd60e51b815260040161119390615405565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b612639612cd6565b600254600160b81b900460ff161561267b5760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401611193565b6002805460ff60b81b1916600160b81b179055565b60606040518060600160405280603181526020016159e5603191396002546126d290600160c01b900460ff1660058111156126cd576126cd614ad1565b613756565b6040516020016126e39291906156bf565b604051602081830303815290604052905090565b6060610faa82613856565b604080516001808252818301909252606091816020015b6040805180820190915260008082526020820152815260200190600190039081612719575050601c5481519192506001600160a01b0316908290600090612762576127626153d6565b60209081029190910101516001600160a01b03919091169052601c548151600160a01b90910461ffff1690829060009061279e5761279e6153d6565b6020908102919091018101516001600160601b03909216910152919050565b6127c682611524565b6127cf81612e3b565b6117438383612ed3565b6127e1612cd6565b60005b8381101561283857612826858583818110612801576128016153d6565b9050602002013584848481811061281a5761281a6153d6565b905061010002016111aa565b80612830816153ec565b9150506127e4565b5050505050565b612847612cd6565b602080546001600160a01b0319166001600160a01b0392909216919091179055565b612871612cd6565b6002805460ff60a81b1916600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b606060108054611e8690615425565b6002601454036128e05760405162461bcd60e51b8152600401611193906155c4565b60026014556128fd600080516020615a568339815191523361200a565b6129195760405162461bcd60e51b815260040161119390615676565b611cd481613257565b61292a612cd6565b6002805460ff60c81b1916600160c81b179055565b61294833613932565b6002546001600160a01b03166129985760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401611193565b600254600160a81b900460ff16156129f25760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401611193565b60005b83811015612b33576000858583818110612a1157612a116153d6565b9050602002016020810190612a269190614cc6565b6001600160a01b031603612a6957612a64838383818110612a4957612a496153d6565b6002546001600160a01b031692602090910201359050613ab7565b612b21565b848482818110612a7b57612a7b6153d6565b9050602002016020810190612a909190614cc6565b6002546001600160a01b039182169163a9059cbb9116858585818110612ab857612ab86153d6565b905060200201356040518363ffffffff1660e01b8152600401612adc9291906149ce565b6020604051808303816000875af1158015612afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1f9190615659565b505b80612b2b816153ec565b9150506129f5565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a584848484604051612b6994939291906156ee565b60405180910390a150505050565b6060600d8054611e8690615425565b612b8e612cd6565b611e12612ba036839003830183615772565b613bcd565b612bad612cd6565b6001600160a01b038116612c125760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611193565b611e12816131f2565b6000612c263361186c565b15612c38575060131936013560601c90565b503390565b6001600160a01b03163b151590565b3390565b60006301ffc9a760e01b6001600160e01b031983161480610faa5750506001600160e01b03191660009081526001602052604090205460ff1690565b6000612c988383613c78565b9392505050565b6060600b8054611e8690615425565b600060035482108015610faa575050600090815260076020526040902054600160e01b161590565b612cde612d45565b6001600160a01b0316612cef611ff5565b6001600160a01b031614611e755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611193565b600061103f612c1b565b60125481612d606004546003540390565b612d6a9190615375565b1115612da95760405162461bcd60e51b815260206004820152600e60248201526d455843454544535f535550504c5960901b6044820152606401611193565b6111a68282613ca2565b600081600354811015612e015760008181526007602052604081205490600160e01b82169003612dff575b80600003612c98575060001901600081815260076020526040902054612dde565b505b604051636f96cda160e11b815260040160405180910390fd5b61238084848484613cbc565b4260a01b176001600160a01b03919091161790565b611e1281612e47612d45565b613ce9565b612e56828261200a565b6111a6576000828152601b602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612e8f612d45565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b612edd828261200a565b156111a6576000828152601b602090815260408083206001600160a01b03851684529091529020805460ff19169055612f14612d45565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b60005b81518110156111a6576000828281518110612f7857612f786153d6565b60200260200101519050612710816040015161ffff1610612fab5760405162461bcd60e51b8152600401611193906157ce565b60208101516001600160a01b03166130245780516000908152601d6020526040902080546001600160b01b03191690558051612fe990601e90613d4d565b5080516040519081527fa2870857763bd9ae76c957f869f16b31c18dd3bb4c7b4d3a4496dc5c57c657f99060200160405180910390a16130ec565b6040805180820182526020808401516001600160a01b0390811683528484015161ffff90811683850190815286516000908152601d90945294909220925183549451909216600160a01b026001600160b01b0319909416911617919091179055805161309290601e90613d59565b50805160208083015160408085015181519485526001600160a01b039092169284019290925261ffff1682820152517f389b70fb0887f01e83784eb1c4c589f740eca53b00ed0f45e41db5d079719abb9181900360600190a15b50806130f7816153ec565b915050612f5b565b61310a601a82613646565b6131435760405162461bcd60e51b815260206004820152600a6024820152691393d517d313d0d2d15160b21b6044820152606401611193565b600881901c6000908152601a602052604090208054600160ff84161b1916905550565b6000826131738584613d65565b14949350505050565b613184612cd6565b61318d81613daa565b60195460165461319d91906152ed565b600454600354036131ae90836152ed565b1015611e125760405162461bcd60e51b81526020600482015260136024820152721313d5d15497d512105397d49154d154959151606a1b6044820152606401611193565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6000610faa825490565b613262601a82613646565b1561327f5760405162461bcd60e51b815260040161119390615405565b600881901c6000908152601a602052604090208054600160ff84161b17905550565b6060600c8054611e8690615425565b606060068260058111156132c6576132c6614ad1565b60ff1611156132d457600080fd5b8160058111156132e6576132e6614ad1565b60000361331057505060408051808201909152600781526604342455f4343360cc1b602082015290565b81600581111561332257613322614ad1565b60010361334c57505060408051808201909152600781526621a122afa2a1a960c91b602082015290565b81600581111561335e5761335e614ad1565b60020361338957505060408051808201909152600881526721a122afa722a1a960c11b602082015290565b81600581111561339b5761339b614ad1565b6003036133c957505060408051808201909152600b81526a4342455f4e4543525f485360a81b602082015290565b8160058111156133db576133db614ad1565b60040361340457505060408051808201909152600681526521a122afa82960d11b602082015290565b50506040805180820190915260098152684342455f50525f485360b81b602082015290565b6111a68282612e4c565b600054610100900460ff1661345a5760405162461bcd60e51b8152600401611193906157f3565b6111a68282613e46565b600054610100900460ff1661348b5760405162461bcd60e51b8152600401611193906157f3565b611e1281613eca565b600054610100900460ff166134bb5760405162461bcd60e51b8152600401611193906157f3565b611743838383613f11565b600054610100900460ff166134ed5760405162461bcd60e51b8152600401611193906157f3565b6111a68282613f9f565b600054610100900460ff1661351e5760405162461bcd60e51b8152600401611193906157f3565b611e128161402a565b600054610100900460ff1661354e5760405162461bcd60e51b8152600401611193906157f3565b611e75614086565b600054610100900460ff1661357d5760405162461bcd60e51b8152600401611193906157f3565b611e12816140bd565b600054610100900460ff166135ad5760405162461bcd60e51b8152600401611193906157f3565b611e7561410c565b600054610100900460ff166135dc5760405162461bcd60e51b8152600401611193906157f3565b611e1281614143565b600054610100900460ff1661360c5760405162461bcd60e51b8152600401611193906157f3565b6111a6828261425f565b600054610100900460ff1661363d5760405162461bcd60e51b8152600401611193906157f3565b611e12816142ef565b600881901c600090815260208390526040902054600160ff83161b16151592915050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a029061369f90339089908890889060040161583e565b6020604051808303816000875af19250505080156136da575060408051601f3d908101601f191682019092526136d791810190615871565b60015b613738573d808015613708576040519150601f19603f3d011682016040523d82523d6000602084013e61370d565b606091505b508051600003613730576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b60608160000361377d5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156137a75780613791816153ec565b91506137a09050600a836153c2565b9150613781565b6000816001600160401b038111156137c1576137c1614b01565b6040519080825280601f01601f1916602001820160405280156137eb576020820181803683370190505b5090505b841561374e576138006001836152ed565b915061380d600a8661588e565b613818906030615375565b60f81b81838151811061382d5761382d6153d6565b60200101906001600160f81b031916908160001a90535061384f600a866153c2565b94506137ef565b60606000600f805461386790615425565b9050116138fe57600e805461387b90615425565b80601f01602080910402602001604051908101604052809291908181526020018280546138a790615425565b80156138f45780601f106138c9576101008083540402835291602001916138f4565b820191906000526020600020905b8154815290600101906020018083116138d757829003601f168201915b5050505050610faa565b600f61390983613756565b601060405160200161391d93929190615915565b60405160208183030381529060405292915050565b6003600254600160b01b900460ff16600381111561395257613952614ad1565b036139915760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401611193565b60028054600160b01b900460ff1660038111156139b0576139b0614ad1565b036139b85750565b6001600254600160b01b900460ff1660038111156139d8576139d8614ad1565b03613a34576002546001600160a01b03828116911614611e125760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401611193565b6000600254600160b01b900460ff166003811115613a5457613a54614ad1565b03611e1257806001600160a01b0316613a6b611ff5565b6001600160a01b031614611e125760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401611193565b80471015613b075760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611193565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613b54576040519150601f19603f3d011682016040523d82523d6000602084013e613b59565b606091505b50509050806117435760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401611193565b612710816020015161ffff1610613bf65760405162461bcd60e51b8152600401611193906157ce565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601c80546001600160b01b031916909217600160a01b9091021790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe4192613c6d9291614db9565b60405180910390a150565b6000826000018281548110613c8f57613c8f6153d6565b9060005260206000200154905092915050565b6111a6828260405180602001604052806000815250614316565b613cc7601a83613646565b15613ce45760405162461bcd60e51b815260040161119390615405565b612380565b613cf3828261200a565b6111a657613d0b816001600160a01b0316601461437c565b613d1683602061437c565b604051602001613d27929190615948565b60408051601f198184030181529082905262461bcd60e51b8252611193916004016148a2565b6000612c988383614517565b6000612c98838361460a565b600081815b84518110156116c057613d9682868381518110613d8957613d896153d6565b6020026020010151614659565b915080613da2816153ec565b915050613d6a565b613db2612cd6565b60135460ff1615613df75760405162461bcd60e51b815260206004820152600f60248201526e2120a9a2afaaa924afa32927ad22a760891b6044820152606401611193565b60045460035403811015613e415760405162461bcd60e51b81526020600482015260116024820152704c4f5745525f5448414e5f535550504c5960781b6044820152606401611193565b601255565b600054610100900460ff16613e6d5760405162461bcd60e51b8152600401611193906157f3565b613e7d63ac2ba33360e01b614688565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b836003811115613ec157613ec1614ad1565b02179055505050565b600054610100900460ff16613ef15760405162461bcd60e51b8152600401611193906157f3565b613f0163b964efe960e01b614688565b611d3a630c934a3560e31b614688565b600054610100900460ff16613f385760405162461bcd60e51b8152600401611193906157f3565b600b613f44848261549f565b50600c613f51838261549f565b50600d613f5e828261549f565b50613f6f633d96f4ff60e11b614688565b613f7f6380ac58cd60e01b614688565b613f8f63184371e560e31b614688565b611743635b5e139f60e01b614688565b600054610100900460ff16613fc65760405162461bcd60e51b8152600401611193906157f3565b600e613fd2838261549f565b50600f613fdf828261549f565b50604080518082019091526005815264173539b7b760d91b6020820152601090614009908261549f565b5061401a631f2f406b60e01b614688565b6111a6635b5e139f60e01b614688565b600054610100900460ff166140515760405162461bcd60e51b8152600401611193906157f3565b60128190556140666330f487b560e11b614688565b6140766380ac58cd60e01b614688565b611e1263184371e560e31b614688565b600054610100900460ff166140ad5760405162461bcd60e51b8152600401611193906157f3565b611e75631aa1577160e11b614688565b600054610100900460ff166140e45760405162461bcd60e51b8152600401611193906157f3565b6140f4631a056e7160e01b614688565b611e12600080516020615a1683398151915282613429565b600054610100900460ff166141335760405162461bcd60e51b8152600401611193906157f3565b611e7563714ad8e760e01b614688565b600054610100900460ff1661416a5760405162461bcd60e51b8152600401611193906157f3565b61417a6308b4902960e41b614688565b60005b81518110156111a657818181518110614198576141986153d6565b602090810291909101810151600083815260158352604090819020825181559282015160018401558101516002830180546001600160a01b0319166001600160a01b03909216919091179055606081015160038301556080810151600483015560a0810151600583015560c0810151600683015560e00151600790910155815182908290811061422a5761422a6153d6565b602002602001015160c00151601660008282546142479190615375565b90915550819050614257816153ec565b91505061417d565b600054610100900460ff166142865760405162461bcd60e51b8152600401611193906157f3565b614296633a47bf5160e11b614688565b6142a663152a902d60e11b614688565b6142b663c69dbd8f60e01b614688565b6142c663656cb66560e11b614688565b604080518082019091526001600160a01b038316815261ffff8216602082015261174381613bcd565b600054610100900460ff166128475760405162461bcd60e51b8152600401611193906157f3565b6143208383614709565b6001600160a01b0383163b15611743576003548281035b61434a600086838060010194508661366a565b614367576040516368d2bf6b60e11b815260040160405180910390fd5b81811061433757816003541461283857600080fd5b6060600061438b83600261538d565b614396906002615375565b6001600160401b038111156143ad576143ad614b01565b6040519080825280601f01601f1916602001820160405280156143d7576020820181803683370190505b509050600360fc1b816000815181106143f2576143f26153d6565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110614421576144216153d6565b60200101906001600160f81b031916908160001a905350600061444584600261538d565b614450906001615375565b90505b60018111156144c8576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110614484576144846153d6565b1a60f81b82828151811061449a5761449a6153d6565b60200101906001600160f81b031916908160001a90535060049490941c936144c1816159b7565b9050614453565b508315612c985760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401611193565b6000818152600183016020526040812054801561460057600061453b6001836152ed565b855490915060009061454f906001906152ed565b90508181146145b457600086600001828154811061456f5761456f6153d6565b9060005260206000200154905080876000018481548110614592576145926153d6565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806145c5576145c56159ce565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610faa565b6000915050610faa565b600081815260018301602052604081205461465157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610faa565b506000610faa565b6000818310614675576000828152602084905260409020612c98565b6000838152602083905260409020612c98565b6001600160e01b031980821690036146e15760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401611193565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b600354600082900361472e5760405163b562e8dd60e01b815260040160405180910390fd5b61473b6000848385612e1a565b6001600160a01b038316600090815260086020526040902080546001600160401b018402019055614772836001841460e11b612e26565b6000828152600760205260408120919091556001600160a01b038416908383019083908390600080516020615a368339815191528180a4600183015b8181146147d45780836000600080516020615a36833981519152600080a46001016147ae565b50816000036147f557604051622e076360e81b815260040160405180910390fd5b60035550505050565b6001600160e01b031981168114611e1257600080fd5b60006020828403121561482657600080fd5b8135612c98816147fe565b60006020828403121561484357600080fd5b5035919050565b60005b8381101561486557818101518382015260200161484d565b838111156123805750506000910152565b6000815180845261488e81602086016020860161484a565b601f01601f19169290920160200192915050565b602081526000612c986020830184614876565b6001600160a01b0381168114611e1257600080fd5b80356118fc816148b5565b600080604083850312156148e857600080fd5b82356148f3816148b5565b946020939093013593505050565b6000806040838503121561491457600080fd5b823591506020830135614926816148b5565b809150509250929050565b60008082840361012081121561494657600080fd5b83359250610100601f198201121561495d57600080fd5b506020830190509250929050565b60008060006060848603121561498057600080fd5b833561498b816148b5565b9250602084013561499b816148b5565b929592945050506040919091013590565b600080604083850312156149bf57600080fd5b50508035926020909101359150565b6001600160a01b03929092168252602082015260400190565b60008083601f8401126149f957600080fd5b5081356001600160401b03811115614a1057600080fd5b6020830191508360208260051b85010111156115f757600080fd5b60008060208385031215614a3e57600080fd5b82356001600160401b03811115614a5457600080fd5b614a60858286016149e7565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b81811015614aa457835183529284019291840191600101614a88565b50909695505050505050565b600060208284031215614ac257600080fd5b813560048110612c9857600080fd5b634e487b7160e01b600052602160045260246000fd5b6020810160048310614afb57614afb614ad1565b91905290565b634e487b7160e01b600052604160045260246000fd5b60405161010081016001600160401b0381118282101715614b3a57614b3a614b01565b60405290565b60405161018081016001600160401b0381118282101715614b3a57614b3a614b01565b604051601f8201601f191681016001600160401b0381118282101715614b8b57614b8b614b01565b604052919050565b60006001600160401b03831115614bac57614bac614b01565b614bbf601f8401601f1916602001614b63565b9050828152838383011115614bd357600080fd5b828260208301376000602084830101529392505050565b600082601f830112614bfb57600080fd5b612c9883833560208501614b93565b600060208284031215614c1c57600080fd5b81356001600160401b03811115614c3257600080fd5b61374e84828501614bea565b6020810160068310614afb57614afb614ad1565b60008060208385031215614c6557600080fd5b82356001600160401b0380821115614c7c57600080fd5b818501915085601f830112614c9057600080fd5b813581811115614c9f57600080fd5b866020606083028501011115614cb457600080fd5b60209290920196919550909350505050565b600060208284031215614cd857600080fd5b8135612c98816148b5565b600080600080600060808688031215614cfb57600080fd5b85359450602086013593506040860135925060608601356001600160401b03811115614d2657600080fd5b614d32888289016149e7565b969995985093965092949392505050565b8035600681106118fc57600080fd5b600060208284031215614d6457600080fd5b612c9882614d43565b600080600080600060808688031215614d8557600080fd5b853594506020860135614d97816148b5565b93506040860135925060608601356001600160401b03811115614d2657600080fd5b6001600160a01b0392909216825261ffff16602082015260400190565b8015158114611e1257600080fd5b60008060408385031215614df757600080fd5b8235614e02816148b5565b9150602083013561492681614dd6565b600082601f830112614e2357600080fd5b813560206001600160401b03821115614e3e57614e3e614b01565b614e4c818360051b01614b63565b82815260089290921b84018101918181019086841115614e6b57600080fd5b8286015b84811015614ef1576101008189031215614e895760008081fd5b614e91614b17565b813581528482013585820152604080830135614eac816148b5565b90820152606082810135908201526080808301359082015260a0808301359082015260c0808301359082015260e0808301359082015283529183019161010001614e6f565b509695505050505050565b803561ffff811681146118fc57600080fd5b60008060408385031215614f2157600080fd5b82356001600160401b0380821115614f3857600080fd5b908401906101808287031215614f4d57600080fd5b614f55614b40565b823582811115614f6457600080fd5b614f7088828601614bea565b825250602083013582811115614f8557600080fd5b614f9188828601614bea565b602083015250604083013582811115614fa957600080fd5b614fb588828601614bea565b604083015250606083013582811115614fcd57600080fd5b614fd988828601614bea565b606083015250608083013582811115614ff157600080fd5b614ffd88828601614bea565b60808301525060a083013560a082015260c08301358281111561501f57600080fd5b61502b88828601614e12565b60c08301525061503d60e084016148ca565b60e08201526101009150615052828401614efc565b8282015261012091506150668284016148ca565b82820152610140915061507a8284016148ca565b82820152610160915061508e828401614d43565b828201528094505050506150a4602084016148ca565b90509250929050565b600080600080608085870312156150c357600080fd5b84356150ce816148b5565b935060208501356150de816148b5565b92506040850135915060608501356001600160401b0381111561510057600080fd5b8501601f8101871361511157600080fd5b61512087823560208401614b93565b91505092959194509250565b602080825282518282018190526000919060409081850190868401855b8281101561518057815180516001600160a01b031685528601516001600160601b0316868501529284019290850190600101615149565b5091979650505050505050565b600080600080604085870312156151a357600080fd5b84356001600160401b03808211156151ba57600080fd5b6151c6888389016149e7565b909650945060208701359150808211156151df57600080fd5b818701915087601f8301126151f357600080fd5b81358181111561520257600080fd5b8860208260081b850101111561521757600080fd5b95989497505060200194505050565b6000806000806040858703121561523c57600080fd5b84356001600160401b038082111561525357600080fd5b61525f888389016149e7565b9096509450602087013591508082111561527857600080fd5b50615285878288016149e7565b95989497509550505050565b600080604083850312156152a457600080fd5b82356152af816148b5565b91506020830135614926816148b5565b6000604082840312156152d157600080fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156152ff576152ff6152d7565b500390565b8135815560208201356001820155600281016040830135615324816148b5565b81546001600160a01b0319166001600160a01b0391909116179055606082013560038201556080820135600482015560a0820135600582015560c0820135600682015560e090910135600790910155565b60008219821115615388576153886152d7565b500190565b60008160001904831182151516156153a7576153a76152d7565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826153d1576153d16153ac565b500490565b634e487b7160e01b600052603260045260246000fd5b6000600182016153fe576153fe6152d7565b5060010190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b600181811c9082168061543957607f821691505b6020821081036152d157634e487b7160e01b600052602260045260246000fd5b601f82111561174357600081815260208120601f850160051c810160208610156154805750805b601f850160051c820191505b8181101561151c5782815560010161548c565b81516001600160401b038111156154b8576154b8614b01565b6154cc816154c68454615425565b84615459565b602080601f83116001811461550157600084156154e95750858301515b600019600386901b1c1916600185901b17855561151c565b600085815260208120601f198616915b8281101561553057888601518255948401946001909101908401615511565b508582101561554e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060828403121561557057600080fd5b604051606081018181106001600160401b038211171561559257615592614b01565b6040528235815260208301356155a7816148b5565b60208201526155b860408401614efc565b60408201529392505050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601890820152775354414b41424c455f4e4f545f4c4f434b45525f524f4c4560401b604082015260600190565b60208082526012908201527122ac21a2a2a229afa0a62627a1a0aa24a7a760711b604082015260600190565b60006020828403121561566b57600080fd5b8151612c9881614dd6565b6020808252600f908201526e4e4f545f4c4f434b45525f524f4c4560881b604082015260600190565b602080825260069082015265232927ad22a760d11b604082015260600190565b600083516156d181846020880161484a565b8351908301906156e581836020880161484a565b01949350505050565b6040808252810184905260008560608301825b87811015615731578235615714816148b5565b6001600160a01b0316825260209283019290910190600101615701565b5083810360208501528481526001600160fb1b0385111561575157600080fd5b8460051b915081866020830137600091016020019081529695505050505050565b60006040828403121561578457600080fd5b604051604081018181106001600160401b03821117156157a6576157a6614b01565b60405282356157b4816148b5565b81526157c260208401614efc565b60208201529392505050565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611df590830184614876565b60006020828403121561588357600080fd5b8151612c98816147fe565b60008261589d5761589d6153ac565b500690565b600081546158af81615425565b600182811680156158c757600181146158dc5761590b565b60ff198416875282151583028701945061590b565b8560005260208060002060005b858110156159025781548a8201529084019082016158e9565b50505082870194505b5050505092915050565b600061592182866158a2565b845161593181836020890161484a565b61593d818301866158a2565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b81526000835161597a81601785016020880161484a565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516159ab81602884016020880161484a565b01602801949350505050565b6000816159c6576159c66152d7565b506000190190565b634e487b7160e01b600052603160045260246000fdfe61723a2f2f5f44396b4e3157724e576243713535425341475262544234625333763851415054596d42546853625833412f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efaf9a8bb3cbd6b84fbccefa71ff73e26e798553c6914585a84886212a46a90279a264697066735822122012569abe56bae4f7a3cd5d57159e755fc4872e2c63edee2e4ab24bf748bc2c6664736f6c634300080f0033","deployedBytecode":"0x6080604052600436106104005760003560e01c80637e98034211610216578063c71b0e1c1161011f578063c71b0e1c14610d01578063c723955a14610d17578063c7db289314610d2c578063c87b56dd14610d41578063cad96cca14610d61578063d539139314610d8e578063d547741f14610db0578063d5abeb0114610dd0578063d8b436fd14610de6578063da74222814610e06578063da82b22714610e26578063dbbc853b14610e3b578063dcbe353f14610e50578063dd46706414610e70578063dd89c6fa14610e90578063de6d6d9614610ea5578063e8a3d48514610ec5578063e985e9c514610eda578063ef60ceaf14610f23578063f2fde38b14610f43578063f362136714610f63578063f384702f14610f8557600080fd5b80637e98034214610a9d578063837fe14014610ab2578063859610c614610ac75780638da5cb5b14610ae757806391d1485414610afc578063938e3d7b14610b1c57806395d89b4114610b3c57806399e0dd7c14610b51578063a217fddf14610b71578063a22cb46514610b86578063a341793b14610ba6578063a65dbda414610bbb578063a9852bfb14610bdb578063af121f5414610bfb578063b45a3c0e14610c1c578063b88d4fde14610c3c578063ba4695fd14610c5c578063bd2c18f714610c71578063bf9b7a5714610c91578063c0ac998314610cb2578063c0bb38ff14610cc7578063c29de63014610ce757600080fd5b806336568abe1161031857806336568abe146107d457806342842e0e146107f457806349561cb91461081457806350a5292f146108355780635136dcc71461086357806353367f081461088357806356c022bb146108b0578063572b6c05146108d05780635897f878146108f05780635d36598f146109105780635ea2c91b146109305780636057e0ec146109435780636198e339146109645780636352211e1461098457806364ed2913146109a457806368c7d37c146109c45780636f8b44b0146109e457806370a0823114610a04578063714ad8e714610a24578063715018a614610a385780637313cba914610a4d5780637885fdc714610a6257600080fd5b806301ffc9a714610405578063039af9eb1461043a5780630653aca5146104eb57806306fdde031461053a578063081812fc1461055c578063095ea7b3146105945780631123f2ef146105b6578063167446071461060757806318160ddd1461061c5780631a056e711461063557806320f1bb301461065557806323b872dd14610675578063248a9ca3146106955780632a55205a146106b55780632bb684ad146106e35780632c233067146107105780632cb9b2ac146107305780632d00b587146107465780632f2ff15d146107745780633542aee2146107945780633574a2dd146107b4575b600080fd5b34801561041157600080fd5b50610425610420366004614814565b610f9f565b60405190151581526020015b60405180910390f35b34801561044657600080fd5b506104a2610455366004614831565b60156020526000908152604090208054600182015460028301546003840154600485015460058601546006870154600790970154959694956001600160a01b039094169492939192909188565b6040805198895260208901979097526001600160a01b03909516958701959095526060860192909252608085015260a084015260c083019190915260e082015261010001610431565b3480156104f757600080fd5b5061050b610506366004614831565b610fb0565b60408051825181526020808401516001600160a01b0316908201529181015161ffff1690820152606001610431565b34801561054657600080fd5b5061054f611035565b60405161043191906148a2565b34801561056857600080fd5b5061057c610577366004614831565b611044565b6040516001600160a01b039091168152602001610431565b3480156105a057600080fd5b506105b46105af3660046148d5565b611088565b005b3480156105c257600080fd5b506105f96105d1366004614901565b60009182526018602090815260408084206001600160a01b0393909316845291905290205490565b604051908152602001610431565b34801561061357600080fd5b506105b4611128565b34801561062857600080fd5b50600454600354036105f9565b34801561064157600080fd5b506105b46106503660046148d5565b61113f565b34801561066157600080fd5b506105b4610670366004614931565b6111aa565b34801561068157600080fd5b506105b461069036600461496b565b611390565b3480156106a157600080fd5b506105f96106b0366004614831565b611524565b3480156106c157600080fd5b506106d56106d03660046149ac565b611539565b6040516104319291906149ce565b3480156106ef57600080fd5b506107036106fe366004614a2b565b6115fe565b6040516104319190614a6c565b34801561071c57600080fd5b506105b461072b366004614ab0565b6116c8565b34801561073c57600080fd5b506105f960195481565b34801561075257600080fd5b5060025461076790600160b01b900460ff1681565b6040516104319190614ae7565b34801561078057600080fd5b506105b461078f366004614901565b611727565b3480156107a057600080fd5b506105b46107af3660046148d5565b611748565b3480156107c057600080fd5b506105b46107cf366004614c0a565b611750565b3480156107e057600080fd5b506105b46107ef366004614901565b611764565b34801561080057600080fd5b506105b461080f36600461496b565b6117ee565b34801561082057600080fd5b5060025461042590600160b81b900460ff1681565b34801561084157600080fd5b5060025461085690600160c01b900460ff1681565b6040516104319190614c3e565b34801561086f57600080fd5b506105b461087e366004614c52565b611809565b34801561088f57600080fd5b506105f961089e366004614831565b60176020526000908152604090205481565b3480156108bc57600080fd5b5060205461057c906001600160a01b031681565b3480156108dc57600080fd5b506104256108eb366004614cc6565b61186c565b3480156108fc57600080fd5b506105f961090b366004614831565b611880565b34801561091c57600080fd5b506105b461092b366004614a2b565b611901565b6105b461093e366004614ce3565b6119a4565b34801561094f57600080fd5b5060025461042590600160a01b900460ff1681565b34801561097057600080fd5b506105b461097f366004614831565b611c70565b34801561099057600080fd5b5061057c61099f366004614831565b611cdc565b3480156109b057600080fd5b506105b46109bf366004614d52565b611ce7565b3480156109d057600080fd5b506104256109df366004614d6d565b611d5f565b3480156109f057600080fd5b506105b46109ff366004614831565b611e01565b348015610a1057600080fd5b506105f9610a1f366004614cc6565b611e15565b348015610a3057600080fd5b506001610425565b348015610a4457600080fd5b506105b4611e63565b348015610a5957600080fd5b5061054f611e77565b348015610a6e57600080fd5b50601c54610a8f906001600160a01b03811690600160a01b900461ffff1682565b604051610431929190614db9565b348015610aa957600080fd5b506105f9611f09565b348015610abe57600080fd5b506105b4611f15565b348015610ad357600080fd5b506105b4610ae2366004614a2b565b611f5c565b348015610af357600080fd5b5061057c611ff5565b348015610b0857600080fd5b50610425610b17366004614901565b61200a565b348015610b2857600080fd5b506105b4610b37366004614c0a565b612035565b348015610b4857600080fd5b5061054f612049565b348015610b5d57600080fd5b506105b4610b6c366004614c0a565b612053565b348015610b7d57600080fd5b506105f9600081565b348015610b9257600080fd5b506105b4610ba1366004614de4565b61208a565b348015610bb257600080fd5b5061054f61211f565b348015610bc757600080fd5b506105b4610bd6366004614f0e565b612138565b348015610be757600080fd5b506105b4610bf6366004614c0a565b6122f8565b348015610c0757600080fd5b5060025461042590600160a81b900460ff1681565b348015610c2857600080fd5b50610425610c37366004614831565b61232f565b348015610c4857600080fd5b506105b4610c573660046150ad565b61233c565b348015610c6857600080fd5b506105b4612386565b348015610c7d57600080fd5b506105f9610c8c366004614d6d565b61239d565b348015610c9d57600080fd5b5060025461042590600160c81b900460ff1681565b348015610cbe57600080fd5b5061054f6125ce565b348015610cd357600080fd5b506105b4610ce2366004614cc6565b6125dd565b348015610cf357600080fd5b506011546104259060ff1681565b348015610d0d57600080fd5b506105f960165481565b348015610d2357600080fd5b506105b4612631565b348015610d3857600080fd5b5061054f612690565b348015610d4d57600080fd5b5061054f610d5c366004614831565b6126f7565b348015610d6d57600080fd5b50610d81610d7c366004614831565b612702565b604051610431919061512c565b348015610d9a57600080fd5b506105f9600080516020615a1683398151915281565b348015610dbc57600080fd5b506105b4610dcb366004614901565b6127bd565b348015610ddc57600080fd5b506105f960125481565b348015610df257600080fd5b506105b4610e0136600461518d565b6127d9565b348015610e1257600080fd5b506105b4610e21366004614cc6565b61283f565b348015610e3257600080fd5b506105b4612869565b348015610e4757600080fd5b5061054f6128af565b348015610e5c57600080fd5b5060025461057c906001600160a01b031681565b348015610e7c57600080fd5b506105b4610e8b366004614831565b6128be565b348015610e9c57600080fd5b506105b4612922565b348015610eb157600080fd5b506105b4610ec0366004615226565b61293f565b348015610ed157600080fd5b5061054f612b77565b348015610ee657600080fd5b50610425610ef5366004615291565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205460ff1690565b348015610f2f57600080fd5b506105b4610f3e3660046152bf565b612b86565b348015610f4f57600080fd5b506105b4610f5e366004614cc6565b612ba5565b348015610f6f57600080fd5b506105f9600080516020615a5683398151915281565b348015610f9157600080fd5b506013546104259060ff1681565b6000610faa82612c50565b92915050565b6040805160608101825260008082526020820181905291810182905290610fd8601e84612c8c565b6000818152601d60209081526040918290208251808401845290546001600160a01b03808216835261ffff600160a01b90920482168385019081528551606081018752968752925116928501929092525116908201529392505050565b606061103f612c9f565b905090565b600061104f82612cae565b61106c576040516333d1c03960e21b815260040160405180910390fd5b506000908152600960205260409020546001600160a01b031690565b600061109382611cdc565b9050336001600160a01b038216146110cc576110af8133610ef5565b6110cc576040516367d9dca160e11b815260040160405180910390fd5b60008281526009602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b611130612cd6565b6013805460ff19166001179055565b611159600080516020615a16833981519152610b17612d45565b61119c5760405162461bcd60e51b815260206004820152600f60248201526e4e4f545f4d494e5445525f524f4c4560881b60448201526064015b60405180910390fd5b6111a68282612d4f565b5050565b6111b2612cd6565b60008281526017602052604090205460e082013510156112085760405162461bcd60e51b81526020600482015260116024820152701313d5d15497d512105397d35253951151607a1b6044820152606401611193565b600082815260156020526040902060060154156112765760008281526017602052604090205460c082013510156112765760405162461bcd60e51b81526020600482015260126024820152711313d5d7d49154d154959157d05353d5539560721b6044820152606401611193565b600082815260176020526040902054156112e457600082815260156020526040902060040154608082013510156112e45760405162461bcd60e51b81526020600482015260126024820152711313d5d7d3505617d4115497d5d05313115560721b6044820152606401611193565b60008281526015602052604081206006015460168054919290916113099084906152ed565b9091555050600082815260156020526040902081906113288282615304565b9050508060c00135601660008282546113419190615375565b909155505060125460165411156111a65760405162461bcd60e51b815260206004820152601360248201527213505617d4d55414131657d15610d151511151606a1b6044820152606401611193565b600061139b82612db3565b9050836001600160a01b0316816001600160a01b0316146113ce5760405162a1148160e81b815260040160405180910390fd5b60008281526009602052604090208054338082146001600160a01b0388169091141761141b576113fe8633610ef5565b61141b57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03851661144257604051633a954ecd60e21b815260040160405180910390fd5b61144f8686866001612e1a565b801561145a57600082555b6001600160a01b0386811660009081526008602052604080822080546000190190559187168152208054600101905561149785600160e11b612e26565b600085815260076020526040812091909155600160e11b841690036114ec576001840160008181526007602052604081205490036114ea5760035481146114ea5760008181526007602052604090208490555b505b83856001600160a01b0316876001600160a01b0316600080516020615a3683398151915260405160405180910390a45b505050505050565b6000908152601b602052604090206001015490565b6000828152601d602052604081205481906001600160a01b03161561159e576000848152601d60205260409020546001600160a01b038116906127109061158b90600160a01b900461ffff168661538d565b61159591906153c2565b915091506115f7565b601c546001600160a01b0316158015906115c45750601c54600160a01b900461ffff1615155b156115f057601c546001600160a01b038116906127109061158b90600160a01b900461ffff168661538d565b5060009050805b9250929050565b60606000826001600160401b0381111561161a5761161a614b01565b604051908082528060200260200182016040528015611643578160200160208202803683370190505b50905060005b838110156116c057611672858583818110611666576116666153d6565b9050602002013561232f565b6116ae57848482818110611688576116886153d6565b905060200201358282815181106116a1576116a16153d6565b6020026020010181815250505b806116b8816153ec565b915050611649565b509392505050565b6116d0612cd6565b600254600160b81b900460ff16156116fa5760405162461bcd60e51b815260040161119390615405565b6002805482919060ff60b01b1916600160b01b83600381111561171f5761171f614ad1565b021790555050565b61173082611524565b61173981612e3b565b6117438383612e4c565b505050565b61119c612cd6565b611758612cd6565b600e6111a6828261549f565b61176c612d45565b6001600160a01b0316816001600160a01b0316146117e45760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401611193565b6111a68282612ed3565b6117438383836040518060200160405280600081525061233c565b611811612cd6565b6111a68282808060200260200160405190810160405280939291908181526020016000905b82821015611862576118536060830286013681900381019061555e565b81526020019060010190611836565b5050505050612f58565b6020546001600160a01b0391821691161490565b600060195460165461189291906152ed565b600454600354036012546118a691906152ed565b6118b091906152ed565b600083815260156020526040902060060154909150156118fc576000828152601760209081526040808320546015909252909120600601546118f291906152ed565b610faa9082615375565b919050565b6002601454036119235760405162461bcd60e51b8152600401611193906155c4565b6002601455611940600080516020615a568339815191523361200a565b61195c5760405162461bcd60e51b8152600401611193906155fb565b60005b8181101561199a5761198883838381811061197c5761197c6153d6565b905060200201356130ff565b80611992816153ec565b91505061195f565b5050600160145550565b6002601454036119c65760405162461bcd60e51b8152600401611193906155c4565b600260145560006119d5612d45565b905060006119e6878387878761239d565b905080861115611a265760405162461bcd60e51b815260206004820152600b60248201526a08ab0868a8a88a6be9a82b60ab1b6044820152606401611193565b611a2f87611880565b861115611a4e5760405162461bcd60e51b81526004016111939061562d565b600087815260156020908152604080832060070154601790925290912054611a769088615375565b1115611a945760405162461bcd60e51b81526004016111939061562d565b6000878152601560205260409020600201546001600160a01b0316611b1b576000878152601560205260409020600301543490611ad290889061538d565b1115611b165760405162461bcd60e51b8152602060048201526013602482015272125394d551919250d251539517d05353d55395606a1b6044820152606401611193565b611bcf565b600087815260156020526040902060028101546003909101546001600160a01b03909116906323b872dd9084903090611b55908b9061538d565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015611ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcd9190615659565b505b60008781526018602090815260408083206001600160a01b038616845290915281208054889290611c01908490615375565b909155505060008781526017602052604081208054889290611c24908490615375565b909155505060008781526015602052604090206006015415611c58578560196000828254611c529190615375565b90915550505b611c628287612d4f565b505060016014555050505050565b600260145403611c925760405162461bcd60e51b8152600401611193906155c4565b6002601455611caf600080516020615a568339815191523361200a565b611ccb5760405162461bcd60e51b815260040161119390615676565b611cd4816130ff565b506001601455565b6000610faa82612db3565b611cef612cd6565b600254600160c81b900460ff1615611d3a5760405162461bcd60e51b815260206004820152600e60248201526d131250d15394d157d313d0d2d15160921b6044820152606401611193565b6002805482919060ff60c01b1916600160c01b83600581111561171f5761171f614ad1565b6000611df583838080602002602001604051908101604052809392919081815260200183836020028082843760009201829052508b8152601560205260409020600501549250611df09150899050886040516001600160601b0319606084901b1660208201526034810182905260009060540160405160208183030381529060405280519060200120905092915050565b613166565b90505b95945050505050565b611e09612cd6565b611e128161317c565b50565b60006001600160a01b038216611e3e576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600860205260409020546001600160401b031690565b611e6b612cd6565b611e7560006131f2565b565b6060600e8054611e8690615425565b80601f0160208091040260200160405190810160405280929190818152602001828054611eb290615425565b8015611eff5780601f10611ed457610100808354040283529160200191611eff565b820191906000526020600020905b815481529060010190602001808311611ee257829003601f168201915b5050505050905090565b600061103f601e61324d565b611f1d612cd6565b600254600160a01b900460ff1615611f475760405162461bcd60e51b815260040161119390615405565b6002805460ff60a01b1916600160a01b179055565b600260145403611f7e5760405162461bcd60e51b8152600401611193906155c4565b6002601455611f9b600080516020615a568339815191523361200a565b611fb75760405162461bcd60e51b8152600401611193906155fb565b60005b8181101561199a57611fe3838383818110611fd757611fd76153d6565b90506020020135613257565b80611fed816153ec565b915050611fba565b6000546201000090046001600160a01b031690565b6000918252601b602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61203d612cd6565b600d6111a6828261549f565b606061103f6132a1565b61205b612cd6565b60115460ff161561207e5760405162461bcd60e51b81526004016111939061569f565b600f6111a6828261549f565b336001600160a01b038316036120b35760405163b06307db60e01b815260040160405180910390fd5b336000818152600a602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60025460609061103f90600160c01b900460ff166132b0565b600054610100900460ff16158080156121585750600054600160ff909116105b80612179575061216730612c3d565b158015612179575060005460ff166001145b6121dc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611193565b6000805460ff1916600117905580156121ff576000805461ff0019166101001790555b61220a600083613429565b612213826131f2565b6122238361012001516002613433565b612231836101600151613464565b612248836000015184602001518560400151613494565b61225a836060015184608001516134c6565b6122678360a001516134f7565b61226f613527565b61227882613556565b612280613586565b61228d8360c001516135b5565b6122a08360e001518461010001516135e5565b6122ae836101400151613616565b8015611743576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b612300612cd6565b60115460ff16156123235760405162461bcd60e51b81526004016111939061569f565b60106111a6828261549f565b6000610faa601a83613646565b612347848484611390565b6001600160a01b0383163b15612380576123638484848461366a565b612380576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b61238e612cd6565b6011805460ff19166001179055565b6000858152601560205260408120600401546123e85760405162461bcd60e51b815260206004820152600a6024820152694e4f545f45584953545360b01b6044820152606401611193565b6000868152601560205260409020544210156124345760405162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b6044820152606401611193565b6000868152601560205260409020600101544211156124855760405162461bcd60e51b815260206004820152600d60248201526c1053149150511657d153911151609a1b6044820152606401611193565b60008681526018602090815260408083206001600160a01b03891684528252808320548984526015909252909120600401546124c191906152ed565b60008781526015602052604090206005015490915015611df85760008681526018602090815260408083206001600160a01b0389168452909152902054841161253e5760405162461bcd60e51b815260206004820152600f60248201526e4d415845445f414c4c4f57414e434560881b6044820152606401611193565b61254b8686868686611d5f565b6125895760405162461bcd60e51b815260206004820152600f60248201526e1393d517d0531313d5d31254d51151608a1b6044820152606401611193565b60008681526018602090815260408083206001600160a01b03891684529091528120546125b690866152ed565b9050808211156125c4578091505b5095945050505050565b6060600f8054611e8690615425565b6125e5612cd6565b600254600160a01b900460ff161561260f5760405162461bcd60e51b815260040161119390615405565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b612639612cd6565b600254600160b81b900460ff161561267b5760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401611193565b6002805460ff60b81b1916600160b81b179055565b60606040518060600160405280603181526020016159e5603191396002546126d290600160c01b900460ff1660058111156126cd576126cd614ad1565b613756565b6040516020016126e39291906156bf565b604051602081830303815290604052905090565b6060610faa82613856565b604080516001808252818301909252606091816020015b6040805180820190915260008082526020820152815260200190600190039081612719575050601c5481519192506001600160a01b0316908290600090612762576127626153d6565b60209081029190910101516001600160a01b03919091169052601c548151600160a01b90910461ffff1690829060009061279e5761279e6153d6565b6020908102919091018101516001600160601b03909216910152919050565b6127c682611524565b6127cf81612e3b565b6117438383612ed3565b6127e1612cd6565b60005b8381101561283857612826858583818110612801576128016153d6565b9050602002013584848481811061281a5761281a6153d6565b905061010002016111aa565b80612830816153ec565b9150506127e4565b5050505050565b612847612cd6565b602080546001600160a01b0319166001600160a01b0392909216919091179055565b612871612cd6565b6002805460ff60a81b1916600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b606060108054611e8690615425565b6002601454036128e05760405162461bcd60e51b8152600401611193906155c4565b60026014556128fd600080516020615a568339815191523361200a565b6129195760405162461bcd60e51b815260040161119390615676565b611cd481613257565b61292a612cd6565b6002805460ff60c81b1916600160c81b179055565b61294833613932565b6002546001600160a01b03166129985760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401611193565b600254600160a81b900460ff16156129f25760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401611193565b60005b83811015612b33576000858583818110612a1157612a116153d6565b9050602002016020810190612a269190614cc6565b6001600160a01b031603612a6957612a64838383818110612a4957612a496153d6565b6002546001600160a01b031692602090910201359050613ab7565b612b21565b848482818110612a7b57612a7b6153d6565b9050602002016020810190612a909190614cc6565b6002546001600160a01b039182169163a9059cbb9116858585818110612ab857612ab86153d6565b905060200201356040518363ffffffff1660e01b8152600401612adc9291906149ce565b6020604051808303816000875af1158015612afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1f9190615659565b505b80612b2b816153ec565b9150506129f5565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a584848484604051612b6994939291906156ee565b60405180910390a150505050565b6060600d8054611e8690615425565b612b8e612cd6565b611e12612ba036839003830183615772565b613bcd565b612bad612cd6565b6001600160a01b038116612c125760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611193565b611e12816131f2565b6000612c263361186c565b15612c38575060131936013560601c90565b503390565b6001600160a01b03163b151590565b3390565b60006301ffc9a760e01b6001600160e01b031983161480610faa5750506001600160e01b03191660009081526001602052604090205460ff1690565b6000612c988383613c78565b9392505050565b6060600b8054611e8690615425565b600060035482108015610faa575050600090815260076020526040902054600160e01b161590565b612cde612d45565b6001600160a01b0316612cef611ff5565b6001600160a01b031614611e755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611193565b600061103f612c1b565b60125481612d606004546003540390565b612d6a9190615375565b1115612da95760405162461bcd60e51b815260206004820152600e60248201526d455843454544535f535550504c5960901b6044820152606401611193565b6111a68282613ca2565b600081600354811015612e015760008181526007602052604081205490600160e01b82169003612dff575b80600003612c98575060001901600081815260076020526040902054612dde565b505b604051636f96cda160e11b815260040160405180910390fd5b61238084848484613cbc565b4260a01b176001600160a01b03919091161790565b611e1281612e47612d45565b613ce9565b612e56828261200a565b6111a6576000828152601b602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612e8f612d45565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b612edd828261200a565b156111a6576000828152601b602090815260408083206001600160a01b03851684529091529020805460ff19169055612f14612d45565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b60005b81518110156111a6576000828281518110612f7857612f786153d6565b60200260200101519050612710816040015161ffff1610612fab5760405162461bcd60e51b8152600401611193906157ce565b60208101516001600160a01b03166130245780516000908152601d6020526040902080546001600160b01b03191690558051612fe990601e90613d4d565b5080516040519081527fa2870857763bd9ae76c957f869f16b31c18dd3bb4c7b4d3a4496dc5c57c657f99060200160405180910390a16130ec565b6040805180820182526020808401516001600160a01b0390811683528484015161ffff90811683850190815286516000908152601d90945294909220925183549451909216600160a01b026001600160b01b0319909416911617919091179055805161309290601e90613d59565b50805160208083015160408085015181519485526001600160a01b039092169284019290925261ffff1682820152517f389b70fb0887f01e83784eb1c4c589f740eca53b00ed0f45e41db5d079719abb9181900360600190a15b50806130f7816153ec565b915050612f5b565b61310a601a82613646565b6131435760405162461bcd60e51b815260206004820152600a6024820152691393d517d313d0d2d15160b21b6044820152606401611193565b600881901c6000908152601a602052604090208054600160ff84161b1916905550565b6000826131738584613d65565b14949350505050565b613184612cd6565b61318d81613daa565b60195460165461319d91906152ed565b600454600354036131ae90836152ed565b1015611e125760405162461bcd60e51b81526020600482015260136024820152721313d5d15497d512105397d49154d154959151606a1b6044820152606401611193565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6000610faa825490565b613262601a82613646565b1561327f5760405162461bcd60e51b815260040161119390615405565b600881901c6000908152601a602052604090208054600160ff84161b17905550565b6060600c8054611e8690615425565b606060068260058111156132c6576132c6614ad1565b60ff1611156132d457600080fd5b8160058111156132e6576132e6614ad1565b60000361331057505060408051808201909152600781526604342455f4343360cc1b602082015290565b81600581111561332257613322614ad1565b60010361334c57505060408051808201909152600781526621a122afa2a1a960c91b602082015290565b81600581111561335e5761335e614ad1565b60020361338957505060408051808201909152600881526721a122afa722a1a960c11b602082015290565b81600581111561339b5761339b614ad1565b6003036133c957505060408051808201909152600b81526a4342455f4e4543525f485360a81b602082015290565b8160058111156133db576133db614ad1565b60040361340457505060408051808201909152600681526521a122afa82960d11b602082015290565b50506040805180820190915260098152684342455f50525f485360b81b602082015290565b6111a68282612e4c565b600054610100900460ff1661345a5760405162461bcd60e51b8152600401611193906157f3565b6111a68282613e46565b600054610100900460ff1661348b5760405162461bcd60e51b8152600401611193906157f3565b611e1281613eca565b600054610100900460ff166134bb5760405162461bcd60e51b8152600401611193906157f3565b611743838383613f11565b600054610100900460ff166134ed5760405162461bcd60e51b8152600401611193906157f3565b6111a68282613f9f565b600054610100900460ff1661351e5760405162461bcd60e51b8152600401611193906157f3565b611e128161402a565b600054610100900460ff1661354e5760405162461bcd60e51b8152600401611193906157f3565b611e75614086565b600054610100900460ff1661357d5760405162461bcd60e51b8152600401611193906157f3565b611e12816140bd565b600054610100900460ff166135ad5760405162461bcd60e51b8152600401611193906157f3565b611e7561410c565b600054610100900460ff166135dc5760405162461bcd60e51b8152600401611193906157f3565b611e1281614143565b600054610100900460ff1661360c5760405162461bcd60e51b8152600401611193906157f3565b6111a6828261425f565b600054610100900460ff1661363d5760405162461bcd60e51b8152600401611193906157f3565b611e12816142ef565b600881901c600090815260208390526040902054600160ff83161b16151592915050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a029061369f90339089908890889060040161583e565b6020604051808303816000875af19250505080156136da575060408051601f3d908101601f191682019092526136d791810190615871565b60015b613738573d808015613708576040519150601f19603f3d011682016040523d82523d6000602084013e61370d565b606091505b508051600003613730576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b60608160000361377d5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156137a75780613791816153ec565b91506137a09050600a836153c2565b9150613781565b6000816001600160401b038111156137c1576137c1614b01565b6040519080825280601f01601f1916602001820160405280156137eb576020820181803683370190505b5090505b841561374e576138006001836152ed565b915061380d600a8661588e565b613818906030615375565b60f81b81838151811061382d5761382d6153d6565b60200101906001600160f81b031916908160001a90535061384f600a866153c2565b94506137ef565b60606000600f805461386790615425565b9050116138fe57600e805461387b90615425565b80601f01602080910402602001604051908101604052809291908181526020018280546138a790615425565b80156138f45780601f106138c9576101008083540402835291602001916138f4565b820191906000526020600020905b8154815290600101906020018083116138d757829003601f168201915b5050505050610faa565b600f61390983613756565b601060405160200161391d93929190615915565b60405160208183030381529060405292915050565b6003600254600160b01b900460ff16600381111561395257613952614ad1565b036139915760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401611193565b60028054600160b01b900460ff1660038111156139b0576139b0614ad1565b036139b85750565b6001600254600160b01b900460ff1660038111156139d8576139d8614ad1565b03613a34576002546001600160a01b03828116911614611e125760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401611193565b6000600254600160b01b900460ff166003811115613a5457613a54614ad1565b03611e1257806001600160a01b0316613a6b611ff5565b6001600160a01b031614611e125760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401611193565b80471015613b075760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611193565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613b54576040519150601f19603f3d011682016040523d82523d6000602084013e613b59565b606091505b50509050806117435760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401611193565b612710816020015161ffff1610613bf65760405162461bcd60e51b8152600401611193906157ce565b60408051808201825282516001600160a01b03168082526020808501805161ffff1691909301819052601c80546001600160b01b031916909217600160a01b9091021790558251905191517f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe4192613c6d9291614db9565b60405180910390a150565b6000826000018281548110613c8f57613c8f6153d6565b9060005260206000200154905092915050565b6111a6828260405180602001604052806000815250614316565b613cc7601a83613646565b15613ce45760405162461bcd60e51b815260040161119390615405565b612380565b613cf3828261200a565b6111a657613d0b816001600160a01b0316601461437c565b613d1683602061437c565b604051602001613d27929190615948565b60408051601f198184030181529082905262461bcd60e51b8252611193916004016148a2565b6000612c988383614517565b6000612c98838361460a565b600081815b84518110156116c057613d9682868381518110613d8957613d896153d6565b6020026020010151614659565b915080613da2816153ec565b915050613d6a565b613db2612cd6565b60135460ff1615613df75760405162461bcd60e51b815260206004820152600f60248201526e2120a9a2afaaa924afa32927ad22a760891b6044820152606401611193565b60045460035403811015613e415760405162461bcd60e51b81526020600482015260116024820152704c4f5745525f5448414e5f535550504c5960781b6044820152606401611193565b601255565b600054610100900460ff16613e6d5760405162461bcd60e51b8152600401611193906157f3565b613e7d63ac2ba33360e01b614688565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b836003811115613ec157613ec1614ad1565b02179055505050565b600054610100900460ff16613ef15760405162461bcd60e51b8152600401611193906157f3565b613f0163b964efe960e01b614688565b611d3a630c934a3560e31b614688565b600054610100900460ff16613f385760405162461bcd60e51b8152600401611193906157f3565b600b613f44848261549f565b50600c613f51838261549f565b50600d613f5e828261549f565b50613f6f633d96f4ff60e11b614688565b613f7f6380ac58cd60e01b614688565b613f8f63184371e560e31b614688565b611743635b5e139f60e01b614688565b600054610100900460ff16613fc65760405162461bcd60e51b8152600401611193906157f3565b600e613fd2838261549f565b50600f613fdf828261549f565b50604080518082019091526005815264173539b7b760d91b6020820152601090614009908261549f565b5061401a631f2f406b60e01b614688565b6111a6635b5e139f60e01b614688565b600054610100900460ff166140515760405162461bcd60e51b8152600401611193906157f3565b60128190556140666330f487b560e11b614688565b6140766380ac58cd60e01b614688565b611e1263184371e560e31b614688565b600054610100900460ff166140ad5760405162461bcd60e51b8152600401611193906157f3565b611e75631aa1577160e11b614688565b600054610100900460ff166140e45760405162461bcd60e51b8152600401611193906157f3565b6140f4631a056e7160e01b614688565b611e12600080516020615a1683398151915282613429565b600054610100900460ff166141335760405162461bcd60e51b8152600401611193906157f3565b611e7563714ad8e760e01b614688565b600054610100900460ff1661416a5760405162461bcd60e51b8152600401611193906157f3565b61417a6308b4902960e41b614688565b60005b81518110156111a657818181518110614198576141986153d6565b602090810291909101810151600083815260158352604090819020825181559282015160018401558101516002830180546001600160a01b0319166001600160a01b03909216919091179055606081015160038301556080810151600483015560a0810151600583015560c0810151600683015560e00151600790910155815182908290811061422a5761422a6153d6565b602002602001015160c00151601660008282546142479190615375565b90915550819050614257816153ec565b91505061417d565b600054610100900460ff166142865760405162461bcd60e51b8152600401611193906157f3565b614296633a47bf5160e11b614688565b6142a663152a902d60e11b614688565b6142b663c69dbd8f60e01b614688565b6142c663656cb66560e11b614688565b604080518082019091526001600160a01b038316815261ffff8216602082015261174381613bcd565b600054610100900460ff166128475760405162461bcd60e51b8152600401611193906157f3565b6143208383614709565b6001600160a01b0383163b15611743576003548281035b61434a600086838060010194508661366a565b614367576040516368d2bf6b60e11b815260040160405180910390fd5b81811061433757816003541461283857600080fd5b6060600061438b83600261538d565b614396906002615375565b6001600160401b038111156143ad576143ad614b01565b6040519080825280601f01601f1916602001820160405280156143d7576020820181803683370190505b509050600360fc1b816000815181106143f2576143f26153d6565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110614421576144216153d6565b60200101906001600160f81b031916908160001a905350600061444584600261538d565b614450906001615375565b90505b60018111156144c8576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110614484576144846153d6565b1a60f81b82828151811061449a5761449a6153d6565b60200101906001600160f81b031916908160001a90535060049490941c936144c1816159b7565b9050614453565b508315612c985760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401611193565b6000818152600183016020526040812054801561460057600061453b6001836152ed565b855490915060009061454f906001906152ed565b90508181146145b457600086600001828154811061456f5761456f6153d6565b9060005260206000200154905080876000018481548110614592576145926153d6565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806145c5576145c56159ce565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610faa565b6000915050610faa565b600081815260018301602052604081205461465157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610faa565b506000610faa565b6000818310614675576000828152602084905260409020612c98565b6000838152602083905260409020612c98565b6001600160e01b031980821690036146e15760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401611193565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b600354600082900361472e5760405163b562e8dd60e01b815260040160405180910390fd5b61473b6000848385612e1a565b6001600160a01b038316600090815260086020526040902080546001600160401b018402019055614772836001841460e11b612e26565b6000828152600760205260408120919091556001600160a01b038416908383019083908390600080516020615a368339815191528180a4600183015b8181146147d45780836000600080516020615a36833981519152600080a46001016147ae565b50816000036147f557604051622e076360e81b815260040160405180910390fd5b60035550505050565b6001600160e01b031981168114611e1257600080fd5b60006020828403121561482657600080fd5b8135612c98816147fe565b60006020828403121561484357600080fd5b5035919050565b60005b8381101561486557818101518382015260200161484d565b838111156123805750506000910152565b6000815180845261488e81602086016020860161484a565b601f01601f19169290920160200192915050565b602081526000612c986020830184614876565b6001600160a01b0381168114611e1257600080fd5b80356118fc816148b5565b600080604083850312156148e857600080fd5b82356148f3816148b5565b946020939093013593505050565b6000806040838503121561491457600080fd5b823591506020830135614926816148b5565b809150509250929050565b60008082840361012081121561494657600080fd5b83359250610100601f198201121561495d57600080fd5b506020830190509250929050565b60008060006060848603121561498057600080fd5b833561498b816148b5565b9250602084013561499b816148b5565b929592945050506040919091013590565b600080604083850312156149bf57600080fd5b50508035926020909101359150565b6001600160a01b03929092168252602082015260400190565b60008083601f8401126149f957600080fd5b5081356001600160401b03811115614a1057600080fd5b6020830191508360208260051b85010111156115f757600080fd5b60008060208385031215614a3e57600080fd5b82356001600160401b03811115614a5457600080fd5b614a60858286016149e7565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b81811015614aa457835183529284019291840191600101614a88565b50909695505050505050565b600060208284031215614ac257600080fd5b813560048110612c9857600080fd5b634e487b7160e01b600052602160045260246000fd5b6020810160048310614afb57614afb614ad1565b91905290565b634e487b7160e01b600052604160045260246000fd5b60405161010081016001600160401b0381118282101715614b3a57614b3a614b01565b60405290565b60405161018081016001600160401b0381118282101715614b3a57614b3a614b01565b604051601f8201601f191681016001600160401b0381118282101715614b8b57614b8b614b01565b604052919050565b60006001600160401b03831115614bac57614bac614b01565b614bbf601f8401601f1916602001614b63565b9050828152838383011115614bd357600080fd5b828260208301376000602084830101529392505050565b600082601f830112614bfb57600080fd5b612c9883833560208501614b93565b600060208284031215614c1c57600080fd5b81356001600160401b03811115614c3257600080fd5b61374e84828501614bea565b6020810160068310614afb57614afb614ad1565b60008060208385031215614c6557600080fd5b82356001600160401b0380821115614c7c57600080fd5b818501915085601f830112614c9057600080fd5b813581811115614c9f57600080fd5b866020606083028501011115614cb457600080fd5b60209290920196919550909350505050565b600060208284031215614cd857600080fd5b8135612c98816148b5565b600080600080600060808688031215614cfb57600080fd5b85359450602086013593506040860135925060608601356001600160401b03811115614d2657600080fd5b614d32888289016149e7565b969995985093965092949392505050565b8035600681106118fc57600080fd5b600060208284031215614d6457600080fd5b612c9882614d43565b600080600080600060808688031215614d8557600080fd5b853594506020860135614d97816148b5565b93506040860135925060608601356001600160401b03811115614d2657600080fd5b6001600160a01b0392909216825261ffff16602082015260400190565b8015158114611e1257600080fd5b60008060408385031215614df757600080fd5b8235614e02816148b5565b9150602083013561492681614dd6565b600082601f830112614e2357600080fd5b813560206001600160401b03821115614e3e57614e3e614b01565b614e4c818360051b01614b63565b82815260089290921b84018101918181019086841115614e6b57600080fd5b8286015b84811015614ef1576101008189031215614e895760008081fd5b614e91614b17565b813581528482013585820152604080830135614eac816148b5565b90820152606082810135908201526080808301359082015260a0808301359082015260c0808301359082015260e0808301359082015283529183019161010001614e6f565b509695505050505050565b803561ffff811681146118fc57600080fd5b60008060408385031215614f2157600080fd5b82356001600160401b0380821115614f3857600080fd5b908401906101808287031215614f4d57600080fd5b614f55614b40565b823582811115614f6457600080fd5b614f7088828601614bea565b825250602083013582811115614f8557600080fd5b614f9188828601614bea565b602083015250604083013582811115614fa957600080fd5b614fb588828601614bea565b604083015250606083013582811115614fcd57600080fd5b614fd988828601614bea565b606083015250608083013582811115614ff157600080fd5b614ffd88828601614bea565b60808301525060a083013560a082015260c08301358281111561501f57600080fd5b61502b88828601614e12565b60c08301525061503d60e084016148ca565b60e08201526101009150615052828401614efc565b8282015261012091506150668284016148ca565b82820152610140915061507a8284016148ca565b82820152610160915061508e828401614d43565b828201528094505050506150a4602084016148ca565b90509250929050565b600080600080608085870312156150c357600080fd5b84356150ce816148b5565b935060208501356150de816148b5565b92506040850135915060608501356001600160401b0381111561510057600080fd5b8501601f8101871361511157600080fd5b61512087823560208401614b93565b91505092959194509250565b602080825282518282018190526000919060409081850190868401855b8281101561518057815180516001600160a01b031685528601516001600160601b0316868501529284019290850190600101615149565b5091979650505050505050565b600080600080604085870312156151a357600080fd5b84356001600160401b03808211156151ba57600080fd5b6151c6888389016149e7565b909650945060208701359150808211156151df57600080fd5b818701915087601f8301126151f357600080fd5b81358181111561520257600080fd5b8860208260081b850101111561521757600080fd5b95989497505060200194505050565b6000806000806040858703121561523c57600080fd5b84356001600160401b038082111561525357600080fd5b61525f888389016149e7565b9096509450602087013591508082111561527857600080fd5b50615285878288016149e7565b95989497509550505050565b600080604083850312156152a457600080fd5b82356152af816148b5565b91506020830135614926816148b5565b6000604082840312156152d157600080fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156152ff576152ff6152d7565b500390565b8135815560208201356001820155600281016040830135615324816148b5565b81546001600160a01b0319166001600160a01b0391909116179055606082013560038201556080820135600482015560a0820135600582015560c0820135600682015560e090910135600790910155565b60008219821115615388576153886152d7565b500190565b60008160001904831182151516156153a7576153a76152d7565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826153d1576153d16153ac565b500490565b634e487b7160e01b600052603260045260246000fd5b6000600182016153fe576153fe6152d7565b5060010190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b600181811c9082168061543957607f821691505b6020821081036152d157634e487b7160e01b600052602260045260246000fd5b601f82111561174357600081815260208120601f850160051c810160208610156154805750805b601f850160051c820191505b8181101561151c5782815560010161548c565b81516001600160401b038111156154b8576154b8614b01565b6154cc816154c68454615425565b84615459565b602080601f83116001811461550157600084156154e95750858301515b600019600386901b1c1916600185901b17855561151c565b600085815260208120601f198616915b8281101561553057888601518255948401946001909101908401615511565b508582101561554e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006060828403121561557057600080fd5b604051606081018181106001600160401b038211171561559257615592614b01565b6040528235815260208301356155a7816148b5565b60208201526155b860408401614efc565b60408201529392505050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601890820152775354414b41424c455f4e4f545f4c4f434b45525f524f4c4560401b604082015260600190565b60208082526012908201527122ac21a2a2a229afa0a62627a1a0aa24a7a760711b604082015260600190565b60006020828403121561566b57600080fd5b8151612c9881614dd6565b6020808252600f908201526e4e4f545f4c4f434b45525f524f4c4560881b604082015260600190565b602080825260069082015265232927ad22a760d11b604082015260600190565b600083516156d181846020880161484a565b8351908301906156e581836020880161484a565b01949350505050565b6040808252810184905260008560608301825b87811015615731578235615714816148b5565b6001600160a01b0316825260209283019290910190600101615701565b5083810360208501528481526001600160fb1b0385111561575157600080fd5b8460051b915081866020830137600091016020019081529695505050505050565b60006040828403121561578457600080fd5b604051604081018181106001600160401b03821117156157a6576157a6614b01565b60405282356157b4816148b5565b81526157c260208401614efc565b60208201529392505050565b6020808252600b908201526a496e76616c69642062707360a81b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611df590830184614876565b60006020828403121561588357600080fd5b8151612c98816147fe565b60008261589d5761589d6153ac565b500690565b600081546158af81615425565b600182811680156158c757600181146158dc5761590b565b60ff198416875282151583028701945061590b565b8560005260208060002060005b858110156159025781548a8201529084019082016158e9565b50505082870194505b5050505092915050565b600061592182866158a2565b845161593181836020890161484a565b61593d818301866158a2565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b81526000835161597a81601785016020880161484a565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516159ab81602884016020880161484a565b01602801949350505050565b6000816159c6576159c66152d7565b506000190190565b634e487b7160e01b600052603160045260246000fdfe61723a2f2f5f44396b4e3157724e576243713535425341475262544234625333763851415054596d42546853625833412f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efaf9a8bb3cbd6b84fbccefa71ff73e26e798553c6914585a84886212a46a90279a264697066735822122012569abe56bae4f7a3cd5d57159e755fc4872e2c63edee2e4ab24bf748bc2c6664736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"common/ILicenseExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ILicenseExtension","sourceName":"contracts/common/LicenseExtension.sol","abi":[{"inputs":[],"name":"lockLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum LicenseVersion","name":"licenseVersion","type":"uint8"}],"name":"setLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"common/IWithdrawExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IWithdrawExtension","sourceName":"contracts/common/WithdrawExtension.sol","abi":[{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"common/LicenseExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"LicenseExtension","sourceName":"contracts/common/LicenseExtension.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"getLicenseName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLicenseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersion","outputs":[{"internalType":"enum LicenseVersion","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"licenseVersionLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum LicenseVersion","name":"_licenseVersion","type":"uint8"}],"name":"setLicenseVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"common/meta-transactions/ERC2771ContextOwnable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC2771ContextOwnable","sourceName":"contracts/common/meta-transactions/ERC2771ContextOwnable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"_trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"trustedForwarder","type":"address"}],"name":"setTrustedForwarder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"common/meta-transactions/UnorderedForwarder":{"address":{"1":"0xC97b52877Aa14987198eA8cABaa678B566baadF1","3":"0xa9dB7831CC85960dB16bEf4914e4d3Ce0630d2B0","4":"0x7902091CBbd1da28adF2d3112FC9745Bbe228aD9","5":"0x3F684a639d5d2D7ccD3daA31E259920E13c67743","25":"0xae19F12838b3513246769Ed8636D565F75Dcb1c7","56":"0xae19F12838b3513246769Ed8636D565F75Dcb1c7","65":"0x5C7C7E058dF26669Ce5623d8B0a6C4d8Ac3EF4fD","66":"0xD3B8fb60442288b185Db9d3B8c4cacccaa3451C0","97":"0x0c63546bFa4096C592d2BfDd9Ac9b6adBB181ea7","137":"0xb1780c61a8b0714bF08E8c403f6cd5c1374F6AA9","250":"0x58E403CDcade1095f0FF8d76de0dF62Ff0EaD4a2","280":"0x084Cf787198420f20e0128573B0b00cEF3FE98De","4002":"0x58E403CDcade1095f0FF8d76de0dF62Ff0EaD4a2","9000":"0x5C7C7E058dF26669Ce5623d8B0a6C4d8Ac3EF4fD","42161":"0xeED9E0a45B31F9dd7b2D55CABe3742Ddca116532","43113":"0xfdc3a9eB43e0fa62cA206D9F51A1cDdf9dD5f1e8","43114":"0xF8ABF0b720378bb25b3f73c01BDBd1A7EC558FB6","421611":"0xe61cc06a7435EC72507c028a577BbAD42E67eAc1","arbitrumOne":"0xeED9E0a45B31F9dd7b2D55CABe3742Ddca116532","arbitrumTestnet":"0xe61cc06a7435EC72507c028a577BbAD42E67eAc1","avalanche":"0xF8ABF0b720378bb25b3f73c01BDBd1A7EC558FB6","avalancheFujiTestnet":"0xfdc3a9eB43e0fa62cA206D9F51A1cDdf9dD5f1e8","bsc":"0xae19F12838b3513246769Ed8636D565F75Dcb1c7","bscTestnet":"0x0c63546bFa4096C592d2BfDd9Ac9b6adBB181ea7","cronos":"0xae19F12838b3513246769Ed8636D565F75Dcb1c7","evmosTestnet":"0x5C7C7E058dF26669Ce5623d8B0a6C4d8Ac3EF4fD","ftmTestnet":"0x58E403CDcade1095f0FF8d76de0dF62Ff0EaD4a2","goerli":"0x3F684a639d5d2D7ccD3daA31E259920E13c67743","mainnet":"0xC97b52877Aa14987198eA8cABaa678B566baadF1","okcMainnet":"0xD3B8fb60442288b185Db9d3B8c4cacccaa3451C0","okcTestnet":"0x5C7C7E058dF26669Ce5623d8B0a6C4d8Ac3EF4fD","opera":"0x58E403CDcade1095f0FF8d76de0dF62Ff0EaD4a2","polygon":"0xb1780c61a8b0714bF08E8c403f6cd5c1374F6AA9","rinkeby":"0x7902091CBbd1da28adF2d3112FC9745Bbe228aD9","ropsten":"0xa9dB7831CC85960dB16bEf4914e4d3Ce0630d2B0","zksyncTestnet":"0x084Cf787198420f20e0128573B0b00cEF3FE98De"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"UnorderedForwarder","sourceName":"contracts/common/meta-transactions/UnorderedForwarder.sol","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"minGasPrice","type":"uint256"},{"internalType":"uint256","name":"maxGasPrice","type":"uint256"},{"internalType":"uint256","name":"expiresAt","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct UnorderedForwarder.MetaTransaction[]","name":"mtxs","type":"tuple[]"},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"name":"batchExecute","outputs":[{"internalType":"bytes[]","name":"returnResults","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"minGasPrice","type":"uint256"},{"internalType":"uint256","name":"maxGasPrice","type":"uint256"},{"internalType":"uint256","name":"expiresAt","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct UnorderedForwarder.MetaTransaction","name":"mtx","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"execute","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"minGasPrice","type":"uint256"},{"internalType":"uint256","name":"maxGasPrice","type":"uint256"},{"internalType":"uint256","name":"expiresAt","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct UnorderedForwarder.MetaTransaction","name":"mtx","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"verify","outputs":[{"internalType":"bytes32","name":"mtxHash","type":"bytes32"}],"stateMutability":"view","type":"function"}],"bytecode":"0x61014060405234801561001157600080fd5b5060408051808201825260128152712ab737b93232b932b22337b93bb0b93232b960711b602080830191825283518085019094526005845264302e302e3160d81b908401528151902060e08190527fae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc1991638118856101008190524660a0529192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6100fd8184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c0526101205250506001600055506101179050565b60805160a05160c05160e0516101005161012051610faf610166600039600061082a0152600061087901526000610854015260006107ad015260006107d7015260006108010152610faf6000f3fe6080604052600436106100345760003560e01c8063b0565b2714610039578063b122ea941461006c578063cd74662f1461008c575b600080fd5b34801561004557600080fd5b50610059610054366004610ba3565b6100ac565b6040519081526020015b60405180910390f35b61007f61007a366004610c86565b6102d5565b6040516100639190610d4d565b61009f61009a366004610ba3565b6104a4565b6040516100639190610daf565b60006101957f2bbaa6c701d9ecd9e324adef5727bb11883e2c24df1dd4c8f19e4e038b3734666100df6020870187610dc2565b6100ef6040880160208901610dc2565b6040880135606089013560808a013560a08b013560c08c013561011560e08e018e610deb565b604051610123929190610e31565b60408051918290038220602083019a909a526001600160a01b0398891690820152969095166060870152608086019390935260a085019190915260c084015260e0830152610100820152610120810191909152610140016040516020818303038152906040528051906020012061055e565b9050428460a00135116101dd5760405162461bcd60e51b815260206004820152600b60248201526a1195d117d156141254915160aa1b60448201526064015b60405180910390fd5b6101ea6020850185610dc2565b6001600160a01b031661023584848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086939250506105b29050565b6001600160a01b0316146102835760405162461bcd60e51b81526020600482015260156024820152744657445f494e56414c49445f5349474e415455524560581b60448201526064016101d4565b600081815260016020526040902054156102ce5760405162461bcd60e51b815260206004820152600c60248201526b1195d117d49154131056515160a21b60448201526064016101d4565b9392505050565b60606002600054036102f95760405162461bcd60e51b81526004016101d490610e41565b6002600090815561030a3447610e8e565b90508483146103555760405162461bcd60e51b81526020600482015260176024820152764657445f4d49534d415443485f5349474e41545552455360481b60448201526064016101d4565b846001600160401b0381111561036d5761036d610ea5565b6040519080825280602002602001820160405280156103a057816020015b606081526020019060019003908161038b5790505b50915060005b8581101561042c576103fe8787838181106103c3576103c3610ebb565b90506020028101906103d59190610ed1565b8686848181106103e7576103e7610ebb565b90506020028101906103f99190610deb565b6105d6565b83828151811061041057610410610ebb565b60200260200101819052508061042590610ef1565b90506103a6565b50600047341161043c573461043e565b475b9050801561047557604051339082156108fc029083906000818181858888f19350505050158015610473573d6000803e3d6000fd5b505b50478111156104965760405162461bcd60e51b81526004016101d490610f0a565b506001600055949350505050565b60606002600054036104c85760405162461bcd60e51b81526004016101d490610e41565b600260009081556104d93447610e8e565b90506104e68585856105d6565b915060004734116104f757346104f9565b475b9050801561053057604051339082156108fc029083906000818181858888f1935050505015801561052e573d6000803e3d6000fd5b505b50478111156105515760405162461bcd60e51b81526004016101d490610f0a565b5060016000559392505050565b60006105ac61056b6107a0565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b92915050565b60008060006105c185856108c7565b915091506105ce8161090c565b509392505050565b60603a8460600135111580156105f0575083608001353a11155b61062e5760405162461bcd60e51b815260206004820152600f60248201526e4657445f494e56414c49445f47415360881b60448201526064016101d4565b47846040013511156106765760405162461bcd60e51b81526020600482015260116024820152704657445f494e56414c49445f56414c554560781b60448201526064016101d4565b60006106838585856100ac565b6000818152600160209081526040808320439055929350909182916106ac918901908901610dc2565b6001600160a01b031660408801356106c760e08a018a610deb565b6106d460208c018c610dc2565b6040516020016106e693929190610f30565b60408051601f198184030181529082905261070091610f51565b60006040518083038185875af1925050503d806000811461073d576040519150601f19603f3d011682016040523d82523d6000602084013e610742565b606091505b5091509150816107965780511561075c5780518082602001fd5b60405162461bcd60e51b815260206004820152600f60248201526e1195d117d0d0531317d19052531151608a1b60448201526064016101d4565b9695505050505050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156107f957507f000000000000000000000000000000000000000000000000000000000000000046145b1561082357507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008082516041036108fd5760208301516040840151606085015160001a6108f187828585610ac0565b94509450505050610905565b506000905060025b9250929050565b600081600481111561092057610920610f63565b036109285750565b600181600481111561093c5761093c610f63565b036109845760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b60448201526064016101d4565b600281600481111561099857610998610f63565b036109e55760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016101d4565b60038160048111156109f9576109f9610f63565b03610a515760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016101d4565b6004816004811115610a6557610a65610f63565b03610abd5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016101d4565b50565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831115610aed5750600090506003610b9a565b8460ff16601b14158015610b0557508460ff16601c14155b15610b165750600090506004610b9a565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610b6a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610b9357600060019250925050610b9a565b9150600090505b94509492505050565b600080600060408486031215610bb857600080fd5b83356001600160401b0380821115610bcf57600080fd5b908501906101008288031215610be457600080fd5b90935060208501359080821115610bfa57600080fd5b818601915086601f830112610c0e57600080fd5b813581811115610c1d57600080fd5b876020828501011115610c2f57600080fd5b6020830194508093505050509250925092565b60008083601f840112610c5457600080fd5b5081356001600160401b03811115610c6b57600080fd5b6020830191508360208260051b850101111561090557600080fd5b60008060008060408587031215610c9c57600080fd5b84356001600160401b0380821115610cb357600080fd5b610cbf88838901610c42565b90965094506020870135915080821115610cd857600080fd5b50610ce587828801610c42565b95989497509550505050565b60005b83811015610d0c578181015183820152602001610cf4565b83811115610d1b576000848401525b50505050565b60008151808452610d39816020860160208601610cf1565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610da257603f19888603018452610d90858351610d21565b94509285019290850190600101610d74565b5092979650505050505050565b6020815260006102ce6020830184610d21565b600060208284031215610dd457600080fd5b81356001600160a01b03811681146102ce57600080fd5b6000808335601e19843603018112610e0257600080fd5b8301803591506001600160401b03821115610e1c57600080fd5b60200191503681900382131561090557600080fd5b8183823760009101908152919050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082821015610ea057610ea0610e78565b500390565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000823560fe19833603018112610ee757600080fd5b9190910192915050565b600060018201610f0357610f03610e78565b5060010190565b6020808252600c908201526b4657445f4554485f4c45414b60a01b604082015260600190565b8284823760609190911b6001600160601b0319169101908152601401919050565b60008251610ee7818460208701610cf1565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220f161075f024f4dbd6172b0d2e10a2cb4a25e9e7b673387b3f33c10564fc7b2b664736f6c634300080f0033","deployedBytecode":"0x6080604052600436106100345760003560e01c8063b0565b2714610039578063b122ea941461006c578063cd74662f1461008c575b600080fd5b34801561004557600080fd5b50610059610054366004610ba3565b6100ac565b6040519081526020015b60405180910390f35b61007f61007a366004610c86565b6102d5565b6040516100639190610d4d565b61009f61009a366004610ba3565b6104a4565b6040516100639190610daf565b60006101957f2bbaa6c701d9ecd9e324adef5727bb11883e2c24df1dd4c8f19e4e038b3734666100df6020870187610dc2565b6100ef6040880160208901610dc2565b6040880135606089013560808a013560a08b013560c08c013561011560e08e018e610deb565b604051610123929190610e31565b60408051918290038220602083019a909a526001600160a01b0398891690820152969095166060870152608086019390935260a085019190915260c084015260e0830152610100820152610120810191909152610140016040516020818303038152906040528051906020012061055e565b9050428460a00135116101dd5760405162461bcd60e51b815260206004820152600b60248201526a1195d117d156141254915160aa1b60448201526064015b60405180910390fd5b6101ea6020850185610dc2565b6001600160a01b031661023584848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086939250506105b29050565b6001600160a01b0316146102835760405162461bcd60e51b81526020600482015260156024820152744657445f494e56414c49445f5349474e415455524560581b60448201526064016101d4565b600081815260016020526040902054156102ce5760405162461bcd60e51b815260206004820152600c60248201526b1195d117d49154131056515160a21b60448201526064016101d4565b9392505050565b60606002600054036102f95760405162461bcd60e51b81526004016101d490610e41565b6002600090815561030a3447610e8e565b90508483146103555760405162461bcd60e51b81526020600482015260176024820152764657445f4d49534d415443485f5349474e41545552455360481b60448201526064016101d4565b846001600160401b0381111561036d5761036d610ea5565b6040519080825280602002602001820160405280156103a057816020015b606081526020019060019003908161038b5790505b50915060005b8581101561042c576103fe8787838181106103c3576103c3610ebb565b90506020028101906103d59190610ed1565b8686848181106103e7576103e7610ebb565b90506020028101906103f99190610deb565b6105d6565b83828151811061041057610410610ebb565b60200260200101819052508061042590610ef1565b90506103a6565b50600047341161043c573461043e565b475b9050801561047557604051339082156108fc029083906000818181858888f19350505050158015610473573d6000803e3d6000fd5b505b50478111156104965760405162461bcd60e51b81526004016101d490610f0a565b506001600055949350505050565b60606002600054036104c85760405162461bcd60e51b81526004016101d490610e41565b600260009081556104d93447610e8e565b90506104e68585856105d6565b915060004734116104f757346104f9565b475b9050801561053057604051339082156108fc029083906000818181858888f1935050505015801561052e573d6000803e3d6000fd5b505b50478111156105515760405162461bcd60e51b81526004016101d490610f0a565b5060016000559392505050565b60006105ac61056b6107a0565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b92915050565b60008060006105c185856108c7565b915091506105ce8161090c565b509392505050565b60603a8460600135111580156105f0575083608001353a11155b61062e5760405162461bcd60e51b815260206004820152600f60248201526e4657445f494e56414c49445f47415360881b60448201526064016101d4565b47846040013511156106765760405162461bcd60e51b81526020600482015260116024820152704657445f494e56414c49445f56414c554560781b60448201526064016101d4565b60006106838585856100ac565b6000818152600160209081526040808320439055929350909182916106ac918901908901610dc2565b6001600160a01b031660408801356106c760e08a018a610deb565b6106d460208c018c610dc2565b6040516020016106e693929190610f30565b60408051601f198184030181529082905261070091610f51565b60006040518083038185875af1925050503d806000811461073d576040519150601f19603f3d011682016040523d82523d6000602084013e610742565b606091505b5091509150816107965780511561075c5780518082602001fd5b60405162461bcd60e51b815260206004820152600f60248201526e1195d117d0d0531317d19052531151608a1b60448201526064016101d4565b9695505050505050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156107f957507f000000000000000000000000000000000000000000000000000000000000000046145b1561082357507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008082516041036108fd5760208301516040840151606085015160001a6108f187828585610ac0565b94509450505050610905565b506000905060025b9250929050565b600081600481111561092057610920610f63565b036109285750565b600181600481111561093c5761093c610f63565b036109845760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b60448201526064016101d4565b600281600481111561099857610998610f63565b036109e55760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016101d4565b60038160048111156109f9576109f9610f63565b03610a515760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016101d4565b6004816004811115610a6557610a65610f63565b03610abd5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016101d4565b50565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831115610aed5750600090506003610b9a565b8460ff16601b14158015610b0557508460ff16601c14155b15610b165750600090506004610b9a565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610b6a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610b9357600060019250925050610b9a565b9150600090505b94509492505050565b600080600060408486031215610bb857600080fd5b83356001600160401b0380821115610bcf57600080fd5b908501906101008288031215610be457600080fd5b90935060208501359080821115610bfa57600080fd5b818601915086601f830112610c0e57600080fd5b813581811115610c1d57600080fd5b876020828501011115610c2f57600080fd5b6020830194508093505050509250925092565b60008083601f840112610c5457600080fd5b5081356001600160401b03811115610c6b57600080fd5b6020830191508360208260051b850101111561090557600080fd5b60008060008060408587031215610c9c57600080fd5b84356001600160401b0380821115610cb357600080fd5b610cbf88838901610c42565b90965094506020870135915080821115610cd857600080fd5b50610ce587828801610c42565b95989497509550505050565b60005b83811015610d0c578181015183820152602001610cf4565b83811115610d1b576000848401525b50505050565b60008151808452610d39816020860160208601610cf1565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610da257603f19888603018452610d90858351610d21565b94509285019290850190600101610d74565b5092979650505050505050565b6020815260006102ce6020830184610d21565b600060208284031215610dd457600080fd5b81356001600160a01b03811681146102ce57600080fd5b6000808335601e19843603018112610e0257600080fd5b8301803591506001600160401b03821115610e1c57600080fd5b60200191503681900382131561090557600080fd5b8183823760009101908152919050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082821015610ea057610ea0610e78565b500390565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000823560fe19833603018112610ee757600080fd5b9190910192915050565b600060018201610f0357610f03610e78565b5060010190565b6020808252600c908201526b4657445f4554485f4c45414b60a01b604082015260600190565b8284823760609190911b6001600160601b0319169101908152601401919050565b60008251610ee7818460208701610cf1565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220f161075f024f4dbd6172b0d2e10a2cb4a25e9e7b673387b3f33c10564fc7b2b664736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"common/WithdrawExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"WithdrawExtension","sourceName":"contracts/common/WithdrawExtension.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"factory/Clones":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Clones","sourceName":"contracts/factory/Clones.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220abbd88f31dba513c72c273bb900fe17a0559a862def97a9371f209883652bea264736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220abbd88f31dba513c72c273bb900fe17a0559a862def97a9371f209883652bea264736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"factory/FlairFactory":{"address":{"1":"0x3e368e34ae2cd9f2617f397ce6b6310fe1caeaed","3":"0xC7F92f1d76Ff5D29F7C90e748ef0B2e26827c785","4":"0x19F6502840Aa62f5cf2fCC1d48D82A6814381A99","5":"0xBa483d24122aDd9BB0E2334E31288f4865e54A83","25":"0x5dB0493c729533e5A57e9885c376c41Ceb54C56E","56":"0x5C7C7E058dF26669Ce5623d8B0a6C4d8Ac3EF4fD","65":"0x5dB0493c729533e5A57e9885c376c41Ceb54C56E","66":"0x9Ce515bA286bE13248cF65e2BF3c0Ec7114341B7","97":"0x00Dc371b553B7be2dF5D5E42e49b4F9236f588B7","137":"0xe5Ae096B0c110b93ebb7ce90153789707297EcF8","250":"0x8D6B1DEe1Ce4901D917eAD895A955F19F783AC8a","280":"0xBBc0735dB658A32AdcC413502F597FBBA2Aa6598","4002":"0x8D6B1DEe1Ce4901D917eAD895A955F19F783AC8a","9000":"0x5dB0493c729533e5A57e9885c376c41Ceb54C56E","42161":"0xf56F052e7F19C8ceF2FBf3E881587D14De95C70a","43113":"0xa878c0aeAaA76Ec7A370b76Ac5BcAc4364eD60e1","43114":"0x58E403CDcade1095f0FF8d76de0dF62Ff0EaD4a2","421611":"0x6BCbc974500905Bb6EaBFd34BE3c6B05ee7F2499","arbitrumOne":"0xf56F052e7F19C8ceF2FBf3E881587D14De95C70a","arbitrumTestnet":"0x6BCbc974500905Bb6EaBFd34BE3c6B05ee7F2499","avalanche":"0x58E403CDcade1095f0FF8d76de0dF62Ff0EaD4a2","avalancheFujiTestnet":"0xa878c0aeAaA76Ec7A370b76Ac5BcAc4364eD60e1","bsc":"0x5C7C7E058dF26669Ce5623d8B0a6C4d8Ac3EF4fD","bscTestnet":"0x00Dc371b553B7be2dF5D5E42e49b4F9236f588B7","cronos":"0x5dB0493c729533e5A57e9885c376c41Ceb54C56E","evmosTestnet":"0x5dB0493c729533e5A57e9885c376c41Ceb54C56E","ftmTestnet":"0x8D6B1DEe1Ce4901D917eAD895A955F19F783AC8a","goerli":"0xBa483d24122aDd9BB0E2334E31288f4865e54A83","mainnet":"0x3e368e34ae2cd9f2617f397ce6b6310fe1caeaed","okcMainnet":"0x9Ce515bA286bE13248cF65e2BF3c0Ec7114341B7","okcTestnet":"0x5dB0493c729533e5A57e9885c376c41Ceb54C56E","opera":"0x8D6B1DEe1Ce4901D917eAD895A955F19F783AC8a","polygon":"0xe5Ae096B0c110b93ebb7ce90153789707297EcF8","rinkeby":"0x19F6502840Aa62f5cf2fCC1d48D82A6814381A99","ropsten":"0xC7F92f1d76Ff5D29F7C90e748ef0B2e26827c785","zksyncTestnet":"0xBBc0735dB658A32AdcC413502F597FBBA2Aa6598"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"FlairFactory","sourceName":"contracts/factory/FlairFactory.sol","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"deployer","type":"address"},{"indexed":true,"internalType":"address","name":"proxyAddress","type":"address"}],"name":"ProxyCreated","type":"event"},{"anonymous":false,"inputs":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"cloneDeterministicSimple","outputs":[{"internalType":"address","name":"deployedProxy","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"predictDeterministicSimple","outputs":[{"internalType":"address","name":"deployedProxy","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b506200001d336200002d565b6200002762000088565b62000377565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620000a95750600054600160ff909116105b80620000d95750620000c630620001bd60201b62000a6f1760201c565b158015620000d9575060005460ff166001145b620001425760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000166576000805461ff0019166101001790555b62000173336000620001cc565b8015620001ba576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6001600160a01b03163b151590565b600054610100900460ff16620001f65760405162461bcd60e51b8152600401620001399062000316565b62000202828262000206565b5050565b600054610100900460ff16620002305760405162461bcd60e51b8152600401620001399062000316565b6200024263ac2ba33360e01b62000292565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b83600381111562000289576200028962000361565b02179055505050565b6001600160e01b03198082169003620002ee5760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640162000139565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b6113ee80620003876000396000f3fe6080604052600436106100d95760003560e01c806301ffc9a7146100de57806310db94b9146101135780632c2330671461014b5780632d00b5871461016d57806347791ece1461019b57806349561cb9146101ae5780636057e0ec146101cf578063715018a6146101f05780638129fc1c14610205578063837fe1401461021a5780638da5cb5b1461022f578063af121f5414610244578063c0bb38ff14610265578063c723955a14610285578063da82b2271461029a578063dcbe353f146102af578063de6d6d96146102cf578063f2fde38b146102ef575b600080fd5b3480156100ea57600080fd5b506100fe6100f9366004611019565b61030f565b60405190151581526020015b60405180910390f35b34801561011f57600080fd5b5061013361012e36600461105f565b61034f565b6040516001600160a01b03909116815260200161010a565b34801561015757600080fd5b5061016b610166366004611089565b61038f565b005b34801561017957600080fd5b5060025461018e90600160b01b900460ff1681565b60405161010a91906110c0565b6101336101a93660046110e8565b6103f7565b3480156101ba57600080fd5b506002546100fe90600160b81b900460ff1681565b3480156101db57600080fd5b506002546100fe90600160a01b900460ff1681565b3480156101fc57600080fd5b5061016b61052c565b34801561021157600080fd5b5061016b610540565b34801561022657600080fd5b5061016b61065b565b34801561023b57600080fd5b506101336106a2565b34801561025057600080fd5b506002546100fe90600160a81b900460ff1681565b34801561027157600080fd5b5061016b61028036600461116e565b6106b7565b34801561029157600080fd5b5061016b61070b565b3480156102a657600080fd5b5061016b61076a565b3480156102bb57600080fd5b50600254610133906001600160a01b031681565b3480156102db57600080fd5b5061016b6102ea3660046111d4565b6107b0565b3480156102fb57600080fd5b5061016b61030a36600461116e565b6109f9565b60006301ffc9a760e01b6001600160e01b03198316148061034957506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b600080338360405160200161036592919061123f565b6040516020818303038152906040528051906020012090506103878482610a7e565b949350505050565b610397610aeb565b600254600160b81b900460ff16156103ca5760405162461bcd60e51b81526004016103c19061125c565b60405180910390fd5b6002805482919060ff60b01b1916600160b01b8360038111156103ef576103ef6110aa565b021790555050565b600080338560405160200161040d92919061123f565b60405160208183030381529060405280519060200120905061042f8682610b4a565b915082156104ed57600080836001600160a01b0316868660405161045492919061127c565b6000604051808303816000865af19150503d8060008114610491576040519150601f19603f3d011682016040523d82523d6000602084013e610496565b606091505b5091509150816104ea578051156104b05780518082602001fd5b60405162461bcd60e51b815260206004820152600f60248201526e4641494c45445f544f5f434c4f4e4560881b60448201526064016103c1565b50505b6040516001600160a01b0383169033907f9678a1e87ca9f1a37dc659a97b39d812d98cd236947e1b53b3d0d6fd346acb6e90600090a350949350505050565b610534610aeb565b61053e6000610be4565b565b600054610100900460ff16158080156105605750600054600160ff909116105b80610581575061056f30610a6f565b158015610581575060005460ff166001145b6105e45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103c1565b6000805460ff191660011790558015610607576000805461ff0019166101001790555b610612336000610c3f565b8015610658576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b610663610aeb565b600254600160a01b900460ff161561068d5760405162461bcd60e51b81526004016103c19061125c565b6002805460ff60a01b1916600160a01b179055565b6000546201000090046001600160a01b031690565b6106bf610aeb565b600254600160a01b900460ff16156106e95760405162461bcd60e51b81526004016103c19061125c565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b610713610aeb565b600254600160b81b900460ff16156107555760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b60448201526064016103c1565b6002805460ff60b81b1916600160b81b179055565b610772610aeb565b6002805460ff60a81b1916600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b6107b933610c74565b6002546001600160a01b03166108095760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b60448201526064016103c1565b600254600160a81b900460ff16156108635760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b454460448201526064016103c1565b60005b838110156109b55760008585838181106108825761088261128c565b9050602002016020810190610897919061116e565b6001600160a01b0316036108da576108d58383838181106108ba576108ba61128c565b6002546001600160a01b031692602090910201359050610df9565b6109a3565b8484828181106108ec576108ec61128c565b9050602002016020810190610901919061116e565b6002546001600160a01b039182169163a9059cbb91168585858181106109295761092961128c565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af115801561097d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a191906112a2565b505b806109ad816112c4565b915050610866565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a5848484846040516109eb94939291906112eb565b60405180910390a150505050565b610a01610aeb565b6001600160a01b038116610a665760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103c1565b61065881610be4565b6001600160a01b03163b151590565b6000610ae4838330604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b8152606093841b60148201526f5af43d82803e903d91602b57fd5bf3ff60801b6028820152921b6038830152604c8201526037808220606c830152605591012090565b9392505050565b33610af46106a2565b6001600160a01b03161461053e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c1565b6000604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528360601b60148201526e5af43d82803e903d91602b57fd5bf360881b6028820152826037826000f59150506001600160a01b0381166103495760405162461bcd60e51b8152602060048201526017602482015276115490cc4c4d8dce8818dc99585d194c8819985a5b1959604a1b60448201526064016103c1565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff16610c665760405162461bcd60e51b81526004016103c19061136d565b610c708282610f14565b5050565b6003600254600160b01b900460ff166003811115610c9457610c946110aa565b03610cd35760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b60448201526064016103c1565b60028054600160b01b900460ff166003811115610cf257610cf26110aa565b03610cfa5750565b6001600254600160b01b900460ff166003811115610d1a57610d1a6110aa565b03610d76576002546001600160a01b038281169116146106585760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b60448201526064016103c1565b6000600254600160b01b900460ff166003811115610d9657610d966110aa565b0361065857806001600160a01b0316610dad6106a2565b6001600160a01b0316146106585760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b60448201526064016103c1565b80471015610e495760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016103c1565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610e96576040519150601f19603f3d011682016040523d82523d6000602084013e610e9b565b606091505b5050905080610f0f5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b60648201526084016103c1565b505050565b600054610100900460ff16610f3b5760405162461bcd60e51b81526004016103c19061136d565b610f4b63ac2ba33360e01b610f98565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b836003811115610f8f57610f8f6110aa565b02179055505050565b6001600160e01b03198082169003610ff15760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b60448201526064016103c1565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60006020828403121561102b57600080fd5b81356001600160e01b031981168114610ae457600080fd5b80356001600160a01b038116811461105a57600080fd5b919050565b6000806040838503121561107257600080fd5b61107b83611043565b946020939093013593505050565b60006020828403121561109b57600080fd5b813560048110610ae457600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106110e257634e487b7160e01b600052602160045260246000fd5b91905290565b600080600080606085870312156110fe57600080fd5b61110785611043565b93506020850135925060408501356001600160401b038082111561112a57600080fd5b818701915087601f83011261113e57600080fd5b81358181111561114d57600080fd5b88602082850101111561115f57600080fd5b95989497505060200194505050565b60006020828403121561118057600080fd5b610ae482611043565b60008083601f84011261119b57600080fd5b5081356001600160401b038111156111b257600080fd5b6020830191508360208260051b85010111156111cd57600080fd5b9250929050565b600080600080604085870312156111ea57600080fd5b84356001600160401b038082111561120157600080fd5b61120d88838901611189565b9096509450602087013591508082111561122657600080fd5b5061123387828801611189565b95989497509550505050565b60609290921b6001600160601b0319168252601482015260340190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156112b457600080fd5b81518015158114610ae457600080fd5b6000600182016112e457634e487b7160e01b600052601160045260246000fd5b5060010190565b6040808252810184905260008560608301825b8781101561132c576001600160a01b0361131784611043565b168252602092830192909101906001016112fe565b5083810360208501528481526001600160fb1b0385111561134c57600080fd5b8460051b915081866020830137600091016020019081529695505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea2646970667358221220204c052f09a4672bed84d24cba877f9c6c38ed3b29e1185164d7f505ab95deb964736f6c634300080f0033","deployedBytecode":"0x6080604052600436106100d95760003560e01c806301ffc9a7146100de57806310db94b9146101135780632c2330671461014b5780632d00b5871461016d57806347791ece1461019b57806349561cb9146101ae5780636057e0ec146101cf578063715018a6146101f05780638129fc1c14610205578063837fe1401461021a5780638da5cb5b1461022f578063af121f5414610244578063c0bb38ff14610265578063c723955a14610285578063da82b2271461029a578063dcbe353f146102af578063de6d6d96146102cf578063f2fde38b146102ef575b600080fd5b3480156100ea57600080fd5b506100fe6100f9366004611019565b61030f565b60405190151581526020015b60405180910390f35b34801561011f57600080fd5b5061013361012e36600461105f565b61034f565b6040516001600160a01b03909116815260200161010a565b34801561015757600080fd5b5061016b610166366004611089565b61038f565b005b34801561017957600080fd5b5060025461018e90600160b01b900460ff1681565b60405161010a91906110c0565b6101336101a93660046110e8565b6103f7565b3480156101ba57600080fd5b506002546100fe90600160b81b900460ff1681565b3480156101db57600080fd5b506002546100fe90600160a01b900460ff1681565b3480156101fc57600080fd5b5061016b61052c565b34801561021157600080fd5b5061016b610540565b34801561022657600080fd5b5061016b61065b565b34801561023b57600080fd5b506101336106a2565b34801561025057600080fd5b506002546100fe90600160a81b900460ff1681565b34801561027157600080fd5b5061016b61028036600461116e565b6106b7565b34801561029157600080fd5b5061016b61070b565b3480156102a657600080fd5b5061016b61076a565b3480156102bb57600080fd5b50600254610133906001600160a01b031681565b3480156102db57600080fd5b5061016b6102ea3660046111d4565b6107b0565b3480156102fb57600080fd5b5061016b61030a36600461116e565b6109f9565b60006301ffc9a760e01b6001600160e01b03198316148061034957506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b600080338360405160200161036592919061123f565b6040516020818303038152906040528051906020012090506103878482610a7e565b949350505050565b610397610aeb565b600254600160b81b900460ff16156103ca5760405162461bcd60e51b81526004016103c19061125c565b60405180910390fd5b6002805482919060ff60b01b1916600160b01b8360038111156103ef576103ef6110aa565b021790555050565b600080338560405160200161040d92919061123f565b60405160208183030381529060405280519060200120905061042f8682610b4a565b915082156104ed57600080836001600160a01b0316868660405161045492919061127c565b6000604051808303816000865af19150503d8060008114610491576040519150601f19603f3d011682016040523d82523d6000602084013e610496565b606091505b5091509150816104ea578051156104b05780518082602001fd5b60405162461bcd60e51b815260206004820152600f60248201526e4641494c45445f544f5f434c4f4e4560881b60448201526064016103c1565b50505b6040516001600160a01b0383169033907f9678a1e87ca9f1a37dc659a97b39d812d98cd236947e1b53b3d0d6fd346acb6e90600090a350949350505050565b610534610aeb565b61053e6000610be4565b565b600054610100900460ff16158080156105605750600054600160ff909116105b80610581575061056f30610a6f565b158015610581575060005460ff166001145b6105e45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103c1565b6000805460ff191660011790558015610607576000805461ff0019166101001790555b610612336000610c3f565b8015610658576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b610663610aeb565b600254600160a01b900460ff161561068d5760405162461bcd60e51b81526004016103c19061125c565b6002805460ff60a01b1916600160a01b179055565b6000546201000090046001600160a01b031690565b6106bf610aeb565b600254600160a01b900460ff16156106e95760405162461bcd60e51b81526004016103c19061125c565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b610713610aeb565b600254600160b81b900460ff16156107555760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b60448201526064016103c1565b6002805460ff60b81b1916600160b81b179055565b610772610aeb565b6002805460ff60a81b1916600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b6107b933610c74565b6002546001600160a01b03166108095760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b60448201526064016103c1565b600254600160a81b900460ff16156108635760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b454460448201526064016103c1565b60005b838110156109b55760008585838181106108825761088261128c565b9050602002016020810190610897919061116e565b6001600160a01b0316036108da576108d58383838181106108ba576108ba61128c565b6002546001600160a01b031692602090910201359050610df9565b6109a3565b8484828181106108ec576108ec61128c565b9050602002016020810190610901919061116e565b6002546001600160a01b039182169163a9059cbb91168585858181106109295761092961128c565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af115801561097d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a191906112a2565b505b806109ad816112c4565b915050610866565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a5848484846040516109eb94939291906112eb565b60405180910390a150505050565b610a01610aeb565b6001600160a01b038116610a665760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103c1565b61065881610be4565b6001600160a01b03163b151590565b6000610ae4838330604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b8152606093841b60148201526f5af43d82803e903d91602b57fd5bf3ff60801b6028820152921b6038830152604c8201526037808220606c830152605591012090565b9392505050565b33610af46106a2565b6001600160a01b03161461053e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c1565b6000604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528360601b60148201526e5af43d82803e903d91602b57fd5bf360881b6028820152826037826000f59150506001600160a01b0381166103495760405162461bcd60e51b8152602060048201526017602482015276115490cc4c4d8dce8818dc99585d194c8819985a5b1959604a1b60448201526064016103c1565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff16610c665760405162461bcd60e51b81526004016103c19061136d565b610c708282610f14565b5050565b6003600254600160b01b900460ff166003811115610c9457610c946110aa565b03610cd35760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b60448201526064016103c1565b60028054600160b01b900460ff166003811115610cf257610cf26110aa565b03610cfa5750565b6001600254600160b01b900460ff166003811115610d1a57610d1a6110aa565b03610d76576002546001600160a01b038281169116146106585760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b60448201526064016103c1565b6000600254600160b01b900460ff166003811115610d9657610d966110aa565b0361065857806001600160a01b0316610dad6106a2565b6001600160a01b0316146106585760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b60448201526064016103c1565b80471015610e495760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016103c1565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610e96576040519150601f19603f3d011682016040523d82523d6000602084013e610e9b565b606091505b5050905080610f0f5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b60648201526084016103c1565b505050565b600054610100900460ff16610f3b5760405162461bcd60e51b81526004016103c19061136d565b610f4b63ac2ba33360e01b610f98565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b836003811115610f8f57610f8f6110aa565b02179055505050565b6001600160e01b03198082169003610ff15760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b60448201526064016103c1565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60006020828403121561102b57600080fd5b81356001600160e01b031981168114610ae457600080fd5b80356001600160a01b038116811461105a57600080fd5b919050565b6000806040838503121561107257600080fd5b61107b83611043565b946020939093013593505050565b60006020828403121561109b57600080fd5b813560048110610ae457600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106110e257634e487b7160e01b600052602160045260246000fd5b91905290565b600080600080606085870312156110fe57600080fd5b61110785611043565b93506020850135925060408501356001600160401b038082111561112a57600080fd5b818701915087601f83011261113e57600080fd5b81358181111561114d57600080fd5b88602082850101111561115f57600080fd5b95989497505060200194505050565b60006020828403121561118057600080fd5b610ae482611043565b60008083601f84011261119b57600080fd5b5081356001600160401b038111156111b257600080fd5b6020830191508360208260051b85010111156111cd57600080fd5b9250929050565b600080600080604085870312156111ea57600080fd5b84356001600160401b038082111561120157600080fd5b61120d88838901611189565b9096509450602087013591508082111561122657600080fd5b5061123387828801611189565b95989497509550505050565b60609290921b6001600160601b0319168252601482015260340190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156112b457600080fd5b81518015158114610ae457600080fd5b6000600182016112e457634e487b7160e01b600052601160045260246000fd5b5060010190565b6040808252810184905260008560608301825b8781101561132c576001600160a01b0361131784611043565b168252602092830192909101906001016112fe565b5083810360208501528481526001600160fb1b0385111561134c57600080fd5b8460051b915081866020830137600091016020019081529695505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea2646970667358221220204c052f09a4672bed84d24cba877f9c6c38ed3b29e1185164d7f505ab95deb964736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"factory/FlairFactoryNewable":{"address":{"3":"0x107323fC6180D032B522214AF88d7A3083D67827","4":"0x0c96A89454B5Ba2d349E0BdC832F82B7Ec11cE2f","5":"0xb5A05196Fdda3b680fdA6E17565f6707E9365752","25":"0x5C7C7E058dF26669Ce5623d8B0a6C4d8Ac3EF4fD","66":"0x6a239F882f3aB169829DC2149d04C2Adb5C63368","137":"0xb55f346bcB5835CA39606a296fe1eb0309777BD2","250":"0xb31c8f06F99Be1285Cb1998949F47E1988f38b23","280":"0x08CB0BAFe324fa147CcB2bB784366e44Db71387E","4002":"0xb31c8f06F99Be1285Cb1998949F47E1988f38b23","43113":"0x97BA377E12dCA8a81b9d304F5e27D179E6ca1FBA","43114":"0xFf3B2524F0BA31FdeA8DE0506F82978c3ce8fFe6","421611":"0xFf6e39A766c55B5f56E58572B8C7bA54ef57acaB","arbitrumTestnet":"0xFf6e39A766c55B5f56E58572B8C7bA54ef57acaB","avalanche":"0xFf3B2524F0BA31FdeA8DE0506F82978c3ce8fFe6","avalancheFujiTestnet":"0x97BA377E12dCA8a81b9d304F5e27D179E6ca1FBA","cronos":"0x5C7C7E058dF26669Ce5623d8B0a6C4d8Ac3EF4fD","ftmTestnet":"0xb31c8f06F99Be1285Cb1998949F47E1988f38b23","goerli":"0xb5A05196Fdda3b680fdA6E17565f6707E9365752","okcMainnet":"0x6a239F882f3aB169829DC2149d04C2Adb5C63368","opera":"0xb31c8f06F99Be1285Cb1998949F47E1988f38b23","polygon":"0xb55f346bcB5835CA39606a296fe1eb0309777BD2","rinkeby":"0x0c96A89454B5Ba2d349E0BdC832F82B7Ec11cE2f","ropsten":"0x107323fC6180D032B522214AF88d7A3083D67827","zksyncTestnet":"0x08CB0BAFe324fa147CcB2bB784366e44Db71387E"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"FlairFactoryNewable","sourceName":"contracts/factory/FlairFactoryNewable.sol","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"deployer","type":"address"},{"indexed":true,"internalType":"address","name":"proxyAddress","type":"address"}],"name":"ProxyCreated","type":"event"},{"anonymous":false,"inputs":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"cloneDeterministicSimple","outputs":[{"internalType":"address","name":"deployedProxy","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b506200001d336200002d565b6200002762000088565b62000377565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620000a95750600054600160ff909116105b80620000d95750620000c630620001bd60201b62000a001760201c565b158015620000d9575060005460ff166001145b620001425760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000166576000805461ff0019166101001790555b62000173336000620001cc565b8015620001ba576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6001600160a01b03163b151590565b600054610100900460ff16620001f65760405162461bcd60e51b8152600401620001399062000316565b62000202828262000206565b5050565b600054610100900460ff16620002305760405162461bcd60e51b8152600401620001399062000316565b6200024263ac2ba33360e01b62000292565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b83600381111562000289576200028962000361565b02179055505050565b6001600160e01b03198082169003620002ee5760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640162000139565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b6113be80620003876000396000f3fe6080604052600436106100ce5760003560e01c806301ffc9a7146100d35780632c233067146101085780632d00b5871461012a57806347791ece1461015857806349561cb9146101785780636057e0ec14610199578063715018a6146101ba5780638129fc1c146101cf578063837fe140146101e45780638da5cb5b146101f9578063af121f541461020e578063c0bb38ff1461022f578063c723955a1461024f578063da82b22714610264578063dcbe353f14610279578063de6d6d9614610299578063f2fde38b146102b9575b600080fd5b3480156100df57600080fd5b506100f36100ee366004610eb0565b6102d9565b60405190151581526020015b60405180910390f35b34801561011457600080fd5b50610128610123366004610ee1565b610319565b005b34801561013657600080fd5b5060025461014b90600160b01b900460ff1681565b6040516100ff9190610f18565b61016b610166366004610f5c565b610381565b6040516100ff9190610fe2565b34801561018457600080fd5b506002546100f390600160b81b900460ff1681565b3480156101a557600080fd5b506002546100f390600160a01b900460ff1681565b3480156101c657600080fd5b506101286104bd565b3480156101db57600080fd5b506101286104d1565b3480156101f057600080fd5b506101286105ec565b34801561020557600080fd5b5061016b610633565b34801561021a57600080fd5b506002546100f390600160a81b900460ff1681565b34801561023b57600080fd5b5061012861024a366004610ff6565b610648565b34801561025b57600080fd5b5061012861069c565b34801561027057600080fd5b506101286106fb565b34801561028557600080fd5b5060025461016b906001600160a01b031681565b3480156102a557600080fd5b506101286102b436600461105c565b610741565b3480156102c557600080fd5b506101286102d4366004610ff6565b61098a565b60006301ffc9a760e01b6001600160e01b03198316148061031357506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b610321610a0f565b600254600160b81b900460ff16156103545760405162461bcd60e51b815260040161034b906110c7565b60405180910390fd5b6002805482919060ff60b01b1916600160b01b83600381111561037957610379610f02565b021790555050565b600080848660405161039290610ea3565b61039c9190610fe2565b8190604051809103906000f59050801580156103bc573d6000803e3d6000fd5b509150819050821561047e57600080836001600160a01b031686866040516103e59291906110e7565b6000604051808303816000865af19150503d8060008114610422576040519150601f19603f3d011682016040523d82523d6000602084013e610427565b606091505b50915091508161047b578051156104415780518082602001fd5b60405162461bcd60e51b815260206004820152600f60248201526e4641494c45445f544f5f434c4f4e4560881b604482015260640161034b565b50505b6040516001600160a01b0383169033907f9678a1e87ca9f1a37dc659a97b39d812d98cd236947e1b53b3d0d6fd346acb6e90600090a350949350505050565b6104c5610a0f565b6104cf6000610a6e565b565b600054610100900460ff16158080156104f15750600054600160ff909116105b80610512575061050030610a00565b158015610512575060005460ff166001145b6105755760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161034b565b6000805460ff191660011790558015610598576000805461ff0019166101001790555b6105a3336000610ac9565b80156105e9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6105f4610a0f565b600254600160a01b900460ff161561061e5760405162461bcd60e51b815260040161034b906110c7565b6002805460ff60a01b1916600160a01b179055565b6000546201000090046001600160a01b031690565b610650610a0f565b600254600160a01b900460ff161561067a5760405162461bcd60e51b815260040161034b906110c7565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6106a4610a0f565b600254600160b81b900460ff16156106e65760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b604482015260640161034b565b6002805460ff60b81b1916600160b81b179055565b610703610a0f565b6002805460ff60a81b1916600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b61074a33610afe565b6002546001600160a01b031661079a5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b604482015260640161034b565b600254600160a81b900460ff16156107f45760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b4544604482015260640161034b565b60005b83811015610946576000858583818110610813576108136110f7565b90506020020160208101906108289190610ff6565b6001600160a01b03160361086b5761086683838381811061084b5761084b6110f7565b6002546001600160a01b031692602090910201359050610c83565b610934565b84848281811061087d5761087d6110f7565b90506020020160208101906108929190610ff6565b6002546001600160a01b039182169163a9059cbb91168585858181106108ba576108ba6110f7565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af115801561090e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610932919061110d565b505b8061093e8161112f565b9150506107f7565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a58484848460405161097c9493929190611156565b60405180910390a150505050565b610992610a0f565b6001600160a01b0381166109f75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161034b565b6105e981610a6e565b6001600160a01b03163b151590565b33610a18610633565b6001600160a01b0316146104cf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161034b565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff16610af05760405162461bcd60e51b815260040161034b906111d8565b610afa8282610d9e565b5050565b6003600254600160b01b900460ff166003811115610b1e57610b1e610f02565b03610b5d5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b604482015260640161034b565b60028054600160b01b900460ff166003811115610b7c57610b7c610f02565b03610b845750565b6001600254600160b01b900460ff166003811115610ba457610ba4610f02565b03610c00576002546001600160a01b038281169116146105e95760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b604482015260640161034b565b6000600254600160b01b900460ff166003811115610c2057610c20610f02565b036105e957806001600160a01b0316610c37610633565b6001600160a01b0316146105e95760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b604482015260640161034b565b80471015610cd35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161034b565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610d20576040519150601f19603f3d011682016040523d82523d6000602084013e610d25565b606091505b5050905080610d995760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b606482015260840161034b565b505050565b600054610100900460ff16610dc55760405162461bcd60e51b815260040161034b906111d8565b610dd563ac2ba33360e01b610e22565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b836003811115610e1957610e19610f02565b02179055505050565b6001600160e01b03198082169003610e7b5760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b604482015260640161034b565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b6101658061122483390190565b600060208284031215610ec257600080fd5b81356001600160e01b031981168114610eda57600080fd5b9392505050565b600060208284031215610ef357600080fd5b813560048110610eda57600080fd5b634e487b7160e01b600052602160045260246000fd5b6020810160048310610f3a57634e487b7160e01b600052602160045260246000fd5b91905290565b80356001600160a01b0381168114610f5757600080fd5b919050565b60008060008060608587031215610f7257600080fd5b610f7b85610f40565b93506020850135925060408501356001600160401b0380821115610f9e57600080fd5b818701915087601f830112610fb257600080fd5b813581811115610fc157600080fd5b886020828501011115610fd357600080fd5b95989497505060200194505050565b6001600160a01b0391909116815260200190565b60006020828403121561100857600080fd5b610eda82610f40565b60008083601f84011261102357600080fd5b5081356001600160401b0381111561103a57600080fd5b6020830191508360208260051b850101111561105557600080fd5b9250929050565b6000806000806040858703121561107257600080fd5b84356001600160401b038082111561108957600080fd5b61109588838901611011565b909650945060208701359150808211156110ae57600080fd5b506110bb87828801611011565b95989497509550505050565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561111f57600080fd5b81518015158114610eda57600080fd5b60006001820161114f57634e487b7160e01b600052601160045260246000fd5b5060010190565b6040808252810184905260008560608301825b87811015611197576001600160a01b0361118284610f40565b16825260209283019290910190600101611169565b5083810360208501528481526001600160fb1b038511156111b757600080fd5b8460051b915081866020830137600091016020019081529695505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fe608060405260405161016538038061016583398101604081905261002291610080565b806100597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61007d60201b61004b1760201c565b80546001600160a01b0319166001600160a01b0392909216919091179055506100b0565b90565b60006020828403121561009257600080fd5b81516001600160a01b03811681146100a957600080fd5b9392505050565b60a7806100be6000396000f3fe608060405236601057600e6013565b005b600e5b604960457f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b604e565b565b90565b3660008037600080366000845af43d6000803e808015606c573d6000f35b3d6000fdfea26469706673582212207f15331a7b34a01f18cf6ff00532eff8b95f4b140ef7bfdf3a40979609c4e35964736f6c634300080f0033a2646970667358221220ad1d0e85715c422e2d35fd51ece1a7c5fe7c18f8719bdd25230a5ff786b6301f64736f6c634300080f0033","deployedBytecode":"0x6080604052600436106100ce5760003560e01c806301ffc9a7146100d35780632c233067146101085780632d00b5871461012a57806347791ece1461015857806349561cb9146101785780636057e0ec14610199578063715018a6146101ba5780638129fc1c146101cf578063837fe140146101e45780638da5cb5b146101f9578063af121f541461020e578063c0bb38ff1461022f578063c723955a1461024f578063da82b22714610264578063dcbe353f14610279578063de6d6d9614610299578063f2fde38b146102b9575b600080fd5b3480156100df57600080fd5b506100f36100ee366004610eb0565b6102d9565b60405190151581526020015b60405180910390f35b34801561011457600080fd5b50610128610123366004610ee1565b610319565b005b34801561013657600080fd5b5060025461014b90600160b01b900460ff1681565b6040516100ff9190610f18565b61016b610166366004610f5c565b610381565b6040516100ff9190610fe2565b34801561018457600080fd5b506002546100f390600160b81b900460ff1681565b3480156101a557600080fd5b506002546100f390600160a01b900460ff1681565b3480156101c657600080fd5b506101286104bd565b3480156101db57600080fd5b506101286104d1565b3480156101f057600080fd5b506101286105ec565b34801561020557600080fd5b5061016b610633565b34801561021a57600080fd5b506002546100f390600160a81b900460ff1681565b34801561023b57600080fd5b5061012861024a366004610ff6565b610648565b34801561025b57600080fd5b5061012861069c565b34801561027057600080fd5b506101286106fb565b34801561028557600080fd5b5060025461016b906001600160a01b031681565b3480156102a557600080fd5b506101286102b436600461105c565b610741565b3480156102c557600080fd5b506101286102d4366004610ff6565b61098a565b60006301ffc9a760e01b6001600160e01b03198316148061031357506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b610321610a0f565b600254600160b81b900460ff16156103545760405162461bcd60e51b815260040161034b906110c7565b60405180910390fd5b6002805482919060ff60b01b1916600160b01b83600381111561037957610379610f02565b021790555050565b600080848660405161039290610ea3565b61039c9190610fe2565b8190604051809103906000f59050801580156103bc573d6000803e3d6000fd5b509150819050821561047e57600080836001600160a01b031686866040516103e59291906110e7565b6000604051808303816000865af19150503d8060008114610422576040519150601f19603f3d011682016040523d82523d6000602084013e610427565b606091505b50915091508161047b578051156104415780518082602001fd5b60405162461bcd60e51b815260206004820152600f60248201526e4641494c45445f544f5f434c4f4e4560881b604482015260640161034b565b50505b6040516001600160a01b0383169033907f9678a1e87ca9f1a37dc659a97b39d812d98cd236947e1b53b3d0d6fd346acb6e90600090a350949350505050565b6104c5610a0f565b6104cf6000610a6e565b565b600054610100900460ff16158080156104f15750600054600160ff909116105b80610512575061050030610a00565b158015610512575060005460ff166001145b6105755760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161034b565b6000805460ff191660011790558015610598576000805461ff0019166101001790555b6105a3336000610ac9565b80156105e9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6105f4610a0f565b600254600160a01b900460ff161561061e5760405162461bcd60e51b815260040161034b906110c7565b6002805460ff60a01b1916600160a01b179055565b6000546201000090046001600160a01b031690565b610650610a0f565b600254600160a01b900460ff161561067a5760405162461bcd60e51b815260040161034b906110c7565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6106a4610a0f565b600254600160b81b900460ff16156106e65760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b604482015260640161034b565b6002805460ff60b81b1916600160b81b179055565b610703610a0f565b6002805460ff60a81b1916600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b61074a33610afe565b6002546001600160a01b031661079a5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b604482015260640161034b565b600254600160a81b900460ff16156107f45760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b4544604482015260640161034b565b60005b83811015610946576000858583818110610813576108136110f7565b90506020020160208101906108289190610ff6565b6001600160a01b03160361086b5761086683838381811061084b5761084b6110f7565b6002546001600160a01b031692602090910201359050610c83565b610934565b84848281811061087d5761087d6110f7565b90506020020160208101906108929190610ff6565b6002546001600160a01b039182169163a9059cbb91168585858181106108ba576108ba6110f7565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af115801561090e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610932919061110d565b505b8061093e8161112f565b9150506107f7565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a58484848460405161097c9493929190611156565b60405180910390a150505050565b610992610a0f565b6001600160a01b0381166109f75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161034b565b6105e981610a6e565b6001600160a01b03163b151590565b33610a18610633565b6001600160a01b0316146104cf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161034b565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff16610af05760405162461bcd60e51b815260040161034b906111d8565b610afa8282610d9e565b5050565b6003600254600160b01b900460ff166003811115610b1e57610b1e610f02565b03610b5d5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b604482015260640161034b565b60028054600160b01b900460ff166003811115610b7c57610b7c610f02565b03610b845750565b6001600254600160b01b900460ff166003811115610ba457610ba4610f02565b03610c00576002546001600160a01b038281169116146105e95760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b604482015260640161034b565b6000600254600160b01b900460ff166003811115610c2057610c20610f02565b036105e957806001600160a01b0316610c37610633565b6001600160a01b0316146105e95760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b604482015260640161034b565b80471015610cd35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161034b565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610d20576040519150601f19603f3d011682016040523d82523d6000602084013e610d25565b606091505b5050905080610d995760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b606482015260840161034b565b505050565b600054610100900460ff16610dc55760405162461bcd60e51b815260040161034b906111d8565b610dd563ac2ba33360e01b610e22565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b836003811115610e1957610e19610f02565b02179055505050565b6001600160e01b03198082169003610e7b5760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b604482015260640161034b565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b6101658061122483390190565b600060208284031215610ec257600080fd5b81356001600160e01b031981168114610eda57600080fd5b9392505050565b600060208284031215610ef357600080fd5b813560048110610eda57600080fd5b634e487b7160e01b600052602160045260246000fd5b6020810160048310610f3a57634e487b7160e01b600052602160045260246000fd5b91905290565b80356001600160a01b0381168114610f5757600080fd5b919050565b60008060008060608587031215610f7257600080fd5b610f7b85610f40565b93506020850135925060408501356001600160401b0380821115610f9e57600080fd5b818701915087601f830112610fb257600080fd5b813581811115610fc157600080fd5b886020828501011115610fd357600080fd5b95989497505060200194505050565b6001600160a01b0391909116815260200190565b60006020828403121561100857600080fd5b610eda82610f40565b60008083601f84011261102357600080fd5b5081356001600160401b0381111561103a57600080fd5b6020830191508360208260051b850101111561105557600080fd5b9250929050565b6000806000806040858703121561107257600080fd5b84356001600160401b038082111561108957600080fd5b61109588838901611011565b909650945060208701359150808211156110ae57600080fd5b506110bb87828801611011565b95989497509550505050565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561111f57600080fd5b81518015158114610eda57600080fd5b60006001820161114f57634e487b7160e01b600052601160045260246000fd5b5060010190565b6040808252810184905260008560608301825b87811015611197576001600160a01b0361118284610f40565b16825260209283019290910190600101611169565b5083810360208501528481526001600160fb1b038511156111b757600080fd5b8460051b915081866020830137600091016020019081529695505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fe608060405260405161016538038061016583398101604081905261002291610080565b806100597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61007d60201b61004b1760201c565b80546001600160a01b0319166001600160a01b0392909216919091179055506100b0565b90565b60006020828403121561009257600080fd5b81516001600160a01b03811681146100a957600080fd5b9392505050565b60a7806100be6000396000f3fe608060405236601057600e6013565b005b600e5b604960457f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b604e565b565b90565b3660008037600080366000845af43d6000803e808015606c573d6000f35b3d6000fdfea26469706673582212207f15331a7b34a01f18cf6ff00532eff8b95f4b140ef7bfdf3a40979609c4e35964736f6c634300080f0033a2646970667358221220ad1d0e85715c422e2d35fd51ece1a7c5fe7c18f8719bdd25230a5ff786b6301f64736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"factory/MinimalProxy":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"MinimalProxy","sourceName":"contracts/factory/MinimalProxy.sol","abi":[{"inputs":[{"internalType":"address","name":"_impl","type":"address"}],"stateMutability":"payable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x608060405260405161016538038061016583398101604081905261002291610080565b806100597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61007d60201b61004b1760201c565b80546001600160a01b0319166001600160a01b0392909216919091179055506100b0565b90565b60006020828403121561009257600080fd5b81516001600160a01b03811681146100a957600080fd5b9392505050565b60a7806100be6000396000f3fe608060405236601057600e6013565b005b600e5b604960457f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b604e565b565b90565b3660008037600080366000845af43d6000803e808015606c573d6000f35b3d6000fdfea26469706673582212207f15331a7b34a01f18cf6ff00532eff8b95f4b140ef7bfdf3a40979609c4e35964736f6c634300080f0033","deployedBytecode":"0x608060405236601057600e6013565b005b600e5b604960457f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b604e565b565b90565b3660008037600080366000845af43d6000803e808015606c573d6000f35b3d6000fdfea26469706673582212207f15331a7b34a01f18cf6ff00532eff8b95f4b140ef7bfdf3a40979609c4e35964736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"misc/opensea/OwnableDelegateProxy":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"OwnableDelegateProxy","sourceName":"contracts/misc/opensea/ProxyRegistry.sol","abi":[],"bytecode":"0x6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea2646970667358221220897e9df3852e0b680ec6d80c776771f8657a31bfa746087eb9013b95cf5a218264736f6c634300080f0033","deployedBytecode":"0x6080604052600080fdfea2646970667358221220897e9df3852e0b680ec6d80c776771f8657a31bfa746087eb9013b95cf5a218264736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"misc/opensea/ProxyRegistry":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ProxyRegistry","sourceName":"contracts/misc/opensea/ProxyRegistry.sol","abi":[{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"proxies","outputs":[{"internalType":"contract OwnableDelegateProxy","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b5060d38061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c455279114602d575b600080fd5b60536038366004606f565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b600060208284031215608057600080fd5b81356001600160a01b0381168114609657600080fd5b939250505056fea26469706673582212201e60ffa926d0b2918807f5157618e11ae9ca571967f097286f2c060034799ea464736f6c634300080f0033","deployedBytecode":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063c455279114602d575b600080fd5b60536038366004606f565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b600060208284031215608057600080fd5b81356001600160a01b0381168114609657600080fd5b939250505056fea26469706673582212201e60ffa926d0b2918807f5157618e11ae9ca571967f097286f2c060034799ea464736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"misc/polygon/NativeMetaTransaction":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"NativeMetaTransaction","sourceName":"contracts/misc/polygon/NativeMetaTransaction.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"userAddress","type":"address"},{"indexed":false,"internalType":"address payable","name":"relayerAddress","type":"address"},{"indexed":false,"internalType":"bytes","name":"functionSignature","type":"bytes"}],"name":"MetaTransactionExecuted","type":"event"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"bytes","name":"functionSignature","type":"bytes"},{"internalType":"bytes32","name":"sigR","type":"bytes32"},{"internalType":"bytes32","name":"sigS","type":"bytes32"},{"internalType":"uint8","name":"sigV","type":"uint8"}],"name":"executeMetaTransaction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getNonce","outputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"misc/rarible/IRoyalties":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IRoyalties","sourceName":"contracts/misc/rarible/IRoyalties.sol","abi":[{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getRaribleV2Royalties","outputs":[{"components":[{"internalType":"address payable","name":"account","type":"address"},{"internalType":"uint96","name":"value","type":"uint96"}],"internalType":"struct LibPart.Part[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"misc/rarible/LibPart":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"LibPart","sourceName":"contracts/misc/rarible/LibPart.sol","abi":[{"inputs":[],"name":"TYPE_HASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60a6610038600b82828239805160001a607314602b57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c806364d4c819146038575b600080fd5b605e7f397e04204c1e1a60ee8724b71f8244e10ab5f2e9009854d80f602bda21b59ebb81565b60405190815260200160405180910390f3fea26469706673582212200f105bc5a4bf5c52006c56db809ee4f2b88e0a30165c84157fa3f648a5cdb92f64736f6c634300080f0033","deployedBytecode":"0x730000000000000000000000000000000000000000301460806040526004361060335760003560e01c806364d4c819146038575b600080fd5b605e7f397e04204c1e1a60ee8724b71f8244e10ab5f2e9009854d80f602bda21b59ebb81565b60405190815260200160405180910390f3fea26469706673582212200f105bc5a4bf5c52006c56db809ee4f2b88e0a30165c84157fa3f648a5cdb92f64736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"misc/rarible/LibRoyaltiesV2":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"LibRoyaltiesV2","sourceName":"contracts/misc/rarible/LibRoyaltiesV2.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220145dbc1e5476712978e05f292c307f06752b204acefdc9d90f3229ddda1a717a64736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220145dbc1e5476712978e05f292c307f06752b204acefdc9d90f3229ddda1a717a64736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/access/AccessControl":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"AccessControl","sourceName":"contracts/access/AccessControl.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/access/AccessControlCrossChain":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"AccessControlCrossChain","sourceName":"contracts/access/AccessControlCrossChain.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"CROSSCHAIN_ALIAS","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/access/AccessControlEnumerable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"AccessControlEnumerable","sourceName":"contracts/access/AccessControlEnumerable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/access/IAccessControl":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IAccessControl","sourceName":"contracts/access/IAccessControl.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/access/IAccessControlEnumerable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IAccessControlEnumerable","sourceName":"contracts/access/IAccessControlEnumerable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/access/Ownable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Ownable","sourceName":"contracts/access/Ownable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/amb/CrossChainEnabledAMB":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"CrossChainEnabledAMB","sourceName":"contracts/crosschain/amb/CrossChainEnabledAMB.sol","abi":[{"inputs":[{"internalType":"address","name":"bridge","type":"address"}],"stateMutability":"nonpayable","type":"constructor"}],"bytecode":"0x60a0604052348015600f57600080fd5b5060405160bc38038060bc833981016040819052602a91603a565b6001600160a01b03166080526068565b600060208284031215604b57600080fd5b81516001600160a01b0381168114606157600080fd5b9392505050565b608051603f607d60003960005050603f6000f3fe6080604052600080fdfea26469706673582212209884bd67993706561c6e5b4d273a774582590b63288266669c10629930cb4ad664736f6c63430008090033","deployedBytecode":"0x6080604052600080fdfea26469706673582212209884bd67993706561c6e5b4d273a774582590b63288266669c10629930cb4ad664736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/amb/LibAMB":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"LibAMB","sourceName":"contracts/crosschain/amb/LibAMB.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220288fb1df8b52873fc67e1921066d5bc1566a8daea933ac55a279f2f8a2a2f6a864736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220288fb1df8b52873fc67e1921066d5bc1566a8daea933ac55a279f2f8a2a2f6a864736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/arbitrum/CrossChainEnabledArbitrumL1":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"CrossChainEnabledArbitrumL1","sourceName":"contracts/crosschain/arbitrum/CrossChainEnabledArbitrumL1.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/arbitrum/CrossChainEnabledArbitrumL2":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"CrossChainEnabledArbitrumL2","sourceName":"contracts/crosschain/arbitrum/CrossChainEnabledArbitrumL2.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/arbitrum/LibArbitrumL1":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"LibArbitrumL1","sourceName":"contracts/crosschain/arbitrum/LibArbitrumL1.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209f0010b404592d904745111d8cdd71c3be14fb9fede8338df2e9e52072d0ae6564736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209f0010b404592d904745111d8cdd71c3be14fb9fede8338df2e9e52072d0ae6564736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/arbitrum/LibArbitrumL2":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"LibArbitrumL2","sourceName":"contracts/crosschain/arbitrum/LibArbitrumL2.sol","abi":[{"inputs":[],"name":"ARBSYS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"bytecode":"0x6091610038600b82828239805160001a607314602b57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063bf0a12cf146038575b600080fd5b603f606481565b6040516001600160a01b03909116815260200160405180910390f3fea2646970667358221220ab77562c84149237fab25891fe1774b814b98c91e76d3514eed6eca6c576ce6864736f6c63430008090033","deployedBytecode":"0x730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063bf0a12cf146038575b600080fd5b603f606481565b6040516001600160a01b03909116815260200160405180910390f3fea2646970667358221220ab77562c84149237fab25891fe1774b814b98c91e76d3514eed6eca6c576ce6864736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/CrossChainEnabled":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"CrossChainEnabled","sourceName":"contracts/crosschain/CrossChainEnabled.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/optimism/CrossChainEnabledOptimism":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"CrossChainEnabledOptimism","sourceName":"contracts/crosschain/optimism/CrossChainEnabledOptimism.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/optimism/LibOptimism":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"LibOptimism","sourceName":"contracts/crosschain/optimism/LibOptimism.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209df9178eb2af42ed4c0dd55637a52437ad90595b04abc6b7ddea128c39a72cd464736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209df9178eb2af42ed4c0dd55637a52437ad90595b04abc6b7ddea128c39a72cd464736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/polygon/CrossChainEnabledPolygonChild":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"CrossChainEnabledPolygonChild","sourceName":"contracts/crosschain/polygon/CrossChainEnabledPolygonChild.sol","abi":[{"inputs":[],"name":"NotCrossChainCall","type":"error"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"rootMessageSender","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"processMessageFromRoot","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/finance/PaymentSplitter":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"PaymentSplitter","sourceName":"contracts/finance/PaymentSplitter.sol","abi":[{"inputs":[{"internalType":"address[]","name":"payees","type":"address[]"},{"internalType":"uint256[]","name":"shares_","type":"uint256[]"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ERC20PaymentReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"PayeeAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PaymentReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PaymentReleased","type":"event"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"payee","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"releasable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"releasable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"totalReleased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReleased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x6080604052604051620011f0380380620011f083398101604081905262000026916200042e565b8051825114620000985760405162461bcd60e51b815260206004820152603260248201527f5061796d656e7453706c69747465723a2070617965657320616e6420736861726044820152710cae640d8cadccee8d040dad2e6dac2e8c6d60731b60648201526084015b60405180910390fd5b6000825111620000eb5760405162461bcd60e51b815260206004820152601a60248201527f5061796d656e7453706c69747465723a206e6f2070617965657300000000000060448201526064016200008f565b60005b82518110156200015757620001428382815181106200011157620001116200050c565b60200260200101518383815181106200012e576200012e6200050c565b60200260200101516200016060201b60201c565b806200014e8162000538565b915050620000ee565b50505062000571565b6001600160a01b038216620001cd5760405162461bcd60e51b815260206004820152602c60248201527f5061796d656e7453706c69747465723a206163636f756e74206973207468652060448201526b7a65726f206164647265737360a01b60648201526084016200008f565b600081116200021f5760405162461bcd60e51b815260206004820152601d60248201527f5061796d656e7453706c69747465723a2073686172657320617265203000000060448201526064016200008f565b6001600160a01b038216600090815260026020526040902054156200029b5760405162461bcd60e51b815260206004820152602b60248201527f5061796d656e7453706c69747465723a206163636f756e7420616c726561647960448201526a206861732073686172657360a81b60648201526084016200008f565b60048054600181019091557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319166001600160a01b0384169081179091556000908152600260205260408120829055546200030390829062000556565b600055604080516001600160a01b0384168152602081018390527f40c340f65e17194d14ddddb073d3c9f888e3cb52b5aae0c6c7706b4fbc905fac910160405180910390a15050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156200038d576200038d6200034c565b604052919050565b60006001600160401b03821115620003b157620003b16200034c565b5060051b60200190565b600082601f830112620003cd57600080fd5b81516020620003e6620003e08362000395565b62000362565b82815260059290921b840181019181810190868411156200040657600080fd5b8286015b848110156200042357805183529183019183016200040a565b509695505050505050565b600080604083850312156200044257600080fd5b82516001600160401b03808211156200045a57600080fd5b818501915085601f8301126200046f57600080fd5b8151602062000482620003e08362000395565b82815260059290921b84018101918181019089841115620004a257600080fd5b948201945b83861015620004d95785516001600160a01b0381168114620004c95760008081fd5b82529482019490820190620004a7565b91880151919650909350505080821115620004f357600080fd5b506200050285828601620003bb565b9150509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156200054f576200054f62000522565b5060010190565b600082198211156200056c576200056c62000522565b500190565b610c6f80620005816000396000f3fe6080604052600436106100a05760003560e01c80639852595c116100645780639852595c146101d2578063a3f8eace14610208578063c45ac05014610228578063ce7c2ac214610248578063d79779b21461027e578063e33b7de3146102b457600080fd5b806319165587146100ee5780633a98ef3914610110578063406072a91461013457806348b750441461017a5780638b83209b1461019a57600080fd5b366100e9577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be77033604080516001600160a01b0390921682523460208301520160405180910390a1005b600080fd5b3480156100fa57600080fd5b5061010e6101093660046109e3565b6102c9565b005b34801561011c57600080fd5b506000545b6040519081526020015b60405180910390f35b34801561014057600080fd5b5061012161014f366004610a00565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561018657600080fd5b5061010e610195366004610a00565b6103c8565b3480156101a657600080fd5b506101ba6101b5366004610a39565b6104e8565b6040516001600160a01b03909116815260200161012b565b3480156101de57600080fd5b506101216101ed3660046109e3565b6001600160a01b031660009081526003602052604090205490565b34801561021457600080fd5b506101216102233660046109e3565b610518565b34801561023457600080fd5b50610121610243366004610a00565b610560565b34801561025457600080fd5b506101216102633660046109e3565b6001600160a01b031660009081526002602052604090205490565b34801561028a57600080fd5b506101216102993660046109e3565b6001600160a01b031660009081526005602052604090205490565b3480156102c057600080fd5b50600154610121565b6001600160a01b0381166000908152600260205260409020546103075760405162461bcd60e51b81526004016102fe90610a52565b60405180910390fd5b600061031282610518565b9050806103315760405162461bcd60e51b81526004016102fe90610a98565b6001600160a01b03821660009081526003602052604081208054839290610359908490610af9565b9250508190555080600160008282546103729190610af9565b909155506103829050828261063a565b604080516001600160a01b0384168152602081018390527fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b056910160405180910390a15050565b6001600160a01b0381166000908152600260205260409020546103fd5760405162461bcd60e51b81526004016102fe90610a52565b60006104098383610560565b9050806104285760405162461bcd60e51b81526004016102fe90610a98565b6001600160a01b0380841660009081526006602090815260408083209386168352929052908120805483929061045f908490610af9565b90915550506001600160a01b0383166000908152600560205260408120805483929061048c908490610af9565b9091555061049d9050838383610758565b604080516001600160a01b038481168252602082018490528516917f3be5b7a71e84ed12875d241991c70855ac5817d847039e17a9d895c1ceb0f18a910160405180910390a2505050565b6000600482815481106104fd576104fd610b11565b6000918252602090912001546001600160a01b031692915050565b60008061052460015490565b61052e9047610af9565b90506105598382610554866001600160a01b031660009081526003602052604090205490565b6107aa565b9392505050565b6001600160a01b03821660009081526005602052604081205481906040516370a0823160e01b81523060048201526001600160a01b038616906370a082319060240160206040518083038186803b1580156105ba57600080fd5b505afa1580156105ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f29190610b27565b6105fc9190610af9565b6001600160a01b0380861660009081526006602090815260408083209388168352929052205490915061063290849083906107aa565b949350505050565b8047101561068a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016102fe565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146106d7576040519150601f19603f3d011682016040523d82523d6000602084013e6106dc565b606091505b50509050806107535760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016102fe565b505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526107539084906107e5565b600080546001600160a01b0385168252600260205260408220548391906107d19086610b40565b6107db9190610b5f565b6106329190610b81565b600061083a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166108b79092919063ffffffff16565b80519091501561075357808060200190518101906108589190610b98565b6107535760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102fe565b60606106328484600085856001600160a01b0385163b6109195760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102fe565b600080866001600160a01b031685876040516109359190610bea565b60006040518083038185875af1925050503d8060008114610972576040519150601f19603f3d011682016040523d82523d6000602084013e610977565b606091505b5091509150610987828286610992565b979650505050505050565b606083156109a1575081610559565b8251156109b15782518084602001fd5b8160405162461bcd60e51b81526004016102fe9190610c06565b6001600160a01b03811681146109e057600080fd5b50565b6000602082840312156109f557600080fd5b8135610559816109cb565b60008060408385031215610a1357600080fd5b8235610a1e816109cb565b91506020830135610a2e816109cb565b809150509250929050565b600060208284031215610a4b57600080fd5b5035919050565b60208082526026908201527f5061796d656e7453706c69747465723a206163636f756e7420686173206e6f2060408201526573686172657360d01b606082015260800190565b6020808252602b908201527f5061796d656e7453706c69747465723a206163636f756e74206973206e6f742060408201526a191d59481c185e5b595b9d60aa1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115610b0c57610b0c610ae3565b500190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610b3957600080fd5b5051919050565b6000816000190483118215151615610b5a57610b5a610ae3565b500290565b600082610b7c57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015610b9357610b93610ae3565b500390565b600060208284031215610baa57600080fd5b8151801515811461055957600080fd5b60005b83811015610bd5578181015183820152602001610bbd565b83811115610be4576000848401525b50505050565b60008251610bfc818460208701610bba565b9190910192915050565b6020815260008251806020840152610c25816040850160208701610bba565b601f01601f1916919091016040019291505056fea2646970667358221220cf59afca0f8e649fbe17743ba4f9050bac27a9e528709aca4fc303dd4caafd6164736f6c63430008090033","deployedBytecode":"0x6080604052600436106100a05760003560e01c80639852595c116100645780639852595c146101d2578063a3f8eace14610208578063c45ac05014610228578063ce7c2ac214610248578063d79779b21461027e578063e33b7de3146102b457600080fd5b806319165587146100ee5780633a98ef3914610110578063406072a91461013457806348b750441461017a5780638b83209b1461019a57600080fd5b366100e9577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be77033604080516001600160a01b0390921682523460208301520160405180910390a1005b600080fd5b3480156100fa57600080fd5b5061010e6101093660046109e3565b6102c9565b005b34801561011c57600080fd5b506000545b6040519081526020015b60405180910390f35b34801561014057600080fd5b5061012161014f366004610a00565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561018657600080fd5b5061010e610195366004610a00565b6103c8565b3480156101a657600080fd5b506101ba6101b5366004610a39565b6104e8565b6040516001600160a01b03909116815260200161012b565b3480156101de57600080fd5b506101216101ed3660046109e3565b6001600160a01b031660009081526003602052604090205490565b34801561021457600080fd5b506101216102233660046109e3565b610518565b34801561023457600080fd5b50610121610243366004610a00565b610560565b34801561025457600080fd5b506101216102633660046109e3565b6001600160a01b031660009081526002602052604090205490565b34801561028a57600080fd5b506101216102993660046109e3565b6001600160a01b031660009081526005602052604090205490565b3480156102c057600080fd5b50600154610121565b6001600160a01b0381166000908152600260205260409020546103075760405162461bcd60e51b81526004016102fe90610a52565b60405180910390fd5b600061031282610518565b9050806103315760405162461bcd60e51b81526004016102fe90610a98565b6001600160a01b03821660009081526003602052604081208054839290610359908490610af9565b9250508190555080600160008282546103729190610af9565b909155506103829050828261063a565b604080516001600160a01b0384168152602081018390527fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b056910160405180910390a15050565b6001600160a01b0381166000908152600260205260409020546103fd5760405162461bcd60e51b81526004016102fe90610a52565b60006104098383610560565b9050806104285760405162461bcd60e51b81526004016102fe90610a98565b6001600160a01b0380841660009081526006602090815260408083209386168352929052908120805483929061045f908490610af9565b90915550506001600160a01b0383166000908152600560205260408120805483929061048c908490610af9565b9091555061049d9050838383610758565b604080516001600160a01b038481168252602082018490528516917f3be5b7a71e84ed12875d241991c70855ac5817d847039e17a9d895c1ceb0f18a910160405180910390a2505050565b6000600482815481106104fd576104fd610b11565b6000918252602090912001546001600160a01b031692915050565b60008061052460015490565b61052e9047610af9565b90506105598382610554866001600160a01b031660009081526003602052604090205490565b6107aa565b9392505050565b6001600160a01b03821660009081526005602052604081205481906040516370a0823160e01b81523060048201526001600160a01b038616906370a082319060240160206040518083038186803b1580156105ba57600080fd5b505afa1580156105ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f29190610b27565b6105fc9190610af9565b6001600160a01b0380861660009081526006602090815260408083209388168352929052205490915061063290849083906107aa565b949350505050565b8047101561068a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016102fe565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146106d7576040519150601f19603f3d011682016040523d82523d6000602084013e6106dc565b606091505b50509050806107535760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016102fe565b505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526107539084906107e5565b600080546001600160a01b0385168252600260205260408220548391906107d19086610b40565b6107db9190610b5f565b6106329190610b81565b600061083a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166108b79092919063ffffffff16565b80519091501561075357808060200190518101906108589190610b98565b6107535760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102fe565b60606106328484600085856001600160a01b0385163b6109195760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102fe565b600080866001600160a01b031685876040516109359190610bea565b60006040518083038185875af1925050503d8060008114610972576040519150601f19603f3d011682016040523d82523d6000602084013e610977565b606091505b5091509150610987828286610992565b979650505050505050565b606083156109a1575081610559565b8251156109b15782518084602001fd5b8160405162461bcd60e51b81526004016102fe9190610c06565b6001600160a01b03811681146109e057600080fd5b50565b6000602082840312156109f557600080fd5b8135610559816109cb565b60008060408385031215610a1357600080fd5b8235610a1e816109cb565b91506020830135610a2e816109cb565b809150509250929050565b600060208284031215610a4b57600080fd5b5035919050565b60208082526026908201527f5061796d656e7453706c69747465723a206163636f756e7420686173206e6f2060408201526573686172657360d01b606082015260800190565b6020808252602b908201527f5061796d656e7453706c69747465723a206163636f756e74206973206e6f742060408201526a191d59481c185e5b595b9d60aa1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115610b0c57610b0c610ae3565b500190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610b3957600080fd5b5051919050565b6000816000190483118215151615610b5a57610b5a610ae3565b500290565b600082610b7c57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015610b9357610b93610ae3565b500390565b600060208284031215610baa57600080fd5b8151801515811461055957600080fd5b60005b83811015610bd5578181015183820152602001610bbd565b83811115610be4576000848401525b50505050565b60008251610bfc818460208701610bba565b9190910192915050565b6020815260008251806020840152610c25816040850160208701610bba565b601f01601f1916919091016040019291505056fea2646970667358221220cf59afca0f8e649fbe17743ba4f9050bac27a9e528709aca4fc303dd4caafd6164736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/finance/VestingWallet":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"VestingWallet","sourceName":"contracts/finance/VestingWallet.sol","abi":[{"inputs":[{"internalType":"address","name":"beneficiaryAddress","type":"address"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"},{"internalType":"uint64","name":"durationSeconds","type":"uint64"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ERC20Released","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EtherReleased","type":"event"},{"inputs":[],"name":"beneficiary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"duration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"start","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"timestamp","type":"uint64"}],"name":"vestedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint64","name":"timestamp","type":"uint64"}],"name":"vestedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x60e060405234801561001057600080fd5b50604051610c80380380610c8083398101604081905261002f916100dd565b6001600160a01b03831661009c5760405162461bcd60e51b815260206004820152602a60248201527f56657374696e6757616c6c65743a2062656e6566696369617279206973207a65604482015269726f206164647265737360b01b606482015260840160405180910390fd5b6001600160a01b039092166080526001600160401b0390811660a0521660c05261012e565b80516001600160401b03811681146100d857600080fd5b919050565b6000806000606084860312156100f257600080fd5b83516001600160a01b038116811461010957600080fd5b9250610117602085016100c1565b9150610125604085016100c1565b90509250925092565b60805160a05160c051610b086101786000396000818160d80152818161047801526104cd01526000610430015260008181610142015281816102c801526103fd0152610b086000f3fe60806040526004361061008a5760003560e01c8063810ec23b11610059578063810ec23b1461016c57806386d1a69f1461018c57806396132521146101a15780639852595c146101b6578063be9a6555146101ec57600080fd5b80630a17b06b146100965780630fb5a6b4146100c9578063191655871461010657806338af3eed1461012857600080fd5b3661009157005b600080fd5b3480156100a257600080fd5b506100b66100b1366004610912565b610201565b6040519081526020015b60405180910390f35b3480156100d557600080fd5b507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166100b6565b34801561011257600080fd5b50610126610121366004610944565b610225565b005b34801561013457600080fd5b506040516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681526020016100c0565b34801561017857600080fd5b506100b661018736600461095f565b6102f1565b34801561019857600080fd5b50610126610396565b3480156101ad57600080fd5b506000546100b6565b3480156101c257600080fd5b506100b66101d1366004610944565b6001600160a01b031660009081526001602052604090205490565b3480156101f857600080fd5b506100b6610425565b600061021f61020f60005490565b61021990476109a8565b83610453565b92915050565b6001600160a01b03811660009081526001602052604081205461024883426102f1565b61025291906109c0565b6001600160a01b03831660009081526001602052604081208054929350839290919061027f9084906109a8565b90915550506040518181526001600160a01b038316907fc0e523490dd523c33b1878c9eb14ff46991e3f5b2cd33710918618f2a39cba1b9060200160405180910390a26102ed827f00000000000000000000000000000000000000000000000000000000000000008361052d565b5050565b6001600160a01b03821660009081526001602052604081205461038f906040516370a0823160e01b81523060048201526001600160a01b038616906370a082319060240160206040518083038186803b15801561034d57600080fd5b505afa158015610361573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038591906109d7565b61021991906109a8565b9392505050565b600080546103a342610201565b6103ad91906109c0565b9050806000808282546103c091906109a8565b90915550506040518181527fda9d4e5f101b8b9b1c5b76d0c5a9f7923571acfc02376aa076b75a8c080c956b9060200160405180910390a16104227f000000000000000000000000000000000000000000000000000000000000000082610584565b50565b67ffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690565b600061045d610425565b8267ffffffffffffffff1610156104765750600061021f565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166104a9610425565b6104b391906109a8565b8267ffffffffffffffff1611156104cb57508161021f565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166104fe610425565b6105129067ffffffffffffffff85166109c0565b61051c90856109f0565b6105269190610a0f565b905061021f565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261057f9084906106a2565b505050565b804710156105d95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064015b60405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610626576040519150601f19603f3d011682016040523d82523d6000602084013e61062b565b606091505b505090508061057f5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016105d0565b60006106f7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166107749092919063ffffffff16565b80519091501561057f57808060200190518101906107159190610a31565b61057f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105d0565b6060610783848460008561078b565b949350505050565b6060824710156107ec5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105d0565b6001600160a01b0385163b6108435760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105d0565b600080866001600160a01b0316858760405161085f9190610a83565b60006040518083038185875af1925050503d806000811461089c576040519150601f19603f3d011682016040523d82523d6000602084013e6108a1565b606091505b50915091506108b18282866108bc565b979650505050505050565b606083156108cb57508161038f565b8251156108db5782518084602001fd5b8160405162461bcd60e51b81526004016105d09190610a9f565b803567ffffffffffffffff8116811461090d57600080fd5b919050565b60006020828403121561092457600080fd5b61038f826108f5565b80356001600160a01b038116811461090d57600080fd5b60006020828403121561095657600080fd5b61038f8261092d565b6000806040838503121561097257600080fd5b61097b8361092d565b9150610989602084016108f5565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600082198211156109bb576109bb610992565b500190565b6000828210156109d2576109d2610992565b500390565b6000602082840312156109e957600080fd5b5051919050565b6000816000190483118215151615610a0a57610a0a610992565b500290565b600082610a2c57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215610a4357600080fd5b8151801515811461038f57600080fd5b60005b83811015610a6e578181015183820152602001610a56565b83811115610a7d576000848401525b50505050565b60008251610a95818460208701610a53565b9190910192915050565b6020815260008251806020840152610abe816040850160208701610a53565b601f01601f1916919091016040019291505056fea26469706673582212207e34db421ed46cfdfe338874d49b916829ef192db0d987f18967ebdc0494b3c964736f6c63430008090033","deployedBytecode":"0x60806040526004361061008a5760003560e01c8063810ec23b11610059578063810ec23b1461016c57806386d1a69f1461018c57806396132521146101a15780639852595c146101b6578063be9a6555146101ec57600080fd5b80630a17b06b146100965780630fb5a6b4146100c9578063191655871461010657806338af3eed1461012857600080fd5b3661009157005b600080fd5b3480156100a257600080fd5b506100b66100b1366004610912565b610201565b6040519081526020015b60405180910390f35b3480156100d557600080fd5b507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166100b6565b34801561011257600080fd5b50610126610121366004610944565b610225565b005b34801561013457600080fd5b506040516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681526020016100c0565b34801561017857600080fd5b506100b661018736600461095f565b6102f1565b34801561019857600080fd5b50610126610396565b3480156101ad57600080fd5b506000546100b6565b3480156101c257600080fd5b506100b66101d1366004610944565b6001600160a01b031660009081526001602052604090205490565b3480156101f857600080fd5b506100b6610425565b600061021f61020f60005490565b61021990476109a8565b83610453565b92915050565b6001600160a01b03811660009081526001602052604081205461024883426102f1565b61025291906109c0565b6001600160a01b03831660009081526001602052604081208054929350839290919061027f9084906109a8565b90915550506040518181526001600160a01b038316907fc0e523490dd523c33b1878c9eb14ff46991e3f5b2cd33710918618f2a39cba1b9060200160405180910390a26102ed827f00000000000000000000000000000000000000000000000000000000000000008361052d565b5050565b6001600160a01b03821660009081526001602052604081205461038f906040516370a0823160e01b81523060048201526001600160a01b038616906370a082319060240160206040518083038186803b15801561034d57600080fd5b505afa158015610361573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038591906109d7565b61021991906109a8565b9392505050565b600080546103a342610201565b6103ad91906109c0565b9050806000808282546103c091906109a8565b90915550506040518181527fda9d4e5f101b8b9b1c5b76d0c5a9f7923571acfc02376aa076b75a8c080c956b9060200160405180910390a16104227f000000000000000000000000000000000000000000000000000000000000000082610584565b50565b67ffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690565b600061045d610425565b8267ffffffffffffffff1610156104765750600061021f565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166104a9610425565b6104b391906109a8565b8267ffffffffffffffff1611156104cb57508161021f565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166104fe610425565b6105129067ffffffffffffffff85166109c0565b61051c90856109f0565b6105269190610a0f565b905061021f565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261057f9084906106a2565b505050565b804710156105d95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064015b60405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610626576040519150601f19603f3d011682016040523d82523d6000602084013e61062b565b606091505b505090508061057f5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016105d0565b60006106f7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166107749092919063ffffffff16565b80519091501561057f57808060200190518101906107159190610a31565b61057f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105d0565b6060610783848460008561078b565b949350505050565b6060824710156107ec5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105d0565b6001600160a01b0385163b6108435760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105d0565b600080866001600160a01b0316858760405161085f9190610a83565b60006040518083038185875af1925050503d806000811461089c576040519150601f19603f3d011682016040523d82523d6000602084013e6108a1565b606091505b50915091506108b18282866108bc565b979650505050505050565b606083156108cb57508161038f565b8251156108db5782518084602001fd5b8160405162461bcd60e51b81526004016105d09190610a9f565b803567ffffffffffffffff8116811461090d57600080fd5b919050565b60006020828403121561092457600080fd5b61038f826108f5565b80356001600160a01b038116811461090d57600080fd5b60006020828403121561095657600080fd5b61038f8261092d565b6000806040838503121561097257600080fd5b61097b8361092d565b9150610989602084016108f5565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600082198211156109bb576109bb610992565b500190565b6000828210156109d2576109d2610992565b500390565b6000602082840312156109e957600080fd5b5051919050565b6000816000190483118215151615610a0a57610a0a610992565b500290565b600082610a2c57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215610a4357600080fd5b8151801515811461038f57600080fd5b60005b83811015610a6e578181015183820152602001610a56565b83811115610a7d576000848401525b50505050565b60008251610a95818460208701610a53565b9190910192915050565b6020815260008251806020840152610abe816040850160208701610a53565b601f01601f1916919091016040019291505056fea26469706673582212207e34db421ed46cfdfe338874d49b916829ef192db0d987f18967ebdc0494b3c964736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/compatibility/GovernorCompatibilityBravo":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorCompatibilityBravo","sourceName":"contracts/governance/compatibility/GovernorCompatibilityBravo.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ProposalQueued","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"getActions","outputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"voter","type":"address"}],"name":"getReceipt","outputs":[{"components":[{"internalType":"bool","name":"hasVoted","type":"bool"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint96","name":"votes","type":"uint96"}],"internalType":"struct IGovernorCompatibilityBravo.Receipt","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalEta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint256","name":"eta","type":"uint256"},{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"uint256","name":"endBlock","type":"uint256"},{"internalType":"uint256","name":"forVotes","type":"uint256"},{"internalType":"uint256","name":"againstVotes","type":"uint256"},{"internalType":"uint256","name":"abstainVotes","type":"uint256"},{"internalType":"bool","name":"canceled","type":"bool"},{"internalType":"bool","name":"executed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"queue","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"queue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quorumVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"timelock","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/compatibility/IGovernorCompatibilityBravo":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IGovernorCompatibilityBravo","sourceName":"contracts/governance/compatibility/IGovernorCompatibilityBravo.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"getActions","outputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"voter","type":"address"}],"name":"getReceipt","outputs":[{"components":[{"internalType":"bool","name":"hasVoted","type":"bool"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint96","name":"votes","type":"uint96"}],"internalType":"struct IGovernorCompatibilityBravo.Receipt","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint256","name":"eta","type":"uint256"},{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"uint256","name":"endBlock","type":"uint256"},{"internalType":"uint256","name":"forVotes","type":"uint256"},{"internalType":"uint256","name":"againstVotes","type":"uint256"},{"internalType":"uint256","name":"abstainVotes","type":"uint256"},{"internalType":"bool","name":"canceled","type":"bool"},{"internalType":"bool","name":"executed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"queue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quorumVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorCountingSimple":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorCountingSimple","sourceName":"contracts/governance/extensions/GovernorCountingSimple.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalVotes","outputs":[{"internalType":"uint256","name":"againstVotes","type":"uint256"},{"internalType":"uint256","name":"forVotes","type":"uint256"},{"internalType":"uint256","name":"abstainVotes","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorPreventLateQuorum":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorPreventLateQuorum","sourceName":"contracts/governance/extensions/GovernorPreventLateQuorum.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"oldVoteExtension","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"newVoteExtension","type":"uint64"}],"name":"LateQuorumVoteExtensionSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint64","name":"extendedDeadline","type":"uint64"}],"name":"ProposalExtended","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"lateQuorumVoteExtension","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newVoteExtension","type":"uint64"}],"name":"setLateQuorumVoteExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorProposalThreshold":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorProposalThreshold","sourceName":"contracts/governance/extensions/GovernorProposalThreshold.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorSettings":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorSettings","sourceName":"contracts/governance/extensions/GovernorSettings.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldProposalThreshold","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newProposalThreshold","type":"uint256"}],"name":"ProposalThresholdSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldVotingDelay","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newVotingDelay","type":"uint256"}],"name":"VotingDelaySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldVotingPeriod","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newVotingPeriod","type":"uint256"}],"name":"VotingPeriodSet","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newProposalThreshold","type":"uint256"}],"name":"setProposalThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVotingDelay","type":"uint256"}],"name":"setVotingDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVotingPeriod","type":"uint256"}],"name":"setVotingPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorTimelockCompound":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorTimelockCompound","sourceName":"contracts/governance/extensions/GovernorTimelockCompound.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ProposalQueued","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldTimelock","type":"address"},{"indexed":false,"internalType":"address","name":"newTimelock","type":"address"}],"name":"TimelockChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"__acceptAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalEta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"queue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"timelock","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ICompoundTimelock","name":"newTimelock","type":"address"}],"name":"updateTimelock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorTimelockControl":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorTimelockControl","sourceName":"contracts/governance/extensions/GovernorTimelockControl.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ProposalQueued","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldTimelock","type":"address"},{"indexed":false,"internalType":"address","name":"newTimelock","type":"address"}],"name":"TimelockChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalEta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"queue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"timelock","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract TimelockController","name":"newTimelock","type":"address"}],"name":"updateTimelock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorVotes":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorVotes","sourceName":"contracts/governance/extensions/GovernorVotes.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"token","outputs":[{"internalType":"contract IVotes","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorVotesComp":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorVotesComp","sourceName":"contracts/governance/extensions/GovernorVotesComp.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"token","outputs":[{"internalType":"contract ERC20VotesComp","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorVotesQuorumFraction":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorVotesQuorumFraction","sourceName":"contracts/governance/extensions/GovernorVotesQuorumFraction.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldQuorumNumerator","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newQuorumNumerator","type":"uint256"}],"name":"QuorumNumeratorUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quorumDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorumNumerator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quorumNumerator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"token","outputs":[{"internalType":"contract IVotes","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newQuorumNumerator","type":"uint256"}],"name":"updateQuorumNumerator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/IGovernorTimelock":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IGovernorTimelock","sourceName":"contracts/governance/extensions/IGovernorTimelock.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ProposalQueued","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalEta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"queue","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"timelock","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/Governor":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Governor","sourceName":"contracts/governance/Governor.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/IGovernor":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IGovernor","sourceName":"contracts/governance/IGovernor.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/TimelockController":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"TimelockController","sourceName":"contracts/governance/TimelockController.sol","abi":[{"inputs":[{"internalType":"uint256","name":"minDelay","type":"uint256"},{"internalType":"address[]","name":"proposers","type":"address[]"},{"internalType":"address[]","name":"executors","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"CallExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"delay","type":"uint256"}],"name":"CallScheduled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"Cancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldDuration","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newDuration","type":"uint256"}],"name":"MinDelayChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"CANCELLER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EXECUTOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROPOSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TIMELOCK_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"payloads","type":"bytes[]"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"executeBatch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getMinDelay","outputs":[{"internalType":"uint256","name":"duration","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"getTimestamp","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"hashOperation","outputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"payloads","type":"bytes[]"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"hashOperationBatch","outputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"isOperation","outputs":[{"internalType":"bool","name":"registered","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"isOperationDone","outputs":[{"internalType":"bool","name":"done","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"isOperationPending","outputs":[{"internalType":"bool","name":"pending","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"isOperationReady","outputs":[{"internalType":"bool","name":"ready","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"delay","type":"uint256"}],"name":"schedule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"payloads","type":"bytes[]"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"delay","type":"uint256"}],"name":"scheduleBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newDelay","type":"uint256"}],"name":"updateDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x60806040523480156200001157600080fd5b50604051620022fb380380620022fb8339810160408190526200003491620003f7565b6200004f6000805160206200227b833981519152806200021c565b620000796000805160206200229b8339815191526000805160206200227b8339815191526200021c565b620000a3600080516020620022bb8339815191526000805160206200227b8339815191526200021c565b620000cd600080516020620022db8339815191526000805160206200227b8339815191526200021c565b620000e86000805160206200227b8339815191523362000267565b620001036000805160206200227b8339815191523062000267565b60005b825181101562000189576200014d6000805160206200229b8339815191528483815181106200013957620001396200046b565b60200260200101516200026760201b60201c565b62000176600080516020620022db8339815191528483815181106200013957620001396200046b565b620001818162000481565b905062000106565b5060005b8151811015620001d357620001c0600080516020620022bb8339815191528383815181106200013957620001396200046b565b620001cb8162000481565b90506200018d565b5060028390556040805160008152602081018590527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1505050620004ab565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b62000273828262000277565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000273576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620002d33390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200034557600080fd5b919050565b600082601f8301126200035c57600080fd5b815160206001600160401b03808311156200037b576200037b62000317565b8260051b604051601f19603f83011681018181108482111715620003a357620003a362000317565b604052938452858101830193838101925087851115620003c257600080fd5b83870191505b84821015620003ec57620003dc826200032d565b83529183019190830190620003c8565b979650505050505050565b6000806000606084860312156200040d57600080fd5b835160208501519093506001600160401b03808211156200042d57600080fd5b6200043b878388016200034a565b935060408601519150808211156200045257600080fd5b5062000461868287016200034a565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b6000600019821415620004a457634e487b7160e01b600052601160045260246000fd5b5060010190565b611dc080620004bb6000396000f3fe6080604052600436106101bb5760003560e01c80638065657f116100ec578063bc197c811161008a578063d547741f11610064578063d547741f14610582578063e38335e5146105a2578063f23a6e61146105b5578063f27a0c92146105e157600080fd5b8063bc197c8114610509578063c4d252f514610535578063d45c44351461055557600080fd5b806391d14854116100c657806391d1485414610480578063a217fddf146104a0578063b08e51c0146104b5578063b1c5f427146104e957600080fd5b80638065657f1461040c5780638f2a0bb01461042c5780638f61f4f51461044c57600080fd5b8063248a9ca31161015957806331d507501161013357806331d507501461038c57806336568abe146103ac578063584b153e146103cc57806364d62353146103ec57600080fd5b8063248a9ca31461030b5780632ab0f5291461033b5780632f2ff15d1461036c57600080fd5b80630d3cf6fc116101955780630d3cf6fc14610260578063134008d31461029457806313bc9f20146102a7578063150b7a02146102c757600080fd5b806301d5062a146101c757806301ffc9a7146101e957806307bd02651461021e57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101e76101e23660046113b9565b6105f6565b005b3480156101f557600080fd5b5061020961020436600461142d565b61068b565b60405190151581526020015b60405180910390f35b34801561022a57600080fd5b506102527fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610215565b34801561026c57600080fd5b506102527f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b6101e76102a2366004611457565b6106b6565b3480156102b357600080fd5b506102096102c23660046114c2565b61076b565b3480156102d357600080fd5b506102f26102e2366004611590565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610215565b34801561031757600080fd5b506102526103263660046114c2565b60009081526020819052604090206001015490565b34801561034757600080fd5b506102096103563660046114c2565b6000908152600160208190526040909120541490565b34801561037857600080fd5b506101e76103873660046115f7565b610791565b34801561039857600080fd5b506102096103a73660046114c2565b6107bb565b3480156103b857600080fd5b506101e76103c73660046115f7565b6107d4565b3480156103d857600080fd5b506102096103e73660046114c2565b610857565b3480156103f857600080fd5b506101e76104073660046114c2565b61086d565b34801561041857600080fd5b50610252610427366004611457565b610911565b34801561043857600080fd5b506101e7610447366004611667565b610950565b34801561045857600080fd5b506102527fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b34801561048c57600080fd5b5061020961049b3660046115f7565b610aa2565b3480156104ac57600080fd5b50610252600081565b3480156104c157600080fd5b506102527ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104f557600080fd5b50610252610504366004611718565b610acb565b34801561051557600080fd5b506102f261052436600461183f565b63bc197c8160e01b95945050505050565b34801561054157600080fd5b506101e76105503660046114c2565b610b10565b34801561056157600080fd5b506102526105703660046114c2565b60009081526001602052604090205490565b34801561058e57600080fd5b506101e761059d3660046115f7565b610be5565b6101e76105b0366004611718565b610c0a565b3480156105c157600080fd5b506102f26105d03660046118e8565b63f23a6e6160e01b95945050505050565b3480156105ed57600080fd5b50600254610252565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161062081610d94565b6000610630898989898989610911565b905061063c8184610da1565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a60405161067896959493929190611975565b60405180910390a3505050505050505050565b60006001600160e01b03198216630271189760e51b14806106b057506106b082610e90565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636106e2816000610aa2565b6106f0576106f08133610ec5565b6000610700888888888888610911565b905061070c8185610f29565b61071888888888610fc5565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161075094939291906119b2565b60405180910390a361076181611098565b5050505050505050565b60008181526001602052604081205460018111801561078a5750428111155b9392505050565b6000828152602081905260409020600101546107ac81610d94565b6107b683836110d1565b505050565b60008181526001602052604081205481905b1192915050565b6001600160a01b03811633146108495760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6108538282611155565b5050565b60008181526001602081905260408220546107cd565b3330146108d05760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b6064820152608401610840565b60025460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1600255565b600086868686868660405160200161092e96959493929190611975565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161097a81610d94565b8887146109995760405162461bcd60e51b8152600401610840906119e4565b8885146109b85760405162461bcd60e51b8152600401610840906119e4565b60006109ca8b8b8b8b8b8b8b8b610acb565b90506109d68184610da1565b60005b8a811015610a945780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a1657610a16611a27565b9050602002016020810190610a2b9190611a3d565b8d8d86818110610a3d57610a3d611a27565b905060200201358c8c87818110610a5657610a56611a27565b9050602002810190610a689190611a58565b8c8b604051610a7c96959493929190611975565b60405180910390a3610a8d81611ab4565b90506109d9565b505050505050505050505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60008888888888888888604051602001610aec989796959493929190611b5f565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610b3a81610d94565b610b4382610857565b610ba95760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b6064820152608401610840565b6000828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260208190526040902060010154610c0081610d94565b6107b68383611155565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610c36816000610aa2565b610c4457610c448133610ec5565b878614610c635760405162461bcd60e51b8152600401610840906119e4565b878414610c825760405162461bcd60e51b8152600401610840906119e4565b6000610c948a8a8a8a8a8a8a8a610acb565b9050610ca08185610f29565b60005b89811015610d7e5760008b8b83818110610cbf57610cbf611a27565b9050602002016020810190610cd49190611a3d565b905060008a8a84818110610cea57610cea611a27565b9050602002013590503660008a8a86818110610d0857610d08611a27565b9050602002810190610d1a9190611a58565b91509150610d2a84848484610fc5565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610d6194939291906119b2565b60405180910390a35050505080610d7790611ab4565b9050610ca3565b50610d8881611098565b50505050505050505050565b610d9e8133610ec5565b50565b610daa826107bb565b15610e0f5760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b6064820152608401610840565b600254811015610e705760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b6064820152608401610840565b610e7a8142611c0a565b6000928352600160205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b14806106b057506301ffc9a760e01b6001600160e01b03198316146106b0565b610ecf8282610aa2565b61085357610ee7816001600160a01b031660146111ba565b610ef28360206111ba565b604051602001610f03929190611c52565b60408051601f198184030181529082905262461bcd60e51b825261084091600401611cc7565b610f328261076b565b610f4e5760405162461bcd60e51b815260040161084090611cfa565b801580610f6a5750600081815260016020819052604090912054145b6108535760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b6064820152608401610840565b6000846001600160a01b0316848484604051610fe2929190611d44565b60006040518083038185875af1925050503d806000811461101f576040519150601f19603f3d011682016040523d82523d6000602084013e611024565b606091505b50509050806110915760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b6064820152608401610840565b5050505050565b6110a18161076b565b6110bd5760405162461bcd60e51b815260040161084090611cfa565b600090815260016020819052604090912055565b6110db8282610aa2565b610853576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556111113390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61115f8282610aa2565b15610853576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b606060006111c9836002611d54565b6111d4906002611c0a565b6001600160401b038111156111eb576111eb6114db565b6040519080825280601f01601f191660200182016040528015611215576020820181803683370190505b509050600360fc1b8160008151811061123057611230611a27565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061125f5761125f611a27565b60200101906001600160f81b031916908160001a9053506000611283846002611d54565b61128e906001611c0a565b90505b6001811115611306576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106112c2576112c2611a27565b1a60f81b8282815181106112d8576112d8611a27565b60200101906001600160f81b031916908160001a90535060049490941c936112ff81611d73565b9050611291565b50831561078a5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610840565b80356001600160a01b038116811461136c57600080fd5b919050565b60008083601f84011261138357600080fd5b5081356001600160401b0381111561139a57600080fd5b6020830191508360208285010111156113b257600080fd5b9250929050565b600080600080600080600060c0888a0312156113d457600080fd5b6113dd88611355565b96506020880135955060408801356001600160401b038111156113ff57600080fd5b61140b8a828b01611371565b989b979a50986060810135976080820135975060a09091013595509350505050565b60006020828403121561143f57600080fd5b81356001600160e01b03198116811461078a57600080fd5b60008060008060008060a0878903121561147057600080fd5b61147987611355565b95506020870135945060408701356001600160401b0381111561149b57600080fd5b6114a789828a01611371565b979a9699509760608101359660809091013595509350505050565b6000602082840312156114d457600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611519576115196114db565b604052919050565b600082601f83011261153257600080fd5b81356001600160401b0381111561154b5761154b6114db565b61155e601f8201601f19166020016114f1565b81815284602083860101111561157357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156115a657600080fd5b6115af85611355565b93506115bd60208601611355565b92506040850135915060608501356001600160401b038111156115df57600080fd5b6115eb87828801611521565b91505092959194509250565b6000806040838503121561160a57600080fd5b8235915061161a60208401611355565b90509250929050565b60008083601f84011261163557600080fd5b5081356001600160401b0381111561164c57600080fd5b6020830191508360208260051b85010111156113b257600080fd5b600080600080600080600080600060c08a8c03121561168557600080fd5b89356001600160401b038082111561169c57600080fd5b6116a88d838e01611623565b909b50995060208c01359150808211156116c157600080fd5b6116cd8d838e01611623565b909950975060408c01359150808211156116e657600080fd5b506116f38c828d01611623565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060008060008060a0898b03121561173457600080fd5b88356001600160401b038082111561174b57600080fd5b6117578c838d01611623565b909a50985060208b013591508082111561177057600080fd5b61177c8c838d01611623565b909850965060408b013591508082111561179557600080fd5b506117a28b828c01611623565b999c989b509699959896976060870135966080013595509350505050565b600082601f8301126117d157600080fd5b813560206001600160401b038211156117ec576117ec6114db565b8160051b6117fb8282016114f1565b928352848101820192828101908785111561181557600080fd5b83870192505b848310156118345782358252918301919083019061181b565b979650505050505050565b600080600080600060a0868803121561185757600080fd5b61186086611355565b945061186e60208701611355565b935060408601356001600160401b038082111561188a57600080fd5b61189689838a016117c0565b945060608801359150808211156118ac57600080fd5b6118b889838a016117c0565b935060808801359150808211156118ce57600080fd5b506118db88828901611521565b9150509295509295909350565b600080600080600060a0868803121561190057600080fd5b61190986611355565b945061191760208701611355565b9350604086013592506060860135915060808601356001600160401b0381111561194057600080fd5b6118db88828901611521565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a06040820152600061199d60a08301868861194c565b60608301949094525060800152949350505050565b60018060a01b03851681528360208201526060604082015260006119da60608301848661194c565b9695505050505050565b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a4f57600080fd5b61078a82611355565b6000808335601e19843603018112611a6f57600080fd5b8301803591506001600160401b03821115611a8957600080fd5b6020019150368190038213156113b257600080fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611ac857611ac8611a9e565b5060010190565b81835260006020808501808196508560051b810191508460005b87811015611b525782840389528135601e19883603018112611b0a57600080fd5b870180356001600160401b03811115611b2257600080fd5b803603891315611b3157600080fd5b611b3e868289850161194c565b9a87019a9550505090840190600101611ae9565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b811015611ba0576001600160a01b03611b8b84611355565b16825260209283019290910190600101611b72565b5083810360208501528881526001600160fb1b03891115611bc057600080fd5b8860051b9150818a602083013781810191505060208101600081526020848303016040850152611bf181888a611acf565b6060850196909652505050608001529695505050505050565b60008219821115611c1d57611c1d611a9e565b500190565b60005b83811015611c3d578181015183820152602001611c25565b83811115611c4c576000848401525b50505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611c8a816017850160208801611c22565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611cbb816028840160208801611c22565b01602801949350505050565b6020815260008251806020840152611ce6816040850160208701611c22565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b6000816000190483118215151615611d6e57611d6e611a9e565b500290565b600081611d8257611d82611a9e565b50600019019056fea264697066735822122023b625a84dcb4b4c5ff2a17e50ba1c1d3d259599aad6471dfd37918d4800174364736f6c634300080900335f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5b09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63fd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783","deployedBytecode":"0x6080604052600436106101bb5760003560e01c80638065657f116100ec578063bc197c811161008a578063d547741f11610064578063d547741f14610582578063e38335e5146105a2578063f23a6e61146105b5578063f27a0c92146105e157600080fd5b8063bc197c8114610509578063c4d252f514610535578063d45c44351461055557600080fd5b806391d14854116100c657806391d1485414610480578063a217fddf146104a0578063b08e51c0146104b5578063b1c5f427146104e957600080fd5b80638065657f1461040c5780638f2a0bb01461042c5780638f61f4f51461044c57600080fd5b8063248a9ca31161015957806331d507501161013357806331d507501461038c57806336568abe146103ac578063584b153e146103cc57806364d62353146103ec57600080fd5b8063248a9ca31461030b5780632ab0f5291461033b5780632f2ff15d1461036c57600080fd5b80630d3cf6fc116101955780630d3cf6fc14610260578063134008d31461029457806313bc9f20146102a7578063150b7a02146102c757600080fd5b806301d5062a146101c757806301ffc9a7146101e957806307bd02651461021e57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101e76101e23660046113b9565b6105f6565b005b3480156101f557600080fd5b5061020961020436600461142d565b61068b565b60405190151581526020015b60405180910390f35b34801561022a57600080fd5b506102527fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610215565b34801561026c57600080fd5b506102527f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b6101e76102a2366004611457565b6106b6565b3480156102b357600080fd5b506102096102c23660046114c2565b61076b565b3480156102d357600080fd5b506102f26102e2366004611590565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610215565b34801561031757600080fd5b506102526103263660046114c2565b60009081526020819052604090206001015490565b34801561034757600080fd5b506102096103563660046114c2565b6000908152600160208190526040909120541490565b34801561037857600080fd5b506101e76103873660046115f7565b610791565b34801561039857600080fd5b506102096103a73660046114c2565b6107bb565b3480156103b857600080fd5b506101e76103c73660046115f7565b6107d4565b3480156103d857600080fd5b506102096103e73660046114c2565b610857565b3480156103f857600080fd5b506101e76104073660046114c2565b61086d565b34801561041857600080fd5b50610252610427366004611457565b610911565b34801561043857600080fd5b506101e7610447366004611667565b610950565b34801561045857600080fd5b506102527fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b34801561048c57600080fd5b5061020961049b3660046115f7565b610aa2565b3480156104ac57600080fd5b50610252600081565b3480156104c157600080fd5b506102527ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104f557600080fd5b50610252610504366004611718565b610acb565b34801561051557600080fd5b506102f261052436600461183f565b63bc197c8160e01b95945050505050565b34801561054157600080fd5b506101e76105503660046114c2565b610b10565b34801561056157600080fd5b506102526105703660046114c2565b60009081526001602052604090205490565b34801561058e57600080fd5b506101e761059d3660046115f7565b610be5565b6101e76105b0366004611718565b610c0a565b3480156105c157600080fd5b506102f26105d03660046118e8565b63f23a6e6160e01b95945050505050565b3480156105ed57600080fd5b50600254610252565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161062081610d94565b6000610630898989898989610911565b905061063c8184610da1565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a60405161067896959493929190611975565b60405180910390a3505050505050505050565b60006001600160e01b03198216630271189760e51b14806106b057506106b082610e90565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636106e2816000610aa2565b6106f0576106f08133610ec5565b6000610700888888888888610911565b905061070c8185610f29565b61071888888888610fc5565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161075094939291906119b2565b60405180910390a361076181611098565b5050505050505050565b60008181526001602052604081205460018111801561078a5750428111155b9392505050565b6000828152602081905260409020600101546107ac81610d94565b6107b683836110d1565b505050565b60008181526001602052604081205481905b1192915050565b6001600160a01b03811633146108495760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6108538282611155565b5050565b60008181526001602081905260408220546107cd565b3330146108d05760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b6064820152608401610840565b60025460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1600255565b600086868686868660405160200161092e96959493929190611975565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161097a81610d94565b8887146109995760405162461bcd60e51b8152600401610840906119e4565b8885146109b85760405162461bcd60e51b8152600401610840906119e4565b60006109ca8b8b8b8b8b8b8b8b610acb565b90506109d68184610da1565b60005b8a811015610a945780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a1657610a16611a27565b9050602002016020810190610a2b9190611a3d565b8d8d86818110610a3d57610a3d611a27565b905060200201358c8c87818110610a5657610a56611a27565b9050602002810190610a689190611a58565b8c8b604051610a7c96959493929190611975565b60405180910390a3610a8d81611ab4565b90506109d9565b505050505050505050505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60008888888888888888604051602001610aec989796959493929190611b5f565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610b3a81610d94565b610b4382610857565b610ba95760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b6064820152608401610840565b6000828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260208190526040902060010154610c0081610d94565b6107b68383611155565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610c36816000610aa2565b610c4457610c448133610ec5565b878614610c635760405162461bcd60e51b8152600401610840906119e4565b878414610c825760405162461bcd60e51b8152600401610840906119e4565b6000610c948a8a8a8a8a8a8a8a610acb565b9050610ca08185610f29565b60005b89811015610d7e5760008b8b83818110610cbf57610cbf611a27565b9050602002016020810190610cd49190611a3d565b905060008a8a84818110610cea57610cea611a27565b9050602002013590503660008a8a86818110610d0857610d08611a27565b9050602002810190610d1a9190611a58565b91509150610d2a84848484610fc5565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610d6194939291906119b2565b60405180910390a35050505080610d7790611ab4565b9050610ca3565b50610d8881611098565b50505050505050505050565b610d9e8133610ec5565b50565b610daa826107bb565b15610e0f5760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b6064820152608401610840565b600254811015610e705760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b6064820152608401610840565b610e7a8142611c0a565b6000928352600160205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b14806106b057506301ffc9a760e01b6001600160e01b03198316146106b0565b610ecf8282610aa2565b61085357610ee7816001600160a01b031660146111ba565b610ef28360206111ba565b604051602001610f03929190611c52565b60408051601f198184030181529082905262461bcd60e51b825261084091600401611cc7565b610f328261076b565b610f4e5760405162461bcd60e51b815260040161084090611cfa565b801580610f6a5750600081815260016020819052604090912054145b6108535760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b6064820152608401610840565b6000846001600160a01b0316848484604051610fe2929190611d44565b60006040518083038185875af1925050503d806000811461101f576040519150601f19603f3d011682016040523d82523d6000602084013e611024565b606091505b50509050806110915760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b6064820152608401610840565b5050505050565b6110a18161076b565b6110bd5760405162461bcd60e51b815260040161084090611cfa565b600090815260016020819052604090912055565b6110db8282610aa2565b610853576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556111113390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61115f8282610aa2565b15610853576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b606060006111c9836002611d54565b6111d4906002611c0a565b6001600160401b038111156111eb576111eb6114db565b6040519080825280601f01601f191660200182016040528015611215576020820181803683370190505b509050600360fc1b8160008151811061123057611230611a27565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061125f5761125f611a27565b60200101906001600160f81b031916908160001a9053506000611283846002611d54565b61128e906001611c0a565b90505b6001811115611306576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106112c2576112c2611a27565b1a60f81b8282815181106112d8576112d8611a27565b60200101906001600160f81b031916908160001a90535060049490941c936112ff81611d73565b9050611291565b50831561078a5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610840565b80356001600160a01b038116811461136c57600080fd5b919050565b60008083601f84011261138357600080fd5b5081356001600160401b0381111561139a57600080fd5b6020830191508360208285010111156113b257600080fd5b9250929050565b600080600080600080600060c0888a0312156113d457600080fd5b6113dd88611355565b96506020880135955060408801356001600160401b038111156113ff57600080fd5b61140b8a828b01611371565b989b979a50986060810135976080820135975060a09091013595509350505050565b60006020828403121561143f57600080fd5b81356001600160e01b03198116811461078a57600080fd5b60008060008060008060a0878903121561147057600080fd5b61147987611355565b95506020870135945060408701356001600160401b0381111561149b57600080fd5b6114a789828a01611371565b979a9699509760608101359660809091013595509350505050565b6000602082840312156114d457600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611519576115196114db565b604052919050565b600082601f83011261153257600080fd5b81356001600160401b0381111561154b5761154b6114db565b61155e601f8201601f19166020016114f1565b81815284602083860101111561157357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156115a657600080fd5b6115af85611355565b93506115bd60208601611355565b92506040850135915060608501356001600160401b038111156115df57600080fd5b6115eb87828801611521565b91505092959194509250565b6000806040838503121561160a57600080fd5b8235915061161a60208401611355565b90509250929050565b60008083601f84011261163557600080fd5b5081356001600160401b0381111561164c57600080fd5b6020830191508360208260051b85010111156113b257600080fd5b600080600080600080600080600060c08a8c03121561168557600080fd5b89356001600160401b038082111561169c57600080fd5b6116a88d838e01611623565b909b50995060208c01359150808211156116c157600080fd5b6116cd8d838e01611623565b909950975060408c01359150808211156116e657600080fd5b506116f38c828d01611623565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060008060008060a0898b03121561173457600080fd5b88356001600160401b038082111561174b57600080fd5b6117578c838d01611623565b909a50985060208b013591508082111561177057600080fd5b61177c8c838d01611623565b909850965060408b013591508082111561179557600080fd5b506117a28b828c01611623565b999c989b509699959896976060870135966080013595509350505050565b600082601f8301126117d157600080fd5b813560206001600160401b038211156117ec576117ec6114db565b8160051b6117fb8282016114f1565b928352848101820192828101908785111561181557600080fd5b83870192505b848310156118345782358252918301919083019061181b565b979650505050505050565b600080600080600060a0868803121561185757600080fd5b61186086611355565b945061186e60208701611355565b935060408601356001600160401b038082111561188a57600080fd5b61189689838a016117c0565b945060608801359150808211156118ac57600080fd5b6118b889838a016117c0565b935060808801359150808211156118ce57600080fd5b506118db88828901611521565b9150509295509295909350565b600080600080600060a0868803121561190057600080fd5b61190986611355565b945061191760208701611355565b9350604086013592506060860135915060808601356001600160401b0381111561194057600080fd5b6118db88828901611521565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a06040820152600061199d60a08301868861194c565b60608301949094525060800152949350505050565b60018060a01b03851681528360208201526060604082015260006119da60608301848661194c565b9695505050505050565b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a4f57600080fd5b61078a82611355565b6000808335601e19843603018112611a6f57600080fd5b8301803591506001600160401b03821115611a8957600080fd5b6020019150368190038213156113b257600080fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611ac857611ac8611a9e565b5060010190565b81835260006020808501808196508560051b810191508460005b87811015611b525782840389528135601e19883603018112611b0a57600080fd5b870180356001600160401b03811115611b2257600080fd5b803603891315611b3157600080fd5b611b3e868289850161194c565b9a87019a9550505090840190600101611ae9565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b811015611ba0576001600160a01b03611b8b84611355565b16825260209283019290910190600101611b72565b5083810360208501528881526001600160fb1b03891115611bc057600080fd5b8860051b9150818a602083013781810191505060208101600081526020848303016040850152611bf181888a611acf565b6060850196909652505050608001529695505050505050565b60008219821115611c1d57611c1d611a9e565b500190565b60005b83811015611c3d578181015183820152602001611c25565b83811115611c4c576000848401525b50505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611c8a816017850160208801611c22565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611cbb816028840160208801611c22565b01602801949350505050565b6020815260008251806020840152611ce6816040850160208701611c22565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b6000816000190483118215151615611d6e57611d6e611a9e565b500290565b600081611d8257611d82611a9e565b50600019019056fea264697066735822122023b625a84dcb4b4c5ff2a17e50ba1c1d3d259599aad6471dfd37918d4800174364736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/utils/IVotes":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IVotes","sourceName":"contracts/governance/utils/IVotes.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/utils/Votes":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Votes","sourceName":"contracts/governance/utils/Votes.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC1822Proxiable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1822Proxiable","sourceName":"contracts/interfaces/draft-IERC1822.sol","abi":[{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC2612":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC2612","sourceName":"contracts/interfaces/draft-IERC2612.sol","abi":[{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC1271":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1271","sourceName":"contracts/interfaces/IERC1271.sol","abi":[{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"magicValue","type":"bytes4"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC1363":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1363","sourceName":"contracts/interfaces/IERC1363.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transferFromAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFromAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC1363Receiver":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1363Receiver","sourceName":"contracts/interfaces/IERC1363Receiver.sol","abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onTransferReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC1363Spender":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1363Spender","sourceName":"contracts/interfaces/IERC1363Spender.sol","abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onApprovalReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC2981":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC2981","sourceName":"contracts/interfaces/IERC2981.sol","abi":[{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC3156FlashBorrower":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC3156FlashBorrower","sourceName":"contracts/interfaces/IERC3156FlashBorrower.sol","abi":[{"inputs":[{"internalType":"address","name":"initiator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onFlashLoan","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC3156FlashLender":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC3156FlashLender","sourceName":"contracts/interfaces/IERC3156FlashLender.sol","abi":[{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"flashFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"flashLoan","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"maxFlashLoan","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC4626":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC4626","sourceName":"contracts/interfaces/IERC4626.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"assetTokenAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"convertToShares","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"maxAssets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"maxMint","outputs":[{"internalType":"uint256","name":"maxShares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxRedeem","outputs":[{"internalType":"uint256","name":"maxShares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"maxAssets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewDeposit","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewMint","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewRedeem","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"totalManagedAssets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/metatx/ERC2771Context":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC2771Context","sourceName":"contracts/metatx/ERC2771Context.sol","abi":[{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/metatx/MinimalForwarder":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"MinimalForwarder","sourceName":"contracts/metatx/MinimalForwarder.sol","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct MinimalForwarder.ForwardRequest","name":"req","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"execute","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"}],"name":"getNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct MinimalForwarder.ForwardRequest","name":"req","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"verify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x61014060405234801561001157600080fd5b50604080518082018252601081526f26b4b734b6b0b62337b93bb0b93232b960811b602080830191825283518085019094526005845264302e302e3160d81b908401528151902060e08190527fae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc1991638118856101008190524660a0529192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6100fb8184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c052610120525061011092505050565b60805160a05160c05160e0516101005161012051610ae261015f60003960006104ec0152600061053b015260006105160152600061046f01526000610499015260006104c30152610ae26000f3fe6080604052600436106100345760003560e01c80632d0335ab1461003957806347153f8214610082578063bf5d3bdb146100a3575b600080fd5b34801561004557600080fd5b5061006f61005436600461087a565b6001600160a01b031660009081526020819052604090205490565b6040519081526020015b60405180910390f35b6100956100903660046108aa565b6100d3565b604051610079929190610979565b3480156100af57600080fd5b506100c36100be3660046108aa565b61026c565b6040519015158152602001610079565b600060606100e285858561026c565b61014e5760405162461bcd60e51b815260206004820152603260248201527f4d696e696d616c466f727761726465723a207369676e617475726520646f6573604482015271081b9bdd081b585d18da081c995c5d595cdd60721b60648201526084015b60405180910390fd5b61015d608086013560016109b5565b60008061016d602089018961087a565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000808660200160208101906101a7919061087a565b6001600160a01b0316606088013560408901356101c760a08b018b6109db565b6101d460208d018d61087a565b6040516020016101e693929190610a22565b60408051601f198184030181529082905261020091610a48565b600060405180830381858888f193505050503d806000811461023e576040519150601f19603f3d011682016040523d82523d6000602084013e610243565b606091505b509092509050610258603f6060890135610a64565b5a1161026057fe5b90969095509350505050565b60008061037f84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061037992507fdd8f4b70b0f4393e889bd39128a30628a78b61816a9eb8199759e7a349657e4891506102dc905060208a018a61087a565b6102ec60408b0160208c0161087a565b60408b013560608c013560808d013561030860a08f018f6109db565b604051610316929190610a86565b6040805191829003822060208301989098526001600160a01b0396871690820152949093166060850152608084019190915260a083015260c082015260e081019190915261010001604051602081830303815290604052805190602001206103ea565b9061043e565b90506080850135600080610396602089018961087a565b6001600160a01b03166001600160a01b03168152602001908152602001600020541480156103e157506103cc602086018661087a565b6001600160a01b0316816001600160a01b0316145b95945050505050565b60006104386103f7610462565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b92915050565b600080600061044d8585610589565b9150915061045a816105cf565b509392505050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156104bb57507f000000000000000000000000000000000000000000000000000000000000000046145b156104e557507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b6000808251604114156105c05760208301516040840151606085015160001a6105b48782858561078d565b945094505050506105c8565b506000905060025b9250929050565b60008160048111156105e3576105e3610a96565b14156105ec5750565b600181600481111561060057610600610a96565b141561064e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610145565b600281600481111561066257610662610a96565b14156106b05760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610145565b60038160048111156106c4576106c4610a96565b141561071d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610145565b600481600481111561073157610731610a96565b141561078a5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610145565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156107c45750600090506003610871565b8460ff16601b141580156107dc57508460ff16601c14155b156107ed5750600090506004610871565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610841573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661086a57600060019250925050610871565b9150600090505b94509492505050565b60006020828403121561088c57600080fd5b81356001600160a01b03811681146108a357600080fd5b9392505050565b6000806000604084860312156108bf57600080fd5b833567ffffffffffffffff808211156108d757600080fd5b9085019060c082880312156108eb57600080fd5b9093506020850135908082111561090157600080fd5b818601915086601f83011261091557600080fd5b81358181111561092457600080fd5b87602082850101111561093657600080fd5b6020830194508093505050509250925092565b60005b8381101561096457818101518382015260200161094c565b83811115610973576000848401525b50505050565b821515815260406020820152600082518060408401526109a0816060850160208701610949565b601f01601f1916919091016060019392505050565b600082198211156109d657634e487b7160e01b600052601160045260246000fd5b500190565b6000808335601e198436030181126109f257600080fd5b83018035915067ffffffffffffffff821115610a0d57600080fd5b6020019150368190038213156105c857600080fd5b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b60008251610a5a818460208701610949565b9190910192915050565b600082610a8157634e487b7160e01b600052601260045260246000fd5b500490565b8183823760009101908152919050565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220c096d335dd8ff531b965b5440323db8da2634e5b6dabf89bdbc9ecaaef95384164736f6c63430008090033","deployedBytecode":"0x6080604052600436106100345760003560e01c80632d0335ab1461003957806347153f8214610082578063bf5d3bdb146100a3575b600080fd5b34801561004557600080fd5b5061006f61005436600461087a565b6001600160a01b031660009081526020819052604090205490565b6040519081526020015b60405180910390f35b6100956100903660046108aa565b6100d3565b604051610079929190610979565b3480156100af57600080fd5b506100c36100be3660046108aa565b61026c565b6040519015158152602001610079565b600060606100e285858561026c565b61014e5760405162461bcd60e51b815260206004820152603260248201527f4d696e696d616c466f727761726465723a207369676e617475726520646f6573604482015271081b9bdd081b585d18da081c995c5d595cdd60721b60648201526084015b60405180910390fd5b61015d608086013560016109b5565b60008061016d602089018961087a565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000808660200160208101906101a7919061087a565b6001600160a01b0316606088013560408901356101c760a08b018b6109db565b6101d460208d018d61087a565b6040516020016101e693929190610a22565b60408051601f198184030181529082905261020091610a48565b600060405180830381858888f193505050503d806000811461023e576040519150601f19603f3d011682016040523d82523d6000602084013e610243565b606091505b509092509050610258603f6060890135610a64565b5a1161026057fe5b90969095509350505050565b60008061037f84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061037992507fdd8f4b70b0f4393e889bd39128a30628a78b61816a9eb8199759e7a349657e4891506102dc905060208a018a61087a565b6102ec60408b0160208c0161087a565b60408b013560608c013560808d013561030860a08f018f6109db565b604051610316929190610a86565b6040805191829003822060208301989098526001600160a01b0396871690820152949093166060850152608084019190915260a083015260c082015260e081019190915261010001604051602081830303815290604052805190602001206103ea565b9061043e565b90506080850135600080610396602089018961087a565b6001600160a01b03166001600160a01b03168152602001908152602001600020541480156103e157506103cc602086018661087a565b6001600160a01b0316816001600160a01b0316145b95945050505050565b60006104386103f7610462565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b92915050565b600080600061044d8585610589565b9150915061045a816105cf565b509392505050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156104bb57507f000000000000000000000000000000000000000000000000000000000000000046145b156104e557507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b6000808251604114156105c05760208301516040840151606085015160001a6105b48782858561078d565b945094505050506105c8565b506000905060025b9250929050565b60008160048111156105e3576105e3610a96565b14156105ec5750565b600181600481111561060057610600610a96565b141561064e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610145565b600281600481111561066257610662610a96565b14156106b05760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610145565b60038160048111156106c4576106c4610a96565b141561071d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610145565b600481600481111561073157610731610a96565b141561078a5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610145565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156107c45750600090506003610871565b8460ff16601b141580156107dc57508460ff16601c14155b156107ed5750600090506004610871565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610841573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661086a57600060019250925050610871565b9150600090505b94509492505050565b60006020828403121561088c57600080fd5b81356001600160a01b03811681146108a357600080fd5b9392505050565b6000806000604084860312156108bf57600080fd5b833567ffffffffffffffff808211156108d757600080fd5b9085019060c082880312156108eb57600080fd5b9093506020850135908082111561090157600080fd5b818601915086601f83011261091557600080fd5b81358181111561092457600080fd5b87602082850101111561093657600080fd5b6020830194508093505050509250925092565b60005b8381101561096457818101518382015260200161094c565b83811115610973576000848401525b50505050565b821515815260406020820152600082518060408401526109a0816060850160208701610949565b601f01601f1916919091016060019392505050565b600082198211156109d657634e487b7160e01b600052601160045260246000fd5b500190565b6000808335601e198436030181126109f257600080fd5b83018035915067ffffffffffffffff821115610a0d57600080fd5b6020019150368190038213156105c857600080fd5b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b60008251610a5a818460208701610949565b9190910192915050565b600082610a8157634e487b7160e01b600052601260045260246000fd5b500490565b8183823760009101908152919050565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220c096d335dd8ff531b965b5440323db8da2634e5b6dabf89bdbc9ecaaef95384164736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/beacon/BeaconProxy":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"BeaconProxy","sourceName":"contracts/proxy/beacon/BeaconProxy.sol","abi":[{"inputs":[{"internalType":"address","name":"beacon","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x608060405260405161092738038061092783398101604081905261002291610474565b61002e82826000610035565b505061059e565b61003e8361010f565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b1561010a57610108836001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100c057600080fd5b505afa1580156100d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100f89190610534565b836102c160201b6100291760201c565b505b505050565b610122816102ed60201b6100551760201c565b6101815760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b610204816001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101bd57600080fd5b505afa1580156101d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f59190610534565b6102ed60201b6100551760201c565b6102695760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610178565b806102a07fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102fc60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102e68383604051806060016040528060278152602001610900602791396102ff565b9392505050565b6001600160a01b03163b151590565b90565b60606001600160a01b0384163b6103675760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610178565b600080856001600160a01b031685604051610382919061054f565b600060405180830381855af49150503d80600081146103bd576040519150601f19603f3d011682016040523d82523d6000602084013e6103c2565b606091505b5090925090506103d38282866103dd565b9695505050505050565b606083156103ec5750816102e6565b8251156103fc5782518084602001fd5b8160405162461bcd60e51b8152600401610178919061056b565b80516001600160a01b038116811461042d57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561046357818101518382015260200161044b565b838111156101085750506000910152565b6000806040838503121561048757600080fd5b61049083610416565b60208401519092506001600160401b03808211156104ad57600080fd5b818501915085601f8301126104c157600080fd5b8151818111156104d3576104d3610432565b604051601f8201601f19908116603f011681019083821181831017156104fb576104fb610432565b8160405282815288602084870101111561051457600080fd5b610525836020830160208801610448565b80955050505050509250929050565b60006020828403121561054657600080fd5b6102e682610416565b60008251610561818460208701610448565b9190910192915050565b602081526000825180602084015261058a816040850160208701610448565b601f01601f19169190910160400192915050565b610353806105ad6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61010f565b565b606061004e83836040518060600160405280602781526020016102f760279139610133565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100d257600080fd5b505afa1580156100e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010a919061024e565b905090565b3660008037600080366000845af43d6000803e80801561012e573d6000f35b3d6000fd5b60606001600160a01b0384163b6101a05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101bb91906102a7565b600060405180830381855af49150503d80600081146101f6576040519150601f19603f3d011682016040523d82523d6000602084013e6101fb565b606091505b509150915061020b828286610215565b9695505050505050565b6060831561022457508161004e565b8251156102345782518084602001fd5b8160405162461bcd60e51b815260040161019791906102c3565b60006020828403121561026057600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561029257818101518382015260200161027a565b838111156102a1576000848401525b50505050565b600082516102b9818460208701610277565b9190910192915050565b60208152600082518060208401526102e2816040850160208701610277565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c2849c0a15380ad6927f162f733548aad2e7c63763af5c25bea6e78da74d417964736f6c63430008090033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","deployedBytecode":"0x60806040523661001357610011610017565b005b6100115b610027610022610067565b61010f565b565b606061004e83836040518060600160405280602781526020016102f760279139610133565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100d257600080fd5b505afa1580156100e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010a919061024e565b905090565b3660008037600080366000845af43d6000803e80801561012e573d6000f35b3d6000fd5b60606001600160a01b0384163b6101a05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101bb91906102a7565b600060405180830381855af49150503d80600081146101f6576040519150601f19603f3d011682016040523d82523d6000602084013e6101fb565b606091505b509150915061020b828286610215565b9695505050505050565b6060831561022457508161004e565b8251156102345782518084602001fd5b8160405162461bcd60e51b815260040161019791906102c3565b60006020828403121561026057600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561029257818101518382015260200161027a565b838111156102a1576000848401525b50505050565b600082516102b9818460208701610277565b9190910192915050565b60208152600082518060208401526102e2816040850160208701610277565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c2849c0a15380ad6927f162f733548aad2e7c63763af5c25bea6e78da74d417964736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/beacon/IBeacon":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IBeacon","sourceName":"contracts/proxy/beacon/IBeacon.sol","abi":[{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/beacon/UpgradeableBeacon":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"UpgradeableBeacon","sourceName":"contracts/proxy/beacon/UpgradeableBeacon.sol","abi":[{"inputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506040516104e43803806104e483398101604081905261002f91610151565b61003833610047565b61004181610097565b50610181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100aa8161014260201b6101a01760201c565b6101205760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03163b151590565b60006020828403121561016357600080fd5b81516001600160a01b038116811461017a57600080fd5b9392505050565b610354806101906000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea26469706673582212203f0b62c86ff1acd57383d66937ec1fb6326b68807bfa75a94858ba00c9ff5ceb64736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea26469706673582212203f0b62c86ff1acd57383d66937ec1fb6326b68807bfa75a94858ba00c9ff5ceb64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/Clones":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Clones","sourceName":"contracts/proxy/Clones.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f2026685656e32cd413455db3e805c9b637ba010f3369d29ae06cf1df87608c264736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f2026685656e32cd413455db3e805c9b637ba010f3369d29ae06cf1df87608c264736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/ERC1967/ERC1967Proxy":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1967Proxy","sourceName":"contracts/proxy/ERC1967/ERC1967Proxy.sol","abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x608060405260405161072138038061072183398101604081905261002291610314565b61002e82826000610035565b5050610431565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106fa602791396101a9565b9392505050565b6100ea8161028760201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61029660201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606001600160a01b0384163b6102115760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610148565b600080856001600160a01b03168560405161022c91906103e2565b600060405180830381855af49150503d8060008114610267576040519150601f19603f3d011682016040523d82523d6000602084013e61026c565b606091505b50909250905061027d828286610299565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a85750816100d0565b8251156102b85782518084602001fd5b8160405162461bcd60e51b815260040161014891906103fe565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103035781810151838201526020016102eb565b838111156100645750506000910152565b6000806040838503121561032757600080fd5b82516001600160a01b038116811461033e57600080fd5b60208401519092506001600160401b038082111561035b57600080fd5b818501915085601f83011261036f57600080fd5b815181811115610381576103816102d2565b604051601f8201601f19908116603f011681019083821181831017156103a9576103a96102d2565b816040528281528860208487010111156103c257600080fd5b6103d38360208301602088016102e8565b80955050505050509250929050565b600082516103f48184602087016102e8565b9190910192915050565b602081526000825180602084015261041d8160408501602087016102e8565b601f01601f19169190910160400192915050565b6102ba806104406000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025e602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b60606001600160a01b0384163b6101305760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161014b919061020e565b600060405180830381855af49150503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b509150915061019b8282866101a5565b9695505050505050565b606083156101b457508161004e565b8251156101c45782518084602001fd5b8160405162461bcd60e51b8152600401610127919061022a565b60005b838110156101f95781810151838201526020016101e1565b83811115610208576000848401525b50505050565b600082516102208184602087016101de565b9190910192915050565b60208152600082518060208401526102498160408501602087016101de565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220012b2e6d3c22a9b90d918e56e90f5d0dc9562c086b68567310b49392b9105b8964736f6c63430008090033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","deployedBytecode":"0x60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025e602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b60606001600160a01b0384163b6101305760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161014b919061020e565b600060405180830381855af49150503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b509150915061019b8282866101a5565b9695505050505050565b606083156101b457508161004e565b8251156101c45782518084602001fd5b8160405162461bcd60e51b8152600401610127919061022a565b60005b838110156101f95781810151838201526020016101e1565b83811115610208576000848401525b50505050565b600082516102208184602087016101de565b9190910192915050565b60208152600082518060208401526102498160408501602087016101de565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220012b2e6d3c22a9b90d918e56e90f5d0dc9562c086b68567310b49392b9105b8964736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/ERC1967/ERC1967Upgrade":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1967Upgrade","sourceName":"contracts/proxy/ERC1967/ERC1967Upgrade.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/Proxy":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Proxy","sourceName":"contracts/proxy/Proxy.sol","abi":[{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/transparent/ProxyAdmin":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ProxyAdmin","sourceName":"contracts/proxy/transparent/ProxyAdmin.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeProxyAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"}],"name":"getProxyAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"}],"name":"getProxyImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"implementation","type":"address"}],"name":"upgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea2646970667358221220e9f4825daef94fe498441dad7e269b25b227f53e068d121189fc347571f57cee64736f6c63430008090033","deployedBytecode":"0x60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea2646970667358221220e9f4825daef94fe498441dad7e269b25b227f53e068d121189fc347571f57cee64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/transparent/TransparentUpgradeableProxy":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"TransparentUpgradeableProxy","sourceName":"contracts/proxy/transparent/TransparentUpgradeableProxy.sol","abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x608060405260405162000e8138038062000e81833981016040819052620000269162000490565b828162000036828260006200004d565b50620000449050826200008a565b505050620005c3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e5a60279139620002f8565b9392505050565b60006200018060008051602062000e3a83398151915260001b620003de60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e3a83398151915260001b620003de60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200028c1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620002081760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000570565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f191906200058e565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b83811115620000835750506000910152565b600080600060608486031215620004a657600080fd5b620004b1846200042e565b9250620004c1602085016200042e565b60408501519092506001600160401b0380821115620004df57600080fd5b818601915086601f830112620004f457600080fd5b8151818111156200050957620005096200044b565b604051601f8201601f19908116603f011681019083821181831017156200053457620005346200044b565b816040528281528960208487010111156200054e57600080fd5b6200056183602083016020880162000461565b80955050505050509250925092565b600082516200058481846020870162000461565b9190910192915050565b6020815260008251806020840152620005af81604085016020870162000461565b601f01601f19169190910160400192915050565b61086780620005d36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220cfb0cf0bbe115abbb9bf3be4bc00d10d9ef33dfafdf3dbe5eb87a81104ff498d64736f6c63430008090033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","deployedBytecode":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220cfb0cf0bbe115abbb9bf3be4bc00d10d9ef33dfafdf3dbe5eb87a81104ff498d64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/utils/Initializable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Initializable","sourceName":"contracts/proxy/utils/Initializable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/utils/UUPSUpgradeable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"UUPSUpgradeable","sourceName":"contracts/proxy/utils/UUPSUpgradeable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/security/Pausable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Pausable","sourceName":"contracts/security/Pausable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/security/PullPayment":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"PullPayment","sourceName":"contracts/security/PullPayment.sol","abi":[{"inputs":[{"internalType":"address","name":"dest","type":"address"}],"name":"payments","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"payee","type":"address"}],"name":"withdrawPayments","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/security/ReentrancyGuard":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ReentrancyGuard","sourceName":"contracts/security/ReentrancyGuard.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/common/ERC2981":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC2981","sourceName":"contracts/token/common/ERC2981.sol","abi":[{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/ERC1155":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155","sourceName":"contracts/token/ERC1155/ERC1155.sol","abi":[{"inputs":[{"internalType":"string","name":"uri_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b50604051620015f0380380620015f083398101604081905262000034916200011b565b6200003f8162000046565b5062000234565b80516200005b9060029060208401906200005f565b5050565b8280546200006d90620001f7565b90600052602060002090601f016020900481019282620000915760008555620000dc565b82601f10620000ac57805160ff1916838001178555620000dc565b82800160010185558215620000dc579182015b82811115620000dc578251825591602001919060010190620000bf565b50620000ea929150620000ee565b5090565b5b80821115620000ea5760008155600101620000ef565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200012f57600080fd5b82516001600160401b03808211156200014757600080fd5b818501915085601f8301126200015c57600080fd5b81518181111562000171576200017162000105565b604051601f8201601f19908116603f011681019083821181831017156200019c576200019c62000105565b816040528281528886848701011115620001b557600080fd5b600093505b82841015620001d95784840186015181850187015292850192620001ba565b82841115620001eb5760008684830101525b98975050505050505050565b600181811c908216806200020c57607f821691505b602082108114156200022e57634e487b7160e01b600052602260045260246000fd5b50919050565b6113ac80620002446000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461010a578063a22cb4651461012a578063e985e9c51461013d578063f242432a1461017957600080fd5b8062fdd58e1461008c57806301ffc9a7146100b25780630e89341c146100d55780632eb2c2d6146100f5575b600080fd5b61009f61009a366004610b5f565b61018c565b6040519081526020015b60405180910390f35b6100c56100c0366004610ba2565b610222565b60405190151581526020016100a9565b6100e86100e3366004610bc6565b610274565b6040516100a99190610c2c565b610108610103366004610d8b565b610308565b005b61011d610118366004610e35565b610354565b6040516100a99190610f3b565b610108610138366004610f4e565b61047e565b6100c561014b366004610f8a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b610108610187366004610fbd565b61048d565b60006001600160a01b0383166101fc5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b03198216636cdb3d1360e11b148061025357506001600160e01b031982166303a24d0760e21b145b8061026e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606002805461028390611022565b80601f01602080910402602001604051908101604052809291908181526020018280546102af90611022565b80156102fc5780601f106102d1576101008083540402835291602001916102fc565b820191906000526020600020905b8154815290600101906020018083116102df57829003601f168201915b50505050509050919050565b6001600160a01b0385163314806103245750610324853361014b565b6103405760405162461bcd60e51b81526004016101f39061105d565b61034d85858585856104d2565b5050505050565b606081518351146103b95760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b60648201526084016101f3565b6000835167ffffffffffffffff8111156103d5576103d5610c3f565b6040519080825280602002602001820160405280156103fe578160200160208202803683370190505b50905060005b845181101561047657610449858281518110610422576104226110ac565b602002602001015185838151811061043c5761043c6110ac565b602002602001015161018c565b82828151811061045b5761045b6110ac565b602090810291909101015261046f816110d8565b9050610404565b509392505050565b6104893383836106af565b5050565b6001600160a01b0385163314806104a957506104a9853361014b565b6104c55760405162461bcd60e51b81526004016101f39061105d565b61034d8585858585610790565b81518351146105345760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084016101f3565b6001600160a01b03841661055a5760405162461bcd60e51b81526004016101f3906110f3565b3360005b845181101561064157600085828151811061057b5761057b6110ac565b602002602001015190506000858381518110610599576105996110ac565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156105e95760405162461bcd60e51b81526004016101f390611138565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610626908490611182565b925050819055505050508061063a906110d8565b905061055e565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161069192919061119a565b60405180910390a46106a78187878787876108ba565b505050505050565b816001600160a01b0316836001600160a01b031614156107235760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b60648201526084016101f3565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166107b65760405162461bcd60e51b81526004016101f3906110f3565b3360006107c285610a2e565b905060006107cf85610a2e565b90506000868152602081815260408083206001600160a01b038c168452909152902054858110156108125760405162461bcd60e51b81526004016101f390611138565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061084f908490611182565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46108af848a8a8a8a8a610a79565b505050505050505050565b6001600160a01b0384163b156106a75760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906108fe90899089908890889088906004016111c8565b602060405180830381600087803b15801561091857600080fd5b505af1925050508015610948575060408051601f3d908101601f1916820190925261094591810190611226565b60015b6109f557610954611243565b806308c379a0141561098e575061096961125f565b806109745750610990565b8060405162461bcd60e51b81526004016101f39190610c2c565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60648201526084016101f3565b6001600160e01b0319811663bc197c8160e01b14610a255760405162461bcd60e51b81526004016101f3906112e9565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610a6857610a686110ac565b602090810291909101015292915050565b6001600160a01b0384163b156106a75760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610abd9089908990889088908890600401611331565b602060405180830381600087803b158015610ad757600080fd5b505af1925050508015610b07575060408051601f3d908101601f19168201909252610b0491810190611226565b60015b610b1357610954611243565b6001600160e01b0319811663f23a6e6160e01b14610a255760405162461bcd60e51b81526004016101f3906112e9565b80356001600160a01b0381168114610b5a57600080fd5b919050565b60008060408385031215610b7257600080fd5b610b7b83610b43565b946020939093013593505050565b6001600160e01b031981168114610b9f57600080fd5b50565b600060208284031215610bb457600080fd5b8135610bbf81610b89565b9392505050565b600060208284031215610bd857600080fd5b5035919050565b6000815180845260005b81811015610c0557602081850181015186830182015201610be9565b81811115610c17576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610bbf6020830184610bdf565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715610c7b57610c7b610c3f565b6040525050565b600067ffffffffffffffff821115610c9c57610c9c610c3f565b5060051b60200190565b600082601f830112610cb757600080fd5b81356020610cc482610c82565b604051610cd18282610c55565b83815260059390931b8501820192828101915086841115610cf157600080fd5b8286015b84811015610d0c5780358352918301918301610cf5565b509695505050505050565b600082601f830112610d2857600080fd5b813567ffffffffffffffff811115610d4257610d42610c3f565b604051610d59601f8301601f191660200182610c55565b818152846020838601011115610d6e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215610da357600080fd5b610dac86610b43565b9450610dba60208701610b43565b9350604086013567ffffffffffffffff80821115610dd757600080fd5b610de389838a01610ca6565b94506060880135915080821115610df957600080fd5b610e0589838a01610ca6565b93506080880135915080821115610e1b57600080fd5b50610e2888828901610d17565b9150509295509295909350565b60008060408385031215610e4857600080fd5b823567ffffffffffffffff80821115610e6057600080fd5b818501915085601f830112610e7457600080fd5b81356020610e8182610c82565b604051610e8e8282610c55565b83815260059390931b8501820192828101915089841115610eae57600080fd5b948201945b83861015610ed357610ec486610b43565b82529482019490820190610eb3565b96505086013592505080821115610ee957600080fd5b50610ef685828601610ca6565b9150509250929050565b600081518084526020808501945080840160005b83811015610f3057815187529582019590820190600101610f14565b509495945050505050565b602081526000610bbf6020830184610f00565b60008060408385031215610f6157600080fd5b610f6a83610b43565b915060208301358015158114610f7f57600080fd5b809150509250929050565b60008060408385031215610f9d57600080fd5b610fa683610b43565b9150610fb460208401610b43565b90509250929050565b600080600080600060a08688031215610fd557600080fd5b610fde86610b43565b9450610fec60208701610b43565b93506040860135925060608601359150608086013567ffffffffffffffff81111561101657600080fd5b610e2888828901610d17565b600181811c9082168061103657607f821691505b6020821081141561105757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602f908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526e195c881b9bdc88185c1c1c9bdd9959608a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156110ec576110ec6110c2565b5060010190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60008219821115611195576111956110c2565b500190565b6040815260006111ad6040830185610f00565b82810360208401526111bf8185610f00565b95945050505050565b6001600160a01b0386811682528516602082015260a0604082018190526000906111f490830186610f00565b82810360608401526112068186610f00565b9050828103608084015261121a8185610bdf565b98975050505050505050565b60006020828403121561123857600080fd5b8151610bbf81610b89565b600060033d111561125c5760046000803e5060005160e01c5b90565b600060443d101561126d5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561129d57505050505090565b82850191508151818111156112b55750505050505090565b843d87010160208285010111156112cf5750505050505090565b6112de60208286010187610c55565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061136b90830184610bdf565b97965050505050505056fea26469706673582212208589f9ade71b111122fe06f6192ba5a1bcba279086f8c117d40c8967db504c6e64736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461010a578063a22cb4651461012a578063e985e9c51461013d578063f242432a1461017957600080fd5b8062fdd58e1461008c57806301ffc9a7146100b25780630e89341c146100d55780632eb2c2d6146100f5575b600080fd5b61009f61009a366004610b5f565b61018c565b6040519081526020015b60405180910390f35b6100c56100c0366004610ba2565b610222565b60405190151581526020016100a9565b6100e86100e3366004610bc6565b610274565b6040516100a99190610c2c565b610108610103366004610d8b565b610308565b005b61011d610118366004610e35565b610354565b6040516100a99190610f3b565b610108610138366004610f4e565b61047e565b6100c561014b366004610f8a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b610108610187366004610fbd565b61048d565b60006001600160a01b0383166101fc5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b03198216636cdb3d1360e11b148061025357506001600160e01b031982166303a24d0760e21b145b8061026e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606002805461028390611022565b80601f01602080910402602001604051908101604052809291908181526020018280546102af90611022565b80156102fc5780601f106102d1576101008083540402835291602001916102fc565b820191906000526020600020905b8154815290600101906020018083116102df57829003601f168201915b50505050509050919050565b6001600160a01b0385163314806103245750610324853361014b565b6103405760405162461bcd60e51b81526004016101f39061105d565b61034d85858585856104d2565b5050505050565b606081518351146103b95760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b60648201526084016101f3565b6000835167ffffffffffffffff8111156103d5576103d5610c3f565b6040519080825280602002602001820160405280156103fe578160200160208202803683370190505b50905060005b845181101561047657610449858281518110610422576104226110ac565b602002602001015185838151811061043c5761043c6110ac565b602002602001015161018c565b82828151811061045b5761045b6110ac565b602090810291909101015261046f816110d8565b9050610404565b509392505050565b6104893383836106af565b5050565b6001600160a01b0385163314806104a957506104a9853361014b565b6104c55760405162461bcd60e51b81526004016101f39061105d565b61034d8585858585610790565b81518351146105345760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084016101f3565b6001600160a01b03841661055a5760405162461bcd60e51b81526004016101f3906110f3565b3360005b845181101561064157600085828151811061057b5761057b6110ac565b602002602001015190506000858381518110610599576105996110ac565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156105e95760405162461bcd60e51b81526004016101f390611138565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610626908490611182565b925050819055505050508061063a906110d8565b905061055e565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161069192919061119a565b60405180910390a46106a78187878787876108ba565b505050505050565b816001600160a01b0316836001600160a01b031614156107235760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b60648201526084016101f3565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166107b65760405162461bcd60e51b81526004016101f3906110f3565b3360006107c285610a2e565b905060006107cf85610a2e565b90506000868152602081815260408083206001600160a01b038c168452909152902054858110156108125760405162461bcd60e51b81526004016101f390611138565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061084f908490611182565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46108af848a8a8a8a8a610a79565b505050505050505050565b6001600160a01b0384163b156106a75760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906108fe90899089908890889088906004016111c8565b602060405180830381600087803b15801561091857600080fd5b505af1925050508015610948575060408051601f3d908101601f1916820190925261094591810190611226565b60015b6109f557610954611243565b806308c379a0141561098e575061096961125f565b806109745750610990565b8060405162461bcd60e51b81526004016101f39190610c2c565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60648201526084016101f3565b6001600160e01b0319811663bc197c8160e01b14610a255760405162461bcd60e51b81526004016101f3906112e9565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610a6857610a686110ac565b602090810291909101015292915050565b6001600160a01b0384163b156106a75760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610abd9089908990889088908890600401611331565b602060405180830381600087803b158015610ad757600080fd5b505af1925050508015610b07575060408051601f3d908101601f19168201909252610b0491810190611226565b60015b610b1357610954611243565b6001600160e01b0319811663f23a6e6160e01b14610a255760405162461bcd60e51b81526004016101f3906112e9565b80356001600160a01b0381168114610b5a57600080fd5b919050565b60008060408385031215610b7257600080fd5b610b7b83610b43565b946020939093013593505050565b6001600160e01b031981168114610b9f57600080fd5b50565b600060208284031215610bb457600080fd5b8135610bbf81610b89565b9392505050565b600060208284031215610bd857600080fd5b5035919050565b6000815180845260005b81811015610c0557602081850181015186830182015201610be9565b81811115610c17576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610bbf6020830184610bdf565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715610c7b57610c7b610c3f565b6040525050565b600067ffffffffffffffff821115610c9c57610c9c610c3f565b5060051b60200190565b600082601f830112610cb757600080fd5b81356020610cc482610c82565b604051610cd18282610c55565b83815260059390931b8501820192828101915086841115610cf157600080fd5b8286015b84811015610d0c5780358352918301918301610cf5565b509695505050505050565b600082601f830112610d2857600080fd5b813567ffffffffffffffff811115610d4257610d42610c3f565b604051610d59601f8301601f191660200182610c55565b818152846020838601011115610d6e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215610da357600080fd5b610dac86610b43565b9450610dba60208701610b43565b9350604086013567ffffffffffffffff80821115610dd757600080fd5b610de389838a01610ca6565b94506060880135915080821115610df957600080fd5b610e0589838a01610ca6565b93506080880135915080821115610e1b57600080fd5b50610e2888828901610d17565b9150509295509295909350565b60008060408385031215610e4857600080fd5b823567ffffffffffffffff80821115610e6057600080fd5b818501915085601f830112610e7457600080fd5b81356020610e8182610c82565b604051610e8e8282610c55565b83815260059390931b8501820192828101915089841115610eae57600080fd5b948201945b83861015610ed357610ec486610b43565b82529482019490820190610eb3565b96505086013592505080821115610ee957600080fd5b50610ef685828601610ca6565b9150509250929050565b600081518084526020808501945080840160005b83811015610f3057815187529582019590820190600101610f14565b509495945050505050565b602081526000610bbf6020830184610f00565b60008060408385031215610f6157600080fd5b610f6a83610b43565b915060208301358015158114610f7f57600080fd5b809150509250929050565b60008060408385031215610f9d57600080fd5b610fa683610b43565b9150610fb460208401610b43565b90509250929050565b600080600080600060a08688031215610fd557600080fd5b610fde86610b43565b9450610fec60208701610b43565b93506040860135925060608601359150608086013567ffffffffffffffff81111561101657600080fd5b610e2888828901610d17565b600181811c9082168061103657607f821691505b6020821081141561105757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602f908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526e195c881b9bdc88185c1c1c9bdd9959608a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156110ec576110ec6110c2565b5060010190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60008219821115611195576111956110c2565b500190565b6040815260006111ad6040830185610f00565b82810360208401526111bf8185610f00565b95945050505050565b6001600160a01b0386811682528516602082015260a0604082018190526000906111f490830186610f00565b82810360608401526112068186610f00565b9050828103608084015261121a8185610bdf565b98975050505050505050565b60006020828403121561123857600080fd5b8151610bbf81610b89565b600060033d111561125c5760046000803e5060005160e01c5b90565b600060443d101561126d5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561129d57505050505090565b82850191508151818111156112b55750505050505090565b843d87010160208285010111156112cf5750505050505090565b6112de60208286010187610c55565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061136b90830184610bdf565b97965050505050505056fea26469706673582212208589f9ade71b111122fe06f6192ba5a1bcba279086f8c117d40c8967db504c6e64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/extensions/ERC1155Burnable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Burnable","sourceName":"contracts/token/ERC1155/extensions/ERC1155Burnable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"burnBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/extensions/ERC1155Pausable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Pausable","sourceName":"contracts/token/ERC1155/extensions/ERC1155Pausable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/extensions/ERC1155Supply":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Supply","sourceName":"contracts/token/ERC1155/extensions/ERC1155Supply.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/extensions/ERC1155URIStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155URIStorage","sourceName":"contracts/token/ERC1155/extensions/ERC1155URIStorage.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/extensions/IERC1155MetadataURI":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155MetadataURI","sourceName":"contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/IERC1155":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155","sourceName":"contracts/token/ERC1155/IERC1155.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/IERC1155Receiver":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155Receiver","sourceName":"contracts/token/ERC1155/IERC1155Receiver.sol","abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/presets/ERC1155PresetMinterPauser":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155PresetMinterPauser","sourceName":"contracts/token/ERC1155/presets/ERC1155PresetMinterPauser.sol","abi":[{"inputs":[{"internalType":"string","name":"uri","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"burnBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mintBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162002d7f38038062002d7f8339810160408190526200003491620002e7565b806200004081620000b7565b506005805460ff1916905562000058600033620000d0565b620000847f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000d0565b620000b07f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620000d0565b5062000400565b8051620000cc9060049060208401906200022b565b5050565b620000cc8282620000ed82826200011960201b62000a871760201c565b60008281526001602090815260409091206200011491839062000b0b620001b9821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000cc576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001753390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001d0836001600160a01b038416620001d9565b90505b92915050565b60008181526001830160205260408120546200022257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620001d3565b506000620001d3565b8280546200023990620003c3565b90600052602060002090601f0160209004810192826200025d5760008555620002a8565b82601f106200027857805160ff1916838001178555620002a8565b82800160010185558215620002a8579182015b82811115620002a85782518255916020019190600101906200028b565b50620002b6929150620002ba565b5090565b5b80821115620002b65760008155600101620002bb565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215620002fb57600080fd5b82516001600160401b03808211156200031357600080fd5b818501915085601f8301126200032857600080fd5b8151818111156200033d576200033d620002d1565b604051601f8201601f19908116603f01168101908382118183101715620003685762000368620002d1565b8160405282815288868487010111156200038157600080fd5b600093505b82841015620003a5578484018601518185018701529285019262000386565b82841115620003b75760008684830101525b98975050505050505050565b600181811c90821680620003d857607f821691505b60208210811415620003fa57634e487b7160e01b600052602260045260246000fd5b50919050565b61296f80620004106000396000f3fe608060405234801561001057600080fd5b50600436106101725760003560e01c8063731133e9116100de578063ca15c87311610097578063e63ab1e911610071578063e63ab1e914610358578063e985e9c51461037f578063f242432a146103bb578063f5298aca146103ce57600080fd5b8063ca15c8731461030b578063d53913931461031e578063d547741f1461034557600080fd5b8063731133e9146102975780638456cb59146102aa5780639010d07c146102b257806391d14854146102dd578063a217fddf146102f0578063a22cb465146102f857600080fd5b80632f2ff15d116101305780632f2ff15d1461022b57806336568abe1461023e5780633f4ba83a146102515780634e1273f4146102595780635c975abb146102795780636b20c4541461028457600080fd5b8062fdd58e1461017757806301ffc9a71461019d5780630e89341c146101c05780631f7fdffa146101e0578063248a9ca3146101f55780632eb2c2d614610218575b600080fd5b61018a610185366004611d02565b6103e1565b6040519081526020015b60405180910390f35b6101b06101ab366004611d42565b61047c565b6040519015158152602001610194565b6101d36101ce366004611d5f565b610487565b6040516101949190611dd0565b6101f36101ee366004611f2f565b61051b565b005b61018a610203366004611d5f565b60009081526020819052604090206001015490565b6101f3610226366004611fc8565b610573565b6101f3610239366004612072565b6105bf565b6101f361024c366004612072565b6105e9565b6101f3610667565b61026c61026736600461209e565b61070d565b60405161019491906121a4565b60055460ff166101b0565b6101f36102923660046121b7565b610837565b6101f36102a536600461222b565b61087a565b6101f36108cc565b6102c56102c0366004612280565b610970565b6040516001600160a01b039091168152602001610194565b6101b06102eb366004612072565b61098f565b61018a600081565b6101f36103063660046122a2565b6109b8565b61018a610319366004611d5f565b6109c3565b61018a7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6101f3610353366004612072565b6109da565b61018a7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6101b061038d3660046122de565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b6101f36103c9366004612308565b6109ff565b6101f36103dc36600461236d565b610a44565b60006001600160a01b0383166104515760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b600061047682610b20565b606060048054610496906123a0565b80601f01602080910402602001604051908101604052809291908181526020018280546104c2906123a0565b801561050f5780601f106104e45761010080835404028352916020019161050f565b820191906000526020600020905b8154815290600101906020018083116104f257829003601f168201915b50505050509050919050565b6105457f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361098f565b6105615760405162461bcd60e51b8152600401610448906123db565b61056d84848484610b60565b50505050565b6001600160a01b03851633148061058f575061058f853361038d565b6105ab5760405162461bcd60e51b815260040161044890612438565b6105b88585858585610cbb565b5050505050565b6000828152602081905260409020600101546105da81610e68565b6105e48383610e75565b505050565b6001600160a01b03811633146106595760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610448565b6106638282610e97565b5050565b6106917f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a3361098f565b6107035760405162461bcd60e51b815260206004820152603b60248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f686176652070617573657220726f6c6520746f20756e706175736500000000006064820152608401610448565b61070b610eb9565b565b606081518351146107725760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610448565b6000835167ffffffffffffffff81111561078e5761078e611de3565b6040519080825280602002602001820160405280156107b7578160200160208202803683370190505b50905060005b845181101561082f576108028582815181106107db576107db612487565b60200260200101518583815181106107f5576107f5612487565b60200260200101516103e1565b82828151811061081457610814612487565b6020908102919091010152610828816124b3565b90506107bd565b509392505050565b6001600160a01b0383163314806108535750610853833361038d565b61086f5760405162461bcd60e51b815260040161044890612438565b6105e4838383610f0b565b6108a47f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361098f565b6108c05760405162461bcd60e51b8152600401610448906123db565b61056d848484846110aa565b6108f67f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a3361098f565b6109685760405162461bcd60e51b815260206004820152603960248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f686176652070617573657220726f6c6520746f207061757365000000000000006064820152608401610448565b61070b611195565b600082815260016020526040812061098890836111d2565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6106633383836111de565b6000818152600160205260408120610476906112bf565b6000828152602081905260409020600101546109f581610e68565b6105e48383610e97565b6001600160a01b038516331480610a1b5750610a1b853361038d565b610a375760405162461bcd60e51b815260040161044890612438565b6105b885858585856112c9565b6001600160a01b038316331480610a605750610a60833361038d565b610a7c5760405162461bcd60e51b815260040161044890612438565b6105e4838383611405565b610a91828261098f565b610663576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610ac73390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610988836001600160a01b038416611521565b60006001600160e01b03198216636cdb3d1360e11b1480610b5157506001600160e01b031982166303a24d0760e21b145b80610476575061047682611570565b6001600160a01b038416610b865760405162461bcd60e51b8152600401610448906124ce565b8151835114610ba75760405162461bcd60e51b81526004016104489061250f565b33610bb781600087878787611595565b60005b8451811015610c5357838181518110610bd557610bd5612487565b602002602001015160026000878481518110610bf357610bf3612487565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254610c3b9190612557565b90915550819050610c4b816124b3565b915050610bba565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610ca492919061256f565b60405180910390a46105b8816000878787876115a3565b8151835114610cdc5760405162461bcd60e51b81526004016104489061250f565b6001600160a01b038416610d025760405162461bcd60e51b81526004016104489061259d565b33610d11818787878787611595565b60005b8451811015610dfa576000858281518110610d3157610d31612487565b602002602001015190506000858381518110610d4f57610d4f612487565b60209081029190910181015160008481526002835260408082206001600160a01b038e168352909352919091205490915081811015610da05760405162461bcd60e51b8152600401610448906125e2565b60008381526002602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610ddf908490612557565b9250508190555050505080610df3906124b3565b9050610d14565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610e4a92919061256f565b60405180910390a4610e608187878787876115a3565b505050505050565b610e72813361170e565b50565b610e7f8282610a87565b60008281526001602052604090206105e49082610b0b565b610ea18282611772565b60008281526001602052604090206105e490826117d7565b610ec16117ec565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038316610f315760405162461bcd60e51b81526004016104489061262c565b8051825114610f525760405162461bcd60e51b81526004016104489061250f565b6000339050610f7581856000868660405180602001604052806000815250611595565b60005b835181101561103d576000848281518110610f9557610f95612487565b602002602001015190506000848381518110610fb357610fb3612487565b60209081029190910181015160008481526002835260408082206001600160a01b038c1683529093529190912054909150818110156110045760405162461bcd60e51b81526004016104489061266f565b60009283526002602090815260408085206001600160a01b038b1686529091529092209103905580611035816124b3565b915050610f78565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb868660405161108e92919061256f565b60405180910390a460408051602081019091526000905261056d565b6001600160a01b0384166110d05760405162461bcd60e51b8152600401610448906124ce565b3360006110dc85611835565b905060006110e985611835565b90506110fa83600089858589611595565b60008681526002602090815260408083206001600160a01b038b1684529091528120805487929061112c908490612557565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461118c83600089898989611880565b50505050505050565b61119d61194a565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610eee3390565b60006109888383611990565b816001600160a01b0316836001600160a01b031614156112525760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610448565b6001600160a01b03838116600081815260036020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6000610476825490565b6001600160a01b0384166112ef5760405162461bcd60e51b81526004016104489061259d565b3360006112fb85611835565b9050600061130885611835565b9050611318838989858589611595565b60008681526002602090815260408083206001600160a01b038c1684529091529020548581101561135b5760405162461bcd60e51b8152600401610448906125e2565b60008781526002602090815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061139a908490612557565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46113fa848a8a8a8a8a611880565b505050505050505050565b6001600160a01b03831661142b5760405162461bcd60e51b81526004016104489061262c565b33600061143784611835565b9050600061144484611835565b905061146483876000858560405180602001604052806000815250611595565b60008581526002602090815260408083206001600160a01b038a168452909152902054848110156114a75760405162461bcd60e51b81526004016104489061266f565b60008681526002602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091526000905261118c565b600081815260018301602052604081205461156857508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610476565b506000610476565b60006001600160e01b03198216635a05180f60e01b14806104765750610476826119ba565b610e608686868686866119ef565b6001600160a01b0384163b15610e605760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906115e790899089908890889088906004016126b3565b602060405180830381600087803b15801561160157600080fd5b505af1925050508015611631575060408051601f3d908101601f1916820190925261162e91810190612711565b60015b6116de5761163d61272e565b806308c379a01415611677575061165261274a565b8061165d5750611679565b8060405162461bcd60e51b81526004016104489190611dd0565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610448565b6001600160e01b0319811663bc197c8160e01b1461118c5760405162461bcd60e51b8152600401610448906127d4565b611718828261098f565b61066357611730816001600160a01b03166014611a57565b61173b836020611a57565b60405160200161174c92919061281c565b60408051601f198184030181529082905262461bcd60e51b825261044891600401611dd0565b61177c828261098f565b15610663576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610988836001600160a01b038416611bf3565b60055460ff1661070b5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610448565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061186f5761186f612487565b602090810291909101015292915050565b6001600160a01b0384163b15610e605760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906118c49089908990889088908890600401612891565b602060405180830381600087803b1580156118de57600080fd5b505af192505050801561190e575060408051601f3d908101601f1916820190925261190b91810190612711565b60015b61191a5761163d61272e565b6001600160e01b0319811663f23a6e6160e01b1461118c5760405162461bcd60e51b8152600401610448906127d4565b60055460ff161561070b5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610448565b60008260000182815481106119a7576119a7612487565b9060005260206000200154905092915050565b60006001600160e01b03198216637965db0b60e01b148061047657506301ffc9a760e01b6001600160e01b0319831614610476565b60055460ff1615610e605760405162461bcd60e51b815260206004820152602c60248201527f455243313135355061757361626c653a20746f6b656e207472616e736665722060448201526b1dda1a5b19481c185d5cd95960a21b6064820152608401610448565b60606000611a668360026128d6565b611a71906002612557565b67ffffffffffffffff811115611a8957611a89611de3565b6040519080825280601f01601f191660200182016040528015611ab3576020820181803683370190505b509050600360fc1b81600081518110611ace57611ace612487565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611afd57611afd612487565b60200101906001600160f81b031916908160001a9053506000611b218460026128d6565b611b2c906001612557565b90505b6001811115611ba4576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611b6057611b60612487565b1a60f81b828281518110611b7657611b76612487565b60200101906001600160f81b031916908160001a90535060049490941c93611b9d816128f5565b9050611b2f565b5083156109885760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610448565b60008181526001830160205260408120548015611cdc576000611c1760018361290c565b8554909150600090611c2b9060019061290c565b9050818114611c90576000866000018281548110611c4b57611c4b612487565b9060005260206000200154905080876000018481548110611c6e57611c6e612487565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611ca157611ca1612923565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610476565b6000915050610476565b80356001600160a01b0381168114611cfd57600080fd5b919050565b60008060408385031215611d1557600080fd5b611d1e83611ce6565b946020939093013593505050565b6001600160e01b031981168114610e7257600080fd5b600060208284031215611d5457600080fd5b813561098881611d2c565b600060208284031215611d7157600080fd5b5035919050565b60005b83811015611d93578181015183820152602001611d7b565b8381111561056d5750506000910152565b60008151808452611dbc816020860160208601611d78565b601f01601f19169290920160200192915050565b6020815260006109886020830184611da4565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715611e1f57611e1f611de3565b6040525050565b600067ffffffffffffffff821115611e4057611e40611de3565b5060051b60200190565b600082601f830112611e5b57600080fd5b81356020611e6882611e26565b604051611e758282611df9565b83815260059390931b8501820192828101915086841115611e9557600080fd5b8286015b84811015611eb05780358352918301918301611e99565b509695505050505050565b600082601f830112611ecc57600080fd5b813567ffffffffffffffff811115611ee657611ee6611de3565b604051611efd601f8301601f191660200182611df9565b818152846020838601011115611f1257600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611f4557600080fd5b611f4e85611ce6565b9350602085013567ffffffffffffffff80821115611f6b57600080fd5b611f7788838901611e4a565b94506040870135915080821115611f8d57600080fd5b611f9988838901611e4a565b93506060870135915080821115611faf57600080fd5b50611fbc87828801611ebb565b91505092959194509250565b600080600080600060a08688031215611fe057600080fd5b611fe986611ce6565b9450611ff760208701611ce6565b9350604086013567ffffffffffffffff8082111561201457600080fd5b61202089838a01611e4a565b9450606088013591508082111561203657600080fd5b61204289838a01611e4a565b9350608088013591508082111561205857600080fd5b5061206588828901611ebb565b9150509295509295909350565b6000806040838503121561208557600080fd5b8235915061209560208401611ce6565b90509250929050565b600080604083850312156120b157600080fd5b823567ffffffffffffffff808211156120c957600080fd5b818501915085601f8301126120dd57600080fd5b813560206120ea82611e26565b6040516120f78282611df9565b83815260059390931b850182019282810191508984111561211757600080fd5b948201945b8386101561213c5761212d86611ce6565b8252948201949082019061211c565b9650508601359250508082111561215257600080fd5b5061215f85828601611e4a565b9150509250929050565b600081518084526020808501945080840160005b838110156121995781518752958201959082019060010161217d565b509495945050505050565b6020815260006109886020830184612169565b6000806000606084860312156121cc57600080fd5b6121d584611ce6565b9250602084013567ffffffffffffffff808211156121f257600080fd5b6121fe87838801611e4a565b9350604086013591508082111561221457600080fd5b5061222186828701611e4a565b9150509250925092565b6000806000806080858703121561224157600080fd5b61224a85611ce6565b93506020850135925060408501359150606085013567ffffffffffffffff81111561227457600080fd5b611fbc87828801611ebb565b6000806040838503121561229357600080fd5b50508035926020909101359150565b600080604083850312156122b557600080fd5b6122be83611ce6565b9150602083013580151581146122d357600080fd5b809150509250929050565b600080604083850312156122f157600080fd5b6122fa83611ce6565b915061209560208401611ce6565b600080600080600060a0868803121561232057600080fd5b61232986611ce6565b945061233760208701611ce6565b93506040860135925060608601359150608086013567ffffffffffffffff81111561236157600080fd5b61206588828901611ebb565b60008060006060848603121561238257600080fd5b61238b84611ce6565b95602085013595506040909401359392505050565b600181811c908216806123b457607f821691505b602082108114156123d557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526038908201527f455243313135355072657365744d696e7465725061757365723a206d7573742060408201527f68617665206d696e74657220726f6c6520746f206d696e740000000000000000606082015260800190565b6020808252602f908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526e195c881b9bdc88185c1c1c9bdd9959608a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156124c7576124c761249d565b5060010190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b6000821982111561256a5761256a61249d565b500190565b6040815260006125826040830185612169565b82810360208401526125948185612169565b95945050505050565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60208082526023908201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526024908201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604082015263616e636560e01b606082015260800190565b6001600160a01b0386811682528516602082015260a0604082018190526000906126df90830186612169565b82810360608401526126f18186612169565b905082810360808401526127058185611da4565b98975050505050505050565b60006020828403121561272357600080fd5b815161098881611d2c565b600060033d11156127475760046000803e5060005160e01c5b90565b600060443d10156127585790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561278857505050505090565b82850191508151818111156127a05750505050505090565b843d87010160208285010111156127ba5750505050505090565b6127c960208286010187611df9565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612854816017850160208801611d78565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612885816028840160208801611d78565b01602801949350505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906128cb90830184611da4565b979650505050505050565b60008160001904831182151516156128f0576128f061249d565b500290565b6000816129045761290461249d565b506000190190565b60008282101561291e5761291e61249d565b500390565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220f23b72c48861ea1d650c5aa7b26b2a1da82c07a3eb091612de6e3befb8b92ecc64736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101725760003560e01c8063731133e9116100de578063ca15c87311610097578063e63ab1e911610071578063e63ab1e914610358578063e985e9c51461037f578063f242432a146103bb578063f5298aca146103ce57600080fd5b8063ca15c8731461030b578063d53913931461031e578063d547741f1461034557600080fd5b8063731133e9146102975780638456cb59146102aa5780639010d07c146102b257806391d14854146102dd578063a217fddf146102f0578063a22cb465146102f857600080fd5b80632f2ff15d116101305780632f2ff15d1461022b57806336568abe1461023e5780633f4ba83a146102515780634e1273f4146102595780635c975abb146102795780636b20c4541461028457600080fd5b8062fdd58e1461017757806301ffc9a71461019d5780630e89341c146101c05780631f7fdffa146101e0578063248a9ca3146101f55780632eb2c2d614610218575b600080fd5b61018a610185366004611d02565b6103e1565b6040519081526020015b60405180910390f35b6101b06101ab366004611d42565b61047c565b6040519015158152602001610194565b6101d36101ce366004611d5f565b610487565b6040516101949190611dd0565b6101f36101ee366004611f2f565b61051b565b005b61018a610203366004611d5f565b60009081526020819052604090206001015490565b6101f3610226366004611fc8565b610573565b6101f3610239366004612072565b6105bf565b6101f361024c366004612072565b6105e9565b6101f3610667565b61026c61026736600461209e565b61070d565b60405161019491906121a4565b60055460ff166101b0565b6101f36102923660046121b7565b610837565b6101f36102a536600461222b565b61087a565b6101f36108cc565b6102c56102c0366004612280565b610970565b6040516001600160a01b039091168152602001610194565b6101b06102eb366004612072565b61098f565b61018a600081565b6101f36103063660046122a2565b6109b8565b61018a610319366004611d5f565b6109c3565b61018a7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6101f3610353366004612072565b6109da565b61018a7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6101b061038d3660046122de565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b6101f36103c9366004612308565b6109ff565b6101f36103dc36600461236d565b610a44565b60006001600160a01b0383166104515760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b600061047682610b20565b606060048054610496906123a0565b80601f01602080910402602001604051908101604052809291908181526020018280546104c2906123a0565b801561050f5780601f106104e45761010080835404028352916020019161050f565b820191906000526020600020905b8154815290600101906020018083116104f257829003601f168201915b50505050509050919050565b6105457f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361098f565b6105615760405162461bcd60e51b8152600401610448906123db565b61056d84848484610b60565b50505050565b6001600160a01b03851633148061058f575061058f853361038d565b6105ab5760405162461bcd60e51b815260040161044890612438565b6105b88585858585610cbb565b5050505050565b6000828152602081905260409020600101546105da81610e68565b6105e48383610e75565b505050565b6001600160a01b03811633146106595760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610448565b6106638282610e97565b5050565b6106917f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a3361098f565b6107035760405162461bcd60e51b815260206004820152603b60248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f686176652070617573657220726f6c6520746f20756e706175736500000000006064820152608401610448565b61070b610eb9565b565b606081518351146107725760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610448565b6000835167ffffffffffffffff81111561078e5761078e611de3565b6040519080825280602002602001820160405280156107b7578160200160208202803683370190505b50905060005b845181101561082f576108028582815181106107db576107db612487565b60200260200101518583815181106107f5576107f5612487565b60200260200101516103e1565b82828151811061081457610814612487565b6020908102919091010152610828816124b3565b90506107bd565b509392505050565b6001600160a01b0383163314806108535750610853833361038d565b61086f5760405162461bcd60e51b815260040161044890612438565b6105e4838383610f0b565b6108a47f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361098f565b6108c05760405162461bcd60e51b8152600401610448906123db565b61056d848484846110aa565b6108f67f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a3361098f565b6109685760405162461bcd60e51b815260206004820152603960248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f686176652070617573657220726f6c6520746f207061757365000000000000006064820152608401610448565b61070b611195565b600082815260016020526040812061098890836111d2565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6106633383836111de565b6000818152600160205260408120610476906112bf565b6000828152602081905260409020600101546109f581610e68565b6105e48383610e97565b6001600160a01b038516331480610a1b5750610a1b853361038d565b610a375760405162461bcd60e51b815260040161044890612438565b6105b885858585856112c9565b6001600160a01b038316331480610a605750610a60833361038d565b610a7c5760405162461bcd60e51b815260040161044890612438565b6105e4838383611405565b610a91828261098f565b610663576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610ac73390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610988836001600160a01b038416611521565b60006001600160e01b03198216636cdb3d1360e11b1480610b5157506001600160e01b031982166303a24d0760e21b145b80610476575061047682611570565b6001600160a01b038416610b865760405162461bcd60e51b8152600401610448906124ce565b8151835114610ba75760405162461bcd60e51b81526004016104489061250f565b33610bb781600087878787611595565b60005b8451811015610c5357838181518110610bd557610bd5612487565b602002602001015160026000878481518110610bf357610bf3612487565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254610c3b9190612557565b90915550819050610c4b816124b3565b915050610bba565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610ca492919061256f565b60405180910390a46105b8816000878787876115a3565b8151835114610cdc5760405162461bcd60e51b81526004016104489061250f565b6001600160a01b038416610d025760405162461bcd60e51b81526004016104489061259d565b33610d11818787878787611595565b60005b8451811015610dfa576000858281518110610d3157610d31612487565b602002602001015190506000858381518110610d4f57610d4f612487565b60209081029190910181015160008481526002835260408082206001600160a01b038e168352909352919091205490915081811015610da05760405162461bcd60e51b8152600401610448906125e2565b60008381526002602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610ddf908490612557565b9250508190555050505080610df3906124b3565b9050610d14565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610e4a92919061256f565b60405180910390a4610e608187878787876115a3565b505050505050565b610e72813361170e565b50565b610e7f8282610a87565b60008281526001602052604090206105e49082610b0b565b610ea18282611772565b60008281526001602052604090206105e490826117d7565b610ec16117ec565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038316610f315760405162461bcd60e51b81526004016104489061262c565b8051825114610f525760405162461bcd60e51b81526004016104489061250f565b6000339050610f7581856000868660405180602001604052806000815250611595565b60005b835181101561103d576000848281518110610f9557610f95612487565b602002602001015190506000848381518110610fb357610fb3612487565b60209081029190910181015160008481526002835260408082206001600160a01b038c1683529093529190912054909150818110156110045760405162461bcd60e51b81526004016104489061266f565b60009283526002602090815260408085206001600160a01b038b1686529091529092209103905580611035816124b3565b915050610f78565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb868660405161108e92919061256f565b60405180910390a460408051602081019091526000905261056d565b6001600160a01b0384166110d05760405162461bcd60e51b8152600401610448906124ce565b3360006110dc85611835565b905060006110e985611835565b90506110fa83600089858589611595565b60008681526002602090815260408083206001600160a01b038b1684529091528120805487929061112c908490612557565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461118c83600089898989611880565b50505050505050565b61119d61194a565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610eee3390565b60006109888383611990565b816001600160a01b0316836001600160a01b031614156112525760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610448565b6001600160a01b03838116600081815260036020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6000610476825490565b6001600160a01b0384166112ef5760405162461bcd60e51b81526004016104489061259d565b3360006112fb85611835565b9050600061130885611835565b9050611318838989858589611595565b60008681526002602090815260408083206001600160a01b038c1684529091529020548581101561135b5760405162461bcd60e51b8152600401610448906125e2565b60008781526002602090815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061139a908490612557565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46113fa848a8a8a8a8a611880565b505050505050505050565b6001600160a01b03831661142b5760405162461bcd60e51b81526004016104489061262c565b33600061143784611835565b9050600061144484611835565b905061146483876000858560405180602001604052806000815250611595565b60008581526002602090815260408083206001600160a01b038a168452909152902054848110156114a75760405162461bcd60e51b81526004016104489061266f565b60008681526002602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091526000905261118c565b600081815260018301602052604081205461156857508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610476565b506000610476565b60006001600160e01b03198216635a05180f60e01b14806104765750610476826119ba565b610e608686868686866119ef565b6001600160a01b0384163b15610e605760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906115e790899089908890889088906004016126b3565b602060405180830381600087803b15801561160157600080fd5b505af1925050508015611631575060408051601f3d908101601f1916820190925261162e91810190612711565b60015b6116de5761163d61272e565b806308c379a01415611677575061165261274a565b8061165d5750611679565b8060405162461bcd60e51b81526004016104489190611dd0565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610448565b6001600160e01b0319811663bc197c8160e01b1461118c5760405162461bcd60e51b8152600401610448906127d4565b611718828261098f565b61066357611730816001600160a01b03166014611a57565b61173b836020611a57565b60405160200161174c92919061281c565b60408051601f198184030181529082905262461bcd60e51b825261044891600401611dd0565b61177c828261098f565b15610663576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610988836001600160a01b038416611bf3565b60055460ff1661070b5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610448565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061186f5761186f612487565b602090810291909101015292915050565b6001600160a01b0384163b15610e605760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906118c49089908990889088908890600401612891565b602060405180830381600087803b1580156118de57600080fd5b505af192505050801561190e575060408051601f3d908101601f1916820190925261190b91810190612711565b60015b61191a5761163d61272e565b6001600160e01b0319811663f23a6e6160e01b1461118c5760405162461bcd60e51b8152600401610448906127d4565b60055460ff161561070b5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610448565b60008260000182815481106119a7576119a7612487565b9060005260206000200154905092915050565b60006001600160e01b03198216637965db0b60e01b148061047657506301ffc9a760e01b6001600160e01b0319831614610476565b60055460ff1615610e605760405162461bcd60e51b815260206004820152602c60248201527f455243313135355061757361626c653a20746f6b656e207472616e736665722060448201526b1dda1a5b19481c185d5cd95960a21b6064820152608401610448565b60606000611a668360026128d6565b611a71906002612557565b67ffffffffffffffff811115611a8957611a89611de3565b6040519080825280601f01601f191660200182016040528015611ab3576020820181803683370190505b509050600360fc1b81600081518110611ace57611ace612487565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611afd57611afd612487565b60200101906001600160f81b031916908160001a9053506000611b218460026128d6565b611b2c906001612557565b90505b6001811115611ba4576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611b6057611b60612487565b1a60f81b828281518110611b7657611b76612487565b60200101906001600160f81b031916908160001a90535060049490941c93611b9d816128f5565b9050611b2f565b5083156109885760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610448565b60008181526001830160205260408120548015611cdc576000611c1760018361290c565b8554909150600090611c2b9060019061290c565b9050818114611c90576000866000018281548110611c4b57611c4b612487565b9060005260206000200154905080876000018481548110611c6e57611c6e612487565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611ca157611ca1612923565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610476565b6000915050610476565b80356001600160a01b0381168114611cfd57600080fd5b919050565b60008060408385031215611d1557600080fd5b611d1e83611ce6565b946020939093013593505050565b6001600160e01b031981168114610e7257600080fd5b600060208284031215611d5457600080fd5b813561098881611d2c565b600060208284031215611d7157600080fd5b5035919050565b60005b83811015611d93578181015183820152602001611d7b565b8381111561056d5750506000910152565b60008151808452611dbc816020860160208601611d78565b601f01601f19169290920160200192915050565b6020815260006109886020830184611da4565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715611e1f57611e1f611de3565b6040525050565b600067ffffffffffffffff821115611e4057611e40611de3565b5060051b60200190565b600082601f830112611e5b57600080fd5b81356020611e6882611e26565b604051611e758282611df9565b83815260059390931b8501820192828101915086841115611e9557600080fd5b8286015b84811015611eb05780358352918301918301611e99565b509695505050505050565b600082601f830112611ecc57600080fd5b813567ffffffffffffffff811115611ee657611ee6611de3565b604051611efd601f8301601f191660200182611df9565b818152846020838601011115611f1257600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611f4557600080fd5b611f4e85611ce6565b9350602085013567ffffffffffffffff80821115611f6b57600080fd5b611f7788838901611e4a565b94506040870135915080821115611f8d57600080fd5b611f9988838901611e4a565b93506060870135915080821115611faf57600080fd5b50611fbc87828801611ebb565b91505092959194509250565b600080600080600060a08688031215611fe057600080fd5b611fe986611ce6565b9450611ff760208701611ce6565b9350604086013567ffffffffffffffff8082111561201457600080fd5b61202089838a01611e4a565b9450606088013591508082111561203657600080fd5b61204289838a01611e4a565b9350608088013591508082111561205857600080fd5b5061206588828901611ebb565b9150509295509295909350565b6000806040838503121561208557600080fd5b8235915061209560208401611ce6565b90509250929050565b600080604083850312156120b157600080fd5b823567ffffffffffffffff808211156120c957600080fd5b818501915085601f8301126120dd57600080fd5b813560206120ea82611e26565b6040516120f78282611df9565b83815260059390931b850182019282810191508984111561211757600080fd5b948201945b8386101561213c5761212d86611ce6565b8252948201949082019061211c565b9650508601359250508082111561215257600080fd5b5061215f85828601611e4a565b9150509250929050565b600081518084526020808501945080840160005b838110156121995781518752958201959082019060010161217d565b509495945050505050565b6020815260006109886020830184612169565b6000806000606084860312156121cc57600080fd5b6121d584611ce6565b9250602084013567ffffffffffffffff808211156121f257600080fd5b6121fe87838801611e4a565b9350604086013591508082111561221457600080fd5b5061222186828701611e4a565b9150509250925092565b6000806000806080858703121561224157600080fd5b61224a85611ce6565b93506020850135925060408501359150606085013567ffffffffffffffff81111561227457600080fd5b611fbc87828801611ebb565b6000806040838503121561229357600080fd5b50508035926020909101359150565b600080604083850312156122b557600080fd5b6122be83611ce6565b9150602083013580151581146122d357600080fd5b809150509250929050565b600080604083850312156122f157600080fd5b6122fa83611ce6565b915061209560208401611ce6565b600080600080600060a0868803121561232057600080fd5b61232986611ce6565b945061233760208701611ce6565b93506040860135925060608601359150608086013567ffffffffffffffff81111561236157600080fd5b61206588828901611ebb565b60008060006060848603121561238257600080fd5b61238b84611ce6565b95602085013595506040909401359392505050565b600181811c908216806123b457607f821691505b602082108114156123d557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526038908201527f455243313135355072657365744d696e7465725061757365723a206d7573742060408201527f68617665206d696e74657220726f6c6520746f206d696e740000000000000000606082015260800190565b6020808252602f908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526e195c881b9bdc88185c1c1c9bdd9959608a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156124c7576124c761249d565b5060010190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b6000821982111561256a5761256a61249d565b500190565b6040815260006125826040830185612169565b82810360208401526125948185612169565b95945050505050565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60208082526023908201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526024908201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604082015263616e636560e01b606082015260800190565b6001600160a01b0386811682528516602082015260a0604082018190526000906126df90830186612169565b82810360608401526126f18186612169565b905082810360808401526127058185611da4565b98975050505050505050565b60006020828403121561272357600080fd5b815161098881611d2c565b600060033d11156127475760046000803e5060005160e01c5b90565b600060443d10156127585790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561278857505050505090565b82850191508151818111156127a05750505050505090565b843d87010160208285010111156127ba5750505050505090565b6127c960208286010187611df9565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612854816017850160208801611d78565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612885816028840160208801611d78565b01602801949350505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906128cb90830184611da4565b979650505050505050565b60008160001904831182151516156128f0576128f061249d565b500290565b6000816129045761290461249d565b506000190190565b60008282101561291e5761291e61249d565b500390565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220f23b72c48861ea1d650c5aa7b26b2a1da82c07a3eb091612de6e3befb8b92ecc64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/utils/ERC1155Holder":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Holder","sourceName":"contracts/token/ERC1155/utils/ERC1155Holder.sol","abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506103c5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a714610046578063bc197c811461006e578063f23a6e61146100a6575b600080fd5b6100596100543660046100fc565b6100c5565b60405190151581526020015b60405180910390f35b61008d61007c366004610280565b63bc197c8160e01b95945050505050565b6040516001600160e01b03199091168152602001610065565b61008d6100b436600461032a565b63f23a6e6160e01b95945050505050565b60006001600160e01b03198216630271189760e51b14806100f657506301ffc9a760e01b6001600160e01b03198316145b92915050565b60006020828403121561010e57600080fd5b81356001600160e01b03198116811461012657600080fd5b9392505050565b80356001600160a01b038116811461014457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561018857610188610149565b604052919050565b600082601f8301126101a157600080fd5b8135602067ffffffffffffffff8211156101bd576101bd610149565b8160051b6101cc82820161015f565b92835284810182019282810190878511156101e657600080fd5b83870192505b84831015610205578235825291830191908301906101ec565b979650505050505050565b600082601f83011261022157600080fd5b813567ffffffffffffffff81111561023b5761023b610149565b61024e601f8201601f191660200161015f565b81815284602083860101111561026357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561029857600080fd5b6102a18661012d565b94506102af6020870161012d565b9350604086013567ffffffffffffffff808211156102cc57600080fd5b6102d889838a01610190565b945060608801359150808211156102ee57600080fd5b6102fa89838a01610190565b9350608088013591508082111561031057600080fd5b5061031d88828901610210565b9150509295509295909350565b600080600080600060a0868803121561034257600080fd5b61034b8661012d565b94506103596020870161012d565b93506040860135925060608601359150608086013567ffffffffffffffff81111561038357600080fd5b61031d8882890161021056fea2646970667358221220017f716b93360c6547823d1a00353560c3ee01dab8ebc26c9d45dc0fef87f03364736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a714610046578063bc197c811461006e578063f23a6e61146100a6575b600080fd5b6100596100543660046100fc565b6100c5565b60405190151581526020015b60405180910390f35b61008d61007c366004610280565b63bc197c8160e01b95945050505050565b6040516001600160e01b03199091168152602001610065565b61008d6100b436600461032a565b63f23a6e6160e01b95945050505050565b60006001600160e01b03198216630271189760e51b14806100f657506301ffc9a760e01b6001600160e01b03198316145b92915050565b60006020828403121561010e57600080fd5b81356001600160e01b03198116811461012657600080fd5b9392505050565b80356001600160a01b038116811461014457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561018857610188610149565b604052919050565b600082601f8301126101a157600080fd5b8135602067ffffffffffffffff8211156101bd576101bd610149565b8160051b6101cc82820161015f565b92835284810182019282810190878511156101e657600080fd5b83870192505b84831015610205578235825291830191908301906101ec565b979650505050505050565b600082601f83011261022157600080fd5b813567ffffffffffffffff81111561023b5761023b610149565b61024e601f8201601f191660200161015f565b81815284602083860101111561026357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561029857600080fd5b6102a18661012d565b94506102af6020870161012d565b9350604086013567ffffffffffffffff808211156102cc57600080fd5b6102d889838a01610190565b945060608801359150808211156102ee57600080fd5b6102fa89838a01610190565b9350608088013591508082111561031057600080fd5b5061031d88828901610210565b9150509295509295909350565b600080600080600060a0868803121561034257600080fd5b61034b8661012d565b94506103596020870161012d565b93506040860135925060608601359150608086013567ffffffffffffffff81111561038357600080fd5b61031d8882890161021056fea2646970667358221220017f716b93360c6547823d1a00353560c3ee01dab8ebc26c9d45dc0fef87f03364736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/utils/ERC1155Receiver":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Receiver","sourceName":"contracts/token/ERC1155/utils/ERC1155Receiver.sol","abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/ERC20":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20","sourceName":"contracts/token/ERC20/ERC20.sol","abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162000b1938038062000b198339810160408190526200003491620001db565b81516200004990600390602085019062000068565b5080516200005f90600490602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b61088780620002926000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c391906106c4565b60405180910390f35b6100df6100da366004610735565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f36600461075f565b61024a565b604051601281526020016100c3565b6100df610131366004610735565b61026e565b6100f361014436600461079b565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df610175366004610735565b61029f565b6100df610188366004610735565b61031f565b6100f361019b3660046107bd565b61032d565b6060600380546101af906107f0565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107f0565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b919061082b565b610358565b6060600480546101af906107f0565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061066b90849061082b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106b791815260200190565b60405180910390a36104f0565b600060208083528351808285015260005b818110156106f1578581018301518582016040015282016106d5565b81811115610703576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461073057600080fd5b919050565b6000806040838503121561074857600080fd5b61075183610719565b946020939093013593505050565b60008060006060848603121561077457600080fd5b61077d84610719565b925061078b60208501610719565b9150604084013590509250925092565b6000602082840312156107ad57600080fd5b6107b682610719565b9392505050565b600080604083850312156107d057600080fd5b6107d983610719565b91506107e760208401610719565b90509250929050565b600181811c9082168061080457607f821691505b6020821081141561082557634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561084c57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220701d02b02100b16cb72e770d2f394f3d0fad6d2f51381cf7f917c7cf674e18b364736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c391906106c4565b60405180910390f35b6100df6100da366004610735565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f36600461075f565b61024a565b604051601281526020016100c3565b6100df610131366004610735565b61026e565b6100f361014436600461079b565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df610175366004610735565b61029f565b6100df610188366004610735565b61031f565b6100f361019b3660046107bd565b61032d565b6060600380546101af906107f0565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107f0565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b919061082b565b610358565b6060600480546101af906107f0565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061066b90849061082b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106b791815260200190565b60405180910390a36104f0565b600060208083528351808285015260005b818110156106f1578581018301518582016040015282016106d5565b81811115610703576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461073057600080fd5b919050565b6000806040838503121561074857600080fd5b61075183610719565b946020939093013593505050565b60008060006060848603121561077457600080fd5b61077d84610719565b925061078b60208501610719565b9150604084013590509250925092565b6000602082840312156107ad57600080fd5b6107b682610719565b9392505050565b600080604083850312156107d057600080fd5b6107d983610719565b91506107e760208401610719565b90509250929050565b600181811c9082168061080457607f821691505b6020821081141561082557634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561084c57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220701d02b02100b16cb72e770d2f394f3d0fad6d2f51381cf7f917c7cf674e18b364736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20Permit":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20Permit","sourceName":"contracts/token/ERC20/extensions/draft-ERC20Permit.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/IERC20Permit":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC20Permit","sourceName":"contracts/token/ERC20/extensions/draft-IERC20Permit.sol","abi":[{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20Burnable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20Burnable","sourceName":"contracts/token/ERC20/extensions/ERC20Burnable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20Capped":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20Capped","sourceName":"contracts/token/ERC20/extensions/ERC20Capped.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20FlashMint":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20FlashMint","sourceName":"contracts/token/ERC20/extensions/ERC20FlashMint.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"flashFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"flashLoan","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"maxFlashLoan","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20Pausable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20Pausable","sourceName":"contracts/token/ERC20/extensions/ERC20Pausable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20Snapshot":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20Snapshot","sourceName":"contracts/token/ERC20/extensions/ERC20Snapshot.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Snapshot","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"name":"balanceOfAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"name":"totalSupplyAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20Votes":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20Votes","sourceName":"contracts/token/ERC20/extensions/ERC20Votes.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint32","name":"pos","type":"uint32"}],"name":"checkpoints","outputs":[{"components":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint224","name":"votes","type":"uint224"}],"internalType":"struct ERC20Votes.Checkpoint","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20VotesComp":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20VotesComp","sourceName":"contracts/token/ERC20/extensions/ERC20VotesComp.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint32","name":"pos","type":"uint32"}],"name":"checkpoints","outputs":[{"components":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint224","name":"votes","type":"uint224"}],"internalType":"struct ERC20Votes.Checkpoint","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20Wrapper":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20Wrapper","sourceName":"contracts/token/ERC20/extensions/ERC20Wrapper.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC4626":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC4626","sourceName":"contracts/token/ERC20/extensions/ERC4626.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"convertToShares","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/IERC20Metadata":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC20Metadata","sourceName":"contracts/token/ERC20/extensions/IERC20Metadata.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/IERC20":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC20","sourceName":"contracts/token/ERC20/IERC20.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/presets/ERC20PresetFixedSupply":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20PresetFixedSupply","sourceName":"contracts/token/ERC20/presets/ERC20PresetFixedSupply.sol","abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162000e6038038062000e608339810160408190526200003491620002dd565b8351849084906200004d9060039060208501906200016a565b508051620000639060049060208401906200016a565b5050506200007881836200008260201b60201c565b50505050620003d6565b6001600160a01b038216620000dd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000f1919062000372565b90915550506001600160a01b038216600090815260208190526040812080548392906200012090849062000372565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001789062000399565b90600052602060002090601f0160209004810192826200019c5760008555620001e7565b82601f10620001b757805160ff1916838001178555620001e7565b82800160010185558215620001e7579182015b82811115620001e7578251825591602001919060010190620001ca565b50620001f5929150620001f9565b5090565b5b80821115620001f55760008155600101620001fa565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200023857600080fd5b81516001600160401b038082111562000255576200025562000210565b604051601f8301601f19908116603f0116810190828211818310171562000280576200028062000210565b816040528381526020925086838588010111156200029d57600080fd5b600091505b83821015620002c15785820183015181830184015290820190620002a2565b83821115620002d35760008385830101525b9695505050505050565b60008060008060808587031215620002f457600080fd5b84516001600160401b03808211156200030c57600080fd5b6200031a8883890162000226565b955060208701519150808211156200033157600080fd5b50620003408782880162000226565b60408701516060880151919550935090506001600160a01b03811681146200036757600080fd5b939692955090935050565b600082198211156200039457634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620003ae57607f821691505b60208210811415620003d057634e487b7160e01b600052602260045260246000fd5b50919050565b610a7a80620003e66000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101ad578063a457c2d7146101b5578063a9059cbb146101c8578063dd62ed3e146101db57600080fd5b806342966c681461015c57806370a082311461017157806379cc67901461019a57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a5780633950935114610149575b600080fd5b6100dc6101ee565b6040516100e9919061087f565b60405180910390f35b6101056101003660046108f0565b610280565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b61010561013536600461091a565b610298565b604051601281526020016100e9565b6101056101573660046108f0565b6102bc565b61016f61016a366004610956565b6102de565b005b61011961017f36600461096f565b6001600160a01b031660009081526020819052604090205490565b61016f6101a83660046108f0565b6102eb565b6100dc610304565b6101056101c33660046108f0565b610313565b6101056101d63660046108f0565b610393565b6101196101e9366004610991565b6103a1565b6060600380546101fd906109c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610229906109c4565b80156102765780601f1061024b57610100808354040283529160200191610276565b820191906000526020600020905b81548152906001019060200180831161025957829003601f168201915b5050505050905090565b60003361028e8185856103cc565b5060019392505050565b6000336102a68582856104f1565b6102b185858561056b565b506001949350505050565b60003361028e8185856102cf83836103a1565b6102d99190610a15565b6103cc565b6102e83382610739565b50565b6102f68233836104f1565b6103008282610739565b5050565b6060600480546101fd906109c4565b6000338161032182866103a1565b9050838110156103865760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102b182868684036103cc565b60003361028e81858561056b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661042e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161037d565b6001600160a01b03821661048f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161037d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104fd84846103a1565b9050600019811461056557818110156105585760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161037d565b61056584848484036103cc565b50505050565b6001600160a01b0383166105cf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161037d565b6001600160a01b0382166106315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161037d565b6001600160a01b038316600090815260208190526040902054818110156106a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161037d565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106e0908490610a15565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161072c91815260200190565b60405180910390a3610565565b6001600160a01b0382166107995760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161037d565b6001600160a01b0382166000908152602081905260409020548181101561080d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161037d565b6001600160a01b038316600090815260208190526040812083830390556002805484929061083c908490610a2d565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016104e4565b600060208083528351808285015260005b818110156108ac57858101830151858201604001528201610890565b818111156108be576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146108eb57600080fd5b919050565b6000806040838503121561090357600080fd5b61090c836108d4565b946020939093013593505050565b60008060006060848603121561092f57600080fd5b610938846108d4565b9250610946602085016108d4565b9150604084013590509250925092565b60006020828403121561096857600080fd5b5035919050565b60006020828403121561098157600080fd5b61098a826108d4565b9392505050565b600080604083850312156109a457600080fd5b6109ad836108d4565b91506109bb602084016108d4565b90509250929050565b600181811c908216806109d857607f821691505b602082108114156109f957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610a2857610a286109ff565b500190565b600082821015610a3f57610a3f6109ff565b50039056fea2646970667358221220dc132e0f3aa42d082859bdc07e1b4889eb86baeb5b4f060715848c54b723ece964736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101ad578063a457c2d7146101b5578063a9059cbb146101c8578063dd62ed3e146101db57600080fd5b806342966c681461015c57806370a082311461017157806379cc67901461019a57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a5780633950935114610149575b600080fd5b6100dc6101ee565b6040516100e9919061087f565b60405180910390f35b6101056101003660046108f0565b610280565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b61010561013536600461091a565b610298565b604051601281526020016100e9565b6101056101573660046108f0565b6102bc565b61016f61016a366004610956565b6102de565b005b61011961017f36600461096f565b6001600160a01b031660009081526020819052604090205490565b61016f6101a83660046108f0565b6102eb565b6100dc610304565b6101056101c33660046108f0565b610313565b6101056101d63660046108f0565b610393565b6101196101e9366004610991565b6103a1565b6060600380546101fd906109c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610229906109c4565b80156102765780601f1061024b57610100808354040283529160200191610276565b820191906000526020600020905b81548152906001019060200180831161025957829003601f168201915b5050505050905090565b60003361028e8185856103cc565b5060019392505050565b6000336102a68582856104f1565b6102b185858561056b565b506001949350505050565b60003361028e8185856102cf83836103a1565b6102d99190610a15565b6103cc565b6102e83382610739565b50565b6102f68233836104f1565b6103008282610739565b5050565b6060600480546101fd906109c4565b6000338161032182866103a1565b9050838110156103865760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102b182868684036103cc565b60003361028e81858561056b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661042e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161037d565b6001600160a01b03821661048f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161037d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104fd84846103a1565b9050600019811461056557818110156105585760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161037d565b61056584848484036103cc565b50505050565b6001600160a01b0383166105cf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161037d565b6001600160a01b0382166106315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161037d565b6001600160a01b038316600090815260208190526040902054818110156106a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161037d565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106e0908490610a15565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161072c91815260200190565b60405180910390a3610565565b6001600160a01b0382166107995760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161037d565b6001600160a01b0382166000908152602081905260409020548181101561080d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161037d565b6001600160a01b038316600090815260208190526040812083830390556002805484929061083c908490610a2d565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016104e4565b600060208083528351808285015260005b818110156108ac57858101830151858201604001528201610890565b818111156108be576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146108eb57600080fd5b919050565b6000806040838503121561090357600080fd5b61090c836108d4565b946020939093013593505050565b60008060006060848603121561092f57600080fd5b610938846108d4565b9250610946602085016108d4565b9150604084013590509250925092565b60006020828403121561096857600080fd5b5035919050565b60006020828403121561098157600080fd5b61098a826108d4565b9392505050565b600080604083850312156109a457600080fd5b6109ad836108d4565b91506109bb602084016108d4565b90509250929050565b600181811c908216806109d857607f821691505b602082108114156109f957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610a2857610a286109ff565b500190565b600082821015610a3f57610a3f6109ff565b50039056fea2646970667358221220dc132e0f3aa42d082859bdc07e1b4889eb86baeb5b4f060715848c54b723ece964736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/presets/ERC20PresetMinterPauser":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20PresetMinterPauser","sourceName":"contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol","abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162001d6638038062001d668339810160408190526200003491620003b5565b8151829082906200004d90600590602085019062000242565b5080516200006390600690602084019062000242565b50506007805460ff19169055506200007d600033620000dd565b620000a97f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000dd565b620000d57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620000dd565b50506200045c565b620000e98282620000ed565b5050565b6200010482826200013060201b6200093d1760201c565b60008281526001602090815260409091206200012b918390620009c1620001d0821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000e9576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556200018c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001e7836001600160a01b038416620001f0565b90505b92915050565b60008181526001830160205260408120546200023957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620001ea565b506000620001ea565b82805462000250906200041f565b90600052602060002090601f016020900481019282620002745760008555620002bf565b82601f106200028f57805160ff1916838001178555620002bf565b82800160010185558215620002bf579182015b82811115620002bf578251825591602001919060010190620002a2565b50620002cd929150620002d1565b5090565b5b80821115620002cd5760008155600101620002d2565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200031057600080fd5b81516001600160401b03808211156200032d576200032d620002e8565b604051601f8301601f19908116603f01168101908282118183101715620003585762000358620002e8565b816040528381526020925086838588010111156200037557600080fd5b600091505b838210156200039957858201830151818301840152908201906200037a565b83821115620003ab5760008385830101525b9695505050505050565b60008060408385031215620003c957600080fd5b82516001600160401b0380821115620003e157600080fd5b620003ef86838701620002fe565b935060208501519150808211156200040657600080fd5b506200041585828601620002fe565b9150509250929050565b600181811c908216806200043457607f821691505b602082108114156200045657634e487b7160e01b600052602260045260246000fd5b50919050565b6118fa806200046c6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063a457c2d711610097578063d539139311610071578063d5391393146103af578063d547741f146103d6578063dd62ed3e146103e9578063e63ab1e9146103fc57600080fd5b8063a457c2d714610376578063a9059cbb14610389578063ca15c8731461039c57600080fd5b80639010d07c116100d35780639010d07c1461032857806391d148541461035357806395d89b4114610366578063a217fddf1461036e57600080fd5b806370a08231146102e457806379cc67901461030d5780638456cb591461032057600080fd5b8063313ce567116101665780633f4ba83a116101405780633f4ba83a146102ab57806340c10f19146102b357806342966c68146102c65780635c975abb146102d957600080fd5b8063313ce5671461027657806336568abe14610285578063395093511461029857600080fd5b806318160ddd116101a257806318160ddd1461021957806323b872dd1461022b578063248a9ca31461023e5780632f2ff15d1461026157600080fd5b806301ffc9a7146101c957806306fdde03146101f1578063095ea7b314610206575b600080fd5b6101dc6101d73660046115a0565b610423565b60405190151581526020015b60405180910390f35b6101f961044e565b6040516101e891906115f6565b6101dc610214366004611645565b6104e0565b6004545b6040519081526020016101e8565b6101dc61023936600461166f565b6104f8565b61021d61024c3660046116ab565b60009081526020819052604090206001015490565b61027461026f3660046116c4565b61051c565b005b604051601281526020016101e8565b6102746102933660046116c4565b610546565b6101dc6102a6366004611645565b6105c9565b6102746105eb565b6102746102c1366004611645565b610691565b6102746102d43660046116ab565b610730565b60075460ff166101dc565b61021d6102f23660046116f0565b6001600160a01b031660009081526002602052604090205490565b61027461031b366004611645565b61073d565b610274610752565b61033b61033636600461170b565b6107f6565b6040516001600160a01b0390911681526020016101e8565b6101dc6103613660046116c4565b610815565b6101f961083e565b61021d600081565b6101dc610384366004611645565b61084d565b6101dc610397366004611645565b6108c8565b61021d6103aa3660046116ab565b6108d6565b61021d7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102746103e43660046116c4565b6108ed565b61021d6103f736600461172d565b610912565b61021d7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60006001600160e01b03198216635a05180f60e01b14806104485750610448826109d6565b92915050565b60606005805461045d90611757565b80601f016020809104026020016040519081016040528092919081815260200182805461048990611757565b80156104d65780601f106104ab576101008083540402835291602001916104d6565b820191906000526020600020905b8154815290600101906020018083116104b957829003601f168201915b5050505050905090565b6000336104ee818585610a0b565b5060019392505050565b600033610506858285610b2f565b610511858585610ba9565b506001949350505050565b60008281526020819052604090206001015461053781610d82565b6105418383610d8c565b505050565b6001600160a01b03811633146105bb5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105c58282610dae565b5050565b6000336104ee8185856105dc8383610912565b6105e691906117a8565b610a0b565b6106157f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610815565b6106875760405162461bcd60e51b815260206004820152603960248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20756e70617573650000000000000060648201526084016105b2565b61068f610dd0565b565b6106bb7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610815565b6107265760405162461bcd60e51b815260206004820152603660248201527f45524332305072657365744d696e7465725061757365723a206d7573742068616044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b60648201526084016105b2565b6105c58282610e22565b61073a3382610f0d565b50565b610748823383610b2f565b6105c58282610f0d565b61077c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610815565b6107ee5760405162461bcd60e51b815260206004820152603760248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20706175736500000000000000000060648201526084016105b2565b61068f611067565b600082815260016020526040812061080e90836110a4565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60606006805461045d90611757565b6000338161085b8286610912565b9050838110156108bb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105b2565b6105118286868403610a0b565b6000336104ee818585610ba9565b6000818152600160205260408120610448906110b0565b60008281526020819052604090206001015461090881610d82565b6105418383610dae565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6109478282610815565b6105c5576000828152602081815260408083206001600160a01b03851684529091529020805460ff1916600117905561097d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600061080e836001600160a01b0384166110ba565b60006001600160e01b03198216637965db0b60e01b148061044857506301ffc9a760e01b6001600160e01b0319831614610448565b6001600160a01b038316610a6d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105b2565b6001600160a01b038216610ace5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105b2565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610b3b8484610912565b90506000198114610ba35781811015610b965760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105b2565b610ba38484848403610a0b565b50505050565b6001600160a01b038316610c0d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105b2565b6001600160a01b038216610c6f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105b2565b610c7a838383611109565b6001600160a01b03831660009081526002602052604090205481811015610cf25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105b2565b6001600160a01b03808516600090815260026020526040808220858503905591851681529081208054849290610d299084906117a8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d7591815260200190565b60405180910390a3610ba3565b61073a8133611114565b610d96828261093d565b600082815260016020526040902061054190826109c1565b610db88282611178565b600082815260016020526040902061054190826111dd565b610dd86111f2565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610e785760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105b2565b610e8460008383611109565b8060046000828254610e9691906117a8565b90915550506001600160a01b03821660009081526002602052604081208054839290610ec39084906117a8565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216610f6d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105b2565b610f7982600083611109565b6001600160a01b03821660009081526002602052604090205481811015610fed5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105b2565b6001600160a01b038316600090815260026020526040812083830390556004805484929061101c9084906117c0565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b61106f61123b565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610e053390565b600061080e8383611281565b6000610448825490565b600081815260018301602052604081205461110157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610448565b506000610448565b6105418383836112ab565b61111e8282610815565b6105c557611136816001600160a01b03166014611311565b611141836020611311565b6040516020016111529291906117d7565b60408051601f198184030181529082905262461bcd60e51b82526105b2916004016115f6565b6111828282610815565b156105c5576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600061080e836001600160a01b0384166114ad565b60075460ff1661068f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105b2565b60075460ff161561068f5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105b2565b60008260000182815481106112985761129861184c565b9060005260206000200154905092915050565b60075460ff16156105415760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b60648201526084016105b2565b60606000611320836002611862565b61132b9060026117a8565b67ffffffffffffffff81111561134357611343611881565b6040519080825280601f01601f19166020018201604052801561136d576020820181803683370190505b509050600360fc1b816000815181106113885761138861184c565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106113b7576113b761184c565b60200101906001600160f81b031916908160001a90535060006113db846002611862565b6113e69060016117a8565b90505b600181111561145e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061141a5761141a61184c565b1a60f81b8282815181106114305761143061184c565b60200101906001600160f81b031916908160001a90535060049490941c9361145781611897565b90506113e9565b50831561080e5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105b2565b600081815260018301602052604081205480156115965760006114d16001836117c0565b85549091506000906114e5906001906117c0565b905081811461154a5760008660000182815481106115055761150561184c565b90600052602060002001549050808760000184815481106115285761152861184c565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061155b5761155b6118ae565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610448565b6000915050610448565b6000602082840312156115b257600080fd5b81356001600160e01b03198116811461080e57600080fd5b60005b838110156115e55781810151838201526020016115cd565b83811115610ba35750506000910152565b60208152600082518060208401526116158160408501602087016115ca565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461164057600080fd5b919050565b6000806040838503121561165857600080fd5b61166183611629565b946020939093013593505050565b60008060006060848603121561168457600080fd5b61168d84611629565b925061169b60208501611629565b9150604084013590509250925092565b6000602082840312156116bd57600080fd5b5035919050565b600080604083850312156116d757600080fd5b823591506116e760208401611629565b90509250929050565b60006020828403121561170257600080fd5b61080e82611629565b6000806040838503121561171e57600080fd5b50508035926020909101359150565b6000806040838503121561174057600080fd5b61174983611629565b91506116e760208401611629565b600181811c9082168061176b57607f821691505b6020821081141561178c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156117bb576117bb611792565b500190565b6000828210156117d2576117d2611792565b500390565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161180f8160178501602088016115ca565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516118408160288401602088016115ca565b01602801949350505050565b634e487b7160e01b600052603260045260246000fd5b600081600019048311821515161561187c5761187c611792565b500290565b634e487b7160e01b600052604160045260246000fd5b6000816118a6576118a6611792565b506000190190565b634e487b7160e01b600052603160045260246000fdfea264697066735822122048c66a7206666f4e204e67398e5f8308e3aacac953e70d07d306c4815a38f61464736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063a457c2d711610097578063d539139311610071578063d5391393146103af578063d547741f146103d6578063dd62ed3e146103e9578063e63ab1e9146103fc57600080fd5b8063a457c2d714610376578063a9059cbb14610389578063ca15c8731461039c57600080fd5b80639010d07c116100d35780639010d07c1461032857806391d148541461035357806395d89b4114610366578063a217fddf1461036e57600080fd5b806370a08231146102e457806379cc67901461030d5780638456cb591461032057600080fd5b8063313ce567116101665780633f4ba83a116101405780633f4ba83a146102ab57806340c10f19146102b357806342966c68146102c65780635c975abb146102d957600080fd5b8063313ce5671461027657806336568abe14610285578063395093511461029857600080fd5b806318160ddd116101a257806318160ddd1461021957806323b872dd1461022b578063248a9ca31461023e5780632f2ff15d1461026157600080fd5b806301ffc9a7146101c957806306fdde03146101f1578063095ea7b314610206575b600080fd5b6101dc6101d73660046115a0565b610423565b60405190151581526020015b60405180910390f35b6101f961044e565b6040516101e891906115f6565b6101dc610214366004611645565b6104e0565b6004545b6040519081526020016101e8565b6101dc61023936600461166f565b6104f8565b61021d61024c3660046116ab565b60009081526020819052604090206001015490565b61027461026f3660046116c4565b61051c565b005b604051601281526020016101e8565b6102746102933660046116c4565b610546565b6101dc6102a6366004611645565b6105c9565b6102746105eb565b6102746102c1366004611645565b610691565b6102746102d43660046116ab565b610730565b60075460ff166101dc565b61021d6102f23660046116f0565b6001600160a01b031660009081526002602052604090205490565b61027461031b366004611645565b61073d565b610274610752565b61033b61033636600461170b565b6107f6565b6040516001600160a01b0390911681526020016101e8565b6101dc6103613660046116c4565b610815565b6101f961083e565b61021d600081565b6101dc610384366004611645565b61084d565b6101dc610397366004611645565b6108c8565b61021d6103aa3660046116ab565b6108d6565b61021d7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102746103e43660046116c4565b6108ed565b61021d6103f736600461172d565b610912565b61021d7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60006001600160e01b03198216635a05180f60e01b14806104485750610448826109d6565b92915050565b60606005805461045d90611757565b80601f016020809104026020016040519081016040528092919081815260200182805461048990611757565b80156104d65780601f106104ab576101008083540402835291602001916104d6565b820191906000526020600020905b8154815290600101906020018083116104b957829003601f168201915b5050505050905090565b6000336104ee818585610a0b565b5060019392505050565b600033610506858285610b2f565b610511858585610ba9565b506001949350505050565b60008281526020819052604090206001015461053781610d82565b6105418383610d8c565b505050565b6001600160a01b03811633146105bb5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105c58282610dae565b5050565b6000336104ee8185856105dc8383610912565b6105e691906117a8565b610a0b565b6106157f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610815565b6106875760405162461bcd60e51b815260206004820152603960248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20756e70617573650000000000000060648201526084016105b2565b61068f610dd0565b565b6106bb7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610815565b6107265760405162461bcd60e51b815260206004820152603660248201527f45524332305072657365744d696e7465725061757365723a206d7573742068616044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b60648201526084016105b2565b6105c58282610e22565b61073a3382610f0d565b50565b610748823383610b2f565b6105c58282610f0d565b61077c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610815565b6107ee5760405162461bcd60e51b815260206004820152603760248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20706175736500000000000000000060648201526084016105b2565b61068f611067565b600082815260016020526040812061080e90836110a4565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60606006805461045d90611757565b6000338161085b8286610912565b9050838110156108bb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105b2565b6105118286868403610a0b565b6000336104ee818585610ba9565b6000818152600160205260408120610448906110b0565b60008281526020819052604090206001015461090881610d82565b6105418383610dae565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6109478282610815565b6105c5576000828152602081815260408083206001600160a01b03851684529091529020805460ff1916600117905561097d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600061080e836001600160a01b0384166110ba565b60006001600160e01b03198216637965db0b60e01b148061044857506301ffc9a760e01b6001600160e01b0319831614610448565b6001600160a01b038316610a6d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105b2565b6001600160a01b038216610ace5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105b2565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610b3b8484610912565b90506000198114610ba35781811015610b965760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105b2565b610ba38484848403610a0b565b50505050565b6001600160a01b038316610c0d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105b2565b6001600160a01b038216610c6f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105b2565b610c7a838383611109565b6001600160a01b03831660009081526002602052604090205481811015610cf25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105b2565b6001600160a01b03808516600090815260026020526040808220858503905591851681529081208054849290610d299084906117a8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d7591815260200190565b60405180910390a3610ba3565b61073a8133611114565b610d96828261093d565b600082815260016020526040902061054190826109c1565b610db88282611178565b600082815260016020526040902061054190826111dd565b610dd86111f2565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610e785760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105b2565b610e8460008383611109565b8060046000828254610e9691906117a8565b90915550506001600160a01b03821660009081526002602052604081208054839290610ec39084906117a8565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216610f6d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105b2565b610f7982600083611109565b6001600160a01b03821660009081526002602052604090205481811015610fed5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105b2565b6001600160a01b038316600090815260026020526040812083830390556004805484929061101c9084906117c0565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b61106f61123b565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610e053390565b600061080e8383611281565b6000610448825490565b600081815260018301602052604081205461110157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610448565b506000610448565b6105418383836112ab565b61111e8282610815565b6105c557611136816001600160a01b03166014611311565b611141836020611311565b6040516020016111529291906117d7565b60408051601f198184030181529082905262461bcd60e51b82526105b2916004016115f6565b6111828282610815565b156105c5576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600061080e836001600160a01b0384166114ad565b60075460ff1661068f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105b2565b60075460ff161561068f5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105b2565b60008260000182815481106112985761129861184c565b9060005260206000200154905092915050565b60075460ff16156105415760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b60648201526084016105b2565b60606000611320836002611862565b61132b9060026117a8565b67ffffffffffffffff81111561134357611343611881565b6040519080825280601f01601f19166020018201604052801561136d576020820181803683370190505b509050600360fc1b816000815181106113885761138861184c565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106113b7576113b761184c565b60200101906001600160f81b031916908160001a90535060006113db846002611862565b6113e69060016117a8565b90505b600181111561145e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061141a5761141a61184c565b1a60f81b8282815181106114305761143061184c565b60200101906001600160f81b031916908160001a90535060049490941c9361145781611897565b90506113e9565b50831561080e5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105b2565b600081815260018301602052604081205480156115965760006114d16001836117c0565b85549091506000906114e5906001906117c0565b905081811461154a5760008660000182815481106115055761150561184c565b90600052602060002001549050808760000184815481106115285761152861184c565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061155b5761155b6118ae565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610448565b6000915050610448565b6000602082840312156115b257600080fd5b81356001600160e01b03198116811461080e57600080fd5b60005b838110156115e55781810151838201526020016115cd565b83811115610ba35750506000910152565b60208152600082518060208401526116158160408501602087016115ca565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461164057600080fd5b919050565b6000806040838503121561165857600080fd5b61166183611629565b946020939093013593505050565b60008060006060848603121561168457600080fd5b61168d84611629565b925061169b60208501611629565b9150604084013590509250925092565b6000602082840312156116bd57600080fd5b5035919050565b600080604083850312156116d757600080fd5b823591506116e760208401611629565b90509250929050565b60006020828403121561170257600080fd5b61080e82611629565b6000806040838503121561171e57600080fd5b50508035926020909101359150565b6000806040838503121561174057600080fd5b61174983611629565b91506116e760208401611629565b600181811c9082168061176b57607f821691505b6020821081141561178c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156117bb576117bb611792565b500190565b6000828210156117d2576117d2611792565b500390565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161180f8160178501602088016115ca565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516118408160288401602088016115ca565b01602801949350505050565b634e487b7160e01b600052603260045260246000fd5b600081600019048311821515161561187c5761187c611792565b500290565b634e487b7160e01b600052604160045260246000fd5b6000816118a6576118a6611792565b506000190190565b634e487b7160e01b600052603160045260246000fdfea264697066735822122048c66a7206666f4e204e67398e5f8308e3aacac953e70d07d306c4815a38f61464736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/utils/SafeERC20":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"SafeERC20","sourceName":"contracts/token/ERC20/utils/SafeERC20.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204f774261ac5ce5eeb19b4ffd5970485c04b17a812de3732dd193699a8a25c44664736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204f774261ac5ce5eeb19b4ffd5970485c04b17a812de3732dd193699a8a25c44664736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/utils/TokenTimelock":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"TokenTimelock","sourceName":"contracts/token/ERC20/utils/TokenTimelock.sol","abi":[{"inputs":[{"internalType":"contract IERC20","name":"token_","type":"address"},{"internalType":"address","name":"beneficiary_","type":"address"},{"internalType":"uint256","name":"releaseTime_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"beneficiary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"releaseTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60e060405234801561001057600080fd5b506040516107c53803806107c583398101604081905261002f916100d0565b42811161009d5760405162461bcd60e51b815260206004820152603260248201527f546f6b656e54696d656c6f636b3a2072656c656173652074696d65206973206260448201527165666f72652063757272656e742074696d6560701b606482015260840160405180910390fd5b6001600160a01b03928316608052911660a05260c052610113565b6001600160a01b03811681146100cd57600080fd5b50565b6000806000606084860312156100e557600080fd5b83516100f0816100b8565b6020850151909350610101816100b8565b80925050604084015190509250925092565b60805160a05160c05161066b61015a60003960008181609f015260f0015260008181605301526102a701526000818160ca015281816101820152610285015261066b6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806338af3eed1461005157806386d1a69f14610090578063b91d40011461009a578063fc0c546a146100c8575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100986100ee565b005b6040517f00000000000000000000000000000000000000000000000000000000000000008152602001610087565b7f0000000000000000000000000000000000000000000000000000000000000000610073565b7f000000000000000000000000000000000000000000000000000000000000000042101561017e5760405162461bcd60e51b815260206004820152603260248201527f546f6b656e54696d656c6f636b3a2063757272656e742074696d65206973206260448201527165666f72652072656c656173652074696d6560701b60648201526084015b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000006040516370a0823160e01b81523060048201526001600160a01b0391909116906370a082319060240160206040518083038186803b1580156101e257600080fd5b505afa1580156101f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021a919061057b565b9050600081116102785760405162461bcd60e51b815260206004820152602360248201527f546f6b656e54696d656c6f636b3a206e6f20746f6b656e7320746f2072656c6560448201526261736560e81b6064820152608401610175565b6102cc6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836102cf565b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610321908490610326565b505050565b600061037b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166103f89092919063ffffffff16565b80519091501561032157808060200190518101906103999190610594565b6103215760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610175565b60606104078484600085610411565b90505b9392505050565b6060824710156104725760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610175565b6001600160a01b0385163b6104c95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610175565b600080866001600160a01b031685876040516104e591906105e6565b60006040518083038185875af1925050503d8060008114610522576040519150601f19603f3d011682016040523d82523d6000602084013e610527565b606091505b5091509150610537828286610542565b979650505050505050565b6060831561055157508161040a565b8251156105615782518084602001fd5b8160405162461bcd60e51b81526004016101759190610602565b60006020828403121561058d57600080fd5b5051919050565b6000602082840312156105a657600080fd5b8151801515811461040a57600080fd5b60005b838110156105d15781810151838201526020016105b9565b838111156105e0576000848401525b50505050565b600082516105f88184602087016105b6565b9190910192915050565b60208152600082518060208401526106218160408501602087016105b6565b601f01601f1916919091016040019291505056fea2646970667358221220d18aa9183c5f8c1ed5a5a53fb7572ed848fe028d77bcbedbde6a747ec3a4f42664736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806338af3eed1461005157806386d1a69f14610090578063b91d40011461009a578063fc0c546a146100c8575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100986100ee565b005b6040517f00000000000000000000000000000000000000000000000000000000000000008152602001610087565b7f0000000000000000000000000000000000000000000000000000000000000000610073565b7f000000000000000000000000000000000000000000000000000000000000000042101561017e5760405162461bcd60e51b815260206004820152603260248201527f546f6b656e54696d656c6f636b3a2063757272656e742074696d65206973206260448201527165666f72652072656c656173652074696d6560701b60648201526084015b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000006040516370a0823160e01b81523060048201526001600160a01b0391909116906370a082319060240160206040518083038186803b1580156101e257600080fd5b505afa1580156101f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021a919061057b565b9050600081116102785760405162461bcd60e51b815260206004820152602360248201527f546f6b656e54696d656c6f636b3a206e6f20746f6b656e7320746f2072656c6560448201526261736560e81b6064820152608401610175565b6102cc6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836102cf565b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610321908490610326565b505050565b600061037b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166103f89092919063ffffffff16565b80519091501561032157808060200190518101906103999190610594565b6103215760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610175565b60606104078484600085610411565b90505b9392505050565b6060824710156104725760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610175565b6001600160a01b0385163b6104c95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610175565b600080866001600160a01b031685876040516104e591906105e6565b60006040518083038185875af1925050503d8060008114610522576040519150601f19603f3d011682016040523d82523d6000602084013e610527565b606091505b5091509150610537828286610542565b979650505050505050565b6060831561055157508161040a565b8251156105615782518084602001fd5b8160405162461bcd60e51b81526004016101759190610602565b60006020828403121561058d57600080fd5b5051919050565b6000602082840312156105a657600080fd5b8151801515811461040a57600080fd5b60005b838110156105d15781810151838201526020016105b9565b838111156105e0576000848401525b50505050565b600082516105f88184602087016105b6565b9190910192915050565b60208152600082518060208401526106218160408501602087016105b6565b601f01601f1916919091016040019291505056fea2646970667358221220d18aa9183c5f8c1ed5a5a53fb7572ed848fe028d77bcbedbde6a747ec3a4f42664736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/ERC721":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721","sourceName":"contracts/token/ERC721/ERC721.sol","abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"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":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"},{"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":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"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":"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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"}],"bytecode":"0x60806040523480156200001157600080fd5b50604051620013d7380380620013d78339810160408190526200003491620001db565b81516200004990600090602085019062000068565b5080516200005f90600190602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b61114580620002926000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610c58565b610228565b60405190151581526020015b60405180910390f35b61010461027a565b6040516100f39190610ccd565b61012461011f366004610ce0565b61030c565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610d15565b610333565b005b61014f61015f366004610d3f565b61044e565b61014f610172366004610d3f565b61047f565b610124610185366004610ce0565b61049a565b61019d610198366004610d7b565b6104fa565b6040519081526020016100f3565b610104610580565b61014f6101c1366004610d96565b61058f565b61014f6101d4366004610de8565b61059e565b6101046101e7366004610ce0565b6105d6565b6100e76101fa366004610ec4565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061025957506001600160e01b03198216635b5e139f60e01b145b8061027457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461028990610ef7565b80601f01602080910402602001604051908101604052809291908181526020018280546102b590610ef7565b80156103025780601f106102d757610100808354040283529160200191610302565b820191906000526020600020905b8154815290600101906020018083116102e557829003601f168201915b5050505050905090565b60006103178261064a565b506000908152600460205260409020546001600160a01b031690565b600061033e8261049a565b9050806001600160a01b0316836001600160a01b031614156103b15760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103cd57506103cd81336101fa565b61043f5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016103a8565b61044983836106ac565b505050565b610458338261071a565b6104745760405162461bcd60e51b81526004016103a890610f32565b610449838383610799565b6104498383836040518060200160405280600081525061059e565b6000818152600260205260408120546001600160a01b0316806102745760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a8565b60006001600160a01b0382166105645760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103a8565b506001600160a01b031660009081526003602052604090205490565b60606001805461028990610ef7565b61059a338383610935565b5050565b6105a8338361071a565b6105c45760405162461bcd60e51b81526004016103a890610f32565b6105d084848484610a04565b50505050565b60606105e18261064a565b60006105f860408051602081019091526000815290565b905060008151116106185760405180602001604052806000815250610643565b8061062284610a37565b604051602001610633929190610f80565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166106a95760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a8565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e18261049a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806107268361049a565b9050806001600160a01b0316846001600160a01b0316148061076d57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806107915750836001600160a01b03166107868461030c565b6001600160a01b0316145b949350505050565b826001600160a01b03166107ac8261049a565b6001600160a01b0316146108105760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103a8565b6001600160a01b0382166108725760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103a8565b61087d6000826106ac565b6001600160a01b03831660009081526003602052604081208054600192906108a6908490610fc5565b90915550506001600160a01b03821660009081526003602052604081208054600192906108d4908490610fdc565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b031614156109975760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103a8565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610a0f848484610799565b610a1b84848484610b35565b6105d05760405162461bcd60e51b81526004016103a890610ff4565b606081610a5b5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610a855780610a6f81611046565b9150610a7e9050600a83611077565b9150610a5f565b60008167ffffffffffffffff811115610aa057610aa0610dd2565b6040519080825280601f01601f191660200182016040528015610aca576020820181803683370190505b5090505b841561079157610adf600183610fc5565b9150610aec600a8661108b565b610af7906030610fdc565b60f81b818381518110610b0c57610b0c61109f565b60200101906001600160f81b031916908160001a905350610b2e600a86611077565b9450610ace565b60006001600160a01b0384163b15610c3757604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610b799033908990889088906004016110b5565b602060405180830381600087803b158015610b9357600080fd5b505af1925050508015610bc3575060408051601f3d908101601f19168201909252610bc0918101906110f2565b60015b610c1d573d808015610bf1576040519150601f19603f3d011682016040523d82523d6000602084013e610bf6565b606091505b508051610c155760405162461bcd60e51b81526004016103a890610ff4565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610791565b506001949350505050565b6001600160e01b0319811681146106a957600080fd5b600060208284031215610c6a57600080fd5b813561064381610c42565b60005b83811015610c90578181015183820152602001610c78565b838111156105d05750506000910152565b60008151808452610cb9816020860160208601610c75565b601f01601f19169290920160200192915050565b6020815260006106436020830184610ca1565b600060208284031215610cf257600080fd5b5035919050565b80356001600160a01b0381168114610d1057600080fd5b919050565b60008060408385031215610d2857600080fd5b610d3183610cf9565b946020939093013593505050565b600080600060608486031215610d5457600080fd5b610d5d84610cf9565b9250610d6b60208501610cf9565b9150604084013590509250925092565b600060208284031215610d8d57600080fd5b61064382610cf9565b60008060408385031215610da957600080fd5b610db283610cf9565b915060208301358015158114610dc757600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610dfe57600080fd5b610e0785610cf9565b9350610e1560208601610cf9565b925060408501359150606085013567ffffffffffffffff80821115610e3957600080fd5b818701915087601f830112610e4d57600080fd5b813581811115610e5f57610e5f610dd2565b604051601f8201601f19908116603f01168101908382118183101715610e8757610e87610dd2565b816040528281528a6020848701011115610ea057600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ed757600080fd5b610ee083610cf9565b9150610eee60208401610cf9565b90509250929050565b600181811c90821680610f0b57607f821691505b60208210811415610f2c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b60008351610f92818460208801610c75565b835190830190610fa6818360208801610c75565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b600082821015610fd757610fd7610faf565b500390565b60008219821115610fef57610fef610faf565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600060001982141561105a5761105a610faf565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261108657611086611061565b500490565b60008261109a5761109a611061565b500690565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110e890830184610ca1565b9695505050505050565b60006020828403121561110457600080fd5b815161064381610c4256fea2646970667358221220dbaf7531c6ab6358f8bfc6705e38c89d81c50d229dd1bf325d98b7120ec9a03164736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610c58565b610228565b60405190151581526020015b60405180910390f35b61010461027a565b6040516100f39190610ccd565b61012461011f366004610ce0565b61030c565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610d15565b610333565b005b61014f61015f366004610d3f565b61044e565b61014f610172366004610d3f565b61047f565b610124610185366004610ce0565b61049a565b61019d610198366004610d7b565b6104fa565b6040519081526020016100f3565b610104610580565b61014f6101c1366004610d96565b61058f565b61014f6101d4366004610de8565b61059e565b6101046101e7366004610ce0565b6105d6565b6100e76101fa366004610ec4565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061025957506001600160e01b03198216635b5e139f60e01b145b8061027457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461028990610ef7565b80601f01602080910402602001604051908101604052809291908181526020018280546102b590610ef7565b80156103025780601f106102d757610100808354040283529160200191610302565b820191906000526020600020905b8154815290600101906020018083116102e557829003601f168201915b5050505050905090565b60006103178261064a565b506000908152600460205260409020546001600160a01b031690565b600061033e8261049a565b9050806001600160a01b0316836001600160a01b031614156103b15760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103cd57506103cd81336101fa565b61043f5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016103a8565b61044983836106ac565b505050565b610458338261071a565b6104745760405162461bcd60e51b81526004016103a890610f32565b610449838383610799565b6104498383836040518060200160405280600081525061059e565b6000818152600260205260408120546001600160a01b0316806102745760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a8565b60006001600160a01b0382166105645760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103a8565b506001600160a01b031660009081526003602052604090205490565b60606001805461028990610ef7565b61059a338383610935565b5050565b6105a8338361071a565b6105c45760405162461bcd60e51b81526004016103a890610f32565b6105d084848484610a04565b50505050565b60606105e18261064a565b60006105f860408051602081019091526000815290565b905060008151116106185760405180602001604052806000815250610643565b8061062284610a37565b604051602001610633929190610f80565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166106a95760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a8565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e18261049a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806107268361049a565b9050806001600160a01b0316846001600160a01b0316148061076d57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806107915750836001600160a01b03166107868461030c565b6001600160a01b0316145b949350505050565b826001600160a01b03166107ac8261049a565b6001600160a01b0316146108105760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103a8565b6001600160a01b0382166108725760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103a8565b61087d6000826106ac565b6001600160a01b03831660009081526003602052604081208054600192906108a6908490610fc5565b90915550506001600160a01b03821660009081526003602052604081208054600192906108d4908490610fdc565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b031614156109975760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103a8565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610a0f848484610799565b610a1b84848484610b35565b6105d05760405162461bcd60e51b81526004016103a890610ff4565b606081610a5b5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610a855780610a6f81611046565b9150610a7e9050600a83611077565b9150610a5f565b60008167ffffffffffffffff811115610aa057610aa0610dd2565b6040519080825280601f01601f191660200182016040528015610aca576020820181803683370190505b5090505b841561079157610adf600183610fc5565b9150610aec600a8661108b565b610af7906030610fdc565b60f81b818381518110610b0c57610b0c61109f565b60200101906001600160f81b031916908160001a905350610b2e600a86611077565b9450610ace565b60006001600160a01b0384163b15610c3757604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610b799033908990889088906004016110b5565b602060405180830381600087803b158015610b9357600080fd5b505af1925050508015610bc3575060408051601f3d908101601f19168201909252610bc0918101906110f2565b60015b610c1d573d808015610bf1576040519150601f19603f3d011682016040523d82523d6000602084013e610bf6565b606091505b508051610c155760405162461bcd60e51b81526004016103a890610ff4565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610791565b506001949350505050565b6001600160e01b0319811681146106a957600080fd5b600060208284031215610c6a57600080fd5b813561064381610c42565b60005b83811015610c90578181015183820152602001610c78565b838111156105d05750506000910152565b60008151808452610cb9816020860160208601610c75565b601f01601f19169290920160200192915050565b6020815260006106436020830184610ca1565b600060208284031215610cf257600080fd5b5035919050565b80356001600160a01b0381168114610d1057600080fd5b919050565b60008060408385031215610d2857600080fd5b610d3183610cf9565b946020939093013593505050565b600080600060608486031215610d5457600080fd5b610d5d84610cf9565b9250610d6b60208501610cf9565b9150604084013590509250925092565b600060208284031215610d8d57600080fd5b61064382610cf9565b60008060408385031215610da957600080fd5b610db283610cf9565b915060208301358015158114610dc757600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610dfe57600080fd5b610e0785610cf9565b9350610e1560208601610cf9565b925060408501359150606085013567ffffffffffffffff80821115610e3957600080fd5b818701915087601f830112610e4d57600080fd5b813581811115610e5f57610e5f610dd2565b604051601f8201601f19908116603f01168101908382118183101715610e8757610e87610dd2565b816040528281528a6020848701011115610ea057600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ed757600080fd5b610ee083610cf9565b9150610eee60208401610cf9565b90509250929050565b600181811c90821680610f0b57607f821691505b60208210811415610f2c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b60008351610f92818460208801610c75565b835190830190610fa6818360208801610c75565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b600082821015610fd757610fd7610faf565b500390565b60008219821115610fef57610fef610faf565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600060001982141561105a5761105a610faf565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261108657611086611061565b500490565b60008261109a5761109a611061565b500690565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110e890830184610ca1565b9695505050505050565b60006020828403121561110457600080fd5b815161064381610c4256fea2646970667358221220dbaf7531c6ab6358f8bfc6705e38c89d81c50d229dd1bf325d98b7120ec9a03164736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/ERC721Votes":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721Votes","sourceName":"contracts/token/ERC721/extensions/draft-ERC721Votes.sol","abi":[{"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":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","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"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","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":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"blockNumber","type":"uint256"}],"name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"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":"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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/ERC721Burnable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721Burnable","sourceName":"contracts/token/ERC721/extensions/ERC721Burnable.sol","abi":[{"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":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"},{"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":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"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":"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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/ERC721Enumerable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721Enumerable","sourceName":"contracts/token/ERC721/extensions/ERC721Enumerable.sol","abi":[{"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":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"},{"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":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"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":"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":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/ERC721Pausable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721Pausable","sourceName":"contracts/token/ERC721/extensions/ERC721Pausable.sol","abi":[{"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":"address","name":"account","type":"address"}],"name":"Paused","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":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"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":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/ERC721Royalty":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721Royalty","sourceName":"contracts/token/ERC721/extensions/ERC721Royalty.sol","abi":[{"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":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"},{"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":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/ERC721URIStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721URIStorage","sourceName":"contracts/token/ERC721/extensions/ERC721URIStorage.sol","abi":[{"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":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"},{"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":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"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":"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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/IERC721Enumerable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721Enumerable","sourceName":"contracts/token/ERC721/extensions/IERC721Enumerable.sol","abi":[{"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":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"},{"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":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"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":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/IERC721Metadata":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721Metadata","sourceName":"contracts/token/ERC721/extensions/IERC721Metadata.sol","abi":[{"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":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"},{"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":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","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":"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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/IERC721":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721","sourceName":"contracts/token/ERC721/IERC721.sol","abi":[{"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":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"},{"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":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"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":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/IERC721Receiver":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721Receiver","sourceName":"contracts/token/ERC721/IERC721Receiver.sol","abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/presets/ERC721PresetMinterPauserAutoId":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721PresetMinterPauserAutoId","sourceName":"contracts/token/ERC721/presets/ERC721PresetMinterPauserAutoId.sol","abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"baseTokenURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","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":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"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":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"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":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162002929380380620029298339810160408190526200003491620003cc565b8251839083906200004d90600290602085019062000259565b5080516200006390600390602084019062000259565b5050600c805460ff191690555080516200008590600e90602084019062000259565b5062000093600033620000f4565b620000bf7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000f4565b620000eb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620000f4565b5050506200049a565b62000100828262000104565b5050565b6200011b82826200014760201b62000ced1760201c565b60008281526001602090815260409091206200014291839062000d71620001e7821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000100576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001a33390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001fe836001600160a01b03841662000207565b90505b92915050565b6000818152600183016020526040812054620002505750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000201565b50600062000201565b82805462000267906200045d565b90600052602060002090601f0160209004810192826200028b5760008555620002d6565b82601f10620002a657805160ff1916838001178555620002d6565b82800160010185558215620002d6579182015b82811115620002d6578251825591602001919060010190620002b9565b50620002e4929150620002e8565b5090565b5b80821115620002e45760008155600101620002e9565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200032757600080fd5b81516001600160401b0380821115620003445762000344620002ff565b604051601f8301601f19908116603f011681019082821181831017156200036f576200036f620002ff565b816040528381526020925086838588010111156200038c57600080fd5b600091505b83821015620003b0578582018301518183018401529082019062000391565b83821115620003c25760008385830101525b9695505050505050565b600080600060608486031215620003e257600080fd5b83516001600160401b0380821115620003fa57600080fd5b620004088783880162000315565b945060208601519150808211156200041f57600080fd5b6200042d8783880162000315565b935060408601519150808211156200044457600080fd5b50620004538682870162000315565b9150509250925092565b600181811c908216806200047257607f821691505b602082108114156200049457634e487b7160e01b600052602260045260246000fd5b50919050565b61247f80620004aa6000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80636352211e1161010f578063a22cb465116100a2578063d539139311610071578063d5391393146103f7578063d547741f1461041e578063e63ab1e914610431578063e985e9c51461045857600080fd5b8063a22cb465146103ab578063b88d4fde146103be578063c87b56dd146103d1578063ca15c873146103e457600080fd5b80639010d07c116100de5780639010d07c1461037557806391d148541461038857806395d89b411461039b578063a217fddf146103a357600080fd5b80636352211e146103345780636a6278421461034757806370a082311461035a5780638456cb591461036d57600080fd5b80632f2ff15d1161018757806342842e0e1161015657806342842e0e146102f057806342966c68146103035780634f6ccce7146103165780635c975abb1461032957600080fd5b80632f2ff15d146102af5780632f745c59146102c257806336568abe146102d55780633f4ba83a146102e857600080fd5b8063095ea7b3116101c3578063095ea7b31461025257806318160ddd1461026757806323b872dd14610279578063248a9ca31461028c57600080fd5b806301ffc9a7146101ea57806306fdde0314610212578063081812fc14610227575b600080fd5b6101fd6101f8366004611e8c565b610494565b60405190151581526020015b60405180910390f35b61021a6104a5565b6040516102099190611f01565b61023a610235366004611f14565b610537565b6040516001600160a01b039091168152602001610209565b610265610260366004611f49565b61055e565b005b600a545b604051908152602001610209565b610265610287366004611f73565b610679565b61026b61029a366004611f14565b60009081526020819052604090206001015490565b6102656102bd366004611faf565b6106ab565b61026b6102d0366004611f49565b6106d0565b6102656102e3366004611faf565b610766565b6102656107e4565b6102656102fe366004611f73565b61088c565b610265610311366004611f14565b6108a7565b61026b610324366004611f14565b6108d8565b600c5460ff166101fd565b61023a610342366004611f14565b61096b565b610265610355366004611fdb565b6109cb565b61026b610368366004611fdb565b610a87565b610265610b0d565b61023a610383366004611ff6565b610bb1565b6101fd610396366004611faf565b610bd0565b61021a610bf9565b61026b600081565b6102656103b9366004612018565b610c08565b6102656103cc36600461206a565b610c13565b61021a6103df366004611f14565b610c4b565b61026b6103f2366004611f14565b610cb1565b61026b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61026561042c366004611faf565b610cc8565b61026b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6101fd610466366004612146565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b600061049f82610d86565b92915050565b6060600280546104b490612170565b80601f01602080910402602001604051908101604052809291908181526020018280546104e090612170565b801561052d5780601f106105025761010080835404028352916020019161052d565b820191906000526020600020905b81548152906001019060200180831161051057829003601f168201915b5050505050905090565b600061054282610dab565b506000908152600660205260409020546001600160a01b031690565b60006105698261096b565b9050806001600160a01b0316836001600160a01b031614156105dc5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806105f857506105f88133610466565b61066a5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016105d3565b6106748383610e0a565b505050565b610684335b82610e78565b6106a05760405162461bcd60e51b81526004016105d3906121ab565b610674838383610ef7565b6000828152602081905260409020600101546106c68161109e565b61067483836110a8565b60006106db83610a87565b821061073d5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016105d3565b506001600160a01b03919091166000908152600860209081526040808320938352929052205490565b6001600160a01b03811633146107d65760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016105d3565b6107e082826110ca565b5050565b61080e7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610bd0565b610882576040805162461bcd60e51b81526020600482015260248101919091527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f20756e706175736560648201526084016105d3565b61088a6110ec565b565b61067483838360405180602001604052806000815250610c13565b6108b03361067e565b6108cc5760405162461bcd60e51b81526004016105d3906121ab565b6108d58161113e565b50565b60006108e3600a5490565b82106109465760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016105d3565b600a8281548110610959576109596121f9565b90600052602060002001549050919050565b6000818152600460205260408120546001600160a01b03168061049f5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016105d3565b6109f57f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610bd0565b610a675760405162461bcd60e51b815260206004820152603d60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d7573742068617665206d696e74657220726f6c6520746f206d696e7400000060648201526084016105d3565b610a7981610a74600d5490565b6111e5565b6108d5600d80546001019055565b60006001600160a01b038216610af15760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016105d3565b506001600160a01b031660009081526005602052604090205490565b610b377f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610bd0565b610ba95760405162461bcd60e51b815260206004820152603e60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f207061757365000060648201526084016105d3565b61088a611333565b6000828152600160205260408120610bc99083611370565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600380546104b490612170565b6107e033838361137c565b610c1d3383610e78565b610c395760405162461bcd60e51b81526004016105d3906121ab565b610c458484848461144b565b50505050565b6060610c5682610dab565b6000610c6061147e565b90506000815111610c805760405180602001604052806000815250610bc9565b80610c8a8461148d565b604051602001610c9b92919061220f565b6040516020818303038152906040529392505050565b600081815260016020526040812061049f9061158b565b600082815260208190526040902060010154610ce38161109e565b61067483836110ca565b610cf78282610bd0565b6107e0576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610d2d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610bc9836001600160a01b038416611595565b60006001600160e01b0319821663780e9d6360e01b148061049f575061049f826115e4565b6000818152600460205260409020546001600160a01b03166108d55760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016105d3565b600081815260066020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610e3f8261096b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610e848361096b565b9050806001600160a01b0316846001600160a01b03161480610ecb57506001600160a01b0380821660009081526007602090815260408083209388168352929052205460ff165b80610eef5750836001600160a01b0316610ee484610537565b6001600160a01b0316145b949350505050565b826001600160a01b0316610f0a8261096b565b6001600160a01b031614610f6e5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016105d3565b6001600160a01b038216610fd05760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016105d3565b610fdb838383611624565b610fe6600082610e0a565b6001600160a01b038316600090815260056020526040812080546001929061100f908490612254565b90915550506001600160a01b038216600090815260056020526040812080546001929061103d90849061226b565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108d5813361162f565b6110b28282610ced565b60008281526001602052604090206106749082610d71565b6110d48282611693565b600082815260016020526040902061067490826116f8565b6110f461170d565b600c805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60006111498261096b565b905061115781600084611624565b611162600083610e0a565b6001600160a01b038116600090815260056020526040812080546001929061118b908490612254565b909155505060008281526004602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6001600160a01b03821661123b5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016105d3565b6000818152600460205260409020546001600160a01b0316156112a05760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105d3565b6112ac60008383611624565b6001600160a01b03821660009081526005602052604081208054600192906112d590849061226b565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b61133b611756565b600c805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586111213390565b6000610bc9838361179c565b816001600160a01b0316836001600160a01b031614156113de5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016105d3565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611456848484610ef7565b611462848484846117c6565b610c455760405162461bcd60e51b81526004016105d390612283565b6060600e80546104b490612170565b6060816114b15750506040805180820190915260018152600360fc1b602082015290565b8160005b81156114db57806114c5816122d5565b91506114d49050600a83612306565b91506114b5565b60008167ffffffffffffffff8111156114f6576114f6612054565b6040519080825280601f01601f191660200182016040528015611520576020820181803683370190505b5090505b8415610eef57611535600183612254565b9150611542600a8661231a565b61154d90603061226b565b60f81b818381518110611562576115626121f9565b60200101906001600160f81b031916908160001a905350611584600a86612306565b9450611524565b600061049f825490565b60008181526001830160205260408120546115dc5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561049f565b50600061049f565b60006001600160e01b031982166380ac58cd60e01b148061161557506001600160e01b03198216635b5e139f60e01b145b8061049f575061049f826118d3565b6106748383836118f8565b6116398282610bd0565b6107e057611651816001600160a01b0316601461196a565b61165c83602061196a565b60405160200161166d92919061232e565b60408051601f198184030181529082905262461bcd60e51b82526105d391600401611f01565b61169d8282610bd0565b156107e0576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610bc9836001600160a01b038416611b06565b600c5460ff1661088a5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105d3565b600c5460ff161561088a5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105d3565b60008260000182815481106117b3576117b36121f9565b9060005260206000200154905092915050565b60006001600160a01b0384163b156118c857604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061180a9033908990889088906004016123a3565b602060405180830381600087803b15801561182457600080fd5b505af1925050508015611854575060408051601f3d908101601f19168201909252611851918101906123e0565b60015b6118ae573d808015611882576040519150601f19603f3d011682016040523d82523d6000602084013e611887565b606091505b5080516118a65760405162461bcd60e51b81526004016105d390612283565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610eef565b506001949350505050565b60006001600160e01b03198216635a05180f60e01b148061049f575061049f82611bf9565b611903838383611c2e565b600c5460ff16156106745760405162461bcd60e51b815260206004820152602b60248201527f4552433732315061757361626c653a20746f6b656e207472616e73666572207760448201526a1a1a5b19481c185d5cd95960aa1b60648201526084016105d3565b606060006119798360026123fd565b61198490600261226b565b67ffffffffffffffff81111561199c5761199c612054565b6040519080825280601f01601f1916602001820160405280156119c6576020820181803683370190505b509050600360fc1b816000815181106119e1576119e16121f9565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611a1057611a106121f9565b60200101906001600160f81b031916908160001a9053506000611a348460026123fd565b611a3f90600161226b565b90505b6001811115611ab7576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611a7357611a736121f9565b1a60f81b828281518110611a8957611a896121f9565b60200101906001600160f81b031916908160001a90535060049490941c93611ab08161241c565b9050611a42565b508315610bc95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105d3565b60008181526001830160205260408120548015611bef576000611b2a600183612254565b8554909150600090611b3e90600190612254565b9050818114611ba3576000866000018281548110611b5e57611b5e6121f9565b9060005260206000200154905080876000018481548110611b8157611b816121f9565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611bb457611bb4612433565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061049f565b600091505061049f565b60006001600160e01b03198216637965db0b60e01b148061049f57506301ffc9a760e01b6001600160e01b031983161461049f565b6001600160a01b038316611c8957611c8481600a80546000838152600b60205260408120829055600182018355919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80155565b611cac565b816001600160a01b0316836001600160a01b031614611cac57611cac8382611ce6565b6001600160a01b038216611cc35761067481611d83565b826001600160a01b0316826001600160a01b031614610674576106748282611e32565b60006001611cf384610a87565b611cfd9190612254565b600083815260096020526040902054909150808214611d50576001600160a01b03841660009081526008602090815260408083208584528252808320548484528184208190558352600990915290208190555b5060009182526009602090815260408084208490556001600160a01b039094168352600881528383209183525290812055565b600a54600090611d9590600190612254565b6000838152600b6020526040812054600a8054939450909284908110611dbd57611dbd6121f9565b9060005260206000200154905080600a8381548110611dde57611dde6121f9565b6000918252602080832090910192909255828152600b9091526040808220849055858252812055600a805480611e1657611e16612433565b6001900381819060005260206000200160009055905550505050565b6000611e3d83610a87565b6001600160a01b039093166000908152600860209081526040808320868452825280832085905593825260099052919091209190915550565b6001600160e01b0319811681146108d557600080fd5b600060208284031215611e9e57600080fd5b8135610bc981611e76565b60005b83811015611ec4578181015183820152602001611eac565b83811115610c455750506000910152565b60008151808452611eed816020860160208601611ea9565b601f01601f19169290920160200192915050565b602081526000610bc96020830184611ed5565b600060208284031215611f2657600080fd5b5035919050565b80356001600160a01b0381168114611f4457600080fd5b919050565b60008060408385031215611f5c57600080fd5b611f6583611f2d565b946020939093013593505050565b600080600060608486031215611f8857600080fd5b611f9184611f2d565b9250611f9f60208501611f2d565b9150604084013590509250925092565b60008060408385031215611fc257600080fd5b82359150611fd260208401611f2d565b90509250929050565b600060208284031215611fed57600080fd5b610bc982611f2d565b6000806040838503121561200957600080fd5b50508035926020909101359150565b6000806040838503121561202b57600080fd5b61203483611f2d565b91506020830135801515811461204957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561208057600080fd5b61208985611f2d565b935061209760208601611f2d565b925060408501359150606085013567ffffffffffffffff808211156120bb57600080fd5b818701915087601f8301126120cf57600080fd5b8135818111156120e1576120e1612054565b604051601f8201601f19908116603f0116810190838211818310171561210957612109612054565b816040528281528a602084870101111561212257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561215957600080fd5b61216283611f2d565b9150611fd260208401611f2d565b600181811c9082168061218457607f821691505b602082108114156121a557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008351612221818460208801611ea9565b835190830190612235818360208801611ea9565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b6000828210156122665761226661223e565b500390565b6000821982111561227e5761227e61223e565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60006000198214156122e9576122e961223e565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082612315576123156122f0565b500490565b600082612329576123296122f0565b500690565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612366816017850160208801611ea9565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612397816028840160208801611ea9565b01602801949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906123d690830184611ed5565b9695505050505050565b6000602082840312156123f257600080fd5b8151610bc981611e76565b60008160001904831182151516156124175761241761223e565b500290565b60008161242b5761242b61223e565b506000190190565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220904fdcec717bb77b92b7a0770155545f37faf7149eef4539d04876c24632417764736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80636352211e1161010f578063a22cb465116100a2578063d539139311610071578063d5391393146103f7578063d547741f1461041e578063e63ab1e914610431578063e985e9c51461045857600080fd5b8063a22cb465146103ab578063b88d4fde146103be578063c87b56dd146103d1578063ca15c873146103e457600080fd5b80639010d07c116100de5780639010d07c1461037557806391d148541461038857806395d89b411461039b578063a217fddf146103a357600080fd5b80636352211e146103345780636a6278421461034757806370a082311461035a5780638456cb591461036d57600080fd5b80632f2ff15d1161018757806342842e0e1161015657806342842e0e146102f057806342966c68146103035780634f6ccce7146103165780635c975abb1461032957600080fd5b80632f2ff15d146102af5780632f745c59146102c257806336568abe146102d55780633f4ba83a146102e857600080fd5b8063095ea7b3116101c3578063095ea7b31461025257806318160ddd1461026757806323b872dd14610279578063248a9ca31461028c57600080fd5b806301ffc9a7146101ea57806306fdde0314610212578063081812fc14610227575b600080fd5b6101fd6101f8366004611e8c565b610494565b60405190151581526020015b60405180910390f35b61021a6104a5565b6040516102099190611f01565b61023a610235366004611f14565b610537565b6040516001600160a01b039091168152602001610209565b610265610260366004611f49565b61055e565b005b600a545b604051908152602001610209565b610265610287366004611f73565b610679565b61026b61029a366004611f14565b60009081526020819052604090206001015490565b6102656102bd366004611faf565b6106ab565b61026b6102d0366004611f49565b6106d0565b6102656102e3366004611faf565b610766565b6102656107e4565b6102656102fe366004611f73565b61088c565b610265610311366004611f14565b6108a7565b61026b610324366004611f14565b6108d8565b600c5460ff166101fd565b61023a610342366004611f14565b61096b565b610265610355366004611fdb565b6109cb565b61026b610368366004611fdb565b610a87565b610265610b0d565b61023a610383366004611ff6565b610bb1565b6101fd610396366004611faf565b610bd0565b61021a610bf9565b61026b600081565b6102656103b9366004612018565b610c08565b6102656103cc36600461206a565b610c13565b61021a6103df366004611f14565b610c4b565b61026b6103f2366004611f14565b610cb1565b61026b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61026561042c366004611faf565b610cc8565b61026b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6101fd610466366004612146565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b600061049f82610d86565b92915050565b6060600280546104b490612170565b80601f01602080910402602001604051908101604052809291908181526020018280546104e090612170565b801561052d5780601f106105025761010080835404028352916020019161052d565b820191906000526020600020905b81548152906001019060200180831161051057829003601f168201915b5050505050905090565b600061054282610dab565b506000908152600660205260409020546001600160a01b031690565b60006105698261096b565b9050806001600160a01b0316836001600160a01b031614156105dc5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806105f857506105f88133610466565b61066a5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016105d3565b6106748383610e0a565b505050565b610684335b82610e78565b6106a05760405162461bcd60e51b81526004016105d3906121ab565b610674838383610ef7565b6000828152602081905260409020600101546106c68161109e565b61067483836110a8565b60006106db83610a87565b821061073d5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016105d3565b506001600160a01b03919091166000908152600860209081526040808320938352929052205490565b6001600160a01b03811633146107d65760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016105d3565b6107e082826110ca565b5050565b61080e7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610bd0565b610882576040805162461bcd60e51b81526020600482015260248101919091527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f20756e706175736560648201526084016105d3565b61088a6110ec565b565b61067483838360405180602001604052806000815250610c13565b6108b03361067e565b6108cc5760405162461bcd60e51b81526004016105d3906121ab565b6108d58161113e565b50565b60006108e3600a5490565b82106109465760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016105d3565b600a8281548110610959576109596121f9565b90600052602060002001549050919050565b6000818152600460205260408120546001600160a01b03168061049f5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016105d3565b6109f57f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610bd0565b610a675760405162461bcd60e51b815260206004820152603d60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d7573742068617665206d696e74657220726f6c6520746f206d696e7400000060648201526084016105d3565b610a7981610a74600d5490565b6111e5565b6108d5600d80546001019055565b60006001600160a01b038216610af15760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016105d3565b506001600160a01b031660009081526005602052604090205490565b610b377f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610bd0565b610ba95760405162461bcd60e51b815260206004820152603e60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f207061757365000060648201526084016105d3565b61088a611333565b6000828152600160205260408120610bc99083611370565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600380546104b490612170565b6107e033838361137c565b610c1d3383610e78565b610c395760405162461bcd60e51b81526004016105d3906121ab565b610c458484848461144b565b50505050565b6060610c5682610dab565b6000610c6061147e565b90506000815111610c805760405180602001604052806000815250610bc9565b80610c8a8461148d565b604051602001610c9b92919061220f565b6040516020818303038152906040529392505050565b600081815260016020526040812061049f9061158b565b600082815260208190526040902060010154610ce38161109e565b61067483836110ca565b610cf78282610bd0565b6107e0576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610d2d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610bc9836001600160a01b038416611595565b60006001600160e01b0319821663780e9d6360e01b148061049f575061049f826115e4565b6000818152600460205260409020546001600160a01b03166108d55760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016105d3565b600081815260066020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610e3f8261096b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610e848361096b565b9050806001600160a01b0316846001600160a01b03161480610ecb57506001600160a01b0380821660009081526007602090815260408083209388168352929052205460ff165b80610eef5750836001600160a01b0316610ee484610537565b6001600160a01b0316145b949350505050565b826001600160a01b0316610f0a8261096b565b6001600160a01b031614610f6e5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016105d3565b6001600160a01b038216610fd05760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016105d3565b610fdb838383611624565b610fe6600082610e0a565b6001600160a01b038316600090815260056020526040812080546001929061100f908490612254565b90915550506001600160a01b038216600090815260056020526040812080546001929061103d90849061226b565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108d5813361162f565b6110b28282610ced565b60008281526001602052604090206106749082610d71565b6110d48282611693565b600082815260016020526040902061067490826116f8565b6110f461170d565b600c805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60006111498261096b565b905061115781600084611624565b611162600083610e0a565b6001600160a01b038116600090815260056020526040812080546001929061118b908490612254565b909155505060008281526004602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6001600160a01b03821661123b5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016105d3565b6000818152600460205260409020546001600160a01b0316156112a05760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105d3565b6112ac60008383611624565b6001600160a01b03821660009081526005602052604081208054600192906112d590849061226b565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b61133b611756565b600c805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586111213390565b6000610bc9838361179c565b816001600160a01b0316836001600160a01b031614156113de5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016105d3565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611456848484610ef7565b611462848484846117c6565b610c455760405162461bcd60e51b81526004016105d390612283565b6060600e80546104b490612170565b6060816114b15750506040805180820190915260018152600360fc1b602082015290565b8160005b81156114db57806114c5816122d5565b91506114d49050600a83612306565b91506114b5565b60008167ffffffffffffffff8111156114f6576114f6612054565b6040519080825280601f01601f191660200182016040528015611520576020820181803683370190505b5090505b8415610eef57611535600183612254565b9150611542600a8661231a565b61154d90603061226b565b60f81b818381518110611562576115626121f9565b60200101906001600160f81b031916908160001a905350611584600a86612306565b9450611524565b600061049f825490565b60008181526001830160205260408120546115dc5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561049f565b50600061049f565b60006001600160e01b031982166380ac58cd60e01b148061161557506001600160e01b03198216635b5e139f60e01b145b8061049f575061049f826118d3565b6106748383836118f8565b6116398282610bd0565b6107e057611651816001600160a01b0316601461196a565b61165c83602061196a565b60405160200161166d92919061232e565b60408051601f198184030181529082905262461bcd60e51b82526105d391600401611f01565b61169d8282610bd0565b156107e0576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610bc9836001600160a01b038416611b06565b600c5460ff1661088a5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105d3565b600c5460ff161561088a5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105d3565b60008260000182815481106117b3576117b36121f9565b9060005260206000200154905092915050565b60006001600160a01b0384163b156118c857604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061180a9033908990889088906004016123a3565b602060405180830381600087803b15801561182457600080fd5b505af1925050508015611854575060408051601f3d908101601f19168201909252611851918101906123e0565b60015b6118ae573d808015611882576040519150601f19603f3d011682016040523d82523d6000602084013e611887565b606091505b5080516118a65760405162461bcd60e51b81526004016105d390612283565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610eef565b506001949350505050565b60006001600160e01b03198216635a05180f60e01b148061049f575061049f82611bf9565b611903838383611c2e565b600c5460ff16156106745760405162461bcd60e51b815260206004820152602b60248201527f4552433732315061757361626c653a20746f6b656e207472616e73666572207760448201526a1a1a5b19481c185d5cd95960aa1b60648201526084016105d3565b606060006119798360026123fd565b61198490600261226b565b67ffffffffffffffff81111561199c5761199c612054565b6040519080825280601f01601f1916602001820160405280156119c6576020820181803683370190505b509050600360fc1b816000815181106119e1576119e16121f9565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611a1057611a106121f9565b60200101906001600160f81b031916908160001a9053506000611a348460026123fd565b611a3f90600161226b565b90505b6001811115611ab7576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611a7357611a736121f9565b1a60f81b828281518110611a8957611a896121f9565b60200101906001600160f81b031916908160001a90535060049490941c93611ab08161241c565b9050611a42565b508315610bc95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105d3565b60008181526001830160205260408120548015611bef576000611b2a600183612254565b8554909150600090611b3e90600190612254565b9050818114611ba3576000866000018281548110611b5e57611b5e6121f9565b9060005260206000200154905080876000018481548110611b8157611b816121f9565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611bb457611bb4612433565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061049f565b600091505061049f565b60006001600160e01b03198216637965db0b60e01b148061049f57506301ffc9a760e01b6001600160e01b031983161461049f565b6001600160a01b038316611c8957611c8481600a80546000838152600b60205260408120829055600182018355919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80155565b611cac565b816001600160a01b0316836001600160a01b031614611cac57611cac8382611ce6565b6001600160a01b038216611cc35761067481611d83565b826001600160a01b0316826001600160a01b031614610674576106748282611e32565b60006001611cf384610a87565b611cfd9190612254565b600083815260096020526040902054909150808214611d50576001600160a01b03841660009081526008602090815260408083208584528252808320548484528184208190558352600990915290208190555b5060009182526009602090815260408084208490556001600160a01b039094168352600881528383209183525290812055565b600a54600090611d9590600190612254565b6000838152600b6020526040812054600a8054939450909284908110611dbd57611dbd6121f9565b9060005260206000200154905080600a8381548110611dde57611dde6121f9565b6000918252602080832090910192909255828152600b9091526040808220849055858252812055600a805480611e1657611e16612433565b6001900381819060005260206000200160009055905550505050565b6000611e3d83610a87565b6001600160a01b039093166000908152600860209081526040808320868452825280832085905593825260099052919091209190915550565b6001600160e01b0319811681146108d557600080fd5b600060208284031215611e9e57600080fd5b8135610bc981611e76565b60005b83811015611ec4578181015183820152602001611eac565b83811115610c455750506000910152565b60008151808452611eed816020860160208601611ea9565b601f01601f19169290920160200192915050565b602081526000610bc96020830184611ed5565b600060208284031215611f2657600080fd5b5035919050565b80356001600160a01b0381168114611f4457600080fd5b919050565b60008060408385031215611f5c57600080fd5b611f6583611f2d565b946020939093013593505050565b600080600060608486031215611f8857600080fd5b611f9184611f2d565b9250611f9f60208501611f2d565b9150604084013590509250925092565b60008060408385031215611fc257600080fd5b82359150611fd260208401611f2d565b90509250929050565b600060208284031215611fed57600080fd5b610bc982611f2d565b6000806040838503121561200957600080fd5b50508035926020909101359150565b6000806040838503121561202b57600080fd5b61203483611f2d565b91506020830135801515811461204957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561208057600080fd5b61208985611f2d565b935061209760208601611f2d565b925060408501359150606085013567ffffffffffffffff808211156120bb57600080fd5b818701915087601f8301126120cf57600080fd5b8135818111156120e1576120e1612054565b604051601f8201601f19908116603f0116810190838211818310171561210957612109612054565b816040528281528a602084870101111561212257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561215957600080fd5b61216283611f2d565b9150611fd260208401611f2d565b600181811c9082168061218457607f821691505b602082108114156121a557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008351612221818460208801611ea9565b835190830190612235818360208801611ea9565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b6000828210156122665761226661223e565b500390565b6000821982111561227e5761227e61223e565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60006000198214156122e9576122e961223e565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082612315576123156122f0565b500490565b600082612329576123296122f0565b500690565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612366816017850160208801611ea9565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612397816028840160208801611ea9565b01602801949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906123d690830184611ed5565b9695505050505050565b6000602082840312156123f257600080fd5b8151610bc981611e76565b60008160001904831182151516156124175761241761223e565b500290565b60008161242b5761242b61223e565b506000190190565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220904fdcec717bb77b92b7a0770155545f37faf7149eef4539d04876c24632417764736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/utils/ERC721Holder":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721Holder","sourceName":"contracts/token/ERC721/utils/ERC721Holder.sol","abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506101af806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063150b7a0214610030575b600080fd5b61004e61003e36600461009d565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200160405180910390f35b80356001600160a01b038116811461008257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156100b357600080fd5b6100bc8561006b565b93506100ca6020860161006b565b925060408501359150606085013567ffffffffffffffff808211156100ee57600080fd5b818701915087601f83011261010257600080fd5b81358181111561011457610114610087565b604051601f8201601f19908116603f0116810190838211818310171561013c5761013c610087565b816040528281528a602084870101111561015557600080fd5b8260208601602083013760006020848301015280955050505050509295919450925056fea26469706673582212203b949b10ab655f3f3682634067da84891aca6edbd1a8a99ca0ec1a31004e97b964736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063150b7a0214610030575b600080fd5b61004e61003e36600461009d565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200160405180910390f35b80356001600160a01b038116811461008257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156100b357600080fd5b6100bc8561006b565b93506100ca6020860161006b565b925060408501359150606085013567ffffffffffffffff808211156100ee57600080fd5b818701915087601f83011261010257600080fd5b81358181111561011457610114610087565b604051601f8201601f19908116603f0116810190838211818310171561013c5761013c610087565b816040528281528a602084870101111561015557600080fd5b8260208601602083013760006020848301015280955050505050509295919450925056fea26469706673582212203b949b10ab655f3f3682634067da84891aca6edbd1a8a99ca0ec1a31004e97b964736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC777/ERC777":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC777","sourceName":"contracts/token/ERC777/ERC777.sol","abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"address[]","name":"defaultOperators_","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"AuthorizedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"RevokedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Sent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"authorizeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenHolder","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"defaultOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"granularity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"tokenHolder","type":"address"}],"name":"isOperatorFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"revokeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"send","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162001bcf38038062001bcf8339810160408190526200003491620003f1565b82516200004990600290602086019062000215565b5081516200005f90600390602085019062000215565b50805162000075906004906020840190620002a4565b5060005b8151811015620000e5576001600560008484815181106200009e576200009e62000508565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580620000dc816200051e565b91505062000079565b506040516329965a1d60e01b815230600482018190527fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce217705460248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad24906329965a1d90606401600060405180830381600087803b1580156200016057600080fd5b505af115801562000175573d6000803e3d6000fd5b50506040516329965a1d60e01b815230600482018190527faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a60248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad2492506329965a1d9150606401600060405180830381600087803b158015620001f357600080fd5b505af115801562000208573d6000803e3d6000fd5b5050505050505062000585565b828054620002239062000548565b90600052602060002090601f01602090048101928262000247576000855562000292565b82601f106200026257805160ff191683800117855562000292565b8280016001018555821562000292579182015b828111156200029257825182559160200191906001019062000275565b50620002a0929150620002fc565b5090565b82805482825590600052602060002090810192821562000292579160200282015b828111156200029257825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620002c5565b5b80821115620002a05760008155600101620002fd565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562000354576200035462000313565b604052919050565b600082601f8301126200036e57600080fd5b81516001600160401b038111156200038a576200038a62000313565b6020620003a0601f8301601f1916820162000329565b8281528582848701011115620003b557600080fd5b60005b83811015620003d5578581018301518282018401528201620003b8565b83811115620003e75760008385840101525b5095945050505050565b6000806000606084860312156200040757600080fd5b83516001600160401b03808211156200041f57600080fd5b6200042d878388016200035c565b94506020915081860151818111156200044557600080fd5b62000453888289016200035c565b9450506040860151818111156200046957600080fd5b8601601f810188136200047b57600080fd5b80518281111562000490576200049062000313565b8060051b9250620004a384840162000329565b818152928201840192848101908a851115620004be57600080fd5b928501925b84841015620004f857835192506001600160a01b0383168314620004e75760008081fd5b8282529285019290850190620004c3565b8096505050505050509250925092565b634e487b7160e01b600052603260045260246000fd5b60006000198214156200054157634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c908216806200055d57607f821691505b602082108114156200057f57634e487b7160e01b600052602260045260246000fd5b50919050565b61163a80620005956000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063959b8c3f116100a2578063d95b637111610071578063d95b63711461022b578063dd62ed3e1461023e578063fad8b32a14610277578063fc673c4f1461028a578063fe9d93031461029d57600080fd5b8063959b8c3f146101ea57806395d89b41146101fd5780639bd9bbc614610205578063a9059cbb1461021857600080fd5b806323b872dd116100e957806323b872dd14610183578063313ce56714610196578063556f0dc7146101a557806362ad1b83146101ac57806370a08231146101c157600080fd5b806306e485381461011b57806306fdde0314610139578063095ea7b31461014e57806318160ddd14610171575b600080fd5b6101236102b0565b60405161013091906110ae565b60405180910390f35b610141610312565b6040516101309190611148565b61016161015c366004611173565b61039b565b6040519015158152602001610130565b6001545b604051908152602001610130565b61016161019136600461119f565b6103b3565b60405160128152602001610130565b6001610175565b6101bf6101ba366004611283565b6103f9565b005b6101756101cf366004611316565b6001600160a01b031660009081526020819052604090205490565b6101bf6101f8366004611316565b61043e565b61014161055c565b6101bf610213366004611333565b61056b565b610161610226366004611173565b61058e565b61016161023936600461138c565b6105c6565b61017561024c36600461138c565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6101bf610285366004611316565b610668565b6101bf6102983660046113c5565b610784565b6101bf6102ab366004611445565b6107bc565b6060600480548060200260200160405190810160405280929190818152602001828054801561030857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102ea575b5050505050905090565b6060600280546103219061148c565b80601f016020809104026020016040519081016040528092919081815260200182805461034d9061148c565b80156103085780601f1061036f57610100808354040283529160200191610308565b820191906000526020600020905b81548152906001019060200180831161037d57509395945050505050565b6000336103a98185856107db565b5060019392505050565b6000336103c1858285610902565b6103ee8585856040518060200160405280600081525060405180602001604052806000815250600061098e565b506001949350505050565b61040333866105c6565b6104285760405162461bcd60e51b815260040161041f906114c7565b60405180910390fd5b6104378585858585600161098e565b5050505050565b336001600160a01b03821614156104a35760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff16156104f4573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19169055610523565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b6060600380546103219061148c565b6105893384848460405180602001604052806000815250600161098e565b505050565b60006105bd3384846040518060200160405280600081525060405180602001604052806000815250600061098e565b50600192915050565b6000816001600160a01b0316836001600160a01b0316148061063157506001600160a01b03831660009081526005602052604090205460ff16801561063157506001600160a01b0380831660009081526007602090815260408083209387168352929052205460ff16155b8061066157506001600160a01b0380831660009081526006602090815260408083209387168352929052205460ff165b9392505050565b6001600160a01b0381163314156106cb5760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff161561071f573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561074b565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b61078e33856105c6565b6107aa5760405162461bcd60e51b815260040161041f906114c7565b6107b684848484610a8a565b50505050565b6107d733838360405180602001604052806000815250610a8a565b5050565b6001600160a01b03831661083f5760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161041f565b6001600160a01b0382166108a15760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b606482015260840161041f565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526008602090815260408083209386168352929052205460001981146107b657818110156109815760405162461bcd60e51b815260206004820152601e60248201527f4552433737373a20696e73756666696369656e7420616c6c6f77616e63650000604482015260640161041f565b6107b684848484036107db565b6001600160a01b0386166109f35760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b606482015260840161041f565b6001600160a01b038516610a555760405162461bcd60e51b8152602060048201526024808201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161041f565b33610a64818888888888610c3e565b610a72818888888888610d74565b610a8181888888888888610eda565b50505050505050565b6001600160a01b038416610aeb5760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b606482015260840161041f565b33610afb81866000878787610c3e565b6001600160a01b03851660009081526020819052604090205484811015610b705760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b606482015260840161041f565b6001600160a01b0386166000908152602081905260408120868303905560018054879290610b9f908490611529565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098878787604051610bed93929190611540565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610cba57600080fd5b505afa158015610cce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf29190611575565b90506001600160a01b03811615610a8157604051633ad5cbc160e11b81526001600160a01b038216906375ab978290610d39908a908a908a908a908a908a90600401611592565b600060405180830381600087803b158015610d5357600080fd5b505af1158015610d67573d6000803e3d6000fd5b5050505050505050505050565b6001600160a01b03851660009081526020819052604090205483811015610ded5760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b606482015260840161041f565b6001600160a01b03808716600090815260208190526040808220878503905591871681529081208054869290610e249084906115ec565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051610e7c93929190611540565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610ec991815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610f5657600080fd5b505afa158015610f6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8e9190611575565b90506001600160a01b0381161561100a576040516223de2960e01b81526001600160a01b038216906223de2990610fd3908b908b908b908b908b908b90600401611592565b600060405180830381600087803b158015610fed57600080fd5b505af1158015611001573d6000803e3d6000fd5b505050506110a4565b81156110a4576001600160a01b0386163b156110a45760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a40161041f565b5050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156110ef5783516001600160a01b0316835292840192918401916001016110ca565b50909695505050505050565b6000815180845260005b8181101561112157602081850181015186830182015201611105565b81811115611133576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061066160208301846110fb565b6001600160a01b038116811461117057600080fd5b50565b6000806040838503121561118657600080fd5b82356111918161115b565b946020939093013593505050565b6000806000606084860312156111b457600080fd5b83356111bf8161115b565b925060208401356111cf8161115b565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261120757600080fd5b813567ffffffffffffffff80821115611222576112226111e0565b604051601f8301601f19908116603f0116810190828211818310171561124a5761124a6111e0565b8160405283815286602085880101111561126357600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a0868803121561129b57600080fd5b85356112a68161115b565b945060208601356112b68161115b565b935060408601359250606086013567ffffffffffffffff808211156112da57600080fd5b6112e689838a016111f6565b935060808801359150808211156112fc57600080fd5b50611309888289016111f6565b9150509295509295909350565b60006020828403121561132857600080fd5b81356106618161115b565b60008060006060848603121561134857600080fd5b83356113538161115b565b925060208401359150604084013567ffffffffffffffff81111561137657600080fd5b611382868287016111f6565b9150509250925092565b6000806040838503121561139f57600080fd5b82356113aa8161115b565b915060208301356113ba8161115b565b809150509250929050565b600080600080608085870312156113db57600080fd5b84356113e68161115b565b935060208501359250604085013567ffffffffffffffff8082111561140a57600080fd5b611416888389016111f6565b9350606087013591508082111561142c57600080fd5b50611439878288016111f6565b91505092959194509250565b6000806040838503121561145857600080fd5b82359150602083013567ffffffffffffffff81111561147657600080fd5b611482858286016111f6565b9150509250929050565b600181811c908216806114a057607f821691505b602082108114156114c157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008282101561153b5761153b611513565b500390565b83815260606020820152600061155960608301856110fb565b828103604084015261156b81856110fb565b9695505050505050565b60006020828403121561158757600080fd5b81516106618161115b565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c0608082018190526000906115cd908301856110fb565b82810360a08401526115df81856110fb565b9998505050505050505050565b600082198211156115ff576115ff611513565b50019056fea2646970667358221220dec8b87b9af6219ef84a946a07b0afce572fce594cc7b8b387590cb21c422daf64736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063959b8c3f116100a2578063d95b637111610071578063d95b63711461022b578063dd62ed3e1461023e578063fad8b32a14610277578063fc673c4f1461028a578063fe9d93031461029d57600080fd5b8063959b8c3f146101ea57806395d89b41146101fd5780639bd9bbc614610205578063a9059cbb1461021857600080fd5b806323b872dd116100e957806323b872dd14610183578063313ce56714610196578063556f0dc7146101a557806362ad1b83146101ac57806370a08231146101c157600080fd5b806306e485381461011b57806306fdde0314610139578063095ea7b31461014e57806318160ddd14610171575b600080fd5b6101236102b0565b60405161013091906110ae565b60405180910390f35b610141610312565b6040516101309190611148565b61016161015c366004611173565b61039b565b6040519015158152602001610130565b6001545b604051908152602001610130565b61016161019136600461119f565b6103b3565b60405160128152602001610130565b6001610175565b6101bf6101ba366004611283565b6103f9565b005b6101756101cf366004611316565b6001600160a01b031660009081526020819052604090205490565b6101bf6101f8366004611316565b61043e565b61014161055c565b6101bf610213366004611333565b61056b565b610161610226366004611173565b61058e565b61016161023936600461138c565b6105c6565b61017561024c36600461138c565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6101bf610285366004611316565b610668565b6101bf6102983660046113c5565b610784565b6101bf6102ab366004611445565b6107bc565b6060600480548060200260200160405190810160405280929190818152602001828054801561030857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102ea575b5050505050905090565b6060600280546103219061148c565b80601f016020809104026020016040519081016040528092919081815260200182805461034d9061148c565b80156103085780601f1061036f57610100808354040283529160200191610308565b820191906000526020600020905b81548152906001019060200180831161037d57509395945050505050565b6000336103a98185856107db565b5060019392505050565b6000336103c1858285610902565b6103ee8585856040518060200160405280600081525060405180602001604052806000815250600061098e565b506001949350505050565b61040333866105c6565b6104285760405162461bcd60e51b815260040161041f906114c7565b60405180910390fd5b6104378585858585600161098e565b5050505050565b336001600160a01b03821614156104a35760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff16156104f4573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19169055610523565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b6060600380546103219061148c565b6105893384848460405180602001604052806000815250600161098e565b505050565b60006105bd3384846040518060200160405280600081525060405180602001604052806000815250600061098e565b50600192915050565b6000816001600160a01b0316836001600160a01b0316148061063157506001600160a01b03831660009081526005602052604090205460ff16801561063157506001600160a01b0380831660009081526007602090815260408083209387168352929052205460ff16155b8061066157506001600160a01b0380831660009081526006602090815260408083209387168352929052205460ff165b9392505050565b6001600160a01b0381163314156106cb5760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff161561071f573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561074b565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b61078e33856105c6565b6107aa5760405162461bcd60e51b815260040161041f906114c7565b6107b684848484610a8a565b50505050565b6107d733838360405180602001604052806000815250610a8a565b5050565b6001600160a01b03831661083f5760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161041f565b6001600160a01b0382166108a15760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b606482015260840161041f565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526008602090815260408083209386168352929052205460001981146107b657818110156109815760405162461bcd60e51b815260206004820152601e60248201527f4552433737373a20696e73756666696369656e7420616c6c6f77616e63650000604482015260640161041f565b6107b684848484036107db565b6001600160a01b0386166109f35760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b606482015260840161041f565b6001600160a01b038516610a555760405162461bcd60e51b8152602060048201526024808201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161041f565b33610a64818888888888610c3e565b610a72818888888888610d74565b610a8181888888888888610eda565b50505050505050565b6001600160a01b038416610aeb5760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b606482015260840161041f565b33610afb81866000878787610c3e565b6001600160a01b03851660009081526020819052604090205484811015610b705760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b606482015260840161041f565b6001600160a01b0386166000908152602081905260408120868303905560018054879290610b9f908490611529565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098878787604051610bed93929190611540565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610cba57600080fd5b505afa158015610cce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf29190611575565b90506001600160a01b03811615610a8157604051633ad5cbc160e11b81526001600160a01b038216906375ab978290610d39908a908a908a908a908a908a90600401611592565b600060405180830381600087803b158015610d5357600080fd5b505af1158015610d67573d6000803e3d6000fd5b5050505050505050505050565b6001600160a01b03851660009081526020819052604090205483811015610ded5760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b606482015260840161041f565b6001600160a01b03808716600090815260208190526040808220878503905591871681529081208054869290610e249084906115ec565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051610e7c93929190611540565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610ec991815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610f5657600080fd5b505afa158015610f6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8e9190611575565b90506001600160a01b0381161561100a576040516223de2960e01b81526001600160a01b038216906223de2990610fd3908b908b908b908b908b908b90600401611592565b600060405180830381600087803b158015610fed57600080fd5b505af1158015611001573d6000803e3d6000fd5b505050506110a4565b81156110a4576001600160a01b0386163b156110a45760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a40161041f565b5050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156110ef5783516001600160a01b0316835292840192918401916001016110ca565b50909695505050505050565b6000815180845260005b8181101561112157602081850181015186830182015201611105565b81811115611133576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061066160208301846110fb565b6001600160a01b038116811461117057600080fd5b50565b6000806040838503121561118657600080fd5b82356111918161115b565b946020939093013593505050565b6000806000606084860312156111b457600080fd5b83356111bf8161115b565b925060208401356111cf8161115b565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261120757600080fd5b813567ffffffffffffffff80821115611222576112226111e0565b604051601f8301601f19908116603f0116810190828211818310171561124a5761124a6111e0565b8160405283815286602085880101111561126357600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a0868803121561129b57600080fd5b85356112a68161115b565b945060208601356112b68161115b565b935060408601359250606086013567ffffffffffffffff808211156112da57600080fd5b6112e689838a016111f6565b935060808801359150808211156112fc57600080fd5b50611309888289016111f6565b9150509295509295909350565b60006020828403121561132857600080fd5b81356106618161115b565b60008060006060848603121561134857600080fd5b83356113538161115b565b925060208401359150604084013567ffffffffffffffff81111561137657600080fd5b611382868287016111f6565b9150509250925092565b6000806040838503121561139f57600080fd5b82356113aa8161115b565b915060208301356113ba8161115b565b809150509250929050565b600080600080608085870312156113db57600080fd5b84356113e68161115b565b935060208501359250604085013567ffffffffffffffff8082111561140a57600080fd5b611416888389016111f6565b9350606087013591508082111561142c57600080fd5b50611439878288016111f6565b91505092959194509250565b6000806040838503121561145857600080fd5b82359150602083013567ffffffffffffffff81111561147657600080fd5b611482858286016111f6565b9150509250929050565b600181811c908216806114a057607f821691505b602082108114156114c157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008282101561153b5761153b611513565b500390565b83815260606020820152600061155960608301856110fb565b828103604084015261156b81856110fb565b9695505050505050565b60006020828403121561158757600080fd5b81516106618161115b565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c0608082018190526000906115cd908301856110fb565b82810360a08401526115df81856110fb565b9998505050505050505050565b600082198211156115ff576115ff611513565b50019056fea2646970667358221220dec8b87b9af6219ef84a946a07b0afce572fce594cc7b8b387590cb21c422daf64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC777/IERC777":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC777","sourceName":"contracts/token/ERC777/IERC777.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"AuthorizedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"RevokedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Sent","type":"event"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"authorizeOperator","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":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"defaultOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"granularity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"tokenHolder","type":"address"}],"name":"isOperatorFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"revokeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"send","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC777/IERC777Recipient":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC777Recipient","sourceName":"contracts/token/ERC777/IERC777Recipient.sol","abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"tokensReceived","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC777/IERC777Sender":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC777Sender","sourceName":"contracts/token/ERC777/IERC777Sender.sol","abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"tokensToSend","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC777/presets/ERC777PresetFixedSupply":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC777PresetFixedSupply","sourceName":"contracts/token/ERC777/presets/ERC777PresetFixedSupply.sol","abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"address[]","name":"defaultOperators","type":"address[]"},{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"AuthorizedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"RevokedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Sent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"authorizeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenHolder","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"defaultOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"granularity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"tokenHolder","type":"address"}],"name":"isOperatorFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"revokeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"send","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b50604051620020d1380380620020d18339810160408190526200003491620007c9565b84848482600290805190602001906200004f929190620005c2565b50815162000065906003906020850190620005c2565b5080516200007b90600490602084019062000651565b5060005b8151811015620000eb57600160056000848481518110620000a457620000a4620008ec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580620000e28162000918565b9150506200007f565b506040516329965a1d60e01b815230600482018190527fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce217705460248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad24906329965a1d90606401600060405180830381600087803b1580156200016657600080fd5b505af11580156200017b573d6000803e3d6000fd5b50506040516329965a1d60e01b815230600482018190527faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a60248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad2492506329965a1d9150606401600060405180830381600087803b158015620001f957600080fd5b505af11580156200020e573d6000803e3d6000fd5b5050505050505062000247818360405180602001604052806000815250604051806020016040528060008152506200025260201b60201c565b505050505062000a78565b6200026284848484600162000268565b50505050565b6001600160a01b038516620002c45760405162461bcd60e51b815260206004820181905260248201527f4552433737373a206d696e7420746f20746865207a65726f206164647265737360448201526064015b60405180910390fd5b60003390508460016000828254620002dd919062000936565b90915550506001600160a01b038616600090815260208190526040812080548792906200030c90849062000936565b909155506200032490508160008888888888620003be565b856001600160a01b0316816001600160a01b03167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d8787876040516200036d939291906200097f565b60405180910390a36040518581526001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b1580156200043b57600080fd5b505afa15801562000450573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004769190620009b8565b90506001600160a01b03811615620004f8576040516223de2960e01b81526001600160a01b038216906223de2990620004be908b908b908b908b908b908b90600401620009dd565b600060405180830381600087803b158015620004d957600080fd5b505af1158015620004ee573d6000803e3d6000fd5b50505050620005a9565b8115620005a9576200051e866001600160a01b0316620005b360201b620007db1760201c565b15620005a95760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a401620002bb565b5050505050505050565b6001600160a01b03163b151590565b828054620005d09062000a3b565b90600052602060002090601f016020900481019282620005f457600085556200063f565b82601f106200060f57805160ff19168380011785556200063f565b828001600101855582156200063f579182015b828111156200063f57825182559160200191906001019062000622565b506200064d929150620006a9565b5090565b8280548282559060005260206000209081019282156200063f579160200282015b828111156200063f57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000672565b5b808211156200064d5760008155600101620006aa565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620007015762000701620006c0565b604052919050565b60005b83811015620007265781810151838201526020016200070c565b83811115620002625750506000910152565b600082601f8301126200074a57600080fd5b81516001600160401b03811115620007665762000766620006c0565b6200077b601f8201601f1916602001620006d6565b8181528460208386010111156200079157600080fd5b620007a482602083016020870162000709565b949350505050565b80516001600160a01b0381168114620007c457600080fd5b919050565b600080600080600060a08688031215620007e257600080fd5b85516001600160401b0380821115620007fa57600080fd5b6200080889838a0162000738565b96506020915081880151818111156200082057600080fd5b6200082e8a828b0162000738565b9650506040880151818111156200084457600080fd5b8801601f81018a136200085657600080fd5b8051828111156200086b576200086b620006c0565b8060051b92506200087e848401620006d6565b818152928201840192848101908c8511156200089957600080fd5b928501925b84841015620008c257620008b284620007ac565b825292850192908501906200089e565b80985050505050505060608601519150620008e060808701620007ac565b90509295509295909350565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156200092f576200092f62000902565b5060010190565b600082198211156200094c576200094c62000902565b500190565b600081518084526200096b81602086016020860162000709565b601f01601f19169290920160200192915050565b8381526060602082015260006200099a606083018562000951565b8281036040840152620009ae818562000951565b9695505050505050565b600060208284031215620009cb57600080fd5b620009d682620007ac565b9392505050565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c06080820181905260009062000a1a9083018562000951565b82810360a084015262000a2e818562000951565b9998505050505050505050565b600181811c9082168062000a5057607f821691505b6020821081141562000a7257634e487b7160e01b600052602260045260246000fd5b50919050565b6116498062000a886000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063959b8c3f116100a2578063d95b637111610071578063d95b63711461022b578063dd62ed3e1461023e578063fad8b32a14610277578063fc673c4f1461028a578063fe9d93031461029d57600080fd5b8063959b8c3f146101ea57806395d89b41146101fd5780639bd9bbc614610205578063a9059cbb1461021857600080fd5b806323b872dd116100e957806323b872dd14610183578063313ce56714610196578063556f0dc7146101a557806362ad1b83146101ac57806370a08231146101c157600080fd5b806306e485381461011b57806306fdde0314610139578063095ea7b31461014e57806318160ddd14610171575b600080fd5b6101236102b0565b60405161013091906110bd565b60405180910390f35b610141610312565b6040516101309190611157565b61016161015c366004611182565b61039b565b6040519015158152602001610130565b6001545b604051908152602001610130565b6101616101913660046111ae565b6103b3565b60405160128152602001610130565b6001610175565b6101bf6101ba366004611292565b6103f9565b005b6101756101cf366004611325565b6001600160a01b031660009081526020819052604090205490565b6101bf6101f8366004611325565b61043e565b61014161055c565b6101bf610213366004611342565b61056b565b610161610226366004611182565b61058e565b61016161023936600461139b565b6105c6565b61017561024c36600461139b565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6101bf610285366004611325565b610668565b6101bf6102983660046113d4565b610784565b6101bf6102ab366004611454565b6107bc565b6060600480548060200260200160405190810160405280929190818152602001828054801561030857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102ea575b5050505050905090565b6060600280546103219061149b565b80601f016020809104026020016040519081016040528092919081815260200182805461034d9061149b565b80156103085780601f1061036f57610100808354040283529160200191610308565b820191906000526020600020905b81548152906001019060200180831161037d57509395945050505050565b6000336103a98185856107ea565b5060019392505050565b6000336103c1858285610911565b6103ee8585856040518060200160405280600081525060405180602001604052806000815250600061099d565b506001949350505050565b61040333866105c6565b6104285760405162461bcd60e51b815260040161041f906114d6565b60405180910390fd5b6104378585858585600161099d565b5050505050565b336001600160a01b03821614156104a35760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff16156104f4573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19169055610523565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b6060600380546103219061149b565b6105893384848460405180602001604052806000815250600161099d565b505050565b60006105bd3384846040518060200160405280600081525060405180602001604052806000815250600061099d565b50600192915050565b6000816001600160a01b0316836001600160a01b0316148061063157506001600160a01b03831660009081526005602052604090205460ff16801561063157506001600160a01b0380831660009081526007602090815260408083209387168352929052205460ff16155b8061066157506001600160a01b0380831660009081526006602090815260408083209387168352929052205460ff165b9392505050565b6001600160a01b0381163314156106cb5760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff161561071f573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561074b565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b61078e33856105c6565b6107aa5760405162461bcd60e51b815260040161041f906114d6565b6107b684848484610a99565b50505050565b6107d733838360405180602001604052806000815250610a99565b5050565b6001600160a01b03163b151590565b6001600160a01b03831661084e5760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161041f565b6001600160a01b0382166108b05760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b606482015260840161041f565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526008602090815260408083209386168352929052205460001981146107b657818110156109905760405162461bcd60e51b815260206004820152601e60248201527f4552433737373a20696e73756666696369656e7420616c6c6f77616e63650000604482015260640161041f565b6107b684848484036107ea565b6001600160a01b038616610a025760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b606482015260840161041f565b6001600160a01b038516610a645760405162461bcd60e51b8152602060048201526024808201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161041f565b33610a73818888888888610c4d565b610a81818888888888610d83565b610a9081888888888888610ee9565b50505050505050565b6001600160a01b038416610afa5760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b606482015260840161041f565b33610b0a81866000878787610c4d565b6001600160a01b03851660009081526020819052604090205484811015610b7f5760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b606482015260840161041f565b6001600160a01b0386166000908152602081905260408120868303905560018054879290610bae908490611538565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098878787604051610bfc9392919061154f565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610cc957600080fd5b505afa158015610cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d019190611584565b90506001600160a01b03811615610a9057604051633ad5cbc160e11b81526001600160a01b038216906375ab978290610d48908a908a908a908a908a908a906004016115a1565b600060405180830381600087803b158015610d6257600080fd5b505af1158015610d76573d6000803e3d6000fd5b5050505050505050505050565b6001600160a01b03851660009081526020819052604090205483811015610dfc5760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b606482015260840161041f565b6001600160a01b03808716600090815260208190526040808220878503905591871681529081208054869290610e339084906115fb565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051610e8b9392919061154f565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610ed891815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610f6557600080fd5b505afa158015610f79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9d9190611584565b90506001600160a01b03811615611019576040516223de2960e01b81526001600160a01b038216906223de2990610fe2908b908b908b908b908b908b906004016115a1565b600060405180830381600087803b158015610ffc57600080fd5b505af1158015611010573d6000803e3d6000fd5b505050506110b3565b81156110b3576001600160a01b0386163b156110b35760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a40161041f565b5050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156110fe5783516001600160a01b0316835292840192918401916001016110d9565b50909695505050505050565b6000815180845260005b8181101561113057602081850181015186830182015201611114565b81811115611142576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610661602083018461110a565b6001600160a01b038116811461117f57600080fd5b50565b6000806040838503121561119557600080fd5b82356111a08161116a565b946020939093013593505050565b6000806000606084860312156111c357600080fd5b83356111ce8161116a565b925060208401356111de8161116a565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261121657600080fd5b813567ffffffffffffffff80821115611231576112316111ef565b604051601f8301601f19908116603f01168101908282118183101715611259576112596111ef565b8160405283815286602085880101111561127257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156112aa57600080fd5b85356112b58161116a565b945060208601356112c58161116a565b935060408601359250606086013567ffffffffffffffff808211156112e957600080fd5b6112f589838a01611205565b9350608088013591508082111561130b57600080fd5b5061131888828901611205565b9150509295509295909350565b60006020828403121561133757600080fd5b81356106618161116a565b60008060006060848603121561135757600080fd5b83356113628161116a565b925060208401359150604084013567ffffffffffffffff81111561138557600080fd5b61139186828701611205565b9150509250925092565b600080604083850312156113ae57600080fd5b82356113b98161116a565b915060208301356113c98161116a565b809150509250929050565b600080600080608085870312156113ea57600080fd5b84356113f58161116a565b935060208501359250604085013567ffffffffffffffff8082111561141957600080fd5b61142588838901611205565b9350606087013591508082111561143b57600080fd5b5061144887828801611205565b91505092959194509250565b6000806040838503121561146757600080fd5b82359150602083013567ffffffffffffffff81111561148557600080fd5b61149185828601611205565b9150509250929050565b600181811c908216806114af57607f821691505b602082108114156114d057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008282101561154a5761154a611522565b500390565b838152606060208201526000611568606083018561110a565b828103604084015261157a818561110a565b9695505050505050565b60006020828403121561159657600080fd5b81516106618161116a565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c0608082018190526000906115dc9083018561110a565b82810360a08401526115ee818561110a565b9998505050505050505050565b6000821982111561160e5761160e611522565b50019056fea2646970667358221220c35887fab1a87d1b8867924b2ee66f5a7e6813cecffe415f10c449675c0cd5a964736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063959b8c3f116100a2578063d95b637111610071578063d95b63711461022b578063dd62ed3e1461023e578063fad8b32a14610277578063fc673c4f1461028a578063fe9d93031461029d57600080fd5b8063959b8c3f146101ea57806395d89b41146101fd5780639bd9bbc614610205578063a9059cbb1461021857600080fd5b806323b872dd116100e957806323b872dd14610183578063313ce56714610196578063556f0dc7146101a557806362ad1b83146101ac57806370a08231146101c157600080fd5b806306e485381461011b57806306fdde0314610139578063095ea7b31461014e57806318160ddd14610171575b600080fd5b6101236102b0565b60405161013091906110bd565b60405180910390f35b610141610312565b6040516101309190611157565b61016161015c366004611182565b61039b565b6040519015158152602001610130565b6001545b604051908152602001610130565b6101616101913660046111ae565b6103b3565b60405160128152602001610130565b6001610175565b6101bf6101ba366004611292565b6103f9565b005b6101756101cf366004611325565b6001600160a01b031660009081526020819052604090205490565b6101bf6101f8366004611325565b61043e565b61014161055c565b6101bf610213366004611342565b61056b565b610161610226366004611182565b61058e565b61016161023936600461139b565b6105c6565b61017561024c36600461139b565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6101bf610285366004611325565b610668565b6101bf6102983660046113d4565b610784565b6101bf6102ab366004611454565b6107bc565b6060600480548060200260200160405190810160405280929190818152602001828054801561030857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102ea575b5050505050905090565b6060600280546103219061149b565b80601f016020809104026020016040519081016040528092919081815260200182805461034d9061149b565b80156103085780601f1061036f57610100808354040283529160200191610308565b820191906000526020600020905b81548152906001019060200180831161037d57509395945050505050565b6000336103a98185856107ea565b5060019392505050565b6000336103c1858285610911565b6103ee8585856040518060200160405280600081525060405180602001604052806000815250600061099d565b506001949350505050565b61040333866105c6565b6104285760405162461bcd60e51b815260040161041f906114d6565b60405180910390fd5b6104378585858585600161099d565b5050505050565b336001600160a01b03821614156104a35760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff16156104f4573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19169055610523565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b6060600380546103219061149b565b6105893384848460405180602001604052806000815250600161099d565b505050565b60006105bd3384846040518060200160405280600081525060405180602001604052806000815250600061099d565b50600192915050565b6000816001600160a01b0316836001600160a01b0316148061063157506001600160a01b03831660009081526005602052604090205460ff16801561063157506001600160a01b0380831660009081526007602090815260408083209387168352929052205460ff16155b8061066157506001600160a01b0380831660009081526006602090815260408083209387168352929052205460ff165b9392505050565b6001600160a01b0381163314156106cb5760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff161561071f573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561074b565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b61078e33856105c6565b6107aa5760405162461bcd60e51b815260040161041f906114d6565b6107b684848484610a99565b50505050565b6107d733838360405180602001604052806000815250610a99565b5050565b6001600160a01b03163b151590565b6001600160a01b03831661084e5760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161041f565b6001600160a01b0382166108b05760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b606482015260840161041f565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526008602090815260408083209386168352929052205460001981146107b657818110156109905760405162461bcd60e51b815260206004820152601e60248201527f4552433737373a20696e73756666696369656e7420616c6c6f77616e63650000604482015260640161041f565b6107b684848484036107ea565b6001600160a01b038616610a025760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b606482015260840161041f565b6001600160a01b038516610a645760405162461bcd60e51b8152602060048201526024808201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161041f565b33610a73818888888888610c4d565b610a81818888888888610d83565b610a9081888888888888610ee9565b50505050505050565b6001600160a01b038416610afa5760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b606482015260840161041f565b33610b0a81866000878787610c4d565b6001600160a01b03851660009081526020819052604090205484811015610b7f5760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b606482015260840161041f565b6001600160a01b0386166000908152602081905260408120868303905560018054879290610bae908490611538565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098878787604051610bfc9392919061154f565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610cc957600080fd5b505afa158015610cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d019190611584565b90506001600160a01b03811615610a9057604051633ad5cbc160e11b81526001600160a01b038216906375ab978290610d48908a908a908a908a908a908a906004016115a1565b600060405180830381600087803b158015610d6257600080fd5b505af1158015610d76573d6000803e3d6000fd5b5050505050505050505050565b6001600160a01b03851660009081526020819052604090205483811015610dfc5760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b606482015260840161041f565b6001600160a01b03808716600090815260208190526040808220878503905591871681529081208054869290610e339084906115fb565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051610e8b9392919061154f565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610ed891815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610f6557600080fd5b505afa158015610f79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9d9190611584565b90506001600160a01b03811615611019576040516223de2960e01b81526001600160a01b038216906223de2990610fe2908b908b908b908b908b908b906004016115a1565b600060405180830381600087803b158015610ffc57600080fd5b505af1158015611010573d6000803e3d6000fd5b505050506110b3565b81156110b3576001600160a01b0386163b156110b35760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a40161041f565b5050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156110fe5783516001600160a01b0316835292840192918401916001016110d9565b50909695505050505050565b6000815180845260005b8181101561113057602081850181015186830182015201611114565b81811115611142576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610661602083018461110a565b6001600160a01b038116811461117f57600080fd5b50565b6000806040838503121561119557600080fd5b82356111a08161116a565b946020939093013593505050565b6000806000606084860312156111c357600080fd5b83356111ce8161116a565b925060208401356111de8161116a565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261121657600080fd5b813567ffffffffffffffff80821115611231576112316111ef565b604051601f8301601f19908116603f01168101908282118183101715611259576112596111ef565b8160405283815286602085880101111561127257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156112aa57600080fd5b85356112b58161116a565b945060208601356112c58161116a565b935060408601359250606086013567ffffffffffffffff808211156112e957600080fd5b6112f589838a01611205565b9350608088013591508082111561130b57600080fd5b5061131888828901611205565b9150509295509295909350565b60006020828403121561133757600080fd5b81356106618161116a565b60008060006060848603121561135757600080fd5b83356113628161116a565b925060208401359150604084013567ffffffffffffffff81111561138557600080fd5b61139186828701611205565b9150509250925092565b600080604083850312156113ae57600080fd5b82356113b98161116a565b915060208301356113c98161116a565b809150509250929050565b600080600080608085870312156113ea57600080fd5b84356113f58161116a565b935060208501359250604085013567ffffffffffffffff8082111561141957600080fd5b61142588838901611205565b9350606087013591508082111561143b57600080fd5b5061144887828801611205565b91505092959194509250565b6000806040838503121561146757600080fd5b82359150602083013567ffffffffffffffff81111561148557600080fd5b61149185828601611205565b9150509250929050565b600181811c908216806114af57607f821691505b602082108114156114d057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008282101561154a5761154a611522565b500390565b838152606060208201526000611568606083018561110a565b828103604084015261157a818561110a565b9695505050505050565b60006020828403121561159657600080fd5b81516106618161116a565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c0608082018190526000906115dc9083018561110a565b82810360a08401526115ee818561110a565b9998505050505050505050565b6000821982111561160e5761160e611522565b50019056fea2646970667358221220c35887fab1a87d1b8867924b2ee66f5a7e6813cecffe415f10c449675c0cd5a964736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Address":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Address","sourceName":"contracts/utils/Address.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220606d7d087d9537598f178a0e24bbca9265c44e5d57806c9d1487d791c2014e6d64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220606d7d087d9537598f178a0e24bbca9265c44e5d57806c9d1487d791c2014e6d64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Arrays":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Arrays","sourceName":"contracts/utils/Arrays.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220655ca9dd21119229980dc932da7b27559291a855eeef99bfff98cd076fd5895c64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220655ca9dd21119229980dc932da7b27559291a855eeef99bfff98cd076fd5895c64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Base64":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Base64","sourceName":"contracts/utils/Base64.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122011638abb6e3586d7f6ccaa6dd9fb1274cbb9c8730c14061f650735e65642a99964736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122011638abb6e3586d7f6ccaa6dd9fb1274cbb9c8730c14061f650735e65642a99964736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Checkpoints":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Checkpoints","sourceName":"contracts/utils/Checkpoints.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122052b0c69fec6bee636076dd6f90ff9c1a517975fe60ef11a3192d0049d34e9c0c64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122052b0c69fec6bee636076dd6f90ff9c1a517975fe60ef11a3192d0049d34e9c0c64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Context":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Context","sourceName":"contracts/utils/Context.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Counters":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Counters","sourceName":"contracts/utils/Counters.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207e9744ee0d57c3c7ee555c3db47df50e361acf4e3c082e5de7aefa7b14d96ce264736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207e9744ee0d57c3c7ee555c3db47df50e361acf4e3c082e5de7aefa7b14d96ce264736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Create2":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Create2","sourceName":"contracts/utils/Create2.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663fd34c338df3acc96e8be8f5ab984b23259d2ddb6dd435519240eb376fd9b064736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663fd34c338df3acc96e8be8f5ab984b23259d2ddb6dd435519240eb376fd9b064736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/cryptography/EIP712":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"EIP712","sourceName":"contracts/utils/cryptography/draft-EIP712.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/cryptography/ECDSA":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ECDSA","sourceName":"contracts/utils/cryptography/ECDSA.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220914ddf8c54b121fc32a2c250c5713169e8ee9e5bdf72d13b12f1137e3ca30e2464736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220914ddf8c54b121fc32a2c250c5713169e8ee9e5bdf72d13b12f1137e3ca30e2464736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/cryptography/MerkleProof":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"MerkleProof","sourceName":"contracts/utils/cryptography/MerkleProof.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209d381f7e6729bdfbea34798b2f92550cb12e1699fa50dc80557b2ee144c8e2e664736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209d381f7e6729bdfbea34798b2f92550cb12e1699fa50dc80557b2ee144c8e2e664736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/cryptography/SignatureChecker":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"SignatureChecker","sourceName":"contracts/utils/cryptography/SignatureChecker.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209842b391c06c2db43bee88f2053a845447fe59228a99b55b5c6323f1b1d6a51364736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209842b391c06c2db43bee88f2053a845447fe59228a99b55b5c6323f1b1d6a51364736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/escrow/ConditionalEscrow":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ConditionalEscrow","sourceName":"contracts/utils/escrow/ConditionalEscrow.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":false,"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":false,"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"address","name":"payee","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"payee","type":"address"}],"name":"depositsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"payee","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"payee","type":"address"}],"name":"withdrawalAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/escrow/Escrow":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Escrow","sourceName":"contracts/utils/escrow/Escrow.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":false,"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":false,"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"address","name":"payee","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"payee","type":"address"}],"name":"depositsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"payee","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61050d8061007e6000396000f3fe6080604052600436106100555760003560e01c806351cff8d91461005a578063715018a61461007c5780638da5cb5b14610091578063e3a9db1a146100be578063f2fde38b14610102578063f340fa0114610122575b600080fd5b34801561006657600080fd5b5061007a61007536600461048d565b610135565b005b34801561008857600080fd5b5061007a6101ac565b34801561009d57600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b3480156100ca57600080fd5b506100f46100d936600461048d565b6001600160a01b031660009081526001602052604090205490565b6040519081526020016100b5565b34801561010e57600080fd5b5061007a61011d36600461048d565b6101c0565b61007a61013036600461048d565b61023e565b61013d6102b0565b6001600160a01b0381166000818152600160205260408120805491905590610165908261030a565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516101a091815260200190565b60405180910390a25050565b6101b46102b0565b6101be6000610428565b565b6101c86102b0565b6001600160a01b0381166102325760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61023b81610428565b50565b6102466102b0565b6001600160a01b0381166000908152600160205260408120805434928392916102709084906104b1565b90915550506040518181526001600160a01b038316907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020016101a0565b6000546001600160a01b031633146101be5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610229565b8047101561035a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610229565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146103a7576040519150601f19603f3d011682016040523d82523d6000602084013e6103ac565b606091505b50509050806104235760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610229565b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461023b57600080fd5b60006020828403121561049f57600080fd5b81356104aa81610478565b9392505050565b600082198211156104d257634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220f0e4e0868b7beb65355490f66dcb5e786874e97e41891698970cad2925921cfe64736f6c63430008090033","deployedBytecode":"0x6080604052600436106100555760003560e01c806351cff8d91461005a578063715018a61461007c5780638da5cb5b14610091578063e3a9db1a146100be578063f2fde38b14610102578063f340fa0114610122575b600080fd5b34801561006657600080fd5b5061007a61007536600461048d565b610135565b005b34801561008857600080fd5b5061007a6101ac565b34801561009d57600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b3480156100ca57600080fd5b506100f46100d936600461048d565b6001600160a01b031660009081526001602052604090205490565b6040519081526020016100b5565b34801561010e57600080fd5b5061007a61011d36600461048d565b6101c0565b61007a61013036600461048d565b61023e565b61013d6102b0565b6001600160a01b0381166000818152600160205260408120805491905590610165908261030a565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516101a091815260200190565b60405180910390a25050565b6101b46102b0565b6101be6000610428565b565b6101c86102b0565b6001600160a01b0381166102325760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61023b81610428565b50565b6102466102b0565b6001600160a01b0381166000908152600160205260408120805434928392916102709084906104b1565b90915550506040518181526001600160a01b038316907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020016101a0565b6000546001600160a01b031633146101be5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610229565b8047101561035a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610229565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146103a7576040519150601f19603f3d011682016040523d82523d6000602084013e6103ac565b606091505b50509050806104235760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610229565b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461023b57600080fd5b60006020828403121561049f57600080fd5b81356104aa81610478565b9392505050565b600082198211156104d257634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220f0e4e0868b7beb65355490f66dcb5e786874e97e41891698970cad2925921cfe64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/escrow/RefundEscrow":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"RefundEscrow","sourceName":"contracts/utils/escrow/RefundEscrow.sol","abi":[{"inputs":[{"internalType":"address payable","name":"beneficiary_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":false,"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RefundsClosed","type":"event"},{"anonymous":false,"inputs":[],"name":"RefundsEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":false,"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"beneficiary","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beneficiaryWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"close","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"refundee","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"payee","type":"address"}],"name":"depositsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableRefunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"state","outputs":[{"internalType":"enum RefundEscrow.State","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"payee","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"withdrawalAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60a060405234801561001057600080fd5b50604051610b22380380610b2283398101604081905261002f91610113565b610038336100c3565b6001600160a01b0381166100a85760405162461bcd60e51b815260206004820152602d60248201527f526566756e64457363726f773a2062656e65666963696172792069732074686560448201526c207a65726f206164647265737360981b606482015260840160405180910390fd5b6001600160a01b03166080526002805460ff19169055610143565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561012557600080fd5b81516001600160a01b038116811461013c57600080fd5b9392505050565b6080516109be6101646000396000818160bb015261051b01526109be6000f3fe6080604052600436106100a75760003560e01c80638da5cb5b116100645780638da5cb5b146101895780639af6549a146101a7578063c19d93fb146101bc578063e3a9db1a146101dc578063f2fde38b14610220578063f340fa011461024057600080fd5b806338af3eed146100ac57806343d726d6146100f857806351cff8d91461010f578063685ca1941461012f578063715018a61461015f5780638c52dc4114610174575b600080fd5b3480156100b857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b34801561010457600080fd5b5061010d610253565b005b34801561011b57600080fd5b5061010d61012a366004610900565b61030f565b34801561013b57600080fd5b5061014f61014a366004610900565b61038c565b60405190151581526020016100ef565b34801561016b57600080fd5b5061010d6103ae565b34801561018057600080fd5b5061010d6103c2565b34801561019557600080fd5b506000546001600160a01b03166100db565b3480156101b357600080fd5b5061010d610483565b3480156101c857600080fd5b5060025460ff166040516100ef919061093a565b3480156101e857600080fd5b506102126101f7366004610900565b6001600160a01b031660009081526001602052604090205490565b6040519081526020016100ef565b34801561022c57600080fd5b5061010d61023b366004610900565b610541565b61010d61024e366004610900565b6105b7565b61025b61063a565b600060025460ff16600281111561027457610274610924565b146102d85760405162461bcd60e51b815260206004820152602960248201527f526566756e64457363726f773a2063616e206f6e6c7920636c6f7365207768696044820152686c652061637469766560b81b60648201526084015b60405180910390fd5b6002805460ff1916811790556040517f088672c3a6e342f7cd94a65ba63b79df24a8973927b4d05d803c44bbf787d12f90600090a1565b6103188161038c565b6103805760405162461bcd60e51b815260206004820152603360248201527f436f6e646974696f6e616c457363726f773a207061796565206973206e6f7420604482015272616c6c6f77656420746f20776974686472617760681b60648201526084016102cf565b61038981610694565b50565b6000600160025460ff1660028111156103a7576103a7610924565b1492915050565b6103b661063a565b6103c0600061070b565b565b6103ca61063a565b600060025460ff1660028111156103e3576103e3610924565b1461044b5760405162461bcd60e51b815260206004820152603260248201527f526566756e64457363726f773a2063616e206f6e6c7920656e61626c6520726560448201527166756e6473207768696c652061637469766560701b60648201526084016102cf565b6002805460ff191660011790556040517f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8990600090a1565b6002805460ff16600281111561049b5761049b610924565b1461050e5760405162461bcd60e51b815260206004820152603860248201527f526566756e64457363726f773a2062656e65666963696172792063616e206f6e60448201527f6c79207769746864726177207768696c6520636c6f736564000000000000000060648201526084016102cf565b6103c06001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000164761075b565b61054961063a565b6001600160a01b0381166105ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102cf565b6103898161070b565b600060025460ff1660028111156105d0576105d0610924565b146106315760405162461bcd60e51b815260206004820152602b60248201527f526566756e64457363726f773a2063616e206f6e6c79206465706f736974207760448201526a68696c652061637469766560a81b60648201526084016102cf565b61038981610879565b6000546001600160a01b031633146103c05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102cf565b61069c61063a565b6001600160a01b03811660008181526001602052604081208054919055906106c4908261075b565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516106ff91815260200190565b60405180910390a25050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b804710156107ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016102cf565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146107f8576040519150601f19603f3d011682016040523d82523d6000602084013e6107fd565b606091505b50509050806108745760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016102cf565b505050565b61088161063a565b6001600160a01b0381166000908152600160205260408120805434928392916108ab908490610962565b90915550506040518181526001600160a01b038316907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020016106ff565b6001600160a01b038116811461038957600080fd5b60006020828403121561091257600080fd5b813561091d816108eb565b9392505050565b634e487b7160e01b600052602160045260246000fd5b602081016003831061095c57634e487b7160e01b600052602160045260246000fd5b91905290565b6000821982111561098357634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220d99790e641c40ef87f3b35b232f63f0df03ce3576454bb1cd00ad1fa9fc1f9c564736f6c63430008090033","deployedBytecode":"0x6080604052600436106100a75760003560e01c80638da5cb5b116100645780638da5cb5b146101895780639af6549a146101a7578063c19d93fb146101bc578063e3a9db1a146101dc578063f2fde38b14610220578063f340fa011461024057600080fd5b806338af3eed146100ac57806343d726d6146100f857806351cff8d91461010f578063685ca1941461012f578063715018a61461015f5780638c52dc4114610174575b600080fd5b3480156100b857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b34801561010457600080fd5b5061010d610253565b005b34801561011b57600080fd5b5061010d61012a366004610900565b61030f565b34801561013b57600080fd5b5061014f61014a366004610900565b61038c565b60405190151581526020016100ef565b34801561016b57600080fd5b5061010d6103ae565b34801561018057600080fd5b5061010d6103c2565b34801561019557600080fd5b506000546001600160a01b03166100db565b3480156101b357600080fd5b5061010d610483565b3480156101c857600080fd5b5060025460ff166040516100ef919061093a565b3480156101e857600080fd5b506102126101f7366004610900565b6001600160a01b031660009081526001602052604090205490565b6040519081526020016100ef565b34801561022c57600080fd5b5061010d61023b366004610900565b610541565b61010d61024e366004610900565b6105b7565b61025b61063a565b600060025460ff16600281111561027457610274610924565b146102d85760405162461bcd60e51b815260206004820152602960248201527f526566756e64457363726f773a2063616e206f6e6c7920636c6f7365207768696044820152686c652061637469766560b81b60648201526084015b60405180910390fd5b6002805460ff1916811790556040517f088672c3a6e342f7cd94a65ba63b79df24a8973927b4d05d803c44bbf787d12f90600090a1565b6103188161038c565b6103805760405162461bcd60e51b815260206004820152603360248201527f436f6e646974696f6e616c457363726f773a207061796565206973206e6f7420604482015272616c6c6f77656420746f20776974686472617760681b60648201526084016102cf565b61038981610694565b50565b6000600160025460ff1660028111156103a7576103a7610924565b1492915050565b6103b661063a565b6103c0600061070b565b565b6103ca61063a565b600060025460ff1660028111156103e3576103e3610924565b1461044b5760405162461bcd60e51b815260206004820152603260248201527f526566756e64457363726f773a2063616e206f6e6c7920656e61626c6520726560448201527166756e6473207768696c652061637469766560701b60648201526084016102cf565b6002805460ff191660011790556040517f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8990600090a1565b6002805460ff16600281111561049b5761049b610924565b1461050e5760405162461bcd60e51b815260206004820152603860248201527f526566756e64457363726f773a2062656e65666963696172792063616e206f6e60448201527f6c79207769746864726177207768696c6520636c6f736564000000000000000060648201526084016102cf565b6103c06001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000164761075b565b61054961063a565b6001600160a01b0381166105ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102cf565b6103898161070b565b600060025460ff1660028111156105d0576105d0610924565b146106315760405162461bcd60e51b815260206004820152602b60248201527f526566756e64457363726f773a2063616e206f6e6c79206465706f736974207760448201526a68696c652061637469766560a81b60648201526084016102cf565b61038981610879565b6000546001600160a01b031633146103c05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102cf565b61069c61063a565b6001600160a01b03811660008181526001602052604081208054919055906106c4908261075b565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516106ff91815260200190565b60405180910390a25050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b804710156107ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016102cf565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146107f8576040519150601f19603f3d011682016040523d82523d6000602084013e6107fd565b606091505b50509050806108745760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016102cf565b505050565b61088161063a565b6001600160a01b0381166000908152600160205260408120805434928392916108ab908490610962565b90915550506040518181526001600160a01b038316907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020016106ff565b6001600160a01b038116811461038957600080fd5b60006020828403121561091257600080fd5b813561091d816108eb565b9392505050565b634e487b7160e01b600052602160045260246000fd5b602081016003831061095c57634e487b7160e01b600052602160045260246000fd5b91905290565b6000821982111561098357634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220d99790e641c40ef87f3b35b232f63f0df03ce3576454bb1cd00ad1fa9fc1f9c564736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/introspection/ERC165":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC165","sourceName":"contracts/utils/introspection/ERC165.sol","abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/introspection/ERC165Checker":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC165Checker","sourceName":"contracts/utils/introspection/ERC165Checker.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220117d4739ea209855873e3a69cf4dc77f5649a6e5c941d771dcc0f36cfd51d3a564736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220117d4739ea209855873e3a69cf4dc77f5649a6e5c941d771dcc0f36cfd51d3a564736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/introspection/ERC165Storage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC165Storage","sourceName":"contracts/utils/introspection/ERC165Storage.sol","abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/introspection/ERC1820Implementer":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1820Implementer","sourceName":"contracts/utils/introspection/ERC1820Implementer.sol","abi":[{"inputs":[{"internalType":"bytes32","name":"interfaceHash","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"canImplementInterfaceForAddress","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b50610114806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063249cb3fa14602d575b600080fd5b603c603836600460a4565b604e565b60405190815260200160405180910390f35b6000828152602081815260408083206001600160a01b038516845290915281205460ff16607b576000609d565b7fa2ef4600d742022d532d4747cb3547474667d6f13804902513b2ec01c848f4b45b9392505050565b6000806040838503121560b657600080fd5b8235915060208301356001600160a01b038116811460d357600080fd5b80915050925092905056fea2646970667358221220af9541137737bcae4ca91010bdc12e6ce157547dd38d2d5785066de00fad9b3e64736f6c63430008090033","deployedBytecode":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063249cb3fa14602d575b600080fd5b603c603836600460a4565b604e565b60405190815260200160405180910390f35b6000828152602081815260408083206001600160a01b038516845290915281205460ff16607b576000609d565b7fa2ef4600d742022d532d4747cb3547474667d6f13804902513b2ec01c848f4b45b9392505050565b6000806040838503121560b657600080fd5b8235915060208301356001600160a01b038116811460d357600080fd5b80915050925092905056fea2646970667358221220af9541137737bcae4ca91010bdc12e6ce157547dd38d2d5785066de00fad9b3e64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/introspection/IERC165":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC165","sourceName":"contracts/utils/introspection/IERC165.sol","abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/introspection/IERC1820Implementer":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1820Implementer","sourceName":"contracts/utils/introspection/IERC1820Implementer.sol","abi":[{"inputs":[{"internalType":"bytes32","name":"interfaceHash","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"canImplementInterfaceForAddress","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/introspection/IERC1820Registry":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1820Registry","sourceName":"contracts/utils/introspection/IERC1820Registry.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bytes32","name":"interfaceHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"implementer","type":"address"}],"name":"InterfaceImplementerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"newManager","type":"address"}],"name":"ManagerChanged","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"_interfaceHash","type":"bytes32"}],"name":"getInterfaceImplementer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"implementsERC165Interface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"implementsERC165InterfaceNoCache","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"interfaceName","type":"string"}],"name":"interfaceHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"_interfaceHash","type":"bytes32"},{"internalType":"address","name":"implementer","type":"address"}],"name":"setInterfaceImplementer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"newManager","type":"address"}],"name":"setManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"updateERC165Cache","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/math/Math":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Math","sourceName":"contracts/utils/math/Math.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204a14f751b3f38a82303bdf89fdc12542c5fa1609e4895c7add5c67d1ca79b9c464736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204a14f751b3f38a82303bdf89fdc12542c5fa1609e4895c7add5c67d1ca79b9c464736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/math/SafeCast":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"SafeCast","sourceName":"contracts/utils/math/SafeCast.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a62378d355b38fa0abfa1c077e9c835782285fbd860732d27f2ee38b441a84d464736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a62378d355b38fa0abfa1c077e9c835782285fbd860732d27f2ee38b441a84d464736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/math/SafeMath":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"SafeMath","sourceName":"contracts/utils/math/SafeMath.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209738fa06839ad9c993fda222cd8796d9f4af8ec87c42dc83ad5376e21b184f6764736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209738fa06839ad9c993fda222cd8796d9f4af8ec87c42dc83ad5376e21b184f6764736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/math/SignedMath":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"SignedMath","sourceName":"contracts/utils/math/SignedMath.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206b958077e79d8c0218ea38180129587ea2f5f32e6ccbf5cada96c61f1cda30ae64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206b958077e79d8c0218ea38180129587ea2f5f32e6ccbf5cada96c61f1cda30ae64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/math/SignedSafeMath":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"SignedSafeMath","sourceName":"contracts/utils/math/SignedSafeMath.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220eac28e590fd923710978b0b42c5e6f8cc69e1a2b14089db10aa3a4fa30ae29e564736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220eac28e590fd923710978b0b42c5e6f8cc69e1a2b14089db10aa3a4fa30ae29e564736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Multicall":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Multicall","sourceName":"contracts/utils/Multicall.sol","abi":[{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/StorageSlot":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"StorageSlot","sourceName":"contracts/utils/StorageSlot.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209be81e3312f310746e52a8aef980c20007b986e39ffe78d4a990363c1a83cd2864736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209be81e3312f310746e52a8aef980c20007b986e39ffe78d4a990363c1a83cd2864736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Strings":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Strings","sourceName":"contracts/utils/Strings.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b096dc6b0e37ea9c827520996e336d2f126d85adfc64e5ab59d5969bae525c9864736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b096dc6b0e37ea9c827520996e336d2f126d85adfc64e5ab59d5969bae525c9864736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/structs/BitMaps":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"BitMaps","sourceName":"contracts/utils/structs/BitMaps.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c5ac034d38686d0b67fda2eec38f26b45891cd22ae31d0df027016e4b65cf13a64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c5ac034d38686d0b67fda2eec38f26b45891cd22ae31d0df027016e4b65cf13a64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/structs/DoubleEndedQueue":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"DoubleEndedQueue","sourceName":"contracts/utils/structs/DoubleEndedQueue.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"inputs":[],"name":"OutOfBounds","type":"error"}],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a1f883749a60323cd05a4f6a4b0582f16eb5d58287457ceb8942b07688a344f264736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a1f883749a60323cd05a4f6a4b0582f16eb5d58287457ceb8942b07688a344f264736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/structs/EnumerableMap":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"EnumerableMap","sourceName":"contracts/utils/structs/EnumerableMap.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201e95925852ea21fb1440ea745a714cf6128faf5aeadb3e2298ed42fc376ba86e64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201e95925852ea21fb1440ea745a714cf6128faf5aeadb3e2298ed42fc376ba86e64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/structs/EnumerableSet":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"EnumerableSet","sourceName":"contracts/utils/structs/EnumerableSet.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202a8392941a7271bf335ac2e9721c0be783ed6532ec5fd4db2e0d57622a97964e64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202a8392941a7271bf335ac2e9721c0be783ed6532ec5fd4db2e0d57622a97964e64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Timers":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Timers","sourceName":"contracts/utils/Timers.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122071cad4555d45eedf68405aec2cee18b6803a8196b147c8bde0315e331f76f7da64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122071cad4555d45eedf68405aec2cee18b6803a8196b147c8bde0315e331f76f7da64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/amb/IAMB":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IAMB","sourceName":"contracts/vendor/amb/IAMB.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"executor","type":"address"},{"indexed":true,"internalType":"bytes32","name":"messageId","type":"bytes32"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"AffirmationCompleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"executor","type":"address"},{"indexed":true,"internalType":"bytes32","name":"messageId","type":"bytes32"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"RelayedMessage","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"messageId","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"encodedData","type":"bytes"}],"name":"UserRequestForAffirmation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"messageId","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"encodedData","type":"bytes"}],"name":"UserRequestForSignature","type":"event"},{"inputs":[],"name":"destinationChainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_messageId","type":"bytes32"}],"name":"failedMessageDataHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_messageId","type":"bytes32"}],"name":"failedMessageReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_messageId","type":"bytes32"}],"name":"failedMessageSender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxGasPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_messageId","type":"bytes32"}],"name":"messageCallStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"messageId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"messageSender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"messageSourceChainId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"uint256","name":"_gas","type":"uint256"}],"name":"requireToConfirmMessage","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"uint256","name":"_gas","type":"uint256"}],"name":"requireToPassMessage","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sourceChainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transactionHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/arbitrum/IArbSys":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IArbSys","sourceName":"contracts/vendor/arbitrum/IArbSys.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"destination","type":"address"},{"indexed":true,"internalType":"uint256","name":"uniqueId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"batchNumber","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"indexInBatch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"arbBlockNum","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethBlockNum","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"callvalue","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"L2ToL1Transaction","type":"event"},{"inputs":[],"name":"arbBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"arbChainID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"arbOSVersion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getStorageAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStorageGasAvailable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getTransactionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTopLevelCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"dest","type":"address"}],"name":"mapL1SenderContractAddressToL2Alias","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"myCallersAddressWithoutAliasing","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"calldataForL1","type":"bytes"}],"name":"sendTxToL1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"wasMyCallersAddressAliased","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"destination","type":"address"}],"name":"withdrawEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/arbitrum/IBridge":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IBridge","sourceName":"contracts/vendor/arbitrum/IBridge.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"outbox","type":"address"},{"indexed":true,"internalType":"address","name":"destAddr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"BridgeCallTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"inbox","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"InboxToggle","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"messageIndex","type":"uint256"},{"indexed":true,"internalType":"bytes32","name":"beforeInboxAcc","type":"bytes32"},{"indexed":false,"internalType":"address","name":"inbox","type":"address"},{"indexed":false,"internalType":"uint8","name":"kind","type":"uint8"},{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"bytes32","name":"messageDataHash","type":"bytes32"}],"name":"MessageDelivered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"outbox","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"OutboxToggle","type":"event"},{"inputs":[],"name":"activeOutbox","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"inbox","type":"address"}],"name":"allowedInboxes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"outbox","type":"address"}],"name":"allowedOutboxes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes32","name":"messageDataHash","type":"bytes32"}],"name":"deliverMessageToInbox","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"destAddr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"executeCall","outputs":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"inboxAccs","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"messageCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"inbox","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setInbox","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"inbox","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setOutbox","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/arbitrum/IInbox":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IInbox","sourceName":"contracts/vendor/arbitrum/IInbox.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"messageNum","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"InboxMessageDelivered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"messageNum","type":"uint256"}],"name":"InboxMessageDeliveredFromOrigin","type":"event"},{"inputs":[],"name":"bridge","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"destAddr","type":"address"},{"internalType":"uint256","name":"arbTxCallValue","type":"uint256"},{"internalType":"uint256","name":"maxSubmissionCost","type":"uint256"},{"internalType":"address","name":"submissionRefundAddress","type":"address"},{"internalType":"address","name":"valueRefundAddress","type":"address"},{"internalType":"uint256","name":"maxGas","type":"uint256"},{"internalType":"uint256","name":"gasPriceBid","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"createRetryableTicket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"destAddr","type":"address"},{"internalType":"uint256","name":"arbTxCallValue","type":"uint256"},{"internalType":"uint256","name":"maxSubmissionCost","type":"uint256"},{"internalType":"address","name":"submissionRefundAddress","type":"address"},{"internalType":"address","name":"valueRefundAddress","type":"address"},{"internalType":"uint256","name":"maxGas","type":"uint256"},{"internalType":"uint256","name":"gasPriceBid","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"createRetryableTicketNoRefundAliasRewrite","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxSubmissionCost","type":"uint256"}],"name":"depositEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"pauseCreateRetryables","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxGas","type":"uint256"},{"internalType":"uint256","name":"gasPriceBid","type":"uint256"},{"internalType":"address","name":"destAddr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"sendContractTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxGas","type":"uint256"},{"internalType":"uint256","name":"gasPriceBid","type":"uint256"},{"internalType":"address","name":"destAddr","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"sendL1FundedContractTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxGas","type":"uint256"},{"internalType":"uint256","name":"gasPriceBid","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"address","name":"destAddr","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"sendL1FundedUnsignedTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"messageData","type":"bytes"}],"name":"sendL2Message","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxGas","type":"uint256"},{"internalType":"uint256","name":"gasPriceBid","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"address","name":"destAddr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"sendUnsignedTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startRewriteAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopRewriteAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpauseCreateRetryables","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/arbitrum/IMessageProvider":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IMessageProvider","sourceName":"contracts/vendor/arbitrum/IMessageProvider.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"messageNum","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"InboxMessageDelivered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"messageNum","type":"uint256"}],"name":"InboxMessageDeliveredFromOrigin","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/arbitrum/IOutbox":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IOutbox","sourceName":"contracts/vendor/arbitrum/IOutbox.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"destAddr","type":"address"},{"indexed":true,"internalType":"address","name":"l2Sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"outboxEntryIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"transactionIndex","type":"uint256"}],"name":"OutBoxTransactionExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"batchNum","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"outboxEntryIndex","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"outputRoot","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"numInBatch","type":"uint256"}],"name":"OutboxEntryCreated","type":"event"},{"inputs":[],"name":"l2ToL1BatchNum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l2ToL1Block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l2ToL1EthBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l2ToL1OutputId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l2ToL1Sender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l2ToL1Timestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"batchNum","type":"uint256"}],"name":"outboxEntryExists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"sendsData","type":"bytes"},{"internalType":"uint256[]","name":"sendLengths","type":"uint256[]"}],"name":"processOutgoingMessages","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/compound/ICompoundTimelock":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ICompoundTimelock","sourceName":"contracts/vendor/compound/ICompoundTimelock.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"CancelTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ExecuteTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"}],"name":"NewAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newDelay","type":"uint256"}],"name":"NewDelay","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"NewPendingAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"QueueTransaction","type":"event"},{"inputs":[],"name":"GRACE_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAXIMUM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"cancelTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"delay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"executeTransaction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"queueTransaction","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"queuedTransactions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"setDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"setPendingAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/optimism/ICrossDomainMessenger":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ICrossDomainMessenger","sourceName":"contracts/vendor/optimism/ICrossDomainMessenger.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"msgHash","type":"bytes32"}],"name":"FailedRelayedMessage","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"msgHash","type":"bytes32"}],"name":"RelayedMessage","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"bytes","name":"message","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"messageNonce","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"gasLimit","type":"uint256"}],"name":"SentMessage","type":"event"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"uint32","name":"_gasLimit","type":"uint32"}],"name":"sendMessage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"xDomainMessageSender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/polygon/IFxMessageProcessor":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IFxMessageProcessor","sourceName":"contracts/vendor/polygon/IFxMessageProcessor.sol","abi":[{"inputs":[{"internalType":"uint256","name":"stateId","type":"uint256"},{"internalType":"address","name":"rootMessageSender","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"processMessageFromRoot","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/base/ERC721MultiTokenStream":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721MultiTokenStream","sourceName":"contracts/streams/ERC721/base/ERC721MultiTokenStream.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/base/IERC721MultiTokenStream":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721MultiTokenStream","sourceName":"contracts/streams/ERC721/base/ERC721MultiTokenStream.sol","abi":[{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"claimableAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/ERC721CustodialStakingExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721CustodialStakingExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721CustodialStakingExtension.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721CustodialStakingExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721StakingExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lastStakingTime","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxStakingTotalDurations","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minStakingDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"savedStakedDurations","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setMaxStakingTotalDurations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setMinStakingDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"uint256","name":"startTokenId","type":"uint256"},{"internalType":"uint256","name":"endTokenId","type":"uint256"}],"name":"tokensInCustody","outputs":[{"internalType":"bool[]","name":"tokens","type":"bool[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"totalStakedDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"totalStakedDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"unlockingTime","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"unlockingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/ERC721EmissionReleaseExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721EmissionReleaseExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721EmissionReleaseExtension.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"calcUntil","type":"uint64"}],"name":"emissionAmountUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionEnd","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionStart","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionTimeUnit","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721EmissionReleaseExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"rateByToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"calcUntil","type":"uint64"}],"name":"releasedAmountUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionEnd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setEmissionRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionTimeUnit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/ERC721EqualSplitExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721EqualSplitExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721EqualSplitExtension.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721EqualSplitExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setTotalTickets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTickets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/ERC721InstantReleaseExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721InstantReleaseExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721InstantReleaseExtension.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721InstantReleaseExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/ERC721LockableClaimExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721LockableClaimExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721LockableClaimExtension.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimLockedUntil","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721LockableClaimExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setClaimLockedUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/ERC721LockedStakingExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721LockedStakingExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721LockedStakingExtension.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721LockedStakingExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721StakingExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lastStakingTime","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxStakingTotalDurations","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minStakingDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"savedStakedDurations","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setMaxStakingTotalDurations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setMinStakingDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"totalStakedDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"totalStakedDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"unlockingTime","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"unlockingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/ERC721ShareSplitExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721ShareSplitExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721ShareSplitExtension.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"prevShares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newShares","type":"uint256"}],"name":"SharesUpdated","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"getSharesByTokens","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721ShareSplitExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_shares","type":"uint256[]"}],"name":"setSharesForTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"shares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/ERC721StakingExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721StakingExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721StakingExtension.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721StakingExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lastStakingTime","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxStakingTotalDurations","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minStakingDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"savedStakedDurations","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setMaxStakingTotalDurations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setMinStakingDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"totalStakedDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"totalStakedDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"unlockingTime","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"unlockingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/ERC721VestingReleaseExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721VestingReleaseExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721VestingReleaseExtension.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721VestingReleaseExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setVestingDurationSeconds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setVestingStartTimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vestingDurationSeconds","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vestingStartTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/IERC721CustodialStakingExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721CustodialStakingExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721CustodialStakingExtension.sol","abi":[{"inputs":[],"name":"hasERC721CustodialStakingExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"uint256","name":"startTokenId","type":"uint256"},{"internalType":"uint256","name":"endTokenId","type":"uint256"}],"name":"tokensInCustody","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/IERC721EmissionReleaseExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721EmissionReleaseExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721EmissionReleaseExtension.sol","abi":[{"inputs":[{"internalType":"uint64","name":"calcUntil","type":"uint64"}],"name":"emissionAmountUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721EmissionReleaseExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"rateByToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"calcUntil","type":"uint64"}],"name":"releasedAmountUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionEnd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setEmissionRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionTimeUnit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/IERC721EqualSplitExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721EqualSplitExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721EqualSplitExtension.sol","abi":[{"inputs":[],"name":"hasERC721EqualSplitExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setTotalTickets","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/IERC721InstantReleaseExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721InstantReleaseExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721InstantReleaseExtension.sol","abi":[{"inputs":[],"name":"hasERC721InstantReleaseExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/IERC721LockableClaimExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721LockableClaimExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721LockableClaimExtension.sol","abi":[{"inputs":[],"name":"hasERC721LockableClaimExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setClaimLockedUntil","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/IERC721LockedStakingExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721LockedStakingExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721LockedStakingExtension.sol","abi":[{"inputs":[],"name":"hasERC721LockedStakingExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/IERC721ShareSplitExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721ShareSplitExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721ShareSplitExtension.sol","abi":[{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"getSharesByTokens","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721ShareSplitExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_shares","type":"uint256[]"}],"name":"setSharesForTokens","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/IERC721StakingExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721StakingExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721StakingExtension.sol","abi":[{"inputs":[],"name":"hasERC721StakingExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/extensions/IERC721VestingReleaseExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721VestingReleaseExtension","sourceName":"contracts/streams/ERC721/extensions/ERC721VestingReleaseExtension.sol","abi":[{"inputs":[],"name":"hasERC721VestingReleaseExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setVestingDurationSeconds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setVestingStartTimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/presets/ERC721CustodialStakingEmissionStream":{"address":{"1":"0x0e6223dEfF249b5E2Ff966f2f24CE87de1229Df5","3":"0xFADbF74931C8a1eD22e80b390524A83717161eAe","4":"0xd558dd6a5664E004772008Ceb48005276107b5c5","5":"0x293E9F67cEF4d7465b6B9E19ccDB16F68536F54d","25":"0x1Fc79E01fe724Ef4A1f8995f1299B90565a6AD39","56":"0x01d50c1438f38A9DD5906a92bdEC7efB60A7c584","65":"0x27F848F575D9EDBc10c874825CCE379b19e9D155","66":"0xA2474D51D29079aa55e6FD6Ee97FFCa63f1f3661","97":"0xCeEb0cF54453f3070Da376fe34D94E278D3f3f6b","137":"0xAC4EdE9b090b393AEC91Caf6A9631b6Bb0A8Bc14","250":"0xa878c0aeAaA76Ec7A370b76Ac5BcAc4364eD60e1","280":"0x04c67744d9386C52Ce60BC20C1f1431D1Db1BF3D","4002":"0xa878c0aeAaA76Ec7A370b76Ac5BcAc4364eD60e1","9000":"0x27F848F575D9EDBc10c874825CCE379b19e9D155","42161":"0x614A331D14164720352ef916f4b91695c9199c7b","43113":"0x0e6223dEfF249b5E2Ff966f2f24CE87de1229Df5","43114":"0xfdc3a9eB43e0fa62cA206D9F51A1cDdf9dD5f1e8","421611":"0x48F9152b91103E158029921C59Ff844d30468288","arbitrumOne":"0x614A331D14164720352ef916f4b91695c9199c7b","arbitrumTestnet":"0x48F9152b91103E158029921C59Ff844d30468288","avalanche":"0xfdc3a9eB43e0fa62cA206D9F51A1cDdf9dD5f1e8","avalancheFujiTestnet":"0x0e6223dEfF249b5E2Ff966f2f24CE87de1229Df5","bsc":"0x01d50c1438f38A9DD5906a92bdEC7efB60A7c584","bscTestnet":"0xCeEb0cF54453f3070Da376fe34D94E278D3f3f6b","cronos":"0x1Fc79E01fe724Ef4A1f8995f1299B90565a6AD39","evmosTestnet":"0x27F848F575D9EDBc10c874825CCE379b19e9D155","ftmTestnet":"0xa878c0aeAaA76Ec7A370b76Ac5BcAc4364eD60e1","goerli":"0x293E9F67cEF4d7465b6B9E19ccDB16F68536F54d","mainnet":"0x0e6223dEfF249b5E2Ff966f2f24CE87de1229Df5","okcMainnet":"0xA2474D51D29079aa55e6FD6Ee97FFCa63f1f3661","okcTestnet":"0x27F848F575D9EDBc10c874825CCE379b19e9D155","opera":"0xa878c0aeAaA76Ec7A370b76Ac5BcAc4364eD60e1","polygon":"0xAC4EdE9b090b393AEC91Caf6A9631b6Bb0A8Bc14","rinkeby":"0xd558dd6a5664E004772008Ceb48005276107b5c5","ropsten":"0xFADbF74931C8a1eD22e80b390524A83717161eAe","zksyncTestnet":"0x04c67744d9386C52Ce60BC20C1f1431D1Db1BF3D"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721CustodialStakingEmissionStream","sourceName":"contracts/streams/ERC721/presets/ERC721CustodialStakingEmissionStream.sol","abi":[{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint64","name":"minStakingDuration","type":"uint64"},{"internalType":"uint64","name":"maxStakingTotalDurations","type":"uint64"},{"internalType":"uint256","name":"emissionRate","type":"uint256"},{"internalType":"uint64","name":"emissionTimeUnit","type":"uint64"},{"internalType":"uint64","name":"emissionStart","type":"uint64"},{"internalType":"uint64","name":"emissionEnd","type":"uint64"},{"internalType":"uint256","name":"totalTickets","type":"uint256"},{"internalType":"uint64","name":"claimLockedUntil","type":"uint64"}],"internalType":"struct ERC721CustodialStakingEmissionStream.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimLockedUntil","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"calcUntil","type":"uint64"}],"name":"emissionAmountUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionEnd","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionStart","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionTimeUnit","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721CustodialStakingExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721EmissionReleaseExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721EqualSplitExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721LockableClaimExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721StakingExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint64","name":"minStakingDuration","type":"uint64"},{"internalType":"uint64","name":"maxStakingTotalDurations","type":"uint64"},{"internalType":"uint256","name":"emissionRate","type":"uint256"},{"internalType":"uint64","name":"emissionTimeUnit","type":"uint64"},{"internalType":"uint64","name":"emissionStart","type":"uint64"},{"internalType":"uint64","name":"emissionEnd","type":"uint64"},{"internalType":"uint256","name":"totalTickets","type":"uint256"},{"internalType":"uint64","name":"claimLockedUntil","type":"uint64"}],"internalType":"struct ERC721CustodialStakingEmissionStream.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lastStakingTime","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxStakingTotalDurations","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minStakingDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"rateByToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"calcUntil","type":"uint64"}],"name":"releasedAmountUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"rewardAmountByToken","outputs":[{"internalType":"uint256","name":"total","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"rewardAmountByToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"savedStakedDurations","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setClaimLockedUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionEnd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setEmissionRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionTimeUnit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setMaxStakingTotalDurations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setMinStakingDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setTotalTickets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"},{"internalType":"uint256","name":"startTokenId","type":"uint256"},{"internalType":"uint256","name":"endTokenId","type":"uint256"}],"name":"tokensInCustody","outputs":[{"internalType":"bool[]","name":"tokens","type":"bool[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"totalStakedDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"totalStakedDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTickets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"unlockingTime","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"unlockingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x60806040523480156200001157600080fd5b506040516200456538038062004565833981016040819052620000349162000798565b6200003f3362000057565b6001600255620000508133620000b2565b50620008c6565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620000d35750600054600160ff909116105b80620001035750620000f0306200026760201b620024441760201c565b15801562000103575060005460ff166001145b6200016c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000190576000805461ff0019166101001790555b6200019b8262000057565b620001a882600062000276565b82516020840151620001bb9190620002b0565b620001d583604001518460600151620002e660201b60201c565b620001f983608001518460a001518560c001518660e001516200032660201b60201c565b6101008301516200020a9062000364565b6101208301516200021b906200039c565b801562000262576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6001600160a01b03163b151590565b600054610100900460ff16620002a05760405162461bcd60e51b8152600401620001639062000865565b620002ac8282620003d1565b5050565b600054610100900460ff16620002da5760405162461bcd60e51b8152600401620001639062000865565b620002ac828262000478565b600054610100900460ff16620003105760405162461bcd60e51b8152600401620001639062000865565b6200031a620004e2565b620002ac828262000520565b600054610100900460ff16620003505760405162461bcd60e51b8152600401620001639062000865565b6200035e8484848462000589565b50505050565b600054610100900460ff166200038e5760405162461bcd60e51b8152600401620001639062000865565b620003998162000614565b50565b600054610100900460ff16620003c65760405162461bcd60e51b8152600401620001639062000865565b620003998162000655565b600054610100900460ff16620003fb5760405162461bcd60e51b8152600401620001639062000865565b6200040d63ac2ba33360e01b620006a7565b600d8054600160401b600160e01b03198116680100000000000000006001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b8360038111156200046f576200046f620008b0565b02179055505050565b600054610100900460ff16620004a25760405162461bcd60e51b8152600401620001639062000865565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055620002ac631ba050e960e21b620006a7565b600054610100900460ff166200050c5760405162461bcd60e51b8152600401620001639062000865565b6200051e633f7ab4d760e11b620006a7565b565b600054610100900460ff166200054a5760405162461bcd60e51b8152600401620001639062000865565b600980546001600160401b0383811668010000000000000000026001600160801b031990921690851617179055620002ac633a41ba5360e11b620006a7565b600054610100900460ff16620005b35760405162461bcd60e51b8152600401620001639062000865565b6006849055600780546001600160401b03838116600160801b02600160801b600160c01b031986831668010000000000000000026001600160801b03199094169288169290921792909217161790556200035e63c9f600a960e01b620006a7565b600054610100900460ff166200063e5760405162461bcd60e51b8152600401620001639062000865565b600881905562000399632d5305cb60e21b620006a7565b600054610100900460ff166200067f5760405162461bcd60e51b8152600401620001639062000865565b600d80546001600160401b0319166001600160401b038316179055620003996317b2ef4360e31b5b6001600160e01b03198082169003620007035760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640162000163565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60405161014081016001600160401b03811182821017156200075d57634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b03811681146200077b57600080fd5b919050565b80516001600160401b03811681146200077b57600080fd5b60006101408284031215620007ac57600080fd5b620007b66200072b565b620007c18362000763565b8152620007d16020840162000780565b6020820152620007e46040840162000780565b6040820152620007f76060840162000780565b6060820152608083015160808201526200081460a0840162000780565b60a08201526200082760c0840162000780565b60c08201526200083a60e0840162000780565b60e082015261010083810151908201526101206200085a81850162000780565b908201529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b613c8f80620008d66000396000f3fe60806040526004361061038b5760003560e01c80639199690b116101d4578063d0d6641d116100fe578063d0d6641d14610baa578063d1335b6914610551578063d4244f2414610bca578063d5ed4d5a14610bf1578063d97314f514610c11578063da82b22714610c31578063dcbe353f14610c46578063dd11247e14610c6d578063dda8820f14610551578063ddd5e1b214610c83578063de6d6d9614610ca3578063de76a67614610cc3578063e449f34114610ce3578063f2fde38b14610d03578063f389b6e414610d23578063f4415ad614610d43578063f593dfc814610d7b578063f66e38c214610d9b578063fd5e6dd114610dbb57600080fd5b80639199690b14610551578063968d9b2c1461095857806396afc450146109785780639edfe8301461098e578063a1bdb15e146109ae578063a1cf6493146109ce578063a5549bc614610a11578063a5b23be714610a31578063a694fc3a14610a51578063a86b21e814610a71578063a8a67c8c14610a91578063aaf2f99914610ab1578063ae890c0a14610ad1578063af121f5414610af1578063bf57972e14610b12578063c088184914610b3f578063c0bb38ff14610b75578063c1a2fe8014610551578063c723955a14610b9557600080fd5b80633a73f7d6116102b55780633a73f7d61461068f5780633b3f12e2146106af5780633d2dded5146106cf57806349561cb91461070c5780634abb4c491461072d578063513da9481461075a57806354fd4d501461078157806357dc48c8146107b05780636057e0ec1461080457806361949636146108255780636ba4c13814610845578063715018a61461086557806378b094ca1461087a578063790c0c731461089a5780638368909c146108ba578063837fe140146108e157806384fd5ae0146108f657806389c6b815146109165780638da5cb5b1461093657600080fd5b80630191c0af146103a457806301ffc9a7146103d757806306fdde031461040757806308289dbe1461042957806308ae7e54146104775780630c805a44146104975780630fbf0a93146104cd57806314427a96146104ed578063150b7a021461050d5780631bc51b26146105515780631c725fdc1461056557806325289bad146105855780632890d033146105ac5780632c0e1313146105c15780632c233067146105e15780632d00b587146106015780632e17de781461062f57806333abcdbd1461064f578063379607f51461066f57600080fd5b3661039f576000341161039d57600080fd5b005b600080fd5b3480156103b057600080fd5b506103c46103bf3660046132bf565b610df1565b6040519081526020015b60405180910390f35b3480156103e357600080fd5b506103f76103f2366004613315565b610e47565b60405190151581526020016103ce565b34801561041357600080fd5b5061041c610e87565b6040516103ce919061333f565b34801561043557600080fd5b5061045f610444366004613394565b600b602052600090815260409020546001600160401b031681565b6040516001600160401b0390911681526020016103ce565b34801561048357600080fd5b5060095461045f906001600160401b031681565b3480156104a357600080fd5b5061045f6104b2366004613394565b600a602052600090815260409020546001600160401b031681565b3480156104d957600080fd5b5061039d6104e83660046133ad565b610ea3565b3480156104f957600080fd5b50600d5461045f906001600160401b031681565b34801561051957600080fd5b5061053861052836600461345d565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016103ce565b34801561055d57600080fd5b5060016103f7565b34801561057157600080fd5b5061039d610580366004613537565b610f1b565b34801561059157600080fd5b5060035461045f90600160a01b90046001600160401b031681565b3480156105b857600080fd5b506103c4610fa5565b3480156105cd57600080fd5b5061039d6105dc366004613537565b610fb6565b3480156105ed57600080fd5b5061039d6105fc366004613552565b611012565b34801561060d57600080fd5b50600d5461062290600160f01b900460ff1681565b6040516103ce9190613589565b34801561063b57600080fd5b5061039d61064a366004613394565b611071565b34801561065b57600080fd5b5061045f61066a366004613394565b6110a7565b34801561067b57600080fd5b5061039d61068a366004613394565b61119c565b34801561069b57600080fd5b506103c46106aa3660046133ad565b6111aa565b3480156106bb57600080fd5b506103c46106ca3660046132bf565b6111fc565b3480156106db57600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc546103c4565b34801561071857600080fd5b50600d546103f790600160f81b900460ff1681565b34801561073957600080fd5b5061074d6107483660046133ad565b61127a565b6040516103ce91906135b1565b34801561076657600080fd5b5060075461045f90600160401b90046001600160401b031681565b34801561078d57600080fd5b5061041c60405180604001604052806003815260200162302e3160e81b81525081565b3480156107bc57600080fd5b506107ef6107cb3660046135f5565b60046020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016103ce565b34801561081057600080fd5b50600d546103f790600160e01b900460ff1681565b34801561083157600080fd5b5060075461045f906001600160401b031681565b34801561085157600080fd5b5061039d6108603660046133ad565b611325565b34801561087157600080fd5b5061039d611336565b34801561088657600080fd5b5061039d610895366004613537565b61134a565b3480156108a657600080fd5b506103c46108b5366004613625565b6113b0565b3480156108c657600080fd5b5060075461045f90600160801b90046001600160401b031681565b3480156108ed57600080fd5b5061039d611474565b34801561090257600080fd5b506103c46109113660046133ad565b6114bb565b34801561092257600080fd5b506103c46109313660046133ad565b61154e565b34801561094257600080fd5b5061094b611563565b6040516103ce9190613642565b34801561096457600080fd5b506103c4610973366004613394565b611578565b34801561098457600080fd5b506103c460065481565b34801561099a57600080fd5b506103c46109a9366004613537565b611585565b3480156109ba57600080fd5b5061039d6109c9366004613394565b6115ca565b3480156109da57600080fd5b506103c46109e93660046135f5565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b348015610a1d57600080fd5b5061039d610a2c366004613537565b611609565b348015610a3d57600080fd5b506103c4610a4c366004613394565b611665565b348015610a5d57600080fd5b5061039d610a6c366004613394565b6116ab565b348015610a7d57600080fd5b506103c4610a8c366004613537565b611710565b348015610a9d57600080fd5b5061039d610aac366004613656565b61174c565b348015610abd57600080fd5b5061039d610acc366004613537565b6118ce565b348015610add57600080fd5b5061039d610aec366004613394565b611934565b348015610afd57600080fd5b50600d546103f790600160e81b900460ff1681565b348015610b1e57600080fd5b50610b32610b2d366004613737565b611973565b6040516103ce919061376c565b348015610b4b57600080fd5b506103c4610b5a366004613625565b6001600160a01b031660009081526005602052604090205490565b348015610b8157600080fd5b5061039d610b90366004613625565b611a37565b348015610ba157600080fd5b5061039d611a95565b348015610bb657600080fd5b506103c4610bc5366004613394565b611af6565b348015610bd657600080fd5b5060095461045f90600160401b90046001600160401b031681565b348015610bfd57600080fd5b5060035461094b906001600160a01b031681565b348015610c1d57600080fd5b5061039d610c2c366004613537565b611b50565b348015610c3d57600080fd5b5061039d611bac565b348015610c5257600080fd5b50600d5461094b90600160401b90046001600160a01b031681565b348015610c7957600080fd5b506103c460085481565b348015610c8f57600080fd5b5061039d610c9e3660046135f5565b611bf2565b348015610caf57600080fd5b5061039d610cbe3660046137a6565b611deb565b348015610ccf57600080fd5b5061045f610cde3660046133ad565b612039565b348015610cef57600080fd5b5061039d610cfe3660046133ad565b612085565b348015610d0f57600080fd5b5061039d610d1e366004613625565b6120b4565b348015610d2f57600080fd5b5061039d610d3e366004613811565b61212a565b348015610d4f57600080fd5b506103c4610d5e366004613394565b600090815260046020908152604080832083805290915290205490565b348015610d8757600080fd5b5061039d610d96366004613537565b61238f565b348015610da757600080fd5b506103c4610db63660046135f5565b6123f5565b348015610dc757600080fd5b5061094b610dd6366004613394565b600c602052600090815260409020546001600160a01b031681565b600080805b84811015610e3e57610e20868683818110610e1357610e13613878565b90506020020135856123f5565b610e2a90836138a4565b915080610e36816138bc565b915050610df6565b50949350505050565b60006301ffc9a760e01b6001600160e01b031983161480610e8157506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b604051806060016040528060288152602001613c326028913981565b6002805403610ecd5760405162461bcd60e51b8152600401610ec4906138d5565b60405180910390fd5b600280556007546001600160401b03600160401b9091048116429091161015610f085760405162461bcd60e51b8152600401610ec49061390c565b610f128282612453565b50506001600255565b610f2361249c565b6003546001600160401b03600160a01b909104811690821611610f785760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b6044820152606401610ec4565b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000610fb160006113b0565b905090565b610fbe61249c565b60035442600160a01b9091046001600160401b031610610ff05760405162461bcd60e51b8152600401610ec490613935565b600d80546001600160401b0319166001600160401b0392909216919091179055565b61101a61249c565b600d54600160f81b900460ff16156110445760405162461bcd60e51b8152600401610ec49061395c565b600d805482919060ff60f01b1916600160f01b83600381111561106957611069613573565b021790555050565b60028054036110925760405162461bcd60e51b8152600401610ec4906138d5565b6002805561109f816124fb565b506001600255565b6000818152600b6020908152604080832054600a9092528220546001600160401b039182169116156111645760006110dd612506565b905042816001600160401b031611156110f35750425b6000848152600a60205260409020546001600160401b031615611162576000848152600a60205260409020546001600160401b039081169082161115611162576000848152600a6020526040902054611155906001600160401b03168261397c565b61115f90836139a4565b91505b505b6009546001600160401b03600160401b90910481169082161115610e815750600954600160401b90046001600160401b031692915050565b6111a7816000611bf2565b50565b6000805b828110156111f5576111d78484838181106111cb576111cb613878565b90506020020135611665565b6111e190836138a4565b9150806111ed816138bc565b9150506111ae565b5092915050565b600080805b84811015610e3e576004600087878481811061121f5761121f613878565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b03168152602001908152602001600020600001548261126691906138a4565b915080611272816138bc565b915050611201565b60606000826001600160401b03811115611296576112966133ee565b6040519080825280602002602001820160405280156112bf578160200160208202803683370190505b50905060005b8381101561131d576112ee8585838181106112e2576112e2613878565b90506020020135611af6565b82828151811061130057611300613878565b602090810291909101015280611315816138bc565b9150506112c5565b509392505050565b611332828260003361212a565b5050565b61133e61249c565b6113486000612544565b565b61135261249c565b60035442600160a01b9091046001600160401b0316106113845760405162461bcd60e51b8152600401610ec490613935565b600780546001600160401b03909216600160801b02600160801b600160c01b0319909216919091179055565b60006001600160a01b0382166113e4576001600160a01b038216600090815260056020526040902054610e819047906138a4565b6040516370a0823160e01b81526001600160a01b038316906370a0823190611410903090600401613642565b602060405180830381865afa15801561142d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145191906139cf565b6001600160a01b038316600090815260056020526040902054610e8191906138a4565b61147c61249c565b600d54600160e01b900460ff16156114a65760405162461bcd60e51b8152600401610ec49061395c565b600d805460ff60e01b1916600160e01b179055565b60008060005b8381101561152a576000600a60008787858181106114e1576114e1613878565b60209081029290920135835250810191909152604001600020546001600160401b031611156115185781611514816138bc565b9250505b80611522816138bc565b9150506114c1565b506008548160065461153c91906139e8565b6115469190613a1d565b949350505050565b600061155c838360006111fc565b9392505050565b6000546201000090046001600160a01b031690565b6000610e818260006123f5565b6007546000906001600160401b03808216916115aa91600160401b909104168461397c565b6115b49190613a31565b6001600160401b0316600654610e8191906139e8565b6115d261249c565b60035442600160a01b9091046001600160401b0316106116045760405162461bcd60e51b8152600401610ec490613935565b600655565b61161161249c565b60035442600160a01b9091046001600160401b0316106116435760405162461bcd60e51b8152600401610ec490613935565b600980546001600160401b0319166001600160401b0392909216919091179055565b6007546008546000916001600160401b031690611681846110a7565b6001600160401b031660065461169791906139e8565b6116a19190613a1d565b610e819190613a1d565b60028054036116cc5760405162461bcd60e51b8152600401610ec4906138d5565b600280556007546001600160401b03600160401b90910481164290911610156117075760405162461bcd60e51b8152600401610ec49061390c565b61109f8161259f565b6007546006546000916001600160401b03808216929161173991600160401b909104168561397c565b6001600160401b03166116a191906139e8565b600054610100900460ff161580801561176c5750600054600160ff909116105b8061178d575061177b30612444565b15801561178d575060005460ff166001145b6117f05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ec4565b6000805460ff191660011790558015611813576000805461ff0019166101001790555b61181c82612544565b6118278260006125aa565b611839836000015184602001516125db565b61184b8360400151846060015161260c565b61186783608001518460a001518560c001518660e00151612645565b61187583610100015161267e565b6118838361012001516126ae565b80156118c9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6118d661249c565b60035442600160a01b9091046001600160401b0316106119085760405162461bcd60e51b8152600401610ec490613935565b600780546001600160401b03909216600160401b02600160401b600160801b0319909216919091179055565b61193c61249c565b60035442600160a01b9091046001600160401b03161061196e5760405162461bcd60e51b8152600401610ec490613935565b600855565b606061197f8383613a57565b61198a9060016138a4565b6001600160401b038111156119a1576119a16133ee565b6040519080825280602002602001820160405280156119ca578160200160208202803683370190505b509050825b82811161131d576000818152600c60205260409020546001600160a01b03808716911603611a2557600182611a048684613a57565b81518110611a1457611a14613878565b911515602092830291909101909101525b80611a2f816138bc565b9150506119cf565b611a3f61249c565b600d54600160e01b900460ff1615611a695760405162461bcd60e51b8152600401610ec49061395c565b600d80546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b611a9d61249c565b600d54600160f81b900460ff1615611adf5760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401610ec4565b600d80546001600160f81b0316600160f81b179055565b6000818152600a60205260408120546001600160401b0316611b19576000611b41565b6009546000838152600a6020526040902054611b41916001600160401b0390811691166139a4565b6001600160401b031692915050565b611b5861249c565b60035442600160a01b9091046001600160401b031610611b8a5760405162461bcd60e51b8152600401610ec490613935565b600780546001600160401b0319166001600160401b0392909216919091179055565b611bb461249c565b600d805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b6002805403611c135760405162461bcd60e51b8152600401610ec4906138d5565b6002805533611c238383836126de565b6000611c2f84846123f5565b905060008111611c745760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b6044820152606401610ec4565b60008481526004602090815260408083206001600160a01b038716845290915281208054839290611ca69084906138a4565b909155505060008481526004602090815260408083206001600160a01b0387168452825280832042600190910155600590915281208054839290611ceb9084906138a4565b90915550506001600160a01b038316611d1657611d116001600160a01b038316826126ff565b611d89565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb90611d449085908590600401613a6e565b6020604051808303816000875af1158015611d63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d879190613a87565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b611df433612815565b600d54600160401b90046001600160a01b0316611e4b5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401610ec4565b600d54600160e81b900460ff1615611ea55760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610ec4565b60005b83811015611ff5576000858583818110611ec457611ec4613878565b9050602002016020810190611ed99190613625565b6001600160a01b031603611f2457611f1f838383818110611efc57611efc613878565b600d546001600160a01b03600160401b90910416926020909102013590506126ff565b611fe3565b848482818110611f3657611f36613878565b9050602002016020810190611f4b9190613625565b600d546001600160a01b039182169163a9059cbb91600160401b900416858585818110611f7a57611f7a613878565b905060200201356040518363ffffffff1660e01b8152600401611f9e929190613a6e565b6020604051808303816000875af1158015611fbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe19190613a87565b505b80611fed816138bc565b915050611ea8565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a58484848460405161202b9493929190613adf565b60405180910390a150505050565b600080805b8381101561131d5761206785858381811061205b5761205b613878565b905060200201356110a7565b61207190836139a4565b91508061207d816138bc565b91505061203e565b60028054036120a65760405162461bcd60e51b8152600401610ec4906138d5565b60028055610f1282826129a2565b6120bc61249c565b6001600160a01b0381166121215760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ec4565b6111a781612544565b600280540361214b5760405162461bcd60e51b8152600401610ec4906138d5565b600280556000805b8481101561227b5761217e86868381811061217057612170613878565b9050602002013585856126de565b60006121a287878481811061219557612195613878565b90506020020135866123f5565b905080156122685780600460008989868181106121c1576121c1613878565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b03168152602001908152602001600020600001600082825461220b91906138a4565b909155504290506004600089898681811061222857612228613878565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a16825290925290206001015561226581846138a4565b92505b5080612273816138bc565b915050612153565b506001600160a01b038316600090815260056020526040812080548392906122a49084906138a4565b90915550506001600160a01b0383166122cf576122ca6001600160a01b038316826126ff565b612342565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906122fd9085908590600401613a6e565b6020604051808303816000875af115801561231c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123409190613a87565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b133838787878660405161237b96959493929190613b42565b60405180910390a150506001600255505050565b61239761249c565b60035442600160a01b9091046001600160401b0316106123c95760405162461bcd60e51b8152600401610ec490613935565b600980546001600160401b03909216600160401b02600160401b600160801b0319909216919091179055565b60008061241461240d612407856113b0565b50600090565b85856129e4565b60008581526004602090815260408083206001600160a01b03881684529091529020549091506115469082613a57565b6001600160a01b03163b151590565b334260005b8381101561249557612483838387878581811061247757612477613878565b90506020020135612a29565b8061248d816138bc565b915050612458565b5050505050565b336124a5611563565b6001600160a01b0316146113485760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ec4565b6111a7334283612ac6565b600754600090600160801b90046001600160401b0316156125385750600754600160801b90046001600160401b031690565b506001600160401b0390565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6111a7334283612a29565b600054610100900460ff166125d15760405162461bcd60e51b8152600401610ec490613b81565b6113328282612b5a565b600054610100900460ff166126025760405162461bcd60e51b8152600401610ec490613b81565b6113328282612bf4565b600054610100900460ff166126335760405162461bcd60e51b8152600401610ec490613b81565b61263b612c59565b6113328282612c90565b600054610100900460ff1661266c5760405162461bcd60e51b8152600401610ec490613b81565b61267884848484612cef565b50505050565b600054610100900460ff166126a55760405162461bcd60e51b8152600401610ec490613b81565b6111a781612d70565b600054610100900460ff166126d55760405162461bcd60e51b8152600401610ec490613b81565b6111a781612dac565b6126e9838383612dfe565b6126f4838383612f08565b6118c9838383612f53565b8047101561274f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610ec4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461279c576040519150601f19603f3d011682016040523d82523d6000602084013e6127a1565b606091505b50509050806118c95760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610ec4565b6003600d54600160f01b900460ff16600381111561283557612835613573565b036128745760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401610ec4565b6002600d54600160f01b900460ff16600381111561289457612894613573565b0361289c5750565b6001600d54600160f01b900460ff1660038111156128bc576128bc613573565b0361291f57600d546001600160a01b03828116600160401b90920416146111a75760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401610ec4565b6000600d54600160f01b900460ff16600381111561293f5761293f613573565b036111a757806001600160a01b0316612956611563565b6001600160a01b0316146111a75760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401610ec4565b334260005b83811015612495576129d283838787858181106129c6576129c6613878565b90506020020135612ac6565b806129dc816138bc565b9150506129a7565b6007546000906001600160401b03166129fc846110a7565b612a069190613a31565b6001600160401b0316600854600654612a1f9190613a1d565b61154691906139e8565b6000818152600c6020526040902080546001600160a01b0319166001600160a01b038516179055612a5b838383613018565b6003546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90612a8f90869030908690600401613bcc565b600060405180830381600087803b158015612aa957600080fd5b505af1158015612abd573d6000803e3d6000fd5b50505050505050565b6000818152600c60205260409020546001600160a01b03848116911614612aff5760405162461bcd60e51b8152600401610ec490613bf0565b6000818152600c6020526040902080546001600160a01b0319169055612b268383836130b1565b6003546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90612a8f90309087908690600401613bcc565b600054610100900460ff16612b815760405162461bcd60e51b8152600401610ec490613b81565b612b9163ac2ba33360e01b6131ce565b600d8054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b836003811115612beb57612beb613573565b02179055505050565b600054610100900460ff16612c1b5760405162461bcd60e51b8152600401610ec490613b81565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055611332631ba050e960e21b6131ce565b600054610100900460ff16612c805760405162461bcd60e51b8152600401610ec490613b81565b611348633f7ab4d760e11b6131ce565b600054610100900460ff16612cb75760405162461bcd60e51b8152600401610ec490613b81565b600980546001600160401b03838116600160401b026001600160801b031990921690851617179055611332633a41ba5360e11b6131ce565b600054610100900460ff16612d165760405162461bcd60e51b8152600401610ec490613b81565b6006849055600780546001600160401b03838116600160801b02600160801b600160c01b0319868316600160401b026001600160801b031990941692881692909217929092171617905561267863c9f600a960e01b6131ce565b600054610100900460ff16612d975760405162461bcd60e51b8152600401610ec490613b81565b60088190556111a7632d5305cb60e21b6131ce565b600054610100900460ff16612dd35760405162461bcd60e51b8152600401610ec490613b81565b600d80546001600160401b0319166001600160401b0383161790556111a76317b2ef4360e31b6131ce565b6000838152600c60205260409020546001600160a01b0316612ecf576003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa158015612e65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e899190613c14565b6001600160a01b0316146118c95760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b6044820152606401610ec4565b6000838152600c60205260409020546001600160a01b038281169116146118c95760405162461bcd60e51b8152600401610ec490613bf0565b600d54426001600160401b03909116106118c95760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b6044820152606401610ec4565b60075442600160401b9091046001600160401b031610612fa35760405162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b6044820152606401610ec4565b600754612fb9906001600160401b031642613a57565b60008481526004602090815260408083206001600160a01b0387168452909152902060010154106118c95760405162461bcd60e51b8152602060048201526009602482015268544f4f5f4541524c5960b81b6044820152606401610ec4565b600954600160401b90046001600160401b0316613034826110a7565b6001600160401b0316106130825760405162461bcd60e51b815260206004820152601560248201527413505617d1155490551253d397d15610d151511151605a1b6044820152606401610ec4565b6000908152600a6020526040902080546001600160401b0319166001600160401b039290921691909117905550565b6000818152600a60205260409020546001600160401b03166131025760405162461bcd60e51b815260206004820152600a6024820152691393d517d4d51052d15160b21b6044820152606401610ec4565b6009546000828152600a602052604090205461312a916001600160401b0390811691166139a4565b6001600160401b0316826001600160401b031610156131845760405162461bcd60e51b815260206004820152601660248201527509c9ea8bea6a882968a88be989e9c8ebe8a9c9eaa8e960531b6044820152606401610ec4565b61318d816110a7565b6000918252600b6020908152604080842080546001600160401b03949094166001600160401b0319948516179055600a909152909120805490911690555050565b6001600160e01b031980821690036132275760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401610ec4565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60008083601f84011261326157600080fd5b5081356001600160401b0381111561327857600080fd5b6020830191508360208260051b850101111561329357600080fd5b9250929050565b6001600160a01b03811681146111a757600080fd5b80356132ba8161329a565b919050565b6000806000604084860312156132d457600080fd5b83356001600160401b038111156132ea57600080fd5b6132f68682870161324f565b909450925050602084013561330a8161329a565b809150509250925092565b60006020828403121561332757600080fd5b81356001600160e01b03198116811461155c57600080fd5b600060208083528351808285015260005b8181101561336c57858101830151858201604001528201613350565b8181111561337e576000604083870101525b50601f01601f1916929092016040019392505050565b6000602082840312156133a657600080fd5b5035919050565b600080602083850312156133c057600080fd5b82356001600160401b038111156133d657600080fd5b6133e28582860161324f565b90969095509350505050565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b0381118282101715613427576134276133ee565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613455576134556133ee565b604052919050565b6000806000806080858703121561347357600080fd5b843561347e8161329a565b935060208581013561348f8161329a565b93506040860135925060608601356001600160401b03808211156134b257600080fd5b818801915088601f8301126134c657600080fd5b8135818111156134d8576134d86133ee565b6134ea601f8201601f1916850161342d565b9150808252898482850101111561350057600080fd5b808484018584013760008482840101525080935050505092959194509250565b80356001600160401b03811681146132ba57600080fd5b60006020828403121561354957600080fd5b61155c82613520565b60006020828403121561356457600080fd5b81356004811061155c57600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106135ab57634e487b7160e01b600052602160045260246000fd5b91905290565b6020808252825182820181905260009190848201906040850190845b818110156135e9578351835292840192918401916001016135cd565b50909695505050505050565b6000806040838503121561360857600080fd5b82359150602083013561361a8161329a565b809150509250929050565b60006020828403121561363757600080fd5b813561155c8161329a565b6001600160a01b0391909116815260200190565b60008082840361016081121561366b57600080fd5b6101408082121561367b57600080fd5b613683613404565b915061368e856132af565b825261369c60208601613520565b60208301526136ad60408601613520565b60408301526136be60608601613520565b6060830152608085013560808301526136d960a08601613520565b60a08301526136ea60c08601613520565b60c08301526136fb60e08601613520565b60e08301526101008581013590830152610120613719818701613520565b818401525081935061372c8186016132af565b925050509250929050565b60008060006060848603121561374c57600080fd5b83356137578161329a565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b818110156135e9578351151583529284019291840191600101613788565b600080600080604085870312156137bc57600080fd5b84356001600160401b03808211156137d357600080fd5b6137df8883890161324f565b909650945060208701359150808211156137f857600080fd5b506138058782880161324f565b95989497509550505050565b6000806000806060858703121561382757600080fd5b84356001600160401b0381111561383d57600080fd5b6138498782880161324f565b909550935050602085013561385d8161329a565b9150604085013561386d8161329a565b939692955090935050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156138b7576138b761388e565b500190565b6000600182016138ce576138ce61388e565b5060010190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252600f908201526e1393d517d4d5105495115117d65155608a1b604082015260600190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b60006001600160401b038381169083168181101561399c5761399c61388e565b039392505050565b60006001600160401b038083168185168083038211156139c6576139c661388e565b01949350505050565b6000602082840312156139e157600080fd5b5051919050565b6000816000190483118215151615613a0257613a0261388e565b500290565b634e487b7160e01b600052601260045260246000fd5b600082613a2c57613a2c613a07565b500490565b60006001600160401b0380841680613a4b57613a4b613a07565b92169190910492915050565b600082821015613a6957613a6961388e565b500390565b6001600160a01b03929092168252602082015260400190565b600060208284031215613a9957600080fd5b8151801515811461155c57600080fd5b81835260006001600160fb1b03831115613ac257600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b87811015613b22578235613b058161329a565b6001600160a01b0316825260209283019290910190600101613af2565b508381036020850152613b36818688613aa9565b98975050505050505050565b600060018060a01b038089168352808816602084015260a06040840152613b6d60a084018789613aa9565b941660608301525060800152949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6020808252600a90820152692727aa2fa9aa20a5a2a960b11b604082015260600190565b600060208284031215613c2657600080fd5b815161155c8161329a56fe45524337323120437573746f6469616c205374616b696e6720456d697373696f6e2053747265616da2646970667358221220552c3879e5a2ec05c0df82a9c11774c3a8fbb8e74e7708aa8ed0b0ce01fb5f3964736f6c634300080f0033","deployedBytecode":"0x60806040526004361061038b5760003560e01c80639199690b116101d4578063d0d6641d116100fe578063d0d6641d14610baa578063d1335b6914610551578063d4244f2414610bca578063d5ed4d5a14610bf1578063d97314f514610c11578063da82b22714610c31578063dcbe353f14610c46578063dd11247e14610c6d578063dda8820f14610551578063ddd5e1b214610c83578063de6d6d9614610ca3578063de76a67614610cc3578063e449f34114610ce3578063f2fde38b14610d03578063f389b6e414610d23578063f4415ad614610d43578063f593dfc814610d7b578063f66e38c214610d9b578063fd5e6dd114610dbb57600080fd5b80639199690b14610551578063968d9b2c1461095857806396afc450146109785780639edfe8301461098e578063a1bdb15e146109ae578063a1cf6493146109ce578063a5549bc614610a11578063a5b23be714610a31578063a694fc3a14610a51578063a86b21e814610a71578063a8a67c8c14610a91578063aaf2f99914610ab1578063ae890c0a14610ad1578063af121f5414610af1578063bf57972e14610b12578063c088184914610b3f578063c0bb38ff14610b75578063c1a2fe8014610551578063c723955a14610b9557600080fd5b80633a73f7d6116102b55780633a73f7d61461068f5780633b3f12e2146106af5780633d2dded5146106cf57806349561cb91461070c5780634abb4c491461072d578063513da9481461075a57806354fd4d501461078157806357dc48c8146107b05780636057e0ec1461080457806361949636146108255780636ba4c13814610845578063715018a61461086557806378b094ca1461087a578063790c0c731461089a5780638368909c146108ba578063837fe140146108e157806384fd5ae0146108f657806389c6b815146109165780638da5cb5b1461093657600080fd5b80630191c0af146103a457806301ffc9a7146103d757806306fdde031461040757806308289dbe1461042957806308ae7e54146104775780630c805a44146104975780630fbf0a93146104cd57806314427a96146104ed578063150b7a021461050d5780631bc51b26146105515780631c725fdc1461056557806325289bad146105855780632890d033146105ac5780632c0e1313146105c15780632c233067146105e15780632d00b587146106015780632e17de781461062f57806333abcdbd1461064f578063379607f51461066f57600080fd5b3661039f576000341161039d57600080fd5b005b600080fd5b3480156103b057600080fd5b506103c46103bf3660046132bf565b610df1565b6040519081526020015b60405180910390f35b3480156103e357600080fd5b506103f76103f2366004613315565b610e47565b60405190151581526020016103ce565b34801561041357600080fd5b5061041c610e87565b6040516103ce919061333f565b34801561043557600080fd5b5061045f610444366004613394565b600b602052600090815260409020546001600160401b031681565b6040516001600160401b0390911681526020016103ce565b34801561048357600080fd5b5060095461045f906001600160401b031681565b3480156104a357600080fd5b5061045f6104b2366004613394565b600a602052600090815260409020546001600160401b031681565b3480156104d957600080fd5b5061039d6104e83660046133ad565b610ea3565b3480156104f957600080fd5b50600d5461045f906001600160401b031681565b34801561051957600080fd5b5061053861052836600461345d565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016103ce565b34801561055d57600080fd5b5060016103f7565b34801561057157600080fd5b5061039d610580366004613537565b610f1b565b34801561059157600080fd5b5060035461045f90600160a01b90046001600160401b031681565b3480156105b857600080fd5b506103c4610fa5565b3480156105cd57600080fd5b5061039d6105dc366004613537565b610fb6565b3480156105ed57600080fd5b5061039d6105fc366004613552565b611012565b34801561060d57600080fd5b50600d5461062290600160f01b900460ff1681565b6040516103ce9190613589565b34801561063b57600080fd5b5061039d61064a366004613394565b611071565b34801561065b57600080fd5b5061045f61066a366004613394565b6110a7565b34801561067b57600080fd5b5061039d61068a366004613394565b61119c565b34801561069b57600080fd5b506103c46106aa3660046133ad565b6111aa565b3480156106bb57600080fd5b506103c46106ca3660046132bf565b6111fc565b3480156106db57600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc546103c4565b34801561071857600080fd5b50600d546103f790600160f81b900460ff1681565b34801561073957600080fd5b5061074d6107483660046133ad565b61127a565b6040516103ce91906135b1565b34801561076657600080fd5b5060075461045f90600160401b90046001600160401b031681565b34801561078d57600080fd5b5061041c60405180604001604052806003815260200162302e3160e81b81525081565b3480156107bc57600080fd5b506107ef6107cb3660046135f5565b60046020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016103ce565b34801561081057600080fd5b50600d546103f790600160e01b900460ff1681565b34801561083157600080fd5b5060075461045f906001600160401b031681565b34801561085157600080fd5b5061039d6108603660046133ad565b611325565b34801561087157600080fd5b5061039d611336565b34801561088657600080fd5b5061039d610895366004613537565b61134a565b3480156108a657600080fd5b506103c46108b5366004613625565b6113b0565b3480156108c657600080fd5b5060075461045f90600160801b90046001600160401b031681565b3480156108ed57600080fd5b5061039d611474565b34801561090257600080fd5b506103c46109113660046133ad565b6114bb565b34801561092257600080fd5b506103c46109313660046133ad565b61154e565b34801561094257600080fd5b5061094b611563565b6040516103ce9190613642565b34801561096457600080fd5b506103c4610973366004613394565b611578565b34801561098457600080fd5b506103c460065481565b34801561099a57600080fd5b506103c46109a9366004613537565b611585565b3480156109ba57600080fd5b5061039d6109c9366004613394565b6115ca565b3480156109da57600080fd5b506103c46109e93660046135f5565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b348015610a1d57600080fd5b5061039d610a2c366004613537565b611609565b348015610a3d57600080fd5b506103c4610a4c366004613394565b611665565b348015610a5d57600080fd5b5061039d610a6c366004613394565b6116ab565b348015610a7d57600080fd5b506103c4610a8c366004613537565b611710565b348015610a9d57600080fd5b5061039d610aac366004613656565b61174c565b348015610abd57600080fd5b5061039d610acc366004613537565b6118ce565b348015610add57600080fd5b5061039d610aec366004613394565b611934565b348015610afd57600080fd5b50600d546103f790600160e81b900460ff1681565b348015610b1e57600080fd5b50610b32610b2d366004613737565b611973565b6040516103ce919061376c565b348015610b4b57600080fd5b506103c4610b5a366004613625565b6001600160a01b031660009081526005602052604090205490565b348015610b8157600080fd5b5061039d610b90366004613625565b611a37565b348015610ba157600080fd5b5061039d611a95565b348015610bb657600080fd5b506103c4610bc5366004613394565b611af6565b348015610bd657600080fd5b5060095461045f90600160401b90046001600160401b031681565b348015610bfd57600080fd5b5060035461094b906001600160a01b031681565b348015610c1d57600080fd5b5061039d610c2c366004613537565b611b50565b348015610c3d57600080fd5b5061039d611bac565b348015610c5257600080fd5b50600d5461094b90600160401b90046001600160a01b031681565b348015610c7957600080fd5b506103c460085481565b348015610c8f57600080fd5b5061039d610c9e3660046135f5565b611bf2565b348015610caf57600080fd5b5061039d610cbe3660046137a6565b611deb565b348015610ccf57600080fd5b5061045f610cde3660046133ad565b612039565b348015610cef57600080fd5b5061039d610cfe3660046133ad565b612085565b348015610d0f57600080fd5b5061039d610d1e366004613625565b6120b4565b348015610d2f57600080fd5b5061039d610d3e366004613811565b61212a565b348015610d4f57600080fd5b506103c4610d5e366004613394565b600090815260046020908152604080832083805290915290205490565b348015610d8757600080fd5b5061039d610d96366004613537565b61238f565b348015610da757600080fd5b506103c4610db63660046135f5565b6123f5565b348015610dc757600080fd5b5061094b610dd6366004613394565b600c602052600090815260409020546001600160a01b031681565b600080805b84811015610e3e57610e20868683818110610e1357610e13613878565b90506020020135856123f5565b610e2a90836138a4565b915080610e36816138bc565b915050610df6565b50949350505050565b60006301ffc9a760e01b6001600160e01b031983161480610e8157506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b604051806060016040528060288152602001613c326028913981565b6002805403610ecd5760405162461bcd60e51b8152600401610ec4906138d5565b60405180910390fd5b600280556007546001600160401b03600160401b9091048116429091161015610f085760405162461bcd60e51b8152600401610ec49061390c565b610f128282612453565b50506001600255565b610f2361249c565b6003546001600160401b03600160a01b909104811690821611610f785760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b6044820152606401610ec4565b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000610fb160006113b0565b905090565b610fbe61249c565b60035442600160a01b9091046001600160401b031610610ff05760405162461bcd60e51b8152600401610ec490613935565b600d80546001600160401b0319166001600160401b0392909216919091179055565b61101a61249c565b600d54600160f81b900460ff16156110445760405162461bcd60e51b8152600401610ec49061395c565b600d805482919060ff60f01b1916600160f01b83600381111561106957611069613573565b021790555050565b60028054036110925760405162461bcd60e51b8152600401610ec4906138d5565b6002805561109f816124fb565b506001600255565b6000818152600b6020908152604080832054600a9092528220546001600160401b039182169116156111645760006110dd612506565b905042816001600160401b031611156110f35750425b6000848152600a60205260409020546001600160401b031615611162576000848152600a60205260409020546001600160401b039081169082161115611162576000848152600a6020526040902054611155906001600160401b03168261397c565b61115f90836139a4565b91505b505b6009546001600160401b03600160401b90910481169082161115610e815750600954600160401b90046001600160401b031692915050565b6111a7816000611bf2565b50565b6000805b828110156111f5576111d78484838181106111cb576111cb613878565b90506020020135611665565b6111e190836138a4565b9150806111ed816138bc565b9150506111ae565b5092915050565b600080805b84811015610e3e576004600087878481811061121f5761121f613878565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b03168152602001908152602001600020600001548261126691906138a4565b915080611272816138bc565b915050611201565b60606000826001600160401b03811115611296576112966133ee565b6040519080825280602002602001820160405280156112bf578160200160208202803683370190505b50905060005b8381101561131d576112ee8585838181106112e2576112e2613878565b90506020020135611af6565b82828151811061130057611300613878565b602090810291909101015280611315816138bc565b9150506112c5565b509392505050565b611332828260003361212a565b5050565b61133e61249c565b6113486000612544565b565b61135261249c565b60035442600160a01b9091046001600160401b0316106113845760405162461bcd60e51b8152600401610ec490613935565b600780546001600160401b03909216600160801b02600160801b600160c01b0319909216919091179055565b60006001600160a01b0382166113e4576001600160a01b038216600090815260056020526040902054610e819047906138a4565b6040516370a0823160e01b81526001600160a01b038316906370a0823190611410903090600401613642565b602060405180830381865afa15801561142d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145191906139cf565b6001600160a01b038316600090815260056020526040902054610e8191906138a4565b61147c61249c565b600d54600160e01b900460ff16156114a65760405162461bcd60e51b8152600401610ec49061395c565b600d805460ff60e01b1916600160e01b179055565b60008060005b8381101561152a576000600a60008787858181106114e1576114e1613878565b60209081029290920135835250810191909152604001600020546001600160401b031611156115185781611514816138bc565b9250505b80611522816138bc565b9150506114c1565b506008548160065461153c91906139e8565b6115469190613a1d565b949350505050565b600061155c838360006111fc565b9392505050565b6000546201000090046001600160a01b031690565b6000610e818260006123f5565b6007546000906001600160401b03808216916115aa91600160401b909104168461397c565b6115b49190613a31565b6001600160401b0316600654610e8191906139e8565b6115d261249c565b60035442600160a01b9091046001600160401b0316106116045760405162461bcd60e51b8152600401610ec490613935565b600655565b61161161249c565b60035442600160a01b9091046001600160401b0316106116435760405162461bcd60e51b8152600401610ec490613935565b600980546001600160401b0319166001600160401b0392909216919091179055565b6007546008546000916001600160401b031690611681846110a7565b6001600160401b031660065461169791906139e8565b6116a19190613a1d565b610e819190613a1d565b60028054036116cc5760405162461bcd60e51b8152600401610ec4906138d5565b600280556007546001600160401b03600160401b90910481164290911610156117075760405162461bcd60e51b8152600401610ec49061390c565b61109f8161259f565b6007546006546000916001600160401b03808216929161173991600160401b909104168561397c565b6001600160401b03166116a191906139e8565b600054610100900460ff161580801561176c5750600054600160ff909116105b8061178d575061177b30612444565b15801561178d575060005460ff166001145b6117f05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ec4565b6000805460ff191660011790558015611813576000805461ff0019166101001790555b61181c82612544565b6118278260006125aa565b611839836000015184602001516125db565b61184b8360400151846060015161260c565b61186783608001518460a001518560c001518660e00151612645565b61187583610100015161267e565b6118838361012001516126ae565b80156118c9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6118d661249c565b60035442600160a01b9091046001600160401b0316106119085760405162461bcd60e51b8152600401610ec490613935565b600780546001600160401b03909216600160401b02600160401b600160801b0319909216919091179055565b61193c61249c565b60035442600160a01b9091046001600160401b03161061196e5760405162461bcd60e51b8152600401610ec490613935565b600855565b606061197f8383613a57565b61198a9060016138a4565b6001600160401b038111156119a1576119a16133ee565b6040519080825280602002602001820160405280156119ca578160200160208202803683370190505b509050825b82811161131d576000818152600c60205260409020546001600160a01b03808716911603611a2557600182611a048684613a57565b81518110611a1457611a14613878565b911515602092830291909101909101525b80611a2f816138bc565b9150506119cf565b611a3f61249c565b600d54600160e01b900460ff1615611a695760405162461bcd60e51b8152600401610ec49061395c565b600d80546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b611a9d61249c565b600d54600160f81b900460ff1615611adf5760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401610ec4565b600d80546001600160f81b0316600160f81b179055565b6000818152600a60205260408120546001600160401b0316611b19576000611b41565b6009546000838152600a6020526040902054611b41916001600160401b0390811691166139a4565b6001600160401b031692915050565b611b5861249c565b60035442600160a01b9091046001600160401b031610611b8a5760405162461bcd60e51b8152600401610ec490613935565b600780546001600160401b0319166001600160401b0392909216919091179055565b611bb461249c565b600d805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b6002805403611c135760405162461bcd60e51b8152600401610ec4906138d5565b6002805533611c238383836126de565b6000611c2f84846123f5565b905060008111611c745760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b6044820152606401610ec4565b60008481526004602090815260408083206001600160a01b038716845290915281208054839290611ca69084906138a4565b909155505060008481526004602090815260408083206001600160a01b0387168452825280832042600190910155600590915281208054839290611ceb9084906138a4565b90915550506001600160a01b038316611d1657611d116001600160a01b038316826126ff565b611d89565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb90611d449085908590600401613a6e565b6020604051808303816000875af1158015611d63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d879190613a87565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b611df433612815565b600d54600160401b90046001600160a01b0316611e4b5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401610ec4565b600d54600160e81b900460ff1615611ea55760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610ec4565b60005b83811015611ff5576000858583818110611ec457611ec4613878565b9050602002016020810190611ed99190613625565b6001600160a01b031603611f2457611f1f838383818110611efc57611efc613878565b600d546001600160a01b03600160401b90910416926020909102013590506126ff565b611fe3565b848482818110611f3657611f36613878565b9050602002016020810190611f4b9190613625565b600d546001600160a01b039182169163a9059cbb91600160401b900416858585818110611f7a57611f7a613878565b905060200201356040518363ffffffff1660e01b8152600401611f9e929190613a6e565b6020604051808303816000875af1158015611fbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe19190613a87565b505b80611fed816138bc565b915050611ea8565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a58484848460405161202b9493929190613adf565b60405180910390a150505050565b600080805b8381101561131d5761206785858381811061205b5761205b613878565b905060200201356110a7565b61207190836139a4565b91508061207d816138bc565b91505061203e565b60028054036120a65760405162461bcd60e51b8152600401610ec4906138d5565b60028055610f1282826129a2565b6120bc61249c565b6001600160a01b0381166121215760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ec4565b6111a781612544565b600280540361214b5760405162461bcd60e51b8152600401610ec4906138d5565b600280556000805b8481101561227b5761217e86868381811061217057612170613878565b9050602002013585856126de565b60006121a287878481811061219557612195613878565b90506020020135866123f5565b905080156122685780600460008989868181106121c1576121c1613878565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b03168152602001908152602001600020600001600082825461220b91906138a4565b909155504290506004600089898681811061222857612228613878565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a16825290925290206001015561226581846138a4565b92505b5080612273816138bc565b915050612153565b506001600160a01b038316600090815260056020526040812080548392906122a49084906138a4565b90915550506001600160a01b0383166122cf576122ca6001600160a01b038316826126ff565b612342565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906122fd9085908590600401613a6e565b6020604051808303816000875af115801561231c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123409190613a87565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b133838787878660405161237b96959493929190613b42565b60405180910390a150506001600255505050565b61239761249c565b60035442600160a01b9091046001600160401b0316106123c95760405162461bcd60e51b8152600401610ec490613935565b600980546001600160401b03909216600160401b02600160401b600160801b0319909216919091179055565b60008061241461240d612407856113b0565b50600090565b85856129e4565b60008581526004602090815260408083206001600160a01b03881684529091529020549091506115469082613a57565b6001600160a01b03163b151590565b334260005b8381101561249557612483838387878581811061247757612477613878565b90506020020135612a29565b8061248d816138bc565b915050612458565b5050505050565b336124a5611563565b6001600160a01b0316146113485760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ec4565b6111a7334283612ac6565b600754600090600160801b90046001600160401b0316156125385750600754600160801b90046001600160401b031690565b506001600160401b0390565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6111a7334283612a29565b600054610100900460ff166125d15760405162461bcd60e51b8152600401610ec490613b81565b6113328282612b5a565b600054610100900460ff166126025760405162461bcd60e51b8152600401610ec490613b81565b6113328282612bf4565b600054610100900460ff166126335760405162461bcd60e51b8152600401610ec490613b81565b61263b612c59565b6113328282612c90565b600054610100900460ff1661266c5760405162461bcd60e51b8152600401610ec490613b81565b61267884848484612cef565b50505050565b600054610100900460ff166126a55760405162461bcd60e51b8152600401610ec490613b81565b6111a781612d70565b600054610100900460ff166126d55760405162461bcd60e51b8152600401610ec490613b81565b6111a781612dac565b6126e9838383612dfe565b6126f4838383612f08565b6118c9838383612f53565b8047101561274f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610ec4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461279c576040519150601f19603f3d011682016040523d82523d6000602084013e6127a1565b606091505b50509050806118c95760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610ec4565b6003600d54600160f01b900460ff16600381111561283557612835613573565b036128745760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401610ec4565b6002600d54600160f01b900460ff16600381111561289457612894613573565b0361289c5750565b6001600d54600160f01b900460ff1660038111156128bc576128bc613573565b0361291f57600d546001600160a01b03828116600160401b90920416146111a75760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401610ec4565b6000600d54600160f01b900460ff16600381111561293f5761293f613573565b036111a757806001600160a01b0316612956611563565b6001600160a01b0316146111a75760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401610ec4565b334260005b83811015612495576129d283838787858181106129c6576129c6613878565b90506020020135612ac6565b806129dc816138bc565b9150506129a7565b6007546000906001600160401b03166129fc846110a7565b612a069190613a31565b6001600160401b0316600854600654612a1f9190613a1d565b61154691906139e8565b6000818152600c6020526040902080546001600160a01b0319166001600160a01b038516179055612a5b838383613018565b6003546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90612a8f90869030908690600401613bcc565b600060405180830381600087803b158015612aa957600080fd5b505af1158015612abd573d6000803e3d6000fd5b50505050505050565b6000818152600c60205260409020546001600160a01b03848116911614612aff5760405162461bcd60e51b8152600401610ec490613bf0565b6000818152600c6020526040902080546001600160a01b0319169055612b268383836130b1565b6003546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90612a8f90309087908690600401613bcc565b600054610100900460ff16612b815760405162461bcd60e51b8152600401610ec490613b81565b612b9163ac2ba33360e01b6131ce565b600d8054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b836003811115612beb57612beb613573565b02179055505050565b600054610100900460ff16612c1b5760405162461bcd60e51b8152600401610ec490613b81565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055611332631ba050e960e21b6131ce565b600054610100900460ff16612c805760405162461bcd60e51b8152600401610ec490613b81565b611348633f7ab4d760e11b6131ce565b600054610100900460ff16612cb75760405162461bcd60e51b8152600401610ec490613b81565b600980546001600160401b03838116600160401b026001600160801b031990921690851617179055611332633a41ba5360e11b6131ce565b600054610100900460ff16612d165760405162461bcd60e51b8152600401610ec490613b81565b6006849055600780546001600160401b03838116600160801b02600160801b600160c01b0319868316600160401b026001600160801b031990941692881692909217929092171617905561267863c9f600a960e01b6131ce565b600054610100900460ff16612d975760405162461bcd60e51b8152600401610ec490613b81565b60088190556111a7632d5305cb60e21b6131ce565b600054610100900460ff16612dd35760405162461bcd60e51b8152600401610ec490613b81565b600d80546001600160401b0319166001600160401b0383161790556111a76317b2ef4360e31b6131ce565b6000838152600c60205260409020546001600160a01b0316612ecf576003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa158015612e65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e899190613c14565b6001600160a01b0316146118c95760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b6044820152606401610ec4565b6000838152600c60205260409020546001600160a01b038281169116146118c95760405162461bcd60e51b8152600401610ec490613bf0565b600d54426001600160401b03909116106118c95760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b6044820152606401610ec4565b60075442600160401b9091046001600160401b031610612fa35760405162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b6044820152606401610ec4565b600754612fb9906001600160401b031642613a57565b60008481526004602090815260408083206001600160a01b0387168452909152902060010154106118c95760405162461bcd60e51b8152602060048201526009602482015268544f4f5f4541524c5960b81b6044820152606401610ec4565b600954600160401b90046001600160401b0316613034826110a7565b6001600160401b0316106130825760405162461bcd60e51b815260206004820152601560248201527413505617d1155490551253d397d15610d151511151605a1b6044820152606401610ec4565b6000908152600a6020526040902080546001600160401b0319166001600160401b039290921691909117905550565b6000818152600a60205260409020546001600160401b03166131025760405162461bcd60e51b815260206004820152600a6024820152691393d517d4d51052d15160b21b6044820152606401610ec4565b6009546000828152600a602052604090205461312a916001600160401b0390811691166139a4565b6001600160401b0316826001600160401b031610156131845760405162461bcd60e51b815260206004820152601660248201527509c9ea8bea6a882968a88be989e9c8ebe8a9c9eaa8e960531b6044820152606401610ec4565b61318d816110a7565b6000918252600b6020908152604080842080546001600160401b03949094166001600160401b0319948516179055600a909152909120805490911690555050565b6001600160e01b031980821690036132275760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401610ec4565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60008083601f84011261326157600080fd5b5081356001600160401b0381111561327857600080fd5b6020830191508360208260051b850101111561329357600080fd5b9250929050565b6001600160a01b03811681146111a757600080fd5b80356132ba8161329a565b919050565b6000806000604084860312156132d457600080fd5b83356001600160401b038111156132ea57600080fd5b6132f68682870161324f565b909450925050602084013561330a8161329a565b809150509250925092565b60006020828403121561332757600080fd5b81356001600160e01b03198116811461155c57600080fd5b600060208083528351808285015260005b8181101561336c57858101830151858201604001528201613350565b8181111561337e576000604083870101525b50601f01601f1916929092016040019392505050565b6000602082840312156133a657600080fd5b5035919050565b600080602083850312156133c057600080fd5b82356001600160401b038111156133d657600080fd5b6133e28582860161324f565b90969095509350505050565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b0381118282101715613427576134276133ee565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613455576134556133ee565b604052919050565b6000806000806080858703121561347357600080fd5b843561347e8161329a565b935060208581013561348f8161329a565b93506040860135925060608601356001600160401b03808211156134b257600080fd5b818801915088601f8301126134c657600080fd5b8135818111156134d8576134d86133ee565b6134ea601f8201601f1916850161342d565b9150808252898482850101111561350057600080fd5b808484018584013760008482840101525080935050505092959194509250565b80356001600160401b03811681146132ba57600080fd5b60006020828403121561354957600080fd5b61155c82613520565b60006020828403121561356457600080fd5b81356004811061155c57600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106135ab57634e487b7160e01b600052602160045260246000fd5b91905290565b6020808252825182820181905260009190848201906040850190845b818110156135e9578351835292840192918401916001016135cd565b50909695505050505050565b6000806040838503121561360857600080fd5b82359150602083013561361a8161329a565b809150509250929050565b60006020828403121561363757600080fd5b813561155c8161329a565b6001600160a01b0391909116815260200190565b60008082840361016081121561366b57600080fd5b6101408082121561367b57600080fd5b613683613404565b915061368e856132af565b825261369c60208601613520565b60208301526136ad60408601613520565b60408301526136be60608601613520565b6060830152608085013560808301526136d960a08601613520565b60a08301526136ea60c08601613520565b60c08301526136fb60e08601613520565b60e08301526101008581013590830152610120613719818701613520565b818401525081935061372c8186016132af565b925050509250929050565b60008060006060848603121561374c57600080fd5b83356137578161329a565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b818110156135e9578351151583529284019291840191600101613788565b600080600080604085870312156137bc57600080fd5b84356001600160401b03808211156137d357600080fd5b6137df8883890161324f565b909650945060208701359150808211156137f857600080fd5b506138058782880161324f565b95989497509550505050565b6000806000806060858703121561382757600080fd5b84356001600160401b0381111561383d57600080fd5b6138498782880161324f565b909550935050602085013561385d8161329a565b9150604085013561386d8161329a565b939692955090935050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156138b7576138b761388e565b500190565b6000600182016138ce576138ce61388e565b5060010190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252600f908201526e1393d517d4d5105495115117d65155608a1b604082015260600190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b60006001600160401b038381169083168181101561399c5761399c61388e565b039392505050565b60006001600160401b038083168185168083038211156139c6576139c661388e565b01949350505050565b6000602082840312156139e157600080fd5b5051919050565b6000816000190483118215151615613a0257613a0261388e565b500290565b634e487b7160e01b600052601260045260246000fd5b600082613a2c57613a2c613a07565b500490565b60006001600160401b0380841680613a4b57613a4b613a07565b92169190910492915050565b600082821015613a6957613a6961388e565b500390565b6001600160a01b03929092168252602082015260400190565b600060208284031215613a9957600080fd5b8151801515811461155c57600080fd5b81835260006001600160fb1b03831115613ac257600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b87811015613b22578235613b058161329a565b6001600160a01b0316825260209283019290910190600101613af2565b508381036020850152613b36818688613aa9565b98975050505050505050565b600060018060a01b038089168352808816602084015260a06040840152613b6d60a084018789613aa9565b941660608301525060800152949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6020808252600a90820152692727aa2fa9aa20a5a2a960b11b604082015260600190565b600060208284031215613c2657600080fd5b815161155c8161329a56fe45524337323120437573746f6469616c205374616b696e6720456d697373696f6e2053747265616da2646970667358221220552c3879e5a2ec05c0df82a9c11774c3a8fbb8e74e7708aa8ed0b0ce01fb5f3964736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/presets/ERC721EqualEmissionStream":{"address":{"1":"0x2a89238074A3eF4cE606ed3f53CfE5C50CdD9299","3":"0xc21AC86C664015e9Eb122313cb520720e67a532b","4":"0x81EF8Abc586a85413434b88D5cB86A7c55713D35","5":"0xE07116Ab6e1599eF4991986D68E0377d705Ab455","25":"0x01d50c1438f38A9DD5906a92bdEC7efB60A7c584","56":"0xF8fA73a567812c638e3258144965c03680CD2D87","65":"0xae19F12838b3513246769Ed8636D565F75Dcb1c7","66":"0x91a90c18b6829688973dD1a14CD4a2824b2CD6Ff","97":"0x70492D215774d05f279b7C811399AEe2406d4c2D","137":"0xBF7d75fC371E46D805198f474f1105fcB3a52901","250":"0xFf3B2524F0BA31FdeA8DE0506F82978c3ce8fFe6","280":"0x92c5c286861fbd255803F2067C80c02D550adB25","4002":"0xFf3B2524F0BA31FdeA8DE0506F82978c3ce8fFe6","9000":"0xae19F12838b3513246769Ed8636D565F75Dcb1c7","42161":"0x2f75ce3BfF041d81d41AB6e403002A17151dFC24","43113":"0x2a89238074A3eF4cE606ed3f53CfE5C50CdD9299","43114":"0xaca3DC84080D4440CC526983027a89E0A16A73DD","421611":"0xD01F2668247FC1c7334591457dc1a8e3C6a5a8E4","arbitrumOne":"0x2f75ce3BfF041d81d41AB6e403002A17151dFC24","arbitrumTestnet":"0xD01F2668247FC1c7334591457dc1a8e3C6a5a8E4","avalanche":"0xaca3DC84080D4440CC526983027a89E0A16A73DD","avalancheFujiTestnet":"0x2a89238074A3eF4cE606ed3f53CfE5C50CdD9299","bsc":"0xF8fA73a567812c638e3258144965c03680CD2D87","bscTestnet":"0x70492D215774d05f279b7C811399AEe2406d4c2D","cronos":"0x01d50c1438f38A9DD5906a92bdEC7efB60A7c584","evmosTestnet":"0xae19F12838b3513246769Ed8636D565F75Dcb1c7","ftmTestnet":"0xFf3B2524F0BA31FdeA8DE0506F82978c3ce8fFe6","goerli":"0xE07116Ab6e1599eF4991986D68E0377d705Ab455","mainnet":"0x2a89238074A3eF4cE606ed3f53CfE5C50CdD9299","okcMainnet":"0x91a90c18b6829688973dD1a14CD4a2824b2CD6Ff","okcTestnet":"0xae19F12838b3513246769Ed8636D565F75Dcb1c7","opera":"0xFf3B2524F0BA31FdeA8DE0506F82978c3ce8fFe6","polygon":"0xBF7d75fC371E46D805198f474f1105fcB3a52901","rinkeby":"0x81EF8Abc586a85413434b88D5cB86A7c55713D35","ropsten":"0xc21AC86C664015e9Eb122313cb520720e67a532b","zksyncTestnet":"0x92c5c286861fbd255803F2067C80c02D550adB25"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721EqualEmissionStream","sourceName":"contracts/streams/ERC721/presets/ERC721EqualEmissionStream.sol","abi":[{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint256","name":"totalTickets","type":"uint256"},{"internalType":"uint256","name":"emissionRate","type":"uint256"},{"internalType":"uint64","name":"emissionTimeUnit","type":"uint64"},{"internalType":"uint64","name":"emissionStart","type":"uint64"},{"internalType":"uint64","name":"emissionEnd","type":"uint64"}],"internalType":"struct ERC721EqualEmissionStream.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimLockedUntil","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"calcUntil","type":"uint64"}],"name":"emissionAmountUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionEnd","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionStart","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionTimeUnit","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721EmissionReleaseExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721EqualSplitExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721LockableClaimExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint256","name":"totalTickets","type":"uint256"},{"internalType":"uint256","name":"emissionRate","type":"uint256"},{"internalType":"uint64","name":"emissionTimeUnit","type":"uint64"},{"internalType":"uint64","name":"emissionStart","type":"uint64"},{"internalType":"uint64","name":"emissionEnd","type":"uint64"}],"internalType":"struct ERC721EqualEmissionStream.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"rateByToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"calcUntil","type":"uint64"}],"name":"releasedAmountUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setClaimLockedUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionEnd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setEmissionRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionTimeUnit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setTotalTickets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTickets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162003303380380620033038339810160408190526200003491620005c1565b6200003f3362000057565b6001600255620000508133620000b2565b50620006dd565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620000d35750600054600160ff909116105b80620001035750620000f0306200023b60201b62001a951760201c565b15801562000103575060005460ff166001145b6200016c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000190576000805461ff0019166101001790555b6200019b8262000057565b620001a88260006200024a565b82516020840151620001bb919062000284565b620001df836060015184608001518560a001518660c00151620002ba60201b60201c565b6040830151620001ef90620002f8565b801562000236576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6001600160a01b03163b151590565b600054610100900460ff16620002745760405162461bcd60e51b815260040162000163906200067c565b62000280828262000330565b5050565b600054610100900460ff16620002ae5760405162461bcd60e51b815260040162000163906200067c565b620002808282620003d7565b600054610100900460ff16620002e45760405162461bcd60e51b815260040162000163906200067c565b620002f28484848462000441565b50505050565b600054610100900460ff16620003225760405162461bcd60e51b815260040162000163906200067c565b6200032d81620004cc565b50565b600054610100900460ff166200035a5760405162461bcd60e51b815260040162000163906200067c565b6200036c63ac2ba33360e01b62000508565b60098054600160401b600160e01b03198116680100000000000000006001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b836003811115620003ce57620003ce620006c7565b02179055505050565b600054610100900460ff16620004015760405162461bcd60e51b815260040162000163906200067c565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b0385161717905562000280631ba050e960e21b62000508565b600054610100900460ff166200046b5760405162461bcd60e51b815260040162000163906200067c565b6006849055600780546001600160401b03838116600160801b02600160801b600160c01b031986831668010000000000000000026001600160801b0319909416928816929092179290921716179055620002f263c9f600a960e01b62000508565b600054610100900460ff16620004f65760405162461bcd60e51b815260040162000163906200067c565b60088190556200032d632d5305cb60e21b5b6001600160e01b03198082169003620005645760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640162000163565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b80516001600160a01b0381168114620005a457600080fd5b919050565b80516001600160401b0381168114620005a457600080fd5b600060e08284031215620005d457600080fd5b60405160e081016001600160401b03811182821017156200060557634e487b7160e01b600052604160045260246000fd5b60405262000613836200058c565b81526200062360208401620005a9565b602082015260408301516040820152606083015160608201526200064a60808401620005a9565b60808201526200065d60a08401620005a9565b60a08201526200067060c08401620005a9565b60c08201529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b612c1680620006ed6000396000f3fe60806040526004361061028f5760003560e01c806389c6b8151161015657806389c6b815146107145780638da5cb5b146107345780639199690b146103dc578063968d9b2c1461075657806396afc450146107765780639edfe8301461078c578063a1bdb15e146107ac578063a1cf6493146107cc578063a86b21e81461080f578063aa02a74b1461082f578063aaf2f9991461084f578063ae890c0a1461086f578063af121f541461088f578063c0881849146108b0578063c0bb38ff146108e6578063c723955a14610906578063d1335b69146103dc578063d5ed4d5a1461091b578063d97314f51461093b578063da82b2271461095b578063dcbe353f14610970578063dd11247e14610997578063ddd5e1b2146109ad578063de6d6d96146109cd578063f2fde38b146109ed578063f389b6e414610a0d578063f4415ad614610a2d578063f66e38c214610a6557600080fd5b80630191c0af146102a857806301ffc9a7146102db57806306fdde031461030b57806314427a9614610360578063150b7a02146103985780631bc51b26146103dc5780631c725fdc146103f057806325289bad146104105780632890d033146104375780632c0e13131461044c5780632c2330671461046c5780632d00b5871461048c578063379607f5146104ba5780633b3f12e2146104da5780633d2dded5146104fa57806349561cb914610537578063513da9481461055857806354fd4d501461057f57806357dc48c8146105ae5780636057e0ec1461060257806361949636146106235780636ba4c13814610643578063715018a61461066357806378b094ca14610678578063790c0c73146106985780638368909c146106b8578063837fe140146106df57806384fd5ae0146106f457600080fd5b366102a357600034116102a157600080fd5b005b600080fd5b3480156102b457600080fd5b506102c86102c33660046123f7565b610a85565b6040519081526020015b60405180910390f35b3480156102e757600080fd5b506102fb6102f636600461244d565b610add565b60405190151581526020016102d2565b34801561031757600080fd5b506103536040518060400160405280601c81526020017b45524337323120457175616c20456d697373696f6e2053747265616d60201b81525081565b6040516102d29190612477565b34801561036c57600080fd5b50600954610380906001600160401b031681565b6040516001600160401b0390911681526020016102d2565b3480156103a457600080fd5b506103c36103b336600461253a565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016102d2565b3480156103e857600080fd5b5060016102fb565b3480156103fc57600080fd5b506102a161040b366004612614565b610b1d565b34801561041c57600080fd5b5060035461038090600160a01b90046001600160401b031681565b34801561044357600080fd5b506102c8610bac565b34801561045857600080fd5b506102a1610467366004612614565b610bbd565b34801561047857600080fd5b506102a161048736600461262f565b610c19565b34801561049857600080fd5b506009546104ad90600160f01b900460ff1681565b6040516102d29190612666565b3480156104c657600080fd5b506102a16104d536600461268e565b610c78565b3480156104e657600080fd5b506102c86104f53660046123f7565b610c86565b34801561050657600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc546102c8565b34801561054357600080fd5b506009546102fb90600160f81b900460ff1681565b34801561056457600080fd5b5060075461038090600160401b90046001600160401b031681565b34801561058b57600080fd5b5061035360405180604001604052806003815260200162302e3160e81b81525081565b3480156105ba57600080fd5b506105ed6105c93660046126a7565b60046020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016102d2565b34801561060e57600080fd5b506009546102fb90600160e01b900460ff1681565b34801561062f57600080fd5b50600754610380906001600160401b031681565b34801561064f57600080fd5b506102a161065e3660046126d7565b610d04565b34801561066f57600080fd5b506102a1610d15565b34801561068457600080fd5b506102a1610693366004612614565b610d29565b3480156106a457600080fd5b506102c86106b3366004612718565b610d8f565b3480156106c457600080fd5b5060075461038090600160801b90046001600160401b031681565b3480156106eb57600080fd5b506102a1610e53565b34801561070057600080fd5b506102c861070f3660046126d7565b610e9a565b34801561072057600080fd5b506102c861072f3660046126d7565b610eb9565b34801561074057600080fd5b50610749610ec7565b6040516102d29190612735565b34801561076257600080fd5b506102c861077136600461268e565b610edc565b34801561078257600080fd5b506102c860065481565b34801561079857600080fd5b506102c86107a7366004612614565b610ee9565b3480156107b857600080fd5b506102a16107c736600461268e565b610f2e565b3480156107d857600080fd5b506102c86107e73660046126a7565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b34801561081b57600080fd5b506102c861082a366004612614565b610f6d565b34801561083b57600080fd5b506102a161084a366004612749565b610fb3565b34801561085b57600080fd5b506102a161086a366004612614565b611114565b34801561087b57600080fd5b506102a161088a36600461268e565b61117b565b34801561089b57600080fd5b506009546102fb90600160e81b900460ff1681565b3480156108bc57600080fd5b506102c86108cb366004612718565b6001600160a01b031660009081526005602052604090205490565b3480156108f257600080fd5b506102a1610901366004612718565b6111ba565b34801561091257600080fd5b506102a1611218565b34801561092757600080fd5b50600354610749906001600160a01b031681565b34801561094757600080fd5b506102a1610956366004612614565b611279565b34801561096757600080fd5b506102a16112d5565b34801561097c57600080fd5b5060095461074990600160401b90046001600160a01b031681565b3480156109a357600080fd5b506102c860085481565b3480156109b957600080fd5b506102a16109c83660046126a7565b61131b565b3480156109d957600080fd5b506102a16109e83660046127f1565b611514565b3480156109f957600080fd5b506102a1610a08366004612718565b611762565b348015610a1957600080fd5b506102a1610a2836600461285c565b6117d8565b348015610a3957600080fd5b506102c8610a4836600461268e565b600090815260046020908152604080832083805290915290205490565b348015610a7157600080fd5b506102c8610a803660046126a7565b611a3d565b600080805b84811015610ad257610ab4868683818110610aa757610aa76128c3565b9050602002013585611a3d565b610abe90836128ef565b915080610aca81612907565b915050610a8a565b5090505b9392505050565b60006301ffc9a760e01b6001600160e01b031983161480610b1757506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b610b25611aa4565b6003546001600160401b03600160a01b909104811690821611610b7f5760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b60448201526064015b60405180910390fd5b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000610bb86000610d8f565b905090565b610bc5611aa4565b60035442600160a01b9091046001600160401b031610610bf75760405162461bcd60e51b8152600401610b7690612920565b600980546001600160401b0319166001600160401b0392909216919091179055565b610c21611aa4565b600954600160f81b900460ff1615610c4b5760405162461bcd60e51b8152600401610b7690612947565b6009805482919060ff60f01b1916600160f01b836003811115610c7057610c70612650565b021790555050565b610c8381600061131b565b50565b600080805b84811015610ad25760046000878784818110610ca957610ca96128c3565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b031681526020019081526020016000206000015482610cf091906128ef565b915080610cfc81612907565b915050610c8b565b610d1182826000336117d8565b5050565b610d1d611aa4565b610d276000611b03565b565b610d31611aa4565b60035442600160a01b9091046001600160401b031610610d635760405162461bcd60e51b8152600401610b7690612920565b600780546001600160401b03909216600160801b02600160801b600160c01b0319909216919091179055565b60006001600160a01b038216610dc3576001600160a01b038216600090815260056020526040902054610b179047906128ef565b6040516370a0823160e01b81526001600160a01b038316906370a0823190610def903090600401612735565b602060405180830381865afa158015610e0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e309190612967565b6001600160a01b038316600090815260056020526040902054610b1791906128ef565b610e5b611aa4565b600954600160e01b900460ff1615610e855760405162461bcd60e51b8152600401610b7690612947565b6009805460ff60e01b1916600160e01b179055565b60085460065460009190610eaf908490612980565b610ad691906129b5565b6000610ad683836000610c86565b6000546201000090046001600160a01b031690565b6000610b17826000611a3d565b6007546000906001600160401b0380821691610f0e91600160401b90910416846129c9565b610f1891906129f1565b6001600160401b0316600654610b179190612980565b610f36611aa4565b60035442600160a01b9091046001600160401b031610610f685760405162461bcd60e51b8152600401610b7690612920565b600655565b6007546006546000916001600160401b038082169291610f9691600160401b90910416856129c9565b6001600160401b0316610fa99190612980565b610b1791906129b5565b600054610100900460ff1615808015610fd35750600054600160ff909116105b80610ff45750610fe230611a95565b158015610ff4575060005460ff166001145b6110575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b76565b6000805460ff19166001179055801561107a576000805461ff0019166101001790555b61108382611b03565b61108e826000611b5e565b6110a083600001518460200151611b8f565b6110bc836060015184608001518560a001518660c00151611bc0565b6110c98360400151611bf9565b801561110f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61111c611aa4565b60035442600160a01b9091046001600160401b03161061114e5760405162461bcd60e51b8152600401610b7690612920565b600780546001600160401b03909216600160401b0267ffffffffffffffff60401b19909216919091179055565b611183611aa4565b60035442600160a01b9091046001600160401b0316106111b55760405162461bcd60e51b8152600401610b7690612920565b600855565b6111c2611aa4565b600954600160e01b900460ff16156111ec5760405162461bcd60e51b8152600401610b7690612947565b600980546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b611220611aa4565b600954600160f81b900460ff16156112625760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401610b76565b600980546001600160f81b0316600160f81b179055565b611281611aa4565b60035442600160a01b9091046001600160401b0316106112b35760405162461bcd60e51b8152600401610b7690612920565b600780546001600160401b0319166001600160401b0392909216919091179055565b6112dd611aa4565b6009805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b600280540361133c5760405162461bcd60e51b8152600401610b7690612a17565b600280553361134c838383611c29565b60006113588484611a3d565b90506000811161139d5760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b6044820152606401610b76565b60008481526004602090815260408083206001600160a01b0387168452909152812080548392906113cf9084906128ef565b909155505060008481526004602090815260408083206001600160a01b03871684528252808320426001909101556005909152812080548392906114149084906128ef565b90915550506001600160a01b03831661143f5761143a6001600160a01b03831682611c4a565b6114b2565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb9061146d9085908590600401612a4e565b6020604051808303816000875af115801561148c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b09190612a67565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b61151d33611d60565b600954600160401b90046001600160a01b03166115745760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401610b76565b600954600160e81b900460ff16156115ce5760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610b76565b60005b8381101561171e5760008585838181106115ed576115ed6128c3565b90506020020160208101906116029190612718565b6001600160a01b03160361164d57611648838383818110611625576116256128c3565b6009546001600160a01b03600160401b9091041692602090910201359050611c4a565b61170c565b84848281811061165f5761165f6128c3565b90506020020160208101906116749190612718565b6009546001600160a01b039182169163a9059cbb91600160401b9004168585858181106116a3576116a36128c3565b905060200201356040518363ffffffff1660e01b81526004016116c7929190612a4e565b6020604051808303816000875af11580156116e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170a9190612a67565b505b8061171681612907565b9150506115d1565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a5848484846040516117549493929190612abf565b60405180910390a150505050565b61176a611aa4565b6001600160a01b0381166117cf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b76565b610c8381611b03565b60028054036117f95760405162461bcd60e51b8152600401610b7690612a17565b600280556000805b848110156119295761182c86868381811061181e5761181e6128c3565b905060200201358585611c29565b6000611850878784818110611843576118436128c3565b9050602002013586611a3d565b9050801561191657806004600089898681811061186f5761186f6128c3565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b0316815260200190815260200160002060000160008282546118b991906128ef565b90915550429050600460008989868181106118d6576118d66128c3565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a16825290925290206001015561191381846128ef565b92505b508061192181612907565b915050611801565b506001600160a01b038316600090815260056020526040812080548392906119529084906128ef565b90915550506001600160a01b03831661197d576119786001600160a01b03831682611c4a565b6119f0565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906119ab9085908590600401612a4e565b6020604051808303816000875af11580156119ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ee9190612a67565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b1338387878786604051611a2996959493929190612b22565b60405180910390a150506001600255505050565b600080611a5d611a56611a4f85610d8f565b8686611eed565b8585611f75565b60008581526004602090815260408083206001600160a01b0388168452909152902054909150611a8d9082612b61565b949350505050565b6001600160a01b03163b151590565b33611aad610ec7565b6001600160a01b031614610d275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b76565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff16611b855760405162461bcd60e51b8152600401610b7690612b78565b610d118282611f85565b600054610100900460ff16611bb65760405162461bcd60e51b8152600401610b7690612b78565b610d11828261201f565b600054610100900460ff16611be75760405162461bcd60e51b8152600401610b7690612b78565b611bf384848484612084565b50505050565b600054610100900460ff16611c205760405162461bcd60e51b8152600401610b7690612b78565b610c8381612105565b611c34838383612141565b611c3f8383836121f6565b61110f838383612241565b80471015611c9a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610b76565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611ce7576040519150601f19603f3d011682016040523d82523d6000602084013e611cec565b606091505b505090508061110f5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610b76565b6003600954600160f01b900460ff166003811115611d8057611d80612650565b03611dbf5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401610b76565b6002600954600160f01b900460ff166003811115611ddf57611ddf612650565b03611de75750565b6001600954600160f01b900460ff166003811115611e0757611e07612650565b03611e6a576009546001600160a01b03828116600160401b9092041614610c835760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401610b76565b6000600954600160f01b900460ff166003811115611e8a57611e8a612650565b03610c8357806001600160a01b0316611ea1610ec7565b6001600160a01b031614610c835760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401610b76565b600754600090600160401b90046001600160401b0316421015611f1257506000610ad6565b600754600160801b90046001600160401b031615801590611f445750600754600160801b90046001600160401b031642115b15611f6c57600754611f6590600160801b90046001600160401b0316610ee9565b9050610ad6565b611f6542610ee9565b600060085484611a8d91906129b5565b600054610100900460ff16611fac5760405162461bcd60e51b8152600401610b7690612b78565b611fbc63ac2ba33360e01b612306565b60098054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b83600381111561201657612016612650565b02179055505050565b600054610100900460ff166120465760405162461bcd60e51b8152600401610b7690612b78565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055610d11631ba050e960e21b612306565b600054610100900460ff166120ab5760405162461bcd60e51b8152600401610b7690612b78565b6006849055600780546001600160401b03838116600160801b02600160801b600160c01b0319868316600160401b026001600160801b0319909416928816929092179290921716179055611bf363c9f600a960e01b612306565b600054610100900460ff1661212c5760405162461bcd60e51b8152600401610b7690612b78565b6008819055610c83632d5305cb60e21b612306565b6003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa15801561218c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b09190612bc3565b6001600160a01b03161461110f5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b6044820152606401610b76565b600954426001600160401b039091161061110f5760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b6044820152606401610b76565b60075442600160401b9091046001600160401b0316106122915760405162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b6044820152606401610b76565b6007546122a7906001600160401b031642612b61565b60008481526004602090815260408083206001600160a01b03871684529091529020600101541061110f5760405162461bcd60e51b8152602060048201526009602482015268544f4f5f4541524c5960b81b6044820152606401610b76565b6001600160e01b0319808216900361235f5760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401610b76565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60008083601f84011261239957600080fd5b5081356001600160401b038111156123b057600080fd5b6020830191508360208260051b85010111156123cb57600080fd5b9250929050565b6001600160a01b0381168114610c8357600080fd5b80356123f2816123d2565b919050565b60008060006040848603121561240c57600080fd5b83356001600160401b0381111561242257600080fd5b61242e86828701612387565b9094509250506020840135612442816123d2565b809150509250925092565b60006020828403121561245f57600080fd5b81356001600160e01b031981168114610ad657600080fd5b600060208083528351808285015260005b818110156124a457858101830151858201604001528201612488565b818111156124b6576000604083870101525b50601f01601f1916929092016040019392505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715612504576125046124cc565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612532576125326124cc565b604052919050565b6000806000806080858703121561255057600080fd5b843561255b816123d2565b935060208581013561256c816123d2565b93506040860135925060608601356001600160401b038082111561258f57600080fd5b818801915088601f8301126125a357600080fd5b8135818111156125b5576125b56124cc565b6125c7601f8201601f1916850161250a565b915080825289848285010111156125dd57600080fd5b808484018584013760008482840101525080935050505092959194509250565b80356001600160401b03811681146123f257600080fd5b60006020828403121561262657600080fd5b610ad6826125fd565b60006020828403121561264157600080fd5b813560048110610ad657600080fd5b634e487b7160e01b600052602160045260246000fd5b602081016004831061268857634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156126a057600080fd5b5035919050565b600080604083850312156126ba57600080fd5b8235915060208301356126cc816123d2565b809150509250929050565b600080602083850312156126ea57600080fd5b82356001600160401b0381111561270057600080fd5b61270c85828601612387565b90969095509350505050565b60006020828403121561272a57600080fd5b8135610ad6816123d2565b6001600160a01b0391909116815260200190565b60008082840361010081121561275e57600080fd5b60e081121561276c57600080fd5b506127756124e2565b8335612780816123d2565b815261278e602085016125fd565b602082015260408401356040820152606084013560608201526127b3608085016125fd565b60808201526127c460a085016125fd565b60a08201526127d560c085016125fd565b60c082015291506127e860e084016123e7565b90509250929050565b6000806000806040858703121561280757600080fd5b84356001600160401b038082111561281e57600080fd5b61282a88838901612387565b9096509450602087013591508082111561284357600080fd5b5061285087828801612387565b95989497509550505050565b6000806000806060858703121561287257600080fd5b84356001600160401b0381111561288857600080fd5b61289487828801612387565b90955093505060208501356128a8816123d2565b915060408501356128b8816123d2565b939692955090935050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115612902576129026128d9565b500190565b600060018201612919576129196128d9565b5060010190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b60006020828403121561297957600080fd5b5051919050565b600081600019048311821515161561299a5761299a6128d9565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826129c4576129c461299f565b500490565b60006001600160401b03838116908316818110156129e9576129e96128d9565b039392505050565b60006001600160401b0380841680612a0b57612a0b61299f565b92169190910492915050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b03929092168252602082015260400190565b600060208284031215612a7957600080fd5b81518015158114610ad657600080fd5b81835260006001600160fb1b03831115612aa257600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b87811015612b02578235612ae5816123d2565b6001600160a01b0316825260209283019290910190600101612ad2565b508381036020850152612b16818688612a89565b98975050505050505050565b600060018060a01b038089168352808816602084015260a06040840152612b4d60a084018789612a89565b941660608301525060800152949350505050565b600082821015612b7357612b736128d9565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208284031215612bd557600080fd5b8151610ad6816123d256fea2646970667358221220ee5538a130d54b989a5f058ed321f050781ac93d328b4fdb93740f18f2425dc164736f6c634300080f0033","deployedBytecode":"0x60806040526004361061028f5760003560e01c806389c6b8151161015657806389c6b815146107145780638da5cb5b146107345780639199690b146103dc578063968d9b2c1461075657806396afc450146107765780639edfe8301461078c578063a1bdb15e146107ac578063a1cf6493146107cc578063a86b21e81461080f578063aa02a74b1461082f578063aaf2f9991461084f578063ae890c0a1461086f578063af121f541461088f578063c0881849146108b0578063c0bb38ff146108e6578063c723955a14610906578063d1335b69146103dc578063d5ed4d5a1461091b578063d97314f51461093b578063da82b2271461095b578063dcbe353f14610970578063dd11247e14610997578063ddd5e1b2146109ad578063de6d6d96146109cd578063f2fde38b146109ed578063f389b6e414610a0d578063f4415ad614610a2d578063f66e38c214610a6557600080fd5b80630191c0af146102a857806301ffc9a7146102db57806306fdde031461030b57806314427a9614610360578063150b7a02146103985780631bc51b26146103dc5780631c725fdc146103f057806325289bad146104105780632890d033146104375780632c0e13131461044c5780632c2330671461046c5780632d00b5871461048c578063379607f5146104ba5780633b3f12e2146104da5780633d2dded5146104fa57806349561cb914610537578063513da9481461055857806354fd4d501461057f57806357dc48c8146105ae5780636057e0ec1461060257806361949636146106235780636ba4c13814610643578063715018a61461066357806378b094ca14610678578063790c0c73146106985780638368909c146106b8578063837fe140146106df57806384fd5ae0146106f457600080fd5b366102a357600034116102a157600080fd5b005b600080fd5b3480156102b457600080fd5b506102c86102c33660046123f7565b610a85565b6040519081526020015b60405180910390f35b3480156102e757600080fd5b506102fb6102f636600461244d565b610add565b60405190151581526020016102d2565b34801561031757600080fd5b506103536040518060400160405280601c81526020017b45524337323120457175616c20456d697373696f6e2053747265616d60201b81525081565b6040516102d29190612477565b34801561036c57600080fd5b50600954610380906001600160401b031681565b6040516001600160401b0390911681526020016102d2565b3480156103a457600080fd5b506103c36103b336600461253a565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016102d2565b3480156103e857600080fd5b5060016102fb565b3480156103fc57600080fd5b506102a161040b366004612614565b610b1d565b34801561041c57600080fd5b5060035461038090600160a01b90046001600160401b031681565b34801561044357600080fd5b506102c8610bac565b34801561045857600080fd5b506102a1610467366004612614565b610bbd565b34801561047857600080fd5b506102a161048736600461262f565b610c19565b34801561049857600080fd5b506009546104ad90600160f01b900460ff1681565b6040516102d29190612666565b3480156104c657600080fd5b506102a16104d536600461268e565b610c78565b3480156104e657600080fd5b506102c86104f53660046123f7565b610c86565b34801561050657600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc546102c8565b34801561054357600080fd5b506009546102fb90600160f81b900460ff1681565b34801561056457600080fd5b5060075461038090600160401b90046001600160401b031681565b34801561058b57600080fd5b5061035360405180604001604052806003815260200162302e3160e81b81525081565b3480156105ba57600080fd5b506105ed6105c93660046126a7565b60046020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016102d2565b34801561060e57600080fd5b506009546102fb90600160e01b900460ff1681565b34801561062f57600080fd5b50600754610380906001600160401b031681565b34801561064f57600080fd5b506102a161065e3660046126d7565b610d04565b34801561066f57600080fd5b506102a1610d15565b34801561068457600080fd5b506102a1610693366004612614565b610d29565b3480156106a457600080fd5b506102c86106b3366004612718565b610d8f565b3480156106c457600080fd5b5060075461038090600160801b90046001600160401b031681565b3480156106eb57600080fd5b506102a1610e53565b34801561070057600080fd5b506102c861070f3660046126d7565b610e9a565b34801561072057600080fd5b506102c861072f3660046126d7565b610eb9565b34801561074057600080fd5b50610749610ec7565b6040516102d29190612735565b34801561076257600080fd5b506102c861077136600461268e565b610edc565b34801561078257600080fd5b506102c860065481565b34801561079857600080fd5b506102c86107a7366004612614565b610ee9565b3480156107b857600080fd5b506102a16107c736600461268e565b610f2e565b3480156107d857600080fd5b506102c86107e73660046126a7565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b34801561081b57600080fd5b506102c861082a366004612614565b610f6d565b34801561083b57600080fd5b506102a161084a366004612749565b610fb3565b34801561085b57600080fd5b506102a161086a366004612614565b611114565b34801561087b57600080fd5b506102a161088a36600461268e565b61117b565b34801561089b57600080fd5b506009546102fb90600160e81b900460ff1681565b3480156108bc57600080fd5b506102c86108cb366004612718565b6001600160a01b031660009081526005602052604090205490565b3480156108f257600080fd5b506102a1610901366004612718565b6111ba565b34801561091257600080fd5b506102a1611218565b34801561092757600080fd5b50600354610749906001600160a01b031681565b34801561094757600080fd5b506102a1610956366004612614565b611279565b34801561096757600080fd5b506102a16112d5565b34801561097c57600080fd5b5060095461074990600160401b90046001600160a01b031681565b3480156109a357600080fd5b506102c860085481565b3480156109b957600080fd5b506102a16109c83660046126a7565b61131b565b3480156109d957600080fd5b506102a16109e83660046127f1565b611514565b3480156109f957600080fd5b506102a1610a08366004612718565b611762565b348015610a1957600080fd5b506102a1610a2836600461285c565b6117d8565b348015610a3957600080fd5b506102c8610a4836600461268e565b600090815260046020908152604080832083805290915290205490565b348015610a7157600080fd5b506102c8610a803660046126a7565b611a3d565b600080805b84811015610ad257610ab4868683818110610aa757610aa76128c3565b9050602002013585611a3d565b610abe90836128ef565b915080610aca81612907565b915050610a8a565b5090505b9392505050565b60006301ffc9a760e01b6001600160e01b031983161480610b1757506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b610b25611aa4565b6003546001600160401b03600160a01b909104811690821611610b7f5760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b60448201526064015b60405180910390fd5b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000610bb86000610d8f565b905090565b610bc5611aa4565b60035442600160a01b9091046001600160401b031610610bf75760405162461bcd60e51b8152600401610b7690612920565b600980546001600160401b0319166001600160401b0392909216919091179055565b610c21611aa4565b600954600160f81b900460ff1615610c4b5760405162461bcd60e51b8152600401610b7690612947565b6009805482919060ff60f01b1916600160f01b836003811115610c7057610c70612650565b021790555050565b610c8381600061131b565b50565b600080805b84811015610ad25760046000878784818110610ca957610ca96128c3565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b031681526020019081526020016000206000015482610cf091906128ef565b915080610cfc81612907565b915050610c8b565b610d1182826000336117d8565b5050565b610d1d611aa4565b610d276000611b03565b565b610d31611aa4565b60035442600160a01b9091046001600160401b031610610d635760405162461bcd60e51b8152600401610b7690612920565b600780546001600160401b03909216600160801b02600160801b600160c01b0319909216919091179055565b60006001600160a01b038216610dc3576001600160a01b038216600090815260056020526040902054610b179047906128ef565b6040516370a0823160e01b81526001600160a01b038316906370a0823190610def903090600401612735565b602060405180830381865afa158015610e0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e309190612967565b6001600160a01b038316600090815260056020526040902054610b1791906128ef565b610e5b611aa4565b600954600160e01b900460ff1615610e855760405162461bcd60e51b8152600401610b7690612947565b6009805460ff60e01b1916600160e01b179055565b60085460065460009190610eaf908490612980565b610ad691906129b5565b6000610ad683836000610c86565b6000546201000090046001600160a01b031690565b6000610b17826000611a3d565b6007546000906001600160401b0380821691610f0e91600160401b90910416846129c9565b610f1891906129f1565b6001600160401b0316600654610b179190612980565b610f36611aa4565b60035442600160a01b9091046001600160401b031610610f685760405162461bcd60e51b8152600401610b7690612920565b600655565b6007546006546000916001600160401b038082169291610f9691600160401b90910416856129c9565b6001600160401b0316610fa99190612980565b610b1791906129b5565b600054610100900460ff1615808015610fd35750600054600160ff909116105b80610ff45750610fe230611a95565b158015610ff4575060005460ff166001145b6110575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b76565b6000805460ff19166001179055801561107a576000805461ff0019166101001790555b61108382611b03565b61108e826000611b5e565b6110a083600001518460200151611b8f565b6110bc836060015184608001518560a001518660c00151611bc0565b6110c98360400151611bf9565b801561110f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61111c611aa4565b60035442600160a01b9091046001600160401b03161061114e5760405162461bcd60e51b8152600401610b7690612920565b600780546001600160401b03909216600160401b0267ffffffffffffffff60401b19909216919091179055565b611183611aa4565b60035442600160a01b9091046001600160401b0316106111b55760405162461bcd60e51b8152600401610b7690612920565b600855565b6111c2611aa4565b600954600160e01b900460ff16156111ec5760405162461bcd60e51b8152600401610b7690612947565b600980546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b611220611aa4565b600954600160f81b900460ff16156112625760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401610b76565b600980546001600160f81b0316600160f81b179055565b611281611aa4565b60035442600160a01b9091046001600160401b0316106112b35760405162461bcd60e51b8152600401610b7690612920565b600780546001600160401b0319166001600160401b0392909216919091179055565b6112dd611aa4565b6009805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b600280540361133c5760405162461bcd60e51b8152600401610b7690612a17565b600280553361134c838383611c29565b60006113588484611a3d565b90506000811161139d5760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b6044820152606401610b76565b60008481526004602090815260408083206001600160a01b0387168452909152812080548392906113cf9084906128ef565b909155505060008481526004602090815260408083206001600160a01b03871684528252808320426001909101556005909152812080548392906114149084906128ef565b90915550506001600160a01b03831661143f5761143a6001600160a01b03831682611c4a565b6114b2565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb9061146d9085908590600401612a4e565b6020604051808303816000875af115801561148c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b09190612a67565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b61151d33611d60565b600954600160401b90046001600160a01b03166115745760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401610b76565b600954600160e81b900460ff16156115ce5760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610b76565b60005b8381101561171e5760008585838181106115ed576115ed6128c3565b90506020020160208101906116029190612718565b6001600160a01b03160361164d57611648838383818110611625576116256128c3565b6009546001600160a01b03600160401b9091041692602090910201359050611c4a565b61170c565b84848281811061165f5761165f6128c3565b90506020020160208101906116749190612718565b6009546001600160a01b039182169163a9059cbb91600160401b9004168585858181106116a3576116a36128c3565b905060200201356040518363ffffffff1660e01b81526004016116c7929190612a4e565b6020604051808303816000875af11580156116e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170a9190612a67565b505b8061171681612907565b9150506115d1565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a5848484846040516117549493929190612abf565b60405180910390a150505050565b61176a611aa4565b6001600160a01b0381166117cf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b76565b610c8381611b03565b60028054036117f95760405162461bcd60e51b8152600401610b7690612a17565b600280556000805b848110156119295761182c86868381811061181e5761181e6128c3565b905060200201358585611c29565b6000611850878784818110611843576118436128c3565b9050602002013586611a3d565b9050801561191657806004600089898681811061186f5761186f6128c3565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b0316815260200190815260200160002060000160008282546118b991906128ef565b90915550429050600460008989868181106118d6576118d66128c3565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a16825290925290206001015561191381846128ef565b92505b508061192181612907565b915050611801565b506001600160a01b038316600090815260056020526040812080548392906119529084906128ef565b90915550506001600160a01b03831661197d576119786001600160a01b03831682611c4a565b6119f0565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906119ab9085908590600401612a4e565b6020604051808303816000875af11580156119ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ee9190612a67565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b1338387878786604051611a2996959493929190612b22565b60405180910390a150506001600255505050565b600080611a5d611a56611a4f85610d8f565b8686611eed565b8585611f75565b60008581526004602090815260408083206001600160a01b0388168452909152902054909150611a8d9082612b61565b949350505050565b6001600160a01b03163b151590565b33611aad610ec7565b6001600160a01b031614610d275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b76565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff16611b855760405162461bcd60e51b8152600401610b7690612b78565b610d118282611f85565b600054610100900460ff16611bb65760405162461bcd60e51b8152600401610b7690612b78565b610d11828261201f565b600054610100900460ff16611be75760405162461bcd60e51b8152600401610b7690612b78565b611bf384848484612084565b50505050565b600054610100900460ff16611c205760405162461bcd60e51b8152600401610b7690612b78565b610c8381612105565b611c34838383612141565b611c3f8383836121f6565b61110f838383612241565b80471015611c9a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610b76565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611ce7576040519150601f19603f3d011682016040523d82523d6000602084013e611cec565b606091505b505090508061110f5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610b76565b6003600954600160f01b900460ff166003811115611d8057611d80612650565b03611dbf5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401610b76565b6002600954600160f01b900460ff166003811115611ddf57611ddf612650565b03611de75750565b6001600954600160f01b900460ff166003811115611e0757611e07612650565b03611e6a576009546001600160a01b03828116600160401b9092041614610c835760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401610b76565b6000600954600160f01b900460ff166003811115611e8a57611e8a612650565b03610c8357806001600160a01b0316611ea1610ec7565b6001600160a01b031614610c835760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401610b76565b600754600090600160401b90046001600160401b0316421015611f1257506000610ad6565b600754600160801b90046001600160401b031615801590611f445750600754600160801b90046001600160401b031642115b15611f6c57600754611f6590600160801b90046001600160401b0316610ee9565b9050610ad6565b611f6542610ee9565b600060085484611a8d91906129b5565b600054610100900460ff16611fac5760405162461bcd60e51b8152600401610b7690612b78565b611fbc63ac2ba33360e01b612306565b60098054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b83600381111561201657612016612650565b02179055505050565b600054610100900460ff166120465760405162461bcd60e51b8152600401610b7690612b78565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055610d11631ba050e960e21b612306565b600054610100900460ff166120ab5760405162461bcd60e51b8152600401610b7690612b78565b6006849055600780546001600160401b03838116600160801b02600160801b600160c01b0319868316600160401b026001600160801b0319909416928816929092179290921716179055611bf363c9f600a960e01b612306565b600054610100900460ff1661212c5760405162461bcd60e51b8152600401610b7690612b78565b6008819055610c83632d5305cb60e21b612306565b6003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa15801561218c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b09190612bc3565b6001600160a01b03161461110f5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b6044820152606401610b76565b600954426001600160401b039091161061110f5760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b6044820152606401610b76565b60075442600160401b9091046001600160401b0316106122915760405162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b6044820152606401610b76565b6007546122a7906001600160401b031642612b61565b60008481526004602090815260408083206001600160a01b03871684529091529020600101541061110f5760405162461bcd60e51b8152602060048201526009602482015268544f4f5f4541524c5960b81b6044820152606401610b76565b6001600160e01b0319808216900361235f5760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401610b76565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60008083601f84011261239957600080fd5b5081356001600160401b038111156123b057600080fd5b6020830191508360208260051b85010111156123cb57600080fd5b9250929050565b6001600160a01b0381168114610c8357600080fd5b80356123f2816123d2565b919050565b60008060006040848603121561240c57600080fd5b83356001600160401b0381111561242257600080fd5b61242e86828701612387565b9094509250506020840135612442816123d2565b809150509250925092565b60006020828403121561245f57600080fd5b81356001600160e01b031981168114610ad657600080fd5b600060208083528351808285015260005b818110156124a457858101830151858201604001528201612488565b818111156124b6576000604083870101525b50601f01601f1916929092016040019392505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715612504576125046124cc565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612532576125326124cc565b604052919050565b6000806000806080858703121561255057600080fd5b843561255b816123d2565b935060208581013561256c816123d2565b93506040860135925060608601356001600160401b038082111561258f57600080fd5b818801915088601f8301126125a357600080fd5b8135818111156125b5576125b56124cc565b6125c7601f8201601f1916850161250a565b915080825289848285010111156125dd57600080fd5b808484018584013760008482840101525080935050505092959194509250565b80356001600160401b03811681146123f257600080fd5b60006020828403121561262657600080fd5b610ad6826125fd565b60006020828403121561264157600080fd5b813560048110610ad657600080fd5b634e487b7160e01b600052602160045260246000fd5b602081016004831061268857634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156126a057600080fd5b5035919050565b600080604083850312156126ba57600080fd5b8235915060208301356126cc816123d2565b809150509250929050565b600080602083850312156126ea57600080fd5b82356001600160401b0381111561270057600080fd5b61270c85828601612387565b90969095509350505050565b60006020828403121561272a57600080fd5b8135610ad6816123d2565b6001600160a01b0391909116815260200190565b60008082840361010081121561275e57600080fd5b60e081121561276c57600080fd5b506127756124e2565b8335612780816123d2565b815261278e602085016125fd565b602082015260408401356040820152606084013560608201526127b3608085016125fd565b60808201526127c460a085016125fd565b60a08201526127d560c085016125fd565b60c082015291506127e860e084016123e7565b90509250929050565b6000806000806040858703121561280757600080fd5b84356001600160401b038082111561281e57600080fd5b61282a88838901612387565b9096509450602087013591508082111561284357600080fd5b5061285087828801612387565b95989497509550505050565b6000806000806060858703121561287257600080fd5b84356001600160401b0381111561288857600080fd5b61289487828801612387565b90955093505060208501356128a8816123d2565b915060408501356128b8816123d2565b939692955090935050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115612902576129026128d9565b500190565b600060018201612919576129196128d9565b5060010190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b60006020828403121561297957600080fd5b5051919050565b600081600019048311821515161561299a5761299a6128d9565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826129c4576129c461299f565b500490565b60006001600160401b03838116908316818110156129e9576129e96128d9565b039392505050565b60006001600160401b0380841680612a0b57612a0b61299f565b92169190910492915050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b03929092168252602082015260400190565b600060208284031215612a7957600080fd5b81518015158114610ad657600080fd5b81835260006001600160fb1b03831115612aa257600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b87811015612b02578235612ae5816123d2565b6001600160a01b0316825260209283019290910190600101612ad2565b508381036020850152612b16818688612a89565b98975050505050505050565b600060018060a01b038089168352808816602084015260a06040840152612b4d60a084018789612a89565b941660608301525060800152949350505050565b600082821015612b7357612b736128d9565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208284031215612bd557600080fd5b8151610ad6816123d256fea2646970667358221220ee5538a130d54b989a5f058ed321f050781ac93d328b4fdb93740f18f2425dc164736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/presets/ERC721EqualInstantStream":{"address":{"1":"0xBB0AA646E8D63d920a7Ab1C96Ba082cbF075DcDA","3":"0x03EcE0a5f417eC136a78F8177De4699762389d2d","4":"0x2f6b1E887eA2d7624C285F2598122004F4Ed6476","5":"0xeD2d1FBE8A6e9e428A343D67088AC299EbCC1F18","25":"0x437f9E3A2EF9089Bf3C8A89599b40f62fA2Bb3F9","66":"0xA2E7c4793a038362406C9e750509f2EDB38092cC","137":"0xdcf439bFdA5C2a7563B670c2194fA12cD34F95B9","250":"0x97BA377E12dCA8a81b9d304F5e27D179E6ca1FBA","280":"0x023c4579aBACC3B5b68f616BF69b5B0ce8799Eb2","4002":"0x97BA377E12dCA8a81b9d304F5e27D179E6ca1FBA","43113":"0x3E368e34Ae2CD9F2617F397cE6B6310fE1cAEaed","43114":"0x2a89238074A3eF4cE606ed3f53CfE5C50CdD9299","421611":"0x355d2D09CF839D2CBBcdDf29198Fb3460ef0A3F5","arbitrumTestnet":"0x355d2D09CF839D2CBBcdDf29198Fb3460ef0A3F5","avalanche":"0x2a89238074A3eF4cE606ed3f53CfE5C50CdD9299","avalancheFujiTestnet":"0x3E368e34Ae2CD9F2617F397cE6B6310fE1cAEaed","cronos":"0x437f9E3A2EF9089Bf3C8A89599b40f62fA2Bb3F9","ftmTestnet":"0x97BA377E12dCA8a81b9d304F5e27D179E6ca1FBA","goerli":"0xeD2d1FBE8A6e9e428A343D67088AC299EbCC1F18","mainnet":"0xBB0AA646E8D63d920a7Ab1C96Ba082cbF075DcDA","okcMainnet":"0xA2E7c4793a038362406C9e750509f2EDB38092cC","opera":"0x97BA377E12dCA8a81b9d304F5e27D179E6ca1FBA","polygon":"0xdcf439bFdA5C2a7563B670c2194fA12cD34F95B9","rinkeby":"0x2f6b1E887eA2d7624C285F2598122004F4Ed6476","ropsten":"0x03EcE0a5f417eC136a78F8177De4699762389d2d","zksyncTestnet":"0x023c4579aBACC3B5b68f616BF69b5B0ce8799Eb2"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721EqualInstantStream","sourceName":"contracts/streams/ERC721/presets/ERC721EqualInstantStream.sol","abi":[{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint256","name":"totalTickets","type":"uint256"},{"internalType":"uint64","name":"claimLockedUntil","type":"uint64"}],"internalType":"struct ERC721EqualInstantStream.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimLockedUntil","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721EqualSplitExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721InstantReleaseExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721LockableClaimExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint256","name":"totalTickets","type":"uint256"},{"internalType":"uint64","name":"claimLockedUntil","type":"uint64"}],"internalType":"struct ERC721EqualInstantStream.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setClaimLockedUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setTotalTickets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTickets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162002c2a38038062002c2a833981016040819052620000349162000558565b6200003f3362000057565b6001600255620000508133620000b2565b5062000651565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620000d35750600054600160ff909116105b80620001035750620000f0306200022760201b620016971760201c565b15801562000103575060005460ff166001145b6200016c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000190576000805461ff0019166101001790555b6200019b8262000057565b620001a882600062000236565b82516020840151620001bb919062000270565b6040830151620001cb90620002a6565b6060830151620001db90620002de565b801562000222576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6001600160a01b03163b151590565b600054610100900460ff16620002605760405162461bcd60e51b81526004016200016390620005f0565b6200026c828262000313565b5050565b600054610100900460ff166200029a5760405162461bcd60e51b81526004016200016390620005f0565b6200026c8282620003ba565b600054610100900460ff16620002d05760405162461bcd60e51b81526004016200016390620005f0565b620002db8162000424565b50565b600054610100900460ff16620003085760405162461bcd60e51b81526004016200016390620005f0565b620002db8162000465565b600054610100900460ff166200033d5760405162461bcd60e51b81526004016200016390620005f0565b6200034f63ac2ba33360e01b620004b7565b60078054600160401b600160e01b03198116680100000000000000006001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b836003811115620003b157620003b16200063b565b02179055505050565b600054610100900460ff16620003e45760405162461bcd60e51b81526004016200016390620005f0565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b038516171790556200026c631ba050e960e21b620004b7565b600054610100900460ff166200044e5760405162461bcd60e51b81526004016200016390620005f0565b6006819055620002db632d5305cb60e21b620004b7565b600054610100900460ff166200048f5760405162461bcd60e51b81526004016200016390620005f0565b600780546001600160401b0319166001600160401b038316179055620002db6317b2ef4360e31b5b6001600160e01b03198082169003620005135760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640162000163565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b80516001600160401b03811681146200055357600080fd5b919050565b6000608082840312156200056b57600080fd5b604051608081016001600160401b03811182821017156200059c57634e487b7160e01b600052604160045260246000fd5b60405282516001600160a01b0381168114620005b757600080fd5b8152620005c7602084016200053b565b602082015260408301516040820152620005e4606084016200053b565b60608201529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b6125c980620006616000396000f3fe6080604052600436106102165760003560e01c8063790c0c731161011f578063790c0c73146105b7578063837fe140146105d757806389c6b815146105ec5780638da5cb5b1461060c5780639199690b146102e6578063968d9b2c1461062e5780639f1a2f061461064e578063a1cf64931461066e578063ae890c0a146106b1578063af121f54146106d1578063c0881849146106f2578063c0bb38ff14610728578063c723955a14610748578063d5ed4d5a1461075d578063da82b2271461077d578063dcbe353f14610792578063dd11247e146107b9578063ddd5e1b2146107cf578063de6d6d96146107ef578063f2fde38b1461080f578063f389b6e41461082f578063f4415ad61461084f578063f66e38c21461088757600080fd5b80630191c0af1461022f57806301ffc9a71461026257806306fdde031461029257806312599909146102e657806314427a96146102fa578063150b7a02146103325780631bc51b26146102e65780631c725fdc1461037657806325289bad146103965780632890d033146103bd5780632c0e1313146103d25780632c233067146103f25780632d00b58714610412578063379607f5146104405780633b3f12e2146104605780633d2dded51461048057806349561cb9146104bd57806354fd4d50146104de57806357dc48c81461050d5780636057e0ec146105615780636ba4c13814610582578063715018a6146105a257600080fd5b3661022a576000341161022857600080fd5b005b600080fd5b34801561023b57600080fd5b5061024f61024a366004611e59565b6108a7565b6040519081526020015b60405180910390f35b34801561026e57600080fd5b5061028261027d366004611eaf565b6108fd565b6040519015158152602001610259565b34801561029e57600080fd5b506102d96040518060400160405280601b81526020017a45524337323120457175616c20496e7374616e742053747265616d60281b81525081565b6040516102599190611ed9565b3480156102f257600080fd5b506001610282565b34801561030657600080fd5b5060075461031a906001600160401b031681565b6040516001600160401b039091168152602001610259565b34801561033e57600080fd5b5061035d61034d366004611f74565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610259565b34801561038257600080fd5b50610228610391366004612053565b61093d565b3480156103a257600080fd5b5060035461031a90600160a01b90046001600160401b031681565b3480156103c957600080fd5b5061024f6109cc565b3480156103de57600080fd5b506102286103ed366004612053565b6109dd565b3480156103fe57600080fd5b5061022861040d36600461206e565b610a39565b34801561041e57600080fd5b5060075461043390600160f01b900460ff1681565b60405161025991906120a5565b34801561044c57600080fd5b5061022861045b3660046120cd565b610a98565b34801561046c57600080fd5b5061024f61047b366004611e59565b610aa6565b34801561048c57600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461024f565b3480156104c957600080fd5b5060075461028290600160f81b900460ff1681565b3480156104ea57600080fd5b506102d960405180604001604052806003815260200162302e3160e81b81525081565b34801561051957600080fd5b5061054c6105283660046120e6565b60046020908152600092835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610259565b34801561056d57600080fd5b5060075461028290600160e01b900460ff1681565b34801561058e57600080fd5b5061022861059d366004612116565b610b24565b3480156105ae57600080fd5b50610228610b35565b3480156105c357600080fd5b5061024f6105d2366004612157565b610b49565b3480156105e357600080fd5b50610228610c0d565b3480156105f857600080fd5b5061024f610607366004612116565b610c54565b34801561061857600080fd5b50610621610c69565b6040516102599190612174565b34801561063a57600080fd5b5061024f6106493660046120cd565b610c7e565b34801561065a57600080fd5b50610228610669366004612188565b610c8b565b34801561067a57600080fd5b5061024f6106893660046120e6565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b3480156106bd57600080fd5b506102286106cc3660046120cd565b610ddd565b3480156106dd57600080fd5b5060075461028290600160e81b900460ff1681565b3480156106fe57600080fd5b5061024f61070d366004612157565b6001600160a01b031660009081526005602052604090205490565b34801561073457600080fd5b50610228610743366004612157565b610e1c565b34801561075457600080fd5b50610228610e7a565b34801561076957600080fd5b50600354610621906001600160a01b031681565b34801561078957600080fd5b50610228610edb565b34801561079e57600080fd5b5060075461062190600160401b90046001600160a01b031681565b3480156107c557600080fd5b5061024f60065481565b3480156107db57600080fd5b506102286107ea3660046120e6565b610f21565b3480156107fb57600080fd5b5061022861080a366004612219565b61111a565b34801561081b57600080fd5b5061022861082a366004612157565b611368565b34801561083b57600080fd5b5061022861084a366004612284565b6113de565b34801561085b57600080fd5b5061024f61086a3660046120cd565b600090815260046020908152604080832083805290915290205490565b34801561089357600080fd5b5061024f6108a23660046120e6565b611643565b600080805b848110156108f4576108d68686838181106108c9576108c96122eb565b9050602002013585611643565b6108e09083612317565b9150806108ec8161232f565b9150506108ac565b50949350505050565b60006301ffc9a760e01b6001600160e01b03198316148061093757506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b6109456116a6565b6003546001600160401b03600160a01b90910481169082161161099f5760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b60448201526064015b60405180910390fd5b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b60006109d86000610b49565b905090565b6109e56116a6565b60035442600160a01b9091046001600160401b031610610a175760405162461bcd60e51b815260040161099690612348565b600780546001600160401b0319166001600160401b0392909216919091179055565b610a416116a6565b600754600160f81b900460ff1615610a6b5760405162461bcd60e51b81526004016109969061236f565b6007805482919060ff60f01b1916600160f01b836003811115610a9057610a9061208f565b021790555050565b610aa3816000610f21565b50565b600080805b848110156108f45760046000878784818110610ac957610ac96122eb565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b031681526020019081526020016000206000015482610b109190612317565b915080610b1c8161232f565b915050610aab565b610b3182826000336113de565b5050565b610b3d6116a6565b610b476000611705565b565b60006001600160a01b038216610b7d576001600160a01b038216600090815260056020526040902054610937904790612317565b6040516370a0823160e01b81526001600160a01b038316906370a0823190610ba9903090600401612174565b602060405180830381865afa158015610bc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bea919061238f565b6001600160a01b0383166000908152600560205260409020546109379190612317565b610c156116a6565b600754600160e01b900460ff1615610c3f5760405162461bcd60e51b81526004016109969061236f565b6007805460ff60e01b1916600160e01b179055565b6000610c6283836000610aa6565b9392505050565b6000546201000090046001600160a01b031690565b6000610937826000611643565b600054610100900460ff1615808015610cab5750600054600160ff909116105b80610ccc5750610cba30611697565b158015610ccc575060005460ff166001145b610d2f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610996565b6000805460ff191660011790558015610d52576000805461ff0019166101001790555b610d5b82611705565b610d66826000611760565b610d7883600001518460200151611791565b610d8583604001516117c2565b610d9283606001516117f2565b8015610dd8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610de56116a6565b60035442600160a01b9091046001600160401b031610610e175760405162461bcd60e51b815260040161099690612348565b600655565b610e246116a6565b600754600160e01b900460ff1615610e4e5760405162461bcd60e51b81526004016109969061236f565b600780546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b610e826116a6565b600754600160f81b900460ff1615610ec45760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401610996565b600780546001600160f81b0316600160f81b179055565b610ee36116a6565b6007805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b6002805403610f425760405162461bcd60e51b8152600401610996906123a8565b6002805533610f52838383611822565b6000610f5e8484611643565b905060008111610fa35760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b6044820152606401610996565b60008481526004602090815260408083206001600160a01b038716845290915281208054839290610fd5908490612317565b909155505060008481526004602090815260408083206001600160a01b038716845282528083204260019091015560059091528120805483929061101a908490612317565b90915550506001600160a01b038316611045576110406001600160a01b03831682611838565b6110b8565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb9061107390859085906004016123df565b6020604051808303816000875af1158015611092573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b691906123f8565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b6111233361194e565b600754600160401b90046001600160a01b031661117a5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401610996565b600754600160e81b900460ff16156111d45760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610996565b60005b838110156113245760008585838181106111f3576111f36122eb565b90506020020160208101906112089190612157565b6001600160a01b0316036112535761124e83838381811061122b5761122b6122eb565b6007546001600160a01b03600160401b9091041692602090910201359050611838565b611312565b848482818110611265576112656122eb565b905060200201602081019061127a9190612157565b6007546001600160a01b039182169163a9059cbb91600160401b9004168585858181106112a9576112a96122eb565b905060200201356040518363ffffffff1660e01b81526004016112cd9291906123df565b6020604051808303816000875af11580156112ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131091906123f8565b505b8061131c8161232f565b9150506111d7565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a58484848460405161135a9493929190612450565b60405180910390a150505050565b6113706116a6565b6001600160a01b0381166113d55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610996565b610aa381611705565b60028054036113ff5760405162461bcd60e51b8152600401610996906123a8565b600280556000805b8481101561152f57611432868683818110611424576114246122eb565b905060200201358585611822565b6000611456878784818110611449576114496122eb565b9050602002013586611643565b9050801561151c578060046000898986818110611475576114756122eb565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b0316815260200190815260200160002060000160008282546114bf9190612317565b90915550429050600460008989868181106114dc576114dc6122eb565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a1682529092529020600101556115198184612317565b92505b50806115278161232f565b915050611407565b506001600160a01b03831660009081526005602052604081208054839290611558908490612317565b90915550506001600160a01b0383166115835761157e6001600160a01b03831682611838565b6115f6565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906115b190859085906004016123df565b6020604051808303816000875af11580156115d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f491906123f8565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b133838787878660405161162f969594939291906124b3565b60405180910390a150506001600255505050565b60008061165f61165861165585610b49565b90565b8585611adb565b60008581526004602090815260408083206001600160a01b038816845290915290205490915061168f90826124f2565b949350505050565b6001600160a01b03163b151590565b336116af610c69565b6001600160a01b031614610b475760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610996565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff166117875760405162461bcd60e51b815260040161099690612509565b610b318282611aeb565b600054610100900460ff166117b85760405162461bcd60e51b815260040161099690612509565b610b318282611b85565b600054610100900460ff166117e95760405162461bcd60e51b815260040161099690612509565b610aa381611bea565b600054610100900460ff166118195760405162461bcd60e51b815260040161099690612509565b610aa381611c26565b61182d838383611c78565b610dd8838383611d2d565b804710156118885760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610996565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146118d5576040519150601f19603f3d011682016040523d82523d6000602084013e6118da565b606091505b5050905080610dd85760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610996565b6003600754600160f01b900460ff16600381111561196e5761196e61208f565b036119ad5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401610996565b6002600754600160f01b900460ff1660038111156119cd576119cd61208f565b036119d55750565b6001600754600160f01b900460ff1660038111156119f5576119f561208f565b03611a58576007546001600160a01b03828116600160401b9092041614610aa35760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401610996565b6000600754600160f01b900460ff166003811115611a7857611a7861208f565b03610aa357806001600160a01b0316611a8f610c69565b6001600160a01b031614610aa35760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401610996565b60006006548461168f9190612554565b600054610100900460ff16611b125760405162461bcd60e51b815260040161099690612509565b611b2263ac2ba33360e01b611d78565b60078054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b836003811115611b7c57611b7c61208f565b02179055505050565b600054610100900460ff16611bac5760405162461bcd60e51b815260040161099690612509565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055610b31631ba050e960e21b611d78565b600054610100900460ff16611c115760405162461bcd60e51b815260040161099690612509565b6006819055610aa3632d5305cb60e21b611d78565b600054610100900460ff16611c4d5760405162461bcd60e51b815260040161099690612509565b600780546001600160401b0319166001600160401b038316179055610aa36317b2ef4360e31b611d78565b6003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa158015611cc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce79190612576565b6001600160a01b031614610dd85760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b6044820152606401610996565b600754426001600160401b0390911610610dd85760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b6044820152606401610996565b6001600160e01b03198082169003611dd15760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401610996565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60008083601f840112611e0b57600080fd5b5081356001600160401b03811115611e2257600080fd5b6020830191508360208260051b8501011115611e3d57600080fd5b9250929050565b6001600160a01b0381168114610aa357600080fd5b600080600060408486031215611e6e57600080fd5b83356001600160401b03811115611e8457600080fd5b611e9086828701611df9565b9094509250506020840135611ea481611e44565b809150509250925092565b600060208284031215611ec157600080fd5b81356001600160e01b031981168114610c6257600080fd5b600060208083528351808285015260005b81811015611f0657858101830151858201604001528201611eea565b81811115611f18576000604083870101525b50601f01601f1916929092016040019392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611f6c57611f6c611f2e565b604052919050565b60008060008060808587031215611f8a57600080fd5b8435611f9581611e44565b9350602085810135611fa681611e44565b93506040860135925060608601356001600160401b0380821115611fc957600080fd5b818801915088601f830112611fdd57600080fd5b813581811115611fef57611fef611f2e565b612001601f8201601f19168501611f44565b9150808252898482850101111561201757600080fd5b808484018584013760008482840101525080935050505092959194509250565b80356001600160401b038116811461204e57600080fd5b919050565b60006020828403121561206557600080fd5b610c6282612037565b60006020828403121561208057600080fd5b813560048110610c6257600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106120c757634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156120df57600080fd5b5035919050565b600080604083850312156120f957600080fd5b82359150602083013561210b81611e44565b809150509250929050565b6000806020838503121561212957600080fd5b82356001600160401b0381111561213f57600080fd5b61214b85828601611df9565b90969095509350505050565b60006020828403121561216957600080fd5b8135610c6281611e44565b6001600160a01b0391909116815260200190565b60008082840360a081121561219c57600080fd5b60808112156121aa57600080fd5b50604051608081018181106001600160401b03821117156121cd576121cd611f2e565b60405283356121db81611e44565b81526121e960208501612037565b60208201526040840135604082015261220460608501612037565b60608201529150608083013561210b81611e44565b6000806000806040858703121561222f57600080fd5b84356001600160401b038082111561224657600080fd5b61225288838901611df9565b9096509450602087013591508082111561226b57600080fd5b5061227887828801611df9565b95989497509550505050565b6000806000806060858703121561229a57600080fd5b84356001600160401b038111156122b057600080fd5b6122bc87828801611df9565b90955093505060208501356122d081611e44565b915060408501356122e081611e44565b939692955090935050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561232a5761232a612301565b500190565b60006001820161234157612341612301565b5060010190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b6000602082840312156123a157600080fd5b5051919050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b03929092168252602082015260400190565b60006020828403121561240a57600080fd5b81518015158114610c6257600080fd5b81835260006001600160fb1b0383111561243357600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b8781101561249357823561247681611e44565b6001600160a01b0316825260209283019290910190600101612463565b5083810360208501526124a781868861241a565b98975050505050505050565b600060018060a01b038089168352808816602084015260a060408401526124de60a08401878961241a565b941660608301525060800152949350505050565b60008282101561250457612504612301565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008261257157634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561258857600080fd5b8151610c6281611e4456fea2646970667358221220f004f74535c85ca5512391ab9cec687efad6e2f7955e28367f4447cc8e1fb5d664736f6c634300080f0033","deployedBytecode":"0x6080604052600436106102165760003560e01c8063790c0c731161011f578063790c0c73146105b7578063837fe140146105d757806389c6b815146105ec5780638da5cb5b1461060c5780639199690b146102e6578063968d9b2c1461062e5780639f1a2f061461064e578063a1cf64931461066e578063ae890c0a146106b1578063af121f54146106d1578063c0881849146106f2578063c0bb38ff14610728578063c723955a14610748578063d5ed4d5a1461075d578063da82b2271461077d578063dcbe353f14610792578063dd11247e146107b9578063ddd5e1b2146107cf578063de6d6d96146107ef578063f2fde38b1461080f578063f389b6e41461082f578063f4415ad61461084f578063f66e38c21461088757600080fd5b80630191c0af1461022f57806301ffc9a71461026257806306fdde031461029257806312599909146102e657806314427a96146102fa578063150b7a02146103325780631bc51b26146102e65780631c725fdc1461037657806325289bad146103965780632890d033146103bd5780632c0e1313146103d25780632c233067146103f25780632d00b58714610412578063379607f5146104405780633b3f12e2146104605780633d2dded51461048057806349561cb9146104bd57806354fd4d50146104de57806357dc48c81461050d5780636057e0ec146105615780636ba4c13814610582578063715018a6146105a257600080fd5b3661022a576000341161022857600080fd5b005b600080fd5b34801561023b57600080fd5b5061024f61024a366004611e59565b6108a7565b6040519081526020015b60405180910390f35b34801561026e57600080fd5b5061028261027d366004611eaf565b6108fd565b6040519015158152602001610259565b34801561029e57600080fd5b506102d96040518060400160405280601b81526020017a45524337323120457175616c20496e7374616e742053747265616d60281b81525081565b6040516102599190611ed9565b3480156102f257600080fd5b506001610282565b34801561030657600080fd5b5060075461031a906001600160401b031681565b6040516001600160401b039091168152602001610259565b34801561033e57600080fd5b5061035d61034d366004611f74565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610259565b34801561038257600080fd5b50610228610391366004612053565b61093d565b3480156103a257600080fd5b5060035461031a90600160a01b90046001600160401b031681565b3480156103c957600080fd5b5061024f6109cc565b3480156103de57600080fd5b506102286103ed366004612053565b6109dd565b3480156103fe57600080fd5b5061022861040d36600461206e565b610a39565b34801561041e57600080fd5b5060075461043390600160f01b900460ff1681565b60405161025991906120a5565b34801561044c57600080fd5b5061022861045b3660046120cd565b610a98565b34801561046c57600080fd5b5061024f61047b366004611e59565b610aa6565b34801561048c57600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461024f565b3480156104c957600080fd5b5060075461028290600160f81b900460ff1681565b3480156104ea57600080fd5b506102d960405180604001604052806003815260200162302e3160e81b81525081565b34801561051957600080fd5b5061054c6105283660046120e6565b60046020908152600092835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610259565b34801561056d57600080fd5b5060075461028290600160e01b900460ff1681565b34801561058e57600080fd5b5061022861059d366004612116565b610b24565b3480156105ae57600080fd5b50610228610b35565b3480156105c357600080fd5b5061024f6105d2366004612157565b610b49565b3480156105e357600080fd5b50610228610c0d565b3480156105f857600080fd5b5061024f610607366004612116565b610c54565b34801561061857600080fd5b50610621610c69565b6040516102599190612174565b34801561063a57600080fd5b5061024f6106493660046120cd565b610c7e565b34801561065a57600080fd5b50610228610669366004612188565b610c8b565b34801561067a57600080fd5b5061024f6106893660046120e6565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b3480156106bd57600080fd5b506102286106cc3660046120cd565b610ddd565b3480156106dd57600080fd5b5060075461028290600160e81b900460ff1681565b3480156106fe57600080fd5b5061024f61070d366004612157565b6001600160a01b031660009081526005602052604090205490565b34801561073457600080fd5b50610228610743366004612157565b610e1c565b34801561075457600080fd5b50610228610e7a565b34801561076957600080fd5b50600354610621906001600160a01b031681565b34801561078957600080fd5b50610228610edb565b34801561079e57600080fd5b5060075461062190600160401b90046001600160a01b031681565b3480156107c557600080fd5b5061024f60065481565b3480156107db57600080fd5b506102286107ea3660046120e6565b610f21565b3480156107fb57600080fd5b5061022861080a366004612219565b61111a565b34801561081b57600080fd5b5061022861082a366004612157565b611368565b34801561083b57600080fd5b5061022861084a366004612284565b6113de565b34801561085b57600080fd5b5061024f61086a3660046120cd565b600090815260046020908152604080832083805290915290205490565b34801561089357600080fd5b5061024f6108a23660046120e6565b611643565b600080805b848110156108f4576108d68686838181106108c9576108c96122eb565b9050602002013585611643565b6108e09083612317565b9150806108ec8161232f565b9150506108ac565b50949350505050565b60006301ffc9a760e01b6001600160e01b03198316148061093757506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b6109456116a6565b6003546001600160401b03600160a01b90910481169082161161099f5760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b60448201526064015b60405180910390fd5b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b60006109d86000610b49565b905090565b6109e56116a6565b60035442600160a01b9091046001600160401b031610610a175760405162461bcd60e51b815260040161099690612348565b600780546001600160401b0319166001600160401b0392909216919091179055565b610a416116a6565b600754600160f81b900460ff1615610a6b5760405162461bcd60e51b81526004016109969061236f565b6007805482919060ff60f01b1916600160f01b836003811115610a9057610a9061208f565b021790555050565b610aa3816000610f21565b50565b600080805b848110156108f45760046000878784818110610ac957610ac96122eb565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b031681526020019081526020016000206000015482610b109190612317565b915080610b1c8161232f565b915050610aab565b610b3182826000336113de565b5050565b610b3d6116a6565b610b476000611705565b565b60006001600160a01b038216610b7d576001600160a01b038216600090815260056020526040902054610937904790612317565b6040516370a0823160e01b81526001600160a01b038316906370a0823190610ba9903090600401612174565b602060405180830381865afa158015610bc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bea919061238f565b6001600160a01b0383166000908152600560205260409020546109379190612317565b610c156116a6565b600754600160e01b900460ff1615610c3f5760405162461bcd60e51b81526004016109969061236f565b6007805460ff60e01b1916600160e01b179055565b6000610c6283836000610aa6565b9392505050565b6000546201000090046001600160a01b031690565b6000610937826000611643565b600054610100900460ff1615808015610cab5750600054600160ff909116105b80610ccc5750610cba30611697565b158015610ccc575060005460ff166001145b610d2f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610996565b6000805460ff191660011790558015610d52576000805461ff0019166101001790555b610d5b82611705565b610d66826000611760565b610d7883600001518460200151611791565b610d8583604001516117c2565b610d9283606001516117f2565b8015610dd8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610de56116a6565b60035442600160a01b9091046001600160401b031610610e175760405162461bcd60e51b815260040161099690612348565b600655565b610e246116a6565b600754600160e01b900460ff1615610e4e5760405162461bcd60e51b81526004016109969061236f565b600780546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b610e826116a6565b600754600160f81b900460ff1615610ec45760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401610996565b600780546001600160f81b0316600160f81b179055565b610ee36116a6565b6007805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b6002805403610f425760405162461bcd60e51b8152600401610996906123a8565b6002805533610f52838383611822565b6000610f5e8484611643565b905060008111610fa35760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b6044820152606401610996565b60008481526004602090815260408083206001600160a01b038716845290915281208054839290610fd5908490612317565b909155505060008481526004602090815260408083206001600160a01b038716845282528083204260019091015560059091528120805483929061101a908490612317565b90915550506001600160a01b038316611045576110406001600160a01b03831682611838565b6110b8565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb9061107390859085906004016123df565b6020604051808303816000875af1158015611092573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b691906123f8565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b6111233361194e565b600754600160401b90046001600160a01b031661117a5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401610996565b600754600160e81b900460ff16156111d45760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610996565b60005b838110156113245760008585838181106111f3576111f36122eb565b90506020020160208101906112089190612157565b6001600160a01b0316036112535761124e83838381811061122b5761122b6122eb565b6007546001600160a01b03600160401b9091041692602090910201359050611838565b611312565b848482818110611265576112656122eb565b905060200201602081019061127a9190612157565b6007546001600160a01b039182169163a9059cbb91600160401b9004168585858181106112a9576112a96122eb565b905060200201356040518363ffffffff1660e01b81526004016112cd9291906123df565b6020604051808303816000875af11580156112ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131091906123f8565b505b8061131c8161232f565b9150506111d7565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a58484848460405161135a9493929190612450565b60405180910390a150505050565b6113706116a6565b6001600160a01b0381166113d55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610996565b610aa381611705565b60028054036113ff5760405162461bcd60e51b8152600401610996906123a8565b600280556000805b8481101561152f57611432868683818110611424576114246122eb565b905060200201358585611822565b6000611456878784818110611449576114496122eb565b9050602002013586611643565b9050801561151c578060046000898986818110611475576114756122eb565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b0316815260200190815260200160002060000160008282546114bf9190612317565b90915550429050600460008989868181106114dc576114dc6122eb565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a1682529092529020600101556115198184612317565b92505b50806115278161232f565b915050611407565b506001600160a01b03831660009081526005602052604081208054839290611558908490612317565b90915550506001600160a01b0383166115835761157e6001600160a01b03831682611838565b6115f6565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906115b190859085906004016123df565b6020604051808303816000875af11580156115d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f491906123f8565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b133838787878660405161162f969594939291906124b3565b60405180910390a150506001600255505050565b60008061165f61165861165585610b49565b90565b8585611adb565b60008581526004602090815260408083206001600160a01b038816845290915290205490915061168f90826124f2565b949350505050565b6001600160a01b03163b151590565b336116af610c69565b6001600160a01b031614610b475760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610996565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff166117875760405162461bcd60e51b815260040161099690612509565b610b318282611aeb565b600054610100900460ff166117b85760405162461bcd60e51b815260040161099690612509565b610b318282611b85565b600054610100900460ff166117e95760405162461bcd60e51b815260040161099690612509565b610aa381611bea565b600054610100900460ff166118195760405162461bcd60e51b815260040161099690612509565b610aa381611c26565b61182d838383611c78565b610dd8838383611d2d565b804710156118885760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610996565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146118d5576040519150601f19603f3d011682016040523d82523d6000602084013e6118da565b606091505b5050905080610dd85760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610996565b6003600754600160f01b900460ff16600381111561196e5761196e61208f565b036119ad5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401610996565b6002600754600160f01b900460ff1660038111156119cd576119cd61208f565b036119d55750565b6001600754600160f01b900460ff1660038111156119f5576119f561208f565b03611a58576007546001600160a01b03828116600160401b9092041614610aa35760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401610996565b6000600754600160f01b900460ff166003811115611a7857611a7861208f565b03610aa357806001600160a01b0316611a8f610c69565b6001600160a01b031614610aa35760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401610996565b60006006548461168f9190612554565b600054610100900460ff16611b125760405162461bcd60e51b815260040161099690612509565b611b2263ac2ba33360e01b611d78565b60078054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b836003811115611b7c57611b7c61208f565b02179055505050565b600054610100900460ff16611bac5760405162461bcd60e51b815260040161099690612509565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055610b31631ba050e960e21b611d78565b600054610100900460ff16611c115760405162461bcd60e51b815260040161099690612509565b6006819055610aa3632d5305cb60e21b611d78565b600054610100900460ff16611c4d5760405162461bcd60e51b815260040161099690612509565b600780546001600160401b0319166001600160401b038316179055610aa36317b2ef4360e31b611d78565b6003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa158015611cc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce79190612576565b6001600160a01b031614610dd85760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b6044820152606401610996565b600754426001600160401b0390911610610dd85760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b6044820152606401610996565b6001600160e01b03198082169003611dd15760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401610996565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60008083601f840112611e0b57600080fd5b5081356001600160401b03811115611e2257600080fd5b6020830191508360208260051b8501011115611e3d57600080fd5b9250929050565b6001600160a01b0381168114610aa357600080fd5b600080600060408486031215611e6e57600080fd5b83356001600160401b03811115611e8457600080fd5b611e9086828701611df9565b9094509250506020840135611ea481611e44565b809150509250925092565b600060208284031215611ec157600080fd5b81356001600160e01b031981168114610c6257600080fd5b600060208083528351808285015260005b81811015611f0657858101830151858201604001528201611eea565b81811115611f18576000604083870101525b50601f01601f1916929092016040019392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611f6c57611f6c611f2e565b604052919050565b60008060008060808587031215611f8a57600080fd5b8435611f9581611e44565b9350602085810135611fa681611e44565b93506040860135925060608601356001600160401b0380821115611fc957600080fd5b818801915088601f830112611fdd57600080fd5b813581811115611fef57611fef611f2e565b612001601f8201601f19168501611f44565b9150808252898482850101111561201757600080fd5b808484018584013760008482840101525080935050505092959194509250565b80356001600160401b038116811461204e57600080fd5b919050565b60006020828403121561206557600080fd5b610c6282612037565b60006020828403121561208057600080fd5b813560048110610c6257600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106120c757634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156120df57600080fd5b5035919050565b600080604083850312156120f957600080fd5b82359150602083013561210b81611e44565b809150509250929050565b6000806020838503121561212957600080fd5b82356001600160401b0381111561213f57600080fd5b61214b85828601611df9565b90969095509350505050565b60006020828403121561216957600080fd5b8135610c6281611e44565b6001600160a01b0391909116815260200190565b60008082840360a081121561219c57600080fd5b60808112156121aa57600080fd5b50604051608081018181106001600160401b03821117156121cd576121cd611f2e565b60405283356121db81611e44565b81526121e960208501612037565b60208201526040840135604082015261220460608501612037565b60608201529150608083013561210b81611e44565b6000806000806040858703121561222f57600080fd5b84356001600160401b038082111561224657600080fd5b61225288838901611df9565b9096509450602087013591508082111561226b57600080fd5b5061227887828801611df9565b95989497509550505050565b6000806000806060858703121561229a57600080fd5b84356001600160401b038111156122b057600080fd5b6122bc87828801611df9565b90955093505060208501356122d081611e44565b915060408501356122e081611e44565b939692955090935050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561232a5761232a612301565b500190565b60006001820161234157612341612301565b5060010190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b6000602082840312156123a157600080fd5b5051919050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b03929092168252602082015260400190565b60006020828403121561240a57600080fd5b81518015158114610c6257600080fd5b81835260006001600160fb1b0383111561243357600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b8781101561249357823561247681611e44565b6001600160a01b0316825260209283019290910190600101612463565b5083810360208501526124a781868861241a565b98975050505050505050565b600060018060a01b038089168352808816602084015260a060408401526124de60a08401878961241a565b941660608301525060800152949350505050565b60008282101561250457612504612301565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008261257157634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561258857600080fd5b8151610c6281611e4456fea2646970667358221220f004f74535c85ca5512391ab9cec687efad6e2f7955e28367f4447cc8e1fb5d664736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/presets/ERC721EqualVestingStream":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721EqualVestingStream","sourceName":"contracts/streams/ERC721/presets/ERC721EqualVestingStream.sol","abi":[{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"},{"internalType":"uint64","name":"durationSeconds","type":"uint64"},{"internalType":"uint256","name":"totalTickets","type":"uint256"},{"internalType":"uint64","name":"claimLockedUntil","type":"uint64"}],"internalType":"struct ERC721EqualVestingStream.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimLockedUntil","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721EqualSplitExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721LockableClaimExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721VestingReleaseExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"},{"internalType":"uint64","name":"durationSeconds","type":"uint64"},{"internalType":"uint256","name":"totalTickets","type":"uint256"},{"internalType":"uint64","name":"claimLockedUntil","type":"uint64"}],"internalType":"struct ERC721EqualVestingStream.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setClaimLockedUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setTotalTickets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setVestingDurationSeconds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setVestingStartTimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTickets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vestingDurationSeconds","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vestingStartTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x60806040523480156200001157600080fd5b506040516200302738038062003027833981016040819052620000349162000629565b6200003f3362000057565b6001600255620000508133620000b2565b506200073b565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620000d35750600054600160ff909116105b80620001035750620000f0306200024160201b620018231760201c565b15801562000103575060005460ff166001145b6200016c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000190576000805461ff0019166101001790555b6200019b8262000057565b620001a882600062000250565b82516020840151620001bb91906200028a565b620001d583604001518460600151620002c060201b60201c565b6080830151620001e590620002f6565b60a0830151620001f5906200032e565b80156200023c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6001600160a01b03163b151590565b600054610100900460ff166200027a5760405162461bcd60e51b81526004016200016390620006da565b62000286828262000363565b5050565b600054610100900460ff16620002b45760405162461bcd60e51b81526004016200016390620006da565b6200028682826200040a565b600054610100900460ff16620002ea5760405162461bcd60e51b81526004016200016390620006da565b62000286828262000474565b600054610100900460ff16620003205760405162461bcd60e51b81526004016200016390620006da565b6200032b81620004dd565b50565b600054610100900460ff16620003585760405162461bcd60e51b81526004016200016390620006da565b6200032b816200051e565b600054610100900460ff166200038d5760405162461bcd60e51b81526004016200016390620006da565b6200039f63ac2ba33360e01b62000570565b60088054600160401b600160e01b03198116680100000000000000006001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b83600381111562000401576200040162000725565b02179055505050565b600054610100900460ff16620004345760405162461bcd60e51b81526004016200016390620006da565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b0385161717905562000286631ba050e960e21b62000570565b600054610100900460ff166200049e5760405162461bcd60e51b81526004016200016390620006da565b600680546001600160401b0383811668010000000000000000026001600160801b0319909216908516171790556200028663d1bdccff60e01b62000570565b600054610100900460ff16620005075760405162461bcd60e51b81526004016200016390620006da565b60078190556200032b632d5305cb60e21b62000570565b600054610100900460ff16620005485760405162461bcd60e51b81526004016200016390620006da565b600880546001600160401b0319166001600160401b0383161790556200032b6317b2ef4360e31b5b6001600160e01b03198082169003620005cc5760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640162000163565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b80516001600160a01b03811681146200060c57600080fd5b919050565b80516001600160401b03811681146200060c57600080fd5b600060c082840312156200063c57600080fd5b60405160c081016001600160401b03811182821017156200066d57634e487b7160e01b600052604160045260246000fd5b6040526200067b83620005f4565b81526200068b6020840162000611565b60208201526200069e6040840162000611565b6040820152620006b16060840162000611565b606082015260808301516080820152620006ce60a0840162000611565b60a08201529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b6128dc806200074b6000396000f3fe6080604052600436106102425760003560e01c8063790c0c7311610135578063790c0c731461062a578063837fe1401461064a57806389c6b8151461065f5780638da5cb5b1461067f5780639199690b1461038e578063968d9b2c146106a1578063a1cf6493146106c1578063ae890c0a14610704578063af121f5414610724578063c088184914610745578063c0bb38ff1461077b578063c723955a1461079b578063d5ed4d5a146107b0578063d6ddd21b146107d0578063da82b227146107f0578063dcbe353f14610805578063dd11247e1461082c578063ddd5e1b214610842578063de6d6d9614610862578063e2f3ad6614610882578063e3860742146108a2578063f2fde38b146108c2578063f389b6e4146108e2578063f4415ad614610902578063f66e38c21461093a57600080fd5b80630191c0af1461025b57806301ffc9a71461028e57806306fdde03146102be57806314427a9614610312578063150b7a021461034a5780631bc51b261461038e5780631c725fdc146103a257806325289bad146103c25780632890d033146103e95780632c0e1313146103fe5780632c2330671461041e5780632d00b5871461043e578063379607f51461046c5780633b3f12e21461048c5780633d2dded5146104ac578063471b0163146104e957806349561cb91461050957806354fd4d501461052a57806357dc48c8146105595780635f1bf3a0146105ad5780636057e0ec146105d45780636ba4c138146105f5578063715018a6146106155780637520cade1461038e57600080fd5b36610256576000341161025457600080fd5b005b600080fd5b34801561026757600080fd5b5061027b610276366004612100565b61095a565b6040519081526020015b60405180910390f35b34801561029a57600080fd5b506102ae6102a9366004612156565b6109b2565b6040519015158152602001610285565b3480156102ca57600080fd5b506103056040518060400160405280601b81526020017a45524337323120457175616c2056657374696e672053747265616d60281b81525081565b6040516102859190612180565b34801561031e57600080fd5b50600854610332906001600160401b031681565b6040516001600160401b039091168152602001610285565b34801561035657600080fd5b5061037561036536600461221b565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610285565b34801561039a57600080fd5b5060016102ae565b3480156103ae57600080fd5b506102546103bd3660046122fa565b6109f2565b3480156103ce57600080fd5b5060035461033290600160a01b90046001600160401b031681565b3480156103f557600080fd5b5061027b610a81565b34801561040a57600080fd5b506102546104193660046122fa565b610a92565b34801561042a57600080fd5b50610254610439366004612315565b610aee565b34801561044a57600080fd5b5060085461045f90600160f01b900460ff1681565b604051610285919061234c565b34801561047857600080fd5b50610254610487366004612374565b610b4d565b34801561049857600080fd5b5061027b6104a7366004612100565b610b5b565b3480156104b857600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461027b565b3480156104f557600080fd5b506102546105043660046122fa565b610bd9565b34801561051557600080fd5b506008546102ae90600160f81b900460ff1681565b34801561053657600080fd5b5061030560405180604001604052806003815260200162302e3160e81b81525081565b34801561056557600080fd5b5061059861057436600461238d565b60046020908152600092835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610285565b3480156105b957600080fd5b5060065461033290600160401b90046001600160401b031681565b3480156105e057600080fd5b506008546102ae90600160e01b900460ff1681565b34801561060157600080fd5b506102546106103660046123bd565b610c40565b34801561062157600080fd5b50610254610c51565b34801561063657600080fd5b5061027b6106453660046123fe565b610c65565b34801561065657600080fd5b50610254610d29565b34801561066b57600080fd5b5061027b61067a3660046123bd565b610d70565b34801561068b57600080fd5b50610694610d7e565b604051610285919061241b565b3480156106ad57600080fd5b5061027b6106bc366004612374565b610d93565b3480156106cd57600080fd5b5061027b6106dc36600461238d565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b34801561071057600080fd5b5061025461071f366004612374565b610da0565b34801561073057600080fd5b506008546102ae90600160e81b900460ff1681565b34801561075157600080fd5b5061027b6107603660046123fe565b6001600160a01b031660009081526005602052604090205490565b34801561078757600080fd5b506102546107963660046123fe565b610ddf565b3480156107a757600080fd5b50610254610e3d565b3480156107bc57600080fd5b50600354610694906001600160a01b031681565b3480156107dc57600080fd5b50600654610332906001600160401b031681565b3480156107fc57600080fd5b50610254610e9e565b34801561081157600080fd5b5060085461069490600160401b90046001600160a01b031681565b34801561083857600080fd5b5061027b60075481565b34801561084e57600080fd5b5061025461085d36600461238d565b610ee4565b34801561086e57600080fd5b5061025461087d36600461242f565b6110dd565b34801561088e57600080fd5b5061025461089d36600461249a565b611330565b3480156108ae57600080fd5b506102546108bd3660046122fa565b611494565b3480156108ce57600080fd5b506102546108dd3660046123fe565b6114f0565b3480156108ee57600080fd5b506102546108fd36600461254d565b611566565b34801561090e57600080fd5b5061027b61091d366004612374565b600090815260046020908152604080832083805290915290205490565b34801561094657600080fd5b5061027b61095536600461238d565b6117cb565b600080805b848110156109a75761098986868381811061097c5761097c6125b4565b90506020020135856117cb565b61099390836125e0565b91508061099f816125f8565b91505061095f565b5090505b9392505050565b60006301ffc9a760e01b6001600160e01b0319831614806109ec57506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b6109fa611832565b6003546001600160401b03600160a01b909104811690821611610a545760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b60448201526064015b60405180910390fd5b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000610a8d6000610c65565b905090565b610a9a611832565b60035442600160a01b9091046001600160401b031610610acc5760405162461bcd60e51b8152600401610a4b90612611565b600880546001600160401b0319166001600160401b0392909216919091179055565b610af6611832565b600854600160f81b900460ff1615610b205760405162461bcd60e51b8152600401610a4b90612638565b6008805482919060ff60f01b1916600160f01b836003811115610b4557610b45612336565b021790555050565b610b58816000610ee4565b50565b600080805b848110156109a75760046000878784818110610b7e57610b7e6125b4565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b031681526020019081526020016000206000015482610bc591906125e0565b915080610bd1816125f8565b915050610b60565b610be1611832565b60035442600160a01b9091046001600160401b031610610c135760405162461bcd60e51b8152600401610a4b90612611565b600680546001600160401b03909216600160401b0267ffffffffffffffff60401b19909216919091179055565b610c4d8282600033611566565b5050565b610c59611832565b610c636000611891565b565b60006001600160a01b038216610c99576001600160a01b0382166000908152600560205260409020546109ec9047906125e0565b6040516370a0823160e01b81526001600160a01b038316906370a0823190610cc590309060040161241b565b602060405180830381865afa158015610ce2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d069190612658565b6001600160a01b0383166000908152600560205260409020546109ec91906125e0565b610d31611832565b600854600160e01b900460ff1615610d5b5760405162461bcd60e51b8152600401610a4b90612638565b6008805460ff60e01b1916600160e01b179055565b60006109ab83836000610b5b565b6000546201000090046001600160a01b031690565b60006109ec8260006117cb565b610da8611832565b60035442600160a01b9091046001600160401b031610610dda5760405162461bcd60e51b8152600401610a4b90612611565b600755565b610de7611832565b600854600160e01b900460ff1615610e115760405162461bcd60e51b8152600401610a4b90612638565b600880546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b610e45611832565b600854600160f81b900460ff1615610e875760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401610a4b565b600880546001600160f81b0316600160f81b179055565b610ea6611832565b6008805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b6002805403610f055760405162461bcd60e51b8152600401610a4b90612671565b6002805533610f158383836118ec565b6000610f2184846117cb565b905060008111610f665760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b6044820152606401610a4b565b60008481526004602090815260408083206001600160a01b038716845290915281208054839290610f989084906125e0565b909155505060008481526004602090815260408083206001600160a01b0387168452825280832042600190910155600590915281208054839290610fdd9084906125e0565b90915550506001600160a01b038316611008576110036001600160a01b03831682611902565b61107b565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb9061103690859085906004016126a8565b6020604051808303816000875af1158015611055573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107991906126c1565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b6110e633611a18565b600854600160401b90046001600160a01b031661113d5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401610a4b565b600854600160e81b900460ff16156111975760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610a4b565b60005b838110156112ec5760008585838181106111b6576111b66125b4565b90506020020160208101906111cb91906123fe565b6001600160a01b031603611216576112118383838181106111ee576111ee6125b4565b6008546001600160a01b03600160401b9091041692602090910201359050611902565b6112da565b848482818110611228576112286125b4565b905060200201602081019061123d91906123fe565b6001600160a01b031663a9059cbb60088054906101000a90046001600160a01b0316858585818110611271576112716125b4565b905060200201356040518363ffffffff1660e01b81526004016112959291906126a8565b6020604051808303816000875af11580156112b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d891906126c1565b505b806112e4816125f8565b91505061119a565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a5848484846040516113229493929190612719565b60405180910390a150505050565b600054610100900460ff16158080156113505750600054600160ff909116105b80611371575061135f30611823565b158015611371575060005460ff166001145b6113d45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610a4b565b6000805460ff1916600117905580156113f7576000805461ff0019166101001790555b61140082611891565b61140b826000611ba5565b61141d83600001518460200151611bd6565b61142f83604001518460600151611c07565b61143c8360800151611c38565b6114498360a00151611c68565b801561148f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61149c611832565b60035442600160a01b9091046001600160401b0316106114ce5760405162461bcd60e51b8152600401610a4b90612611565b600680546001600160401b0319166001600160401b0392909216919091179055565b6114f8611832565b6001600160a01b03811661155d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a4b565b610b5881611891565b60028054036115875760405162461bcd60e51b8152600401610a4b90612671565b600280556000805b848110156116b7576115ba8686838181106115ac576115ac6125b4565b9050602002013585856118ec565b60006115de8787848181106115d1576115d16125b4565b90506020020135866117cb565b905080156116a45780600460008989868181106115fd576115fd6125b4565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b03168152602001908152602001600020600001600082825461164791906125e0565b9091555042905060046000898986818110611664576116646125b4565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a1682529092529020600101556116a181846125e0565b92505b50806116af816125f8565b91505061158f565b506001600160a01b038316600090815260056020526040812080548392906116e09084906125e0565b90915550506001600160a01b03831661170b576117066001600160a01b03831682611902565b61177e565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb9061173990859085906004016126a8565b6020604051808303816000875af1158015611758573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177c91906126c1565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b13383878787866040516117b79695949392919061277c565b60405180910390a150506001600255505050565b6000806117eb6117e46117dd85610c65565b8686611c98565b8585611d27565b60008581526004602090815260408083206001600160a01b038816845290915290205490915061181b90826127bb565b949350505050565b6001600160a01b03163b151590565b3361183b610d7e565b6001600160a01b031614610c635760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a4b565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6118f7838383611d37565b61148f838383611dec565b804710156119525760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610a4b565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461199f576040519150601f19603f3d011682016040523d82523d6000602084013e6119a4565b606091505b505090508061148f5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610a4b565b6003600854600160f01b900460ff166003811115611a3857611a38612336565b03611a775760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401610a4b565b6002600854600160f01b900460ff166003811115611a9757611a97612336565b03611a9f5750565b6001600854600160f01b900460ff166003811115611abf57611abf612336565b03611b22576008546001600160a01b03828116600160401b9092041614610b585760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401610a4b565b6000600854600160f01b900460ff166003811115611b4257611b42612336565b03610b5857806001600160a01b0316611b59610d7e565b6001600160a01b031614610b585760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401610a4b565b600054610100900460ff16611bcc5760405162461bcd60e51b8152600401610a4b906127d2565b610c4d8282611e37565b600054610100900460ff16611bfd5760405162461bcd60e51b8152600401610a4b906127d2565b610c4d8282611ed1565b600054610100900460ff16611c2e5760405162461bcd60e51b8152600401610a4b906127d2565b610c4d8282611f36565b600054610100900460ff16611c5f5760405162461bcd60e51b8152600401610a4b906127d2565b610b5881611f95565b600054610100900460ff16611c8f5760405162461bcd60e51b8152600401610a4b906127d2565b610b5881611fd1565b6006546000906001600160401b0316421015611cb6575060006109ab565b600654611cd5906001600160401b03600160401b82048116911661281d565b6001600160401b0316421115611cec5750826109ab565b6006546001600160401b03600160401b8204811691611d0c9116426127bb565b611d169086612848565b611d209190612867565b90506109ab565b60006007548461181b9190612867565b6003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa158015611d82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da69190612889565b6001600160a01b03161461148f5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b6044820152606401610a4b565b600854426001600160401b039091161061148f5760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b6044820152606401610a4b565b600054610100900460ff16611e5e5760405162461bcd60e51b8152600401610a4b906127d2565b611e6e63ac2ba33360e01b61201f565b60088054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b836003811115611ec857611ec8612336565b02179055505050565b600054610100900460ff16611ef85760405162461bcd60e51b8152600401610a4b906127d2565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055610c4d631ba050e960e21b61201f565b600054610100900460ff16611f5d5760405162461bcd60e51b8152600401610a4b906127d2565b600680546001600160401b03838116600160401b026001600160801b031990921690851617179055610c4d63d1bdccff60e01b61201f565b600054610100900460ff16611fbc5760405162461bcd60e51b8152600401610a4b906127d2565b6007819055610b58632d5305cb60e21b61201f565b600054610100900460ff16611ff85760405162461bcd60e51b8152600401610a4b906127d2565b600880546001600160401b0319166001600160401b038316179055610b586317b2ef4360e31b5b6001600160e01b031980821690036120785760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401610a4b565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60008083601f8401126120b257600080fd5b5081356001600160401b038111156120c957600080fd5b6020830191508360208260051b85010111156120e457600080fd5b9250929050565b6001600160a01b0381168114610b5857600080fd5b60008060006040848603121561211557600080fd5b83356001600160401b0381111561212b57600080fd5b612137868287016120a0565b909450925050602084013561214b816120eb565b809150509250925092565b60006020828403121561216857600080fd5b81356001600160e01b0319811681146109ab57600080fd5b600060208083528351808285015260005b818110156121ad57858101830151858201604001528201612191565b818111156121bf576000604083870101525b50601f01601f1916929092016040019392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612213576122136121d5565b604052919050565b6000806000806080858703121561223157600080fd5b843561223c816120eb565b935060208581013561224d816120eb565b93506040860135925060608601356001600160401b038082111561227057600080fd5b818801915088601f83011261228457600080fd5b813581811115612296576122966121d5565b6122a8601f8201601f191685016121eb565b915080825289848285010111156122be57600080fd5b808484018584013760008482840101525080935050505092959194509250565b80356001600160401b03811681146122f557600080fd5b919050565b60006020828403121561230c57600080fd5b6109ab826122de565b60006020828403121561232757600080fd5b8135600481106109ab57600080fd5b634e487b7160e01b600052602160045260246000fd5b602081016004831061236e57634e487b7160e01b600052602160045260246000fd5b91905290565b60006020828403121561238657600080fd5b5035919050565b600080604083850312156123a057600080fd5b8235915060208301356123b2816120eb565b809150509250929050565b600080602083850312156123d057600080fd5b82356001600160401b038111156123e657600080fd5b6123f2858286016120a0565b90969095509350505050565b60006020828403121561241057600080fd5b81356109ab816120eb565b6001600160a01b0391909116815260200190565b6000806000806040858703121561244557600080fd5b84356001600160401b038082111561245c57600080fd5b612468888389016120a0565b9096509450602087013591508082111561248157600080fd5b5061248e878288016120a0565b95989497509550505050565b60008082840360e08112156124ae57600080fd5b60c08112156124bc57600080fd5b5060405160c081018181106001600160401b03821117156124df576124df6121d5565b60405283356124ed816120eb565b81526124fb602085016122de565b602082015261250c604085016122de565b604082015261251d606085016122de565b60608201526080840135608082015261253860a085016122de565b60a0820152915060c08301356123b2816120eb565b6000806000806060858703121561256357600080fd5b84356001600160401b0381111561257957600080fd5b612585878288016120a0565b9095509350506020850135612599816120eb565b915060408501356125a9816120eb565b939692955090935050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156125f3576125f36125ca565b500190565b60006001820161260a5761260a6125ca565b5060010190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b60006020828403121561266a57600080fd5b5051919050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b03929092168252602082015260400190565b6000602082840312156126d357600080fd5b815180151581146109ab57600080fd5b81835260006001600160fb1b038311156126fc57600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b8781101561275c57823561273f816120eb565b6001600160a01b031682526020928301929091019060010161272c565b5083810360208501526127708186886126e3565b98975050505050505050565b600060018060a01b038089168352808816602084015260a060408401526127a760a0840187896126e3565b941660608301525060800152949350505050565b6000828210156127cd576127cd6125ca565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006001600160401b0380831681851680830382111561283f5761283f6125ca565b01949350505050565b6000816000190483118215151615612862576128626125ca565b500290565b60008261288457634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561289b57600080fd5b81516109ab816120eb56fea2646970667358221220b4db9461245b0f6b1074188ef89e3a5ed4c6e573276342e079eaceadfbfa326464736f6c634300080f0033","deployedBytecode":"0x6080604052600436106102425760003560e01c8063790c0c7311610135578063790c0c731461062a578063837fe1401461064a57806389c6b8151461065f5780638da5cb5b1461067f5780639199690b1461038e578063968d9b2c146106a1578063a1cf6493146106c1578063ae890c0a14610704578063af121f5414610724578063c088184914610745578063c0bb38ff1461077b578063c723955a1461079b578063d5ed4d5a146107b0578063d6ddd21b146107d0578063da82b227146107f0578063dcbe353f14610805578063dd11247e1461082c578063ddd5e1b214610842578063de6d6d9614610862578063e2f3ad6614610882578063e3860742146108a2578063f2fde38b146108c2578063f389b6e4146108e2578063f4415ad614610902578063f66e38c21461093a57600080fd5b80630191c0af1461025b57806301ffc9a71461028e57806306fdde03146102be57806314427a9614610312578063150b7a021461034a5780631bc51b261461038e5780631c725fdc146103a257806325289bad146103c25780632890d033146103e95780632c0e1313146103fe5780632c2330671461041e5780632d00b5871461043e578063379607f51461046c5780633b3f12e21461048c5780633d2dded5146104ac578063471b0163146104e957806349561cb91461050957806354fd4d501461052a57806357dc48c8146105595780635f1bf3a0146105ad5780636057e0ec146105d45780636ba4c138146105f5578063715018a6146106155780637520cade1461038e57600080fd5b36610256576000341161025457600080fd5b005b600080fd5b34801561026757600080fd5b5061027b610276366004612100565b61095a565b6040519081526020015b60405180910390f35b34801561029a57600080fd5b506102ae6102a9366004612156565b6109b2565b6040519015158152602001610285565b3480156102ca57600080fd5b506103056040518060400160405280601b81526020017a45524337323120457175616c2056657374696e672053747265616d60281b81525081565b6040516102859190612180565b34801561031e57600080fd5b50600854610332906001600160401b031681565b6040516001600160401b039091168152602001610285565b34801561035657600080fd5b5061037561036536600461221b565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610285565b34801561039a57600080fd5b5060016102ae565b3480156103ae57600080fd5b506102546103bd3660046122fa565b6109f2565b3480156103ce57600080fd5b5060035461033290600160a01b90046001600160401b031681565b3480156103f557600080fd5b5061027b610a81565b34801561040a57600080fd5b506102546104193660046122fa565b610a92565b34801561042a57600080fd5b50610254610439366004612315565b610aee565b34801561044a57600080fd5b5060085461045f90600160f01b900460ff1681565b604051610285919061234c565b34801561047857600080fd5b50610254610487366004612374565b610b4d565b34801561049857600080fd5b5061027b6104a7366004612100565b610b5b565b3480156104b857600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461027b565b3480156104f557600080fd5b506102546105043660046122fa565b610bd9565b34801561051557600080fd5b506008546102ae90600160f81b900460ff1681565b34801561053657600080fd5b5061030560405180604001604052806003815260200162302e3160e81b81525081565b34801561056557600080fd5b5061059861057436600461238d565b60046020908152600092835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610285565b3480156105b957600080fd5b5060065461033290600160401b90046001600160401b031681565b3480156105e057600080fd5b506008546102ae90600160e01b900460ff1681565b34801561060157600080fd5b506102546106103660046123bd565b610c40565b34801561062157600080fd5b50610254610c51565b34801561063657600080fd5b5061027b6106453660046123fe565b610c65565b34801561065657600080fd5b50610254610d29565b34801561066b57600080fd5b5061027b61067a3660046123bd565b610d70565b34801561068b57600080fd5b50610694610d7e565b604051610285919061241b565b3480156106ad57600080fd5b5061027b6106bc366004612374565b610d93565b3480156106cd57600080fd5b5061027b6106dc36600461238d565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b34801561071057600080fd5b5061025461071f366004612374565b610da0565b34801561073057600080fd5b506008546102ae90600160e81b900460ff1681565b34801561075157600080fd5b5061027b6107603660046123fe565b6001600160a01b031660009081526005602052604090205490565b34801561078757600080fd5b506102546107963660046123fe565b610ddf565b3480156107a757600080fd5b50610254610e3d565b3480156107bc57600080fd5b50600354610694906001600160a01b031681565b3480156107dc57600080fd5b50600654610332906001600160401b031681565b3480156107fc57600080fd5b50610254610e9e565b34801561081157600080fd5b5060085461069490600160401b90046001600160a01b031681565b34801561083857600080fd5b5061027b60075481565b34801561084e57600080fd5b5061025461085d36600461238d565b610ee4565b34801561086e57600080fd5b5061025461087d36600461242f565b6110dd565b34801561088e57600080fd5b5061025461089d36600461249a565b611330565b3480156108ae57600080fd5b506102546108bd3660046122fa565b611494565b3480156108ce57600080fd5b506102546108dd3660046123fe565b6114f0565b3480156108ee57600080fd5b506102546108fd36600461254d565b611566565b34801561090e57600080fd5b5061027b61091d366004612374565b600090815260046020908152604080832083805290915290205490565b34801561094657600080fd5b5061027b61095536600461238d565b6117cb565b600080805b848110156109a75761098986868381811061097c5761097c6125b4565b90506020020135856117cb565b61099390836125e0565b91508061099f816125f8565b91505061095f565b5090505b9392505050565b60006301ffc9a760e01b6001600160e01b0319831614806109ec57506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b6109fa611832565b6003546001600160401b03600160a01b909104811690821611610a545760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b60448201526064015b60405180910390fd5b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000610a8d6000610c65565b905090565b610a9a611832565b60035442600160a01b9091046001600160401b031610610acc5760405162461bcd60e51b8152600401610a4b90612611565b600880546001600160401b0319166001600160401b0392909216919091179055565b610af6611832565b600854600160f81b900460ff1615610b205760405162461bcd60e51b8152600401610a4b90612638565b6008805482919060ff60f01b1916600160f01b836003811115610b4557610b45612336565b021790555050565b610b58816000610ee4565b50565b600080805b848110156109a75760046000878784818110610b7e57610b7e6125b4565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b031681526020019081526020016000206000015482610bc591906125e0565b915080610bd1816125f8565b915050610b60565b610be1611832565b60035442600160a01b9091046001600160401b031610610c135760405162461bcd60e51b8152600401610a4b90612611565b600680546001600160401b03909216600160401b0267ffffffffffffffff60401b19909216919091179055565b610c4d8282600033611566565b5050565b610c59611832565b610c636000611891565b565b60006001600160a01b038216610c99576001600160a01b0382166000908152600560205260409020546109ec9047906125e0565b6040516370a0823160e01b81526001600160a01b038316906370a0823190610cc590309060040161241b565b602060405180830381865afa158015610ce2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d069190612658565b6001600160a01b0383166000908152600560205260409020546109ec91906125e0565b610d31611832565b600854600160e01b900460ff1615610d5b5760405162461bcd60e51b8152600401610a4b90612638565b6008805460ff60e01b1916600160e01b179055565b60006109ab83836000610b5b565b6000546201000090046001600160a01b031690565b60006109ec8260006117cb565b610da8611832565b60035442600160a01b9091046001600160401b031610610dda5760405162461bcd60e51b8152600401610a4b90612611565b600755565b610de7611832565b600854600160e01b900460ff1615610e115760405162461bcd60e51b8152600401610a4b90612638565b600880546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b610e45611832565b600854600160f81b900460ff1615610e875760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401610a4b565b600880546001600160f81b0316600160f81b179055565b610ea6611832565b6008805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b6002805403610f055760405162461bcd60e51b8152600401610a4b90612671565b6002805533610f158383836118ec565b6000610f2184846117cb565b905060008111610f665760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b6044820152606401610a4b565b60008481526004602090815260408083206001600160a01b038716845290915281208054839290610f989084906125e0565b909155505060008481526004602090815260408083206001600160a01b0387168452825280832042600190910155600590915281208054839290610fdd9084906125e0565b90915550506001600160a01b038316611008576110036001600160a01b03831682611902565b61107b565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb9061103690859085906004016126a8565b6020604051808303816000875af1158015611055573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107991906126c1565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b6110e633611a18565b600854600160401b90046001600160a01b031661113d5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401610a4b565b600854600160e81b900460ff16156111975760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610a4b565b60005b838110156112ec5760008585838181106111b6576111b66125b4565b90506020020160208101906111cb91906123fe565b6001600160a01b031603611216576112118383838181106111ee576111ee6125b4565b6008546001600160a01b03600160401b9091041692602090910201359050611902565b6112da565b848482818110611228576112286125b4565b905060200201602081019061123d91906123fe565b6001600160a01b031663a9059cbb60088054906101000a90046001600160a01b0316858585818110611271576112716125b4565b905060200201356040518363ffffffff1660e01b81526004016112959291906126a8565b6020604051808303816000875af11580156112b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d891906126c1565b505b806112e4816125f8565b91505061119a565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a5848484846040516113229493929190612719565b60405180910390a150505050565b600054610100900460ff16158080156113505750600054600160ff909116105b80611371575061135f30611823565b158015611371575060005460ff166001145b6113d45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610a4b565b6000805460ff1916600117905580156113f7576000805461ff0019166101001790555b61140082611891565b61140b826000611ba5565b61141d83600001518460200151611bd6565b61142f83604001518460600151611c07565b61143c8360800151611c38565b6114498360a00151611c68565b801561148f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61149c611832565b60035442600160a01b9091046001600160401b0316106114ce5760405162461bcd60e51b8152600401610a4b90612611565b600680546001600160401b0319166001600160401b0392909216919091179055565b6114f8611832565b6001600160a01b03811661155d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a4b565b610b5881611891565b60028054036115875760405162461bcd60e51b8152600401610a4b90612671565b600280556000805b848110156116b7576115ba8686838181106115ac576115ac6125b4565b9050602002013585856118ec565b60006115de8787848181106115d1576115d16125b4565b90506020020135866117cb565b905080156116a45780600460008989868181106115fd576115fd6125b4565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b03168152602001908152602001600020600001600082825461164791906125e0565b9091555042905060046000898986818110611664576116646125b4565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a1682529092529020600101556116a181846125e0565b92505b50806116af816125f8565b91505061158f565b506001600160a01b038316600090815260056020526040812080548392906116e09084906125e0565b90915550506001600160a01b03831661170b576117066001600160a01b03831682611902565b61177e565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb9061173990859085906004016126a8565b6020604051808303816000875af1158015611758573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177c91906126c1565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b13383878787866040516117b79695949392919061277c565b60405180910390a150506001600255505050565b6000806117eb6117e46117dd85610c65565b8686611c98565b8585611d27565b60008581526004602090815260408083206001600160a01b038816845290915290205490915061181b90826127bb565b949350505050565b6001600160a01b03163b151590565b3361183b610d7e565b6001600160a01b031614610c635760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a4b565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6118f7838383611d37565b61148f838383611dec565b804710156119525760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610a4b565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461199f576040519150601f19603f3d011682016040523d82523d6000602084013e6119a4565b606091505b505090508061148f5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610a4b565b6003600854600160f01b900460ff166003811115611a3857611a38612336565b03611a775760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401610a4b565b6002600854600160f01b900460ff166003811115611a9757611a97612336565b03611a9f5750565b6001600854600160f01b900460ff166003811115611abf57611abf612336565b03611b22576008546001600160a01b03828116600160401b9092041614610b585760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401610a4b565b6000600854600160f01b900460ff166003811115611b4257611b42612336565b03610b5857806001600160a01b0316611b59610d7e565b6001600160a01b031614610b585760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401610a4b565b600054610100900460ff16611bcc5760405162461bcd60e51b8152600401610a4b906127d2565b610c4d8282611e37565b600054610100900460ff16611bfd5760405162461bcd60e51b8152600401610a4b906127d2565b610c4d8282611ed1565b600054610100900460ff16611c2e5760405162461bcd60e51b8152600401610a4b906127d2565b610c4d8282611f36565b600054610100900460ff16611c5f5760405162461bcd60e51b8152600401610a4b906127d2565b610b5881611f95565b600054610100900460ff16611c8f5760405162461bcd60e51b8152600401610a4b906127d2565b610b5881611fd1565b6006546000906001600160401b0316421015611cb6575060006109ab565b600654611cd5906001600160401b03600160401b82048116911661281d565b6001600160401b0316421115611cec5750826109ab565b6006546001600160401b03600160401b8204811691611d0c9116426127bb565b611d169086612848565b611d209190612867565b90506109ab565b60006007548461181b9190612867565b6003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa158015611d82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da69190612889565b6001600160a01b03161461148f5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b6044820152606401610a4b565b600854426001600160401b039091161061148f5760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b6044820152606401610a4b565b600054610100900460ff16611e5e5760405162461bcd60e51b8152600401610a4b906127d2565b611e6e63ac2ba33360e01b61201f565b60088054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b836003811115611ec857611ec8612336565b02179055505050565b600054610100900460ff16611ef85760405162461bcd60e51b8152600401610a4b906127d2565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055610c4d631ba050e960e21b61201f565b600054610100900460ff16611f5d5760405162461bcd60e51b8152600401610a4b906127d2565b600680546001600160401b03838116600160401b026001600160801b031990921690851617179055610c4d63d1bdccff60e01b61201f565b600054610100900460ff16611fbc5760405162461bcd60e51b8152600401610a4b906127d2565b6007819055610b58632d5305cb60e21b61201f565b600054610100900460ff16611ff85760405162461bcd60e51b8152600401610a4b906127d2565b600880546001600160401b0319166001600160401b038316179055610b586317b2ef4360e31b5b6001600160e01b031980821690036120785760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401610a4b565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60008083601f8401126120b257600080fd5b5081356001600160401b038111156120c957600080fd5b6020830191508360208260051b85010111156120e457600080fd5b9250929050565b6001600160a01b0381168114610b5857600080fd5b60008060006040848603121561211557600080fd5b83356001600160401b0381111561212b57600080fd5b612137868287016120a0565b909450925050602084013561214b816120eb565b809150509250925092565b60006020828403121561216857600080fd5b81356001600160e01b0319811681146109ab57600080fd5b600060208083528351808285015260005b818110156121ad57858101830151858201604001528201612191565b818111156121bf576000604083870101525b50601f01601f1916929092016040019392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612213576122136121d5565b604052919050565b6000806000806080858703121561223157600080fd5b843561223c816120eb565b935060208581013561224d816120eb565b93506040860135925060608601356001600160401b038082111561227057600080fd5b818801915088601f83011261228457600080fd5b813581811115612296576122966121d5565b6122a8601f8201601f191685016121eb565b915080825289848285010111156122be57600080fd5b808484018584013760008482840101525080935050505092959194509250565b80356001600160401b03811681146122f557600080fd5b919050565b60006020828403121561230c57600080fd5b6109ab826122de565b60006020828403121561232757600080fd5b8135600481106109ab57600080fd5b634e487b7160e01b600052602160045260246000fd5b602081016004831061236e57634e487b7160e01b600052602160045260246000fd5b91905290565b60006020828403121561238657600080fd5b5035919050565b600080604083850312156123a057600080fd5b8235915060208301356123b2816120eb565b809150509250929050565b600080602083850312156123d057600080fd5b82356001600160401b038111156123e657600080fd5b6123f2858286016120a0565b90969095509350505050565b60006020828403121561241057600080fd5b81356109ab816120eb565b6001600160a01b0391909116815260200190565b6000806000806040858703121561244557600080fd5b84356001600160401b038082111561245c57600080fd5b612468888389016120a0565b9096509450602087013591508082111561248157600080fd5b5061248e878288016120a0565b95989497509550505050565b60008082840360e08112156124ae57600080fd5b60c08112156124bc57600080fd5b5060405160c081018181106001600160401b03821117156124df576124df6121d5565b60405283356124ed816120eb565b81526124fb602085016122de565b602082015261250c604085016122de565b604082015261251d606085016122de565b60608201526080840135608082015261253860a085016122de565b60a0820152915060c08301356123b2816120eb565b6000806000806060858703121561256357600080fd5b84356001600160401b0381111561257957600080fd5b612585878288016120a0565b9095509350506020850135612599816120eb565b915060408501356125a9816120eb565b939692955090935050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156125f3576125f36125ca565b500190565b60006001820161260a5761260a6125ca565b5060010190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b60006020828403121561266a57600080fd5b5051919050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b03929092168252602082015260400190565b6000602082840312156126d357600080fd5b815180151581146109ab57600080fd5b81835260006001600160fb1b038311156126fc57600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b8781101561275c57823561273f816120eb565b6001600160a01b031682526020928301929091019060010161272c565b5083810360208501526127708186886126e3565b98975050505050505050565b600060018060a01b038089168352808816602084015260a060408401526127a760a0840187896126e3565b941660608301525060800152949350505050565b6000828210156127cd576127cd6125ca565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006001600160401b0380831681851680830382111561283f5761283f6125ca565b01949350505050565b6000816000190483118215151615612862576128626125ca565b500290565b60008261288457634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561289b57600080fd5b81516109ab816120eb56fea2646970667358221220b4db9461245b0f6b1074188ef89e3a5ed4c6e573276342e079eaceadfbfa326464736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/presets/ERC721LockedStakingEmissionStream":{"address":{"1":"0x8043d592263311ccCaAeeC871Df6ad1e127A52E1","3":"0xFf7CBd71bDdc5a51BF68054e2F4f0b7DF9273E1b","4":"0xD3827cD70300c37f7399e69178EAE9e951b7F025","5":"0x9d938a88094296ff207966671bBCAF14Bf28286f","25":"0xb2edC1E98b147137D7f6894403E163236bc6FffC","56":"0x27F848F575D9EDBc10c874825CCE379b19e9D155","65":"0x1dc99a44b07f1790647087D789173991DFa5EE65","66":"0x2670ABe7b5B65549A6b24Ea1d7ccF0175dAEE0B2","97":"0x180442ebd727fE663aC280CeF7AC4F6902414603","137":"0x06a404890116C9D28Ec9f8B76B07F11c2ECAc125","250":"0xaca3DC84080D4440CC526983027a89E0A16A73DD","280":"0xE001A1a37EA75788fC8E5324aeCeE58151F79b35","4002":"0xaca3DC84080D4440CC526983027a89E0A16A73DD","9000":"0x1dc99a44b07f1790647087D789173991DFa5EE65","42161":"0xd59375B90526C16a007a779c15A844627fdBe716","43113":"0x8043d592263311ccCaAeeC871Df6ad1e127A52E1","43114":"0x97BA377E12dCA8a81b9d304F5e27D179E6ca1FBA","421611":"0xE949eBA5548cCAfc29612a41916DcAE6a56ed877","arbitrumOne":"0xd59375B90526C16a007a779c15A844627fdBe716","arbitrumTestnet":"0xE949eBA5548cCAfc29612a41916DcAE6a56ed877","avalanche":"0x97BA377E12dCA8a81b9d304F5e27D179E6ca1FBA","avalancheFujiTestnet":"0x8043d592263311ccCaAeeC871Df6ad1e127A52E1","bsc":"0x27F848F575D9EDBc10c874825CCE379b19e9D155","bscTestnet":"0x180442ebd727fE663aC280CeF7AC4F6902414603","cronos":"0xb2edC1E98b147137D7f6894403E163236bc6FffC","evmosTestnet":"0x1dc99a44b07f1790647087D789173991DFa5EE65","ftmTestnet":"0xaca3DC84080D4440CC526983027a89E0A16A73DD","goerli":"0x9d938a88094296ff207966671bBCAF14Bf28286f","mainnet":"0x8043d592263311ccCaAeeC871Df6ad1e127A52E1","okcMainnet":"0x2670ABe7b5B65549A6b24Ea1d7ccF0175dAEE0B2","okcTestnet":"0x1dc99a44b07f1790647087D789173991DFa5EE65","opera":"0xaca3DC84080D4440CC526983027a89E0A16A73DD","polygon":"0x06a404890116C9D28Ec9f8B76B07F11c2ECAc125","rinkeby":"0xD3827cD70300c37f7399e69178EAE9e951b7F025","ropsten":"0xFf7CBd71bDdc5a51BF68054e2F4f0b7DF9273E1b","zksyncTestnet":"0xE001A1a37EA75788fC8E5324aeCeE58151F79b35"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721LockedStakingEmissionStream","sourceName":"contracts/streams/ERC721/presets/ERC721LockedStakingEmissionStream.sol","abi":[{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint64","name":"minStakingDuration","type":"uint64"},{"internalType":"uint64","name":"maxStakingTotalDurations","type":"uint64"},{"internalType":"uint256","name":"emissionRate","type":"uint256"},{"internalType":"uint64","name":"emissionTimeUnit","type":"uint64"},{"internalType":"uint64","name":"emissionStart","type":"uint64"},{"internalType":"uint64","name":"emissionEnd","type":"uint64"},{"internalType":"uint256","name":"totalTickets","type":"uint256"},{"internalType":"uint64","name":"claimLockedUntil","type":"uint64"}],"internalType":"struct ERC721LockedStakingEmissionStream.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimLockedUntil","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"calcUntil","type":"uint64"}],"name":"emissionAmountUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionEnd","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionStart","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionTimeUnit","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721EmissionReleaseExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721EqualSplitExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721LockableClaimExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721LockedStakingExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721StakingExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint64","name":"minStakingDuration","type":"uint64"},{"internalType":"uint64","name":"maxStakingTotalDurations","type":"uint64"},{"internalType":"uint256","name":"emissionRate","type":"uint256"},{"internalType":"uint64","name":"emissionTimeUnit","type":"uint64"},{"internalType":"uint64","name":"emissionStart","type":"uint64"},{"internalType":"uint64","name":"emissionEnd","type":"uint64"},{"internalType":"uint256","name":"totalTickets","type":"uint256"},{"internalType":"uint64","name":"claimLockedUntil","type":"uint64"}],"internalType":"struct ERC721LockedStakingEmissionStream.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lastStakingTime","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxStakingTotalDurations","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minStakingDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"rateByToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"calcUntil","type":"uint64"}],"name":"releasedAmountUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"rewardAmountByToken","outputs":[{"internalType":"uint256","name":"total","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"rewardAmountByToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"savedStakedDurations","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setClaimLockedUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionEnd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setEmissionRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionTimeUnit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setMaxStakingTotalDurations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setMinStakingDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setTotalTickets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"totalStakedDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"totalStakedDuration","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTickets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"unlockingTime","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"unlockingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x60806040523480156200001157600080fd5b50604051620044c1380380620044c1833981016040819052620000349162000798565b6200003f3362000057565b6001600255620000508133620000b2565b50620008c6565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620000d35750600054600160ff909116105b80620001035750620000f0306200026760201b620023071760201c565b15801562000103575060005460ff166001145b6200016c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000190576000805461ff0019166101001790555b6200019b8262000057565b620001a882600062000276565b82516020840151620001bb9190620002b0565b620001d583604001518460600151620002e660201b60201c565b620001f983608001518460a001518560c001518660e001516200032660201b60201c565b6101008301516200020a9062000364565b6101208301516200021b906200039c565b801562000262576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6001600160a01b03163b151590565b600054610100900460ff16620002a05760405162461bcd60e51b8152600401620001639062000865565b620002ac8282620003d1565b5050565b600054610100900460ff16620002da5760405162461bcd60e51b8152600401620001639062000865565b620002ac828262000478565b600054610100900460ff16620003105760405162461bcd60e51b8152600401620001639062000865565b6200031a620004e2565b620002ac828262000520565b600054610100900460ff16620003505760405162461bcd60e51b8152600401620001639062000865565b6200035e8484848462000589565b50505050565b600054610100900460ff166200038e5760405162461bcd60e51b8152600401620001639062000865565b620003998162000614565b50565b600054610100900460ff16620003c65760405162461bcd60e51b8152600401620001639062000865565b620003998162000655565b600054610100900460ff16620003fb5760405162461bcd60e51b8152600401620001639062000865565b6200040d63ac2ba33360e01b620006a7565b600c8054600160401b600160e01b03198116680100000000000000006001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b8360038111156200046f576200046f620008b0565b02179055505050565b600054610100900460ff16620004a25760405162461bcd60e51b8152600401620001639062000865565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055620002ac631ba050e960e21b620006a7565b600054610100900460ff166200050c5760405162461bcd60e51b8152600401620001639062000865565b6200051e63d664280160e01b620006a7565b565b600054610100900460ff166200054a5760405162461bcd60e51b8152600401620001639062000865565b600980546001600160401b0383811668010000000000000000026001600160801b031990921690851617179055620002ac633a41ba5360e11b620006a7565b600054610100900460ff16620005b35760405162461bcd60e51b8152600401620001639062000865565b6006849055600780546001600160401b03838116600160801b02600160801b600160c01b031986831668010000000000000000026001600160801b03199094169288169290921792909217161790556200035e63c9f600a960e01b620006a7565b600054610100900460ff166200063e5760405162461bcd60e51b8152600401620001639062000865565b600881905562000399632d5305cb60e21b620006a7565b600054610100900460ff166200067f5760405162461bcd60e51b8152600401620001639062000865565b600c80546001600160401b0319166001600160401b038316179055620003996317b2ef4360e31b5b6001600160e01b03198082169003620007035760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640162000163565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60405161014081016001600160401b03811182821017156200075d57634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b03811681146200077b57600080fd5b919050565b80516001600160401b03811681146200077b57600080fd5b60006101408284031215620007ac57600080fd5b620007b66200072b565b620007c18362000763565b8152620007d16020840162000780565b6020820152620007e46040840162000780565b6040820152620007f76060840162000780565b6060820152608083015160808201526200081460a0840162000780565b60a08201526200082760c0840162000780565b60c08201526200083a60e0840162000780565b60e082015261010083810151908201526101206200085a81850162000780565b908201529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b613beb80620008d66000396000f3fe6080604052600436106103755760003560e01c80638da5cb5b116101c9578063d0d6641d116100fe578063d0d6641d14610b67578063d1335b691461053b578063d4244f2414610b87578063d5ed4d5a14610bae578063d66428011461053b578063d97314f514610bce578063da82b22714610bee578063dcbe353f14610c03578063dd11247e14610c2a578063dda8820f1461053b578063ddd5e1b214610c40578063de6d6d9614610c60578063de76a67614610c80578063e449f34114610ca0578063f2fde38b14610cc0578063f389b6e414610ce0578063f4415ad614610d00578063f593dfc814610d38578063f66e38c214610d5857600080fd5b80638da5cb5b146109205780639199690b1461053b578063968d9b2c1461094257806396afc450146109625780639edfe83014610978578063a1bdb15e14610998578063a1cf6493146109b8578063a5549bc6146109fb578063a5b23be714610a1b578063a694fc3a14610a3b578063a86b21e814610a5b578063a8a67c8c14610a7b578063aaf2f99914610a9b578063ae890c0a14610abb578063af121f5414610adb578063c088184914610afc578063c0bb38ff14610b32578063c723955a14610b5257600080fd5b8063379607f5116102aa578063379607f5146106595780633a73f7d6146106795780633b3f12e2146106995780633d2dded5146106b957806349561cb9146106f65780634abb4c4914610717578063513da9481461074457806354fd4d501461076b57806357dc48c81461079a5780636057e0ec146107ee578063619496361461080f5780636ba4c1381461082f578063715018a61461084f57806378b094ca14610864578063790c0c73146108845780638368909c146108a4578063837fe140146108cb57806384fd5ae0146108e057806389c6b8151461090057600080fd5b80630191c0af1461038e57806301ffc9a7146103c157806306fdde03146103f157806308289dbe1461041357806308ae7e54146104615780630c805a44146104815780630fbf0a93146104b757806314427a96146104d7578063150b7a02146104f75780631bc51b261461053b5780631c725fdc1461054f57806325289bad1461056f5780632890d033146105965780632c0e1313146105ab5780632c233067146105cb5780632d00b587146105eb5780632e17de781461061957806333abcdbd1461063957600080fd5b36610389576000341161038757600080fd5b005b600080fd5b34801561039a57600080fd5b506103ae6103a9366004613298565b610d78565b6040519081526020015b60405180910390f35b3480156103cd57600080fd5b506103e16103dc3660046132ee565b610dce565b60405190151581526020016103b8565b3480156103fd57600080fd5b50610406610e0e565b6040516103b89190613318565b34801561041f57600080fd5b5061044961042e36600461336d565b600b602052600090815260409020546001600160401b031681565b6040516001600160401b0390911681526020016103b8565b34801561046d57600080fd5b50600954610449906001600160401b031681565b34801561048d57600080fd5b5061044961049c36600461336d565b600a602052600090815260409020546001600160401b031681565b3480156104c357600080fd5b506103876104d2366004613386565b610e2a565b3480156104e357600080fd5b50600c54610449906001600160401b031681565b34801561050357600080fd5b50610522610512366004613436565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016103b8565b34801561054757600080fd5b5060016103e1565b34801561055b57600080fd5b5061038761056a366004613510565b610ea2565b34801561057b57600080fd5b5060035461044990600160a01b90046001600160401b031681565b3480156105a257600080fd5b506103ae610f2c565b3480156105b757600080fd5b506103876105c6366004613510565b610f3d565b3480156105d757600080fd5b506103876105e636600461352b565b610f99565b3480156105f757600080fd5b50600c5461060c90600160f01b900460ff1681565b6040516103b89190613562565b34801561062557600080fd5b5061038761063436600461336d565b610ff8565b34801561064557600080fd5b5061044961065436600461336d565b61102e565b34801561066557600080fd5b5061038761067436600461336d565b611123565b34801561068557600080fd5b506103ae610694366004613386565b611131565b3480156106a557600080fd5b506103ae6106b4366004613298565b611183565b3480156106c557600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc546103ae565b34801561070257600080fd5b50600c546103e190600160f81b900460ff1681565b34801561072357600080fd5b50610737610732366004613386565b611201565b6040516103b8919061358a565b34801561075057600080fd5b5060075461044990600160401b90046001600160401b031681565b34801561077757600080fd5b5061040660405180604001604052806003815260200162302e3160e81b81525081565b3480156107a657600080fd5b506107d96107b53660046135ce565b60046020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016103b8565b3480156107fa57600080fd5b50600c546103e190600160e01b900460ff1681565b34801561081b57600080fd5b50600754610449906001600160401b031681565b34801561083b57600080fd5b5061038761084a366004613386565b6112ac565b34801561085b57600080fd5b506103876112bd565b34801561087057600080fd5b5061038761087f366004613510565b6112d1565b34801561089057600080fd5b506103ae61089f3660046135fe565b611337565b3480156108b057600080fd5b5060075461044990600160801b90046001600160401b031681565b3480156108d757600080fd5b506103876113fb565b3480156108ec57600080fd5b506103ae6108fb366004613386565b611442565b34801561090c57600080fd5b506103ae61091b366004613386565b6114d5565b34801561092c57600080fd5b506109356114ea565b6040516103b8919061361b565b34801561094e57600080fd5b506103ae61095d36600461336d565b6114ff565b34801561096e57600080fd5b506103ae60065481565b34801561098457600080fd5b506103ae610993366004613510565b61150c565b3480156109a457600080fd5b506103876109b336600461336d565b611551565b3480156109c457600080fd5b506103ae6109d33660046135ce565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b348015610a0757600080fd5b50610387610a16366004613510565b611590565b348015610a2757600080fd5b506103ae610a3636600461336d565b6115ec565b348015610a4757600080fd5b50610387610a5636600461336d565b611632565b348015610a6757600080fd5b506103ae610a76366004613510565b611697565b348015610a8757600080fd5b50610387610a9636600461362f565b6116d3565b348015610aa757600080fd5b50610387610ab6366004613510565b611855565b348015610ac757600080fd5b50610387610ad636600461336d565b6118bb565b348015610ae757600080fd5b50600c546103e190600160e81b900460ff1681565b348015610b0857600080fd5b506103ae610b173660046135fe565b6001600160a01b031660009081526005602052604090205490565b348015610b3e57600080fd5b50610387610b4d3660046135fe565b6118fa565b348015610b5e57600080fd5b50610387611958565b348015610b7357600080fd5b506103ae610b8236600461336d565b6119b9565b348015610b9357600080fd5b5060095461044990600160401b90046001600160401b031681565b348015610bba57600080fd5b50600354610935906001600160a01b031681565b348015610bda57600080fd5b50610387610be9366004613510565b611a13565b348015610bfa57600080fd5b50610387611a6f565b348015610c0f57600080fd5b50600c5461093590600160401b90046001600160a01b031681565b348015610c3657600080fd5b506103ae60085481565b348015610c4c57600080fd5b50610387610c5b3660046135ce565b611ab5565b348015610c6c57600080fd5b50610387610c7b366004613710565b611cae565b348015610c8c57600080fd5b50610449610c9b366004613386565b611efc565b348015610cac57600080fd5b50610387610cbb366004613386565b611f48565b348015610ccc57600080fd5b50610387610cdb3660046135fe565b611f77565b348015610cec57600080fd5b50610387610cfb36600461377b565b611fed565b348015610d0c57600080fd5b506103ae610d1b36600461336d565b600090815260046020908152604080832083805290915290205490565b348015610d4457600080fd5b50610387610d53366004613510565b612252565b348015610d6457600080fd5b506103ae610d733660046135ce565b6122b8565b600080805b84811015610dc557610da7868683818110610d9a57610d9a6137e2565b90506020020135856122b8565b610db1908361380e565b915080610dbd81613826565b915050610d7d565b50949350505050565b60006301ffc9a760e01b6001600160e01b031983161480610e0857506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b604051806060016040528060258152602001613b916025913981565b6002805403610e545760405162461bcd60e51b8152600401610e4b9061383f565b60405180910390fd5b600280556007546001600160401b03600160401b9091048116429091161015610e8f5760405162461bcd60e51b8152600401610e4b90613876565b610e998282612316565b50506001600255565b610eaa612388565b6003546001600160401b03600160a01b909104811690821611610eff5760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b6044820152606401610e4b565b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000610f386000611337565b905090565b610f45612388565b60035442600160a01b9091046001600160401b031610610f775760405162461bcd60e51b8152600401610e4b9061389f565b600c80546001600160401b0319166001600160401b0392909216919091179055565b610fa1612388565b600c54600160f81b900460ff1615610fcb5760405162461bcd60e51b8152600401610e4b906138c6565b600c805482919060ff60f01b1916600160f01b836003811115610ff057610ff061354c565b021790555050565b60028054036110195760405162461bcd60e51b8152600401610e4b9061383f565b60028055611026816123e7565b506001600255565b6000818152600b6020908152604080832054600a9092528220546001600160401b039182169116156110eb576000611064612452565b905042816001600160401b0316111561107a5750425b6000848152600a60205260409020546001600160401b0316156110e9576000848152600a60205260409020546001600160401b0390811690821611156110e9576000848152600a60205260409020546110dc906001600160401b0316826138e6565b6110e6908361390e565b91505b505b6009546001600160401b03600160401b90910481169082161115610e085750600954600160401b90046001600160401b031692915050565b61112e816000611ab5565b50565b6000805b8281101561117c5761115e848483818110611152576111526137e2565b905060200201356115ec565b611168908361380e565b91508061117481613826565b915050611135565b5092915050565b600080805b84811015610dc557600460008787848181106111a6576111a66137e2565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060000154826111ed919061380e565b9150806111f981613826565b915050611188565b60606000826001600160401b0381111561121d5761121d6133c7565b604051908082528060200260200182016040528015611246578160200160208202803683370190505b50905060005b838110156112a457611275858583818110611269576112696137e2565b905060200201356119b9565b828281518110611287576112876137e2565b60209081029190910101528061129c81613826565b91505061124c565b509392505050565b6112b98282600033611fed565b5050565b6112c5612388565b6112cf6000612490565b565b6112d9612388565b60035442600160a01b9091046001600160401b03161061130b5760405162461bcd60e51b8152600401610e4b9061389f565b600780546001600160401b03909216600160801b02600160801b600160c01b0319909216919091179055565b60006001600160a01b03821661136b576001600160a01b038216600090815260056020526040902054610e0890479061380e565b6040516370a0823160e01b81526001600160a01b038316906370a082319061139790309060040161361b565b602060405180830381865afa1580156113b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d89190613939565b6001600160a01b038316600090815260056020526040902054610e08919061380e565b611403612388565b600c54600160e01b900460ff161561142d5760405162461bcd60e51b8152600401610e4b906138c6565b600c805460ff60e01b1916600160e01b179055565b60008060005b838110156114b1576000600a6000878785818110611468576114686137e2565b60209081029290920135835250810191909152604001600020546001600160401b0316111561149f578161149b81613826565b9250505b806114a981613826565b915050611448565b50600854816006546114c39190613952565b6114cd9190613987565b949350505050565b60006114e383836000611183565b9392505050565b6000546201000090046001600160a01b031690565b6000610e088260006122b8565b6007546000906001600160401b038082169161153191600160401b90910416846138e6565b61153b919061399b565b6001600160401b0316600654610e089190613952565b611559612388565b60035442600160a01b9091046001600160401b03161061158b5760405162461bcd60e51b8152600401610e4b9061389f565b600655565b611598612388565b60035442600160a01b9091046001600160401b0316106115ca5760405162461bcd60e51b8152600401610e4b9061389f565b600980546001600160401b0319166001600160401b0392909216919091179055565b6007546008546000916001600160401b0316906116088461102e565b6001600160401b031660065461161e9190613952565b6116289190613987565b610e089190613987565b60028054036116535760405162461bcd60e51b8152600401610e4b9061383f565b600280556007546001600160401b03600160401b909104811642909116101561168e5760405162461bcd60e51b8152600401610e4b90613876565b611026816124eb565b6007546006546000916001600160401b0380821692916116c091600160401b90910416856138e6565b6001600160401b03166116289190613952565b600054610100900460ff16158080156116f35750600054600160ff909116105b80611714575061170230612307565b158015611714575060005460ff166001145b6117775760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610e4b565b6000805460ff19166001179055801561179a576000805461ff0019166101001790555b6117a382612490565b6117ae826000612525565b6117c083600001518460200151612556565b6117d283604001518460600151612587565b6117ee83608001518460a001518560c001518660e001516125c0565b6117fc8361010001516125f9565b61180a836101200151612629565b8015611850576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61185d612388565b60035442600160a01b9091046001600160401b03161061188f5760405162461bcd60e51b8152600401610e4b9061389f565b600780546001600160401b03909216600160401b02600160401b600160801b0319909216919091179055565b6118c3612388565b60035442600160a01b9091046001600160401b0316106118f55760405162461bcd60e51b8152600401610e4b9061389f565b600855565b611902612388565b600c54600160e01b900460ff161561192c5760405162461bcd60e51b8152600401610e4b906138c6565b600c80546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b611960612388565b600c54600160f81b900460ff16156119a25760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401610e4b565b600c80546001600160f81b0316600160f81b179055565b6000818152600a60205260408120546001600160401b03166119dc576000611a04565b6009546000838152600a6020526040902054611a04916001600160401b03908116911661390e565b6001600160401b031692915050565b611a1b612388565b60035442600160a01b9091046001600160401b031610611a4d5760405162461bcd60e51b8152600401610e4b9061389f565b600780546001600160401b0319166001600160401b0392909216919091179055565b611a77612388565b600c805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b6002805403611ad65760405162461bcd60e51b8152600401610e4b9061383f565b6002805533611ae6838383612659565b6000611af284846122b8565b905060008111611b375760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b6044820152606401610e4b565b60008481526004602090815260408083206001600160a01b038716845290915281208054839290611b6990849061380e565b909155505060008481526004602090815260408083206001600160a01b0387168452825280832042600190910155600590915281208054839290611bae90849061380e565b90915550506001600160a01b038316611bd957611bd46001600160a01b0383168261267a565b611c4c565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb90611c0790859085906004016139c1565b6020604051808303816000875af1158015611c26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4a91906139da565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b611cb733612790565b600c54600160401b90046001600160a01b0316611d0e5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401610e4b565b600c54600160e81b900460ff1615611d685760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610e4b565b60005b83811015611eb8576000858583818110611d8757611d876137e2565b9050602002016020810190611d9c91906135fe565b6001600160a01b031603611de757611de2838383818110611dbf57611dbf6137e2565b600c546001600160a01b03600160401b909104169260209091020135905061267a565b611ea6565b848482818110611df957611df96137e2565b9050602002016020810190611e0e91906135fe565b600c546001600160a01b039182169163a9059cbb91600160401b900416858585818110611e3d57611e3d6137e2565b905060200201356040518363ffffffff1660e01b8152600401611e619291906139c1565b6020604051808303816000875af1158015611e80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea491906139da565b505b80611eb081613826565b915050611d6b565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a584848484604051611eee9493929190613a32565b60405180910390a150505050565b600080805b838110156112a457611f2a858583818110611f1e57611f1e6137e2565b9050602002013561102e565b611f34908361390e565b915080611f4081613826565b915050611f01565b6002805403611f695760405162461bcd60e51b8152600401610e4b9061383f565b60028055610e99828261291d565b611f7f612388565b6001600160a01b038116611fe45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610e4b565b61112e81612490565b600280540361200e5760405162461bcd60e51b8152600401610e4b9061383f565b600280556000805b8481101561213e57612041868683818110612033576120336137e2565b905060200201358585612659565b6000612065878784818110612058576120586137e2565b90506020020135866122b8565b9050801561212b578060046000898986818110612084576120846137e2565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b0316815260200190815260200160002060000160008282546120ce919061380e565b90915550429050600460008989868181106120eb576120eb6137e2565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a168252909252902060010155612128818461380e565b92505b508061213681613826565b915050612016565b506001600160a01b0383166000908152600560205260408120805483929061216790849061380e565b90915550506001600160a01b0383166121925761218d6001600160a01b0383168261267a565b612205565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906121c090859085906004016139c1565b6020604051808303816000875af11580156121df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220391906139da565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b133838787878660405161223e96959493929190613a95565b60405180910390a150506001600255505050565b61225a612388565b60035442600160a01b9091046001600160401b03161061228c5760405162461bcd60e51b8152600401610e4b9061389f565b600980546001600160401b03909216600160401b02600160401b600160801b0319909216919091179055565b6000806122d76122d06122ca85611337565b50600090565b8585612959565b60008581526004602090815260408083206001600160a01b03881684529091529020549091506114cd9082613ad4565b6001600160a01b03163b151590565b612320828261299e565b6003546040516342cb086360e11b81526001600160a01b039091169063859610c6906123529085908590600401613aeb565b600060405180830381600087803b15801561236c57600080fd5b505af1158015612380573d6000803e3d6000fd5b505050505050565b336123916114ea565b6001600160a01b0316146112cf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e4b565b6123f0816129e0565b600354604051636198e33960e01b8152600481018390526001600160a01b0390911690636198e339906024015b600060405180830381600087803b15801561243757600080fd5b505af115801561244b573d6000803e3d6000fd5b5050505050565b600754600090600160801b90046001600160401b0316156124845750600754600160801b90046001600160401b031690565b506001600160401b0390565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6124f4816129eb565b6003546040516337519c1960e21b8152600481018390526001600160a01b039091169063dd4670649060240161241d565b600054610100900460ff1661254c5760405162461bcd60e51b8152600401610e4b90613aff565b6112b982826129f6565b600054610100900460ff1661257d5760405162461bcd60e51b8152600401610e4b90613aff565b6112b98282612a90565b600054610100900460ff166125ae5760405162461bcd60e51b8152600401610e4b90613aff565b6125b6612af5565b6112b98282612b2c565b600054610100900460ff166125e75760405162461bcd60e51b8152600401610e4b90613aff565b6125f384848484612b8b565b50505050565b600054610100900460ff166126205760405162461bcd60e51b8152600401610e4b90613aff565b61112e81612c0c565b600054610100900460ff166126505760405162461bcd60e51b8152600401610e4b90613aff565b61112e81612c48565b612664838383612c9a565b61266f838383612d4f565b611850838383612d9a565b804710156126ca5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610e4b565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612717576040519150601f19603f3d011682016040523d82523d6000602084013e61271c565b606091505b50509050806118505760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610e4b565b6003600c54600160f01b900460ff1660038111156127b0576127b061354c565b036127ef5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401610e4b565b6002600c54600160f01b900460ff16600381111561280f5761280f61354c565b036128175750565b6001600c54600160f01b900460ff1660038111156128375761283761354c565b0361289a57600c546001600160a01b03828116600160401b909204161461112e5760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401610e4b565b6000600c54600160f01b900460ff1660038111156128ba576128ba61354c565b0361112e57806001600160a01b03166128d16114ea565b6001600160a01b03161461112e5760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401610e4b565b6129278282612e5f565b600354604051635d36598f60e01b81526001600160a01b0390911690635d36598f906123529085908590600401613aeb565b6007546000906001600160401b03166129718461102e565b61297b919061399b565b6001600160401b03166008546006546129949190613987565b6114cd9190613952565b334260005b8381101561244b576129ce83838787858181106129c2576129c26137e2565b90506020020135612ea1565b806129d881613826565b9150506129a3565b61112e334283612f49565b61112e334283612ea1565b600054610100900460ff16612a1d5760405162461bcd60e51b8152600401610e4b90613aff565b612a2d63ac2ba33360e01b612ff1565b600c8054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b836003811115612a8757612a8761354c565b02179055505050565b600054610100900460ff16612ab75760405162461bcd60e51b8152600401610e4b90613aff565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b038516171790556112b9631ba050e960e21b612ff1565b600054610100900460ff16612b1c5760405162461bcd60e51b8152600401610e4b90613aff565b6112cf63d664280160e01b612ff1565b600054610100900460ff16612b535760405162461bcd60e51b8152600401610e4b90613aff565b600980546001600160401b03838116600160401b026001600160801b0319909216908516171790556112b9633a41ba5360e11b612ff1565b600054610100900460ff16612bb25760405162461bcd60e51b8152600401610e4b90613aff565b6006849055600780546001600160401b03838116600160801b02600160801b600160c01b0319868316600160401b026001600160801b03199094169288169290921792909217161790556125f363c9f600a960e01b612ff1565b600054610100900460ff16612c335760405162461bcd60e51b8152600401610e4b90613aff565b600881905561112e632d5305cb60e21b612ff1565b600054610100900460ff16612c6f5760405162461bcd60e51b8152600401610e4b90613aff565b600c80546001600160401b0319166001600160401b03831617905561112e6317b2ef4360e31b612ff1565b6003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa158015612ce5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d099190613b4a565b6001600160a01b0316146118505760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b6044820152606401610e4b565b600c54426001600160401b03909116106118505760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b6044820152606401610e4b565b60075442600160401b9091046001600160401b031610612dea5760405162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b6044820152606401610e4b565b600754612e00906001600160401b031642613ad4565b60008481526004602090815260408083206001600160a01b0387168452909152902060010154106118505760405162461bcd60e51b8152602060048201526009602482015268544f4f5f4541524c5960b81b6044820152606401610e4b565b334260005b8381101561244b57612e8f8383878785818110612e8357612e836137e2565b90506020020135612f49565b80612e9981613826565b915050612e64565b6003546040516331a9108f60e11b8152600481018390526001600160a01b0390911690636352211e90602401602060405180830381865afa158015612eea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f0e9190613b4a565b6001600160a01b0316836001600160a01b031614612f3e5760405162461bcd60e51b8152600401610e4b90613b67565b611850838383613072565b6003546040516331a9108f60e11b8152600481018390526001600160a01b0390911690636352211e90602401602060405180830381865afa158015612f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb69190613b4a565b6001600160a01b0316836001600160a01b031614612fe65760405162461bcd60e51b8152600401610e4b90613b67565b61185083838361310b565b6001600160e01b0319808216900361304a5760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401610e4b565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b600954600160401b90046001600160401b031661308e8261102e565b6001600160401b0316106130dc5760405162461bcd60e51b815260206004820152601560248201527413505617d1155490551253d397d15610d151511151605a1b6044820152606401610e4b565b6000908152600a6020526040902080546001600160401b0319166001600160401b039290921691909117905550565b6000818152600a60205260409020546001600160401b031661315c5760405162461bcd60e51b815260206004820152600a6024820152691393d517d4d51052d15160b21b6044820152606401610e4b565b6009546000828152600a6020526040902054613184916001600160401b03908116911661390e565b6001600160401b0316826001600160401b031610156131de5760405162461bcd60e51b815260206004820152601660248201527509c9ea8bea6a882968a88be989e9c8ebe8a9c9eaa8e960531b6044820152606401610e4b565b6131e78161102e565b6000918252600b6020908152604080842080546001600160401b03949094166001600160401b0319948516179055600a909152909120805490911690555050565b60008083601f84011261323a57600080fd5b5081356001600160401b0381111561325157600080fd5b6020830191508360208260051b850101111561326c57600080fd5b9250929050565b6001600160a01b038116811461112e57600080fd5b803561329381613273565b919050565b6000806000604084860312156132ad57600080fd5b83356001600160401b038111156132c357600080fd5b6132cf86828701613228565b90945092505060208401356132e381613273565b809150509250925092565b60006020828403121561330057600080fd5b81356001600160e01b0319811681146114e357600080fd5b600060208083528351808285015260005b8181101561334557858101830151858201604001528201613329565b81811115613357576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561337f57600080fd5b5035919050565b6000806020838503121561339957600080fd5b82356001600160401b038111156133af57600080fd5b6133bb85828601613228565b90969095509350505050565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b0381118282101715613400576134006133c7565b60405290565b604051601f8201601f191681016001600160401b038111828210171561342e5761342e6133c7565b604052919050565b6000806000806080858703121561344c57600080fd5b843561345781613273565b935060208581013561346881613273565b93506040860135925060608601356001600160401b038082111561348b57600080fd5b818801915088601f83011261349f57600080fd5b8135818111156134b1576134b16133c7565b6134c3601f8201601f19168501613406565b915080825289848285010111156134d957600080fd5b808484018584013760008482840101525080935050505092959194509250565b80356001600160401b038116811461329357600080fd5b60006020828403121561352257600080fd5b6114e3826134f9565b60006020828403121561353d57600080fd5b8135600481106114e357600080fd5b634e487b7160e01b600052602160045260246000fd5b602081016004831061358457634e487b7160e01b600052602160045260246000fd5b91905290565b6020808252825182820181905260009190848201906040850190845b818110156135c2578351835292840192918401916001016135a6565b50909695505050505050565b600080604083850312156135e157600080fd5b8235915060208301356135f381613273565b809150509250929050565b60006020828403121561361057600080fd5b81356114e381613273565b6001600160a01b0391909116815260200190565b60008082840361016081121561364457600080fd5b6101408082121561365457600080fd5b61365c6133dd565b915061366785613288565b8252613675602086016134f9565b6020830152613686604086016134f9565b6040830152613697606086016134f9565b6060830152608085013560808301526136b260a086016134f9565b60a08301526136c360c086016134f9565b60c08301526136d460e086016134f9565b60e083015261010085810135908301526101206136f28187016134f9565b8184015250819350613705818601613288565b925050509250929050565b6000806000806040858703121561372657600080fd5b84356001600160401b038082111561373d57600080fd5b61374988838901613228565b9096509450602087013591508082111561376257600080fd5b5061376f87828801613228565b95989497509550505050565b6000806000806060858703121561379157600080fd5b84356001600160401b038111156137a757600080fd5b6137b387828801613228565b90955093505060208501356137c781613273565b915060408501356137d781613273565b939692955090935050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115613821576138216137f8565b500190565b600060018201613838576138386137f8565b5060010190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252600f908201526e1393d517d4d5105495115117d65155608a1b604082015260600190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b60006001600160401b0383811690831681811015613906576139066137f8565b039392505050565b60006001600160401b03808316818516808303821115613930576139306137f8565b01949350505050565b60006020828403121561394b57600080fd5b5051919050565b600081600019048311821515161561396c5761396c6137f8565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261399657613996613971565b500490565b60006001600160401b03808416806139b5576139b5613971565b92169190910492915050565b6001600160a01b03929092168252602082015260400190565b6000602082840312156139ec57600080fd5b815180151581146114e357600080fd5b81835260006001600160fb1b03831115613a1557600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b87811015613a75578235613a5881613273565b6001600160a01b0316825260209283019290910190600101613a45565b508381036020850152613a898186886139fc565b98975050505050505050565b600060018060a01b038089168352808816602084015260a06040840152613ac060a0840187896139fc565b941660608301525060800152949350505050565b600082821015613ae657613ae66137f8565b500390565b6020815260006114cd6020830184866139fc565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208284031215613b5c57600080fd5b81516114e381613273565b6020808252600f908201526e2727aa2faa27a5a2a72fa7aba722a960891b60408201526060019056fe455243373231204c6f636b6564205374616b696e6720456d697373696f6e2053747265616da26469706673582212208f25add58955fb37bf1a2c1165d774e3f40c6cebc48664da09c1cd40c8cce2a364736f6c634300080f0033","deployedBytecode":"0x6080604052600436106103755760003560e01c80638da5cb5b116101c9578063d0d6641d116100fe578063d0d6641d14610b67578063d1335b691461053b578063d4244f2414610b87578063d5ed4d5a14610bae578063d66428011461053b578063d97314f514610bce578063da82b22714610bee578063dcbe353f14610c03578063dd11247e14610c2a578063dda8820f1461053b578063ddd5e1b214610c40578063de6d6d9614610c60578063de76a67614610c80578063e449f34114610ca0578063f2fde38b14610cc0578063f389b6e414610ce0578063f4415ad614610d00578063f593dfc814610d38578063f66e38c214610d5857600080fd5b80638da5cb5b146109205780639199690b1461053b578063968d9b2c1461094257806396afc450146109625780639edfe83014610978578063a1bdb15e14610998578063a1cf6493146109b8578063a5549bc6146109fb578063a5b23be714610a1b578063a694fc3a14610a3b578063a86b21e814610a5b578063a8a67c8c14610a7b578063aaf2f99914610a9b578063ae890c0a14610abb578063af121f5414610adb578063c088184914610afc578063c0bb38ff14610b32578063c723955a14610b5257600080fd5b8063379607f5116102aa578063379607f5146106595780633a73f7d6146106795780633b3f12e2146106995780633d2dded5146106b957806349561cb9146106f65780634abb4c4914610717578063513da9481461074457806354fd4d501461076b57806357dc48c81461079a5780636057e0ec146107ee578063619496361461080f5780636ba4c1381461082f578063715018a61461084f57806378b094ca14610864578063790c0c73146108845780638368909c146108a4578063837fe140146108cb57806384fd5ae0146108e057806389c6b8151461090057600080fd5b80630191c0af1461038e57806301ffc9a7146103c157806306fdde03146103f157806308289dbe1461041357806308ae7e54146104615780630c805a44146104815780630fbf0a93146104b757806314427a96146104d7578063150b7a02146104f75780631bc51b261461053b5780631c725fdc1461054f57806325289bad1461056f5780632890d033146105965780632c0e1313146105ab5780632c233067146105cb5780632d00b587146105eb5780632e17de781461061957806333abcdbd1461063957600080fd5b36610389576000341161038757600080fd5b005b600080fd5b34801561039a57600080fd5b506103ae6103a9366004613298565b610d78565b6040519081526020015b60405180910390f35b3480156103cd57600080fd5b506103e16103dc3660046132ee565b610dce565b60405190151581526020016103b8565b3480156103fd57600080fd5b50610406610e0e565b6040516103b89190613318565b34801561041f57600080fd5b5061044961042e36600461336d565b600b602052600090815260409020546001600160401b031681565b6040516001600160401b0390911681526020016103b8565b34801561046d57600080fd5b50600954610449906001600160401b031681565b34801561048d57600080fd5b5061044961049c36600461336d565b600a602052600090815260409020546001600160401b031681565b3480156104c357600080fd5b506103876104d2366004613386565b610e2a565b3480156104e357600080fd5b50600c54610449906001600160401b031681565b34801561050357600080fd5b50610522610512366004613436565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016103b8565b34801561054757600080fd5b5060016103e1565b34801561055b57600080fd5b5061038761056a366004613510565b610ea2565b34801561057b57600080fd5b5060035461044990600160a01b90046001600160401b031681565b3480156105a257600080fd5b506103ae610f2c565b3480156105b757600080fd5b506103876105c6366004613510565b610f3d565b3480156105d757600080fd5b506103876105e636600461352b565b610f99565b3480156105f757600080fd5b50600c5461060c90600160f01b900460ff1681565b6040516103b89190613562565b34801561062557600080fd5b5061038761063436600461336d565b610ff8565b34801561064557600080fd5b5061044961065436600461336d565b61102e565b34801561066557600080fd5b5061038761067436600461336d565b611123565b34801561068557600080fd5b506103ae610694366004613386565b611131565b3480156106a557600080fd5b506103ae6106b4366004613298565b611183565b3480156106c557600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc546103ae565b34801561070257600080fd5b50600c546103e190600160f81b900460ff1681565b34801561072357600080fd5b50610737610732366004613386565b611201565b6040516103b8919061358a565b34801561075057600080fd5b5060075461044990600160401b90046001600160401b031681565b34801561077757600080fd5b5061040660405180604001604052806003815260200162302e3160e81b81525081565b3480156107a657600080fd5b506107d96107b53660046135ce565b60046020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016103b8565b3480156107fa57600080fd5b50600c546103e190600160e01b900460ff1681565b34801561081b57600080fd5b50600754610449906001600160401b031681565b34801561083b57600080fd5b5061038761084a366004613386565b6112ac565b34801561085b57600080fd5b506103876112bd565b34801561087057600080fd5b5061038761087f366004613510565b6112d1565b34801561089057600080fd5b506103ae61089f3660046135fe565b611337565b3480156108b057600080fd5b5060075461044990600160801b90046001600160401b031681565b3480156108d757600080fd5b506103876113fb565b3480156108ec57600080fd5b506103ae6108fb366004613386565b611442565b34801561090c57600080fd5b506103ae61091b366004613386565b6114d5565b34801561092c57600080fd5b506109356114ea565b6040516103b8919061361b565b34801561094e57600080fd5b506103ae61095d36600461336d565b6114ff565b34801561096e57600080fd5b506103ae60065481565b34801561098457600080fd5b506103ae610993366004613510565b61150c565b3480156109a457600080fd5b506103876109b336600461336d565b611551565b3480156109c457600080fd5b506103ae6109d33660046135ce565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b348015610a0757600080fd5b50610387610a16366004613510565b611590565b348015610a2757600080fd5b506103ae610a3636600461336d565b6115ec565b348015610a4757600080fd5b50610387610a5636600461336d565b611632565b348015610a6757600080fd5b506103ae610a76366004613510565b611697565b348015610a8757600080fd5b50610387610a9636600461362f565b6116d3565b348015610aa757600080fd5b50610387610ab6366004613510565b611855565b348015610ac757600080fd5b50610387610ad636600461336d565b6118bb565b348015610ae757600080fd5b50600c546103e190600160e81b900460ff1681565b348015610b0857600080fd5b506103ae610b173660046135fe565b6001600160a01b031660009081526005602052604090205490565b348015610b3e57600080fd5b50610387610b4d3660046135fe565b6118fa565b348015610b5e57600080fd5b50610387611958565b348015610b7357600080fd5b506103ae610b8236600461336d565b6119b9565b348015610b9357600080fd5b5060095461044990600160401b90046001600160401b031681565b348015610bba57600080fd5b50600354610935906001600160a01b031681565b348015610bda57600080fd5b50610387610be9366004613510565b611a13565b348015610bfa57600080fd5b50610387611a6f565b348015610c0f57600080fd5b50600c5461093590600160401b90046001600160a01b031681565b348015610c3657600080fd5b506103ae60085481565b348015610c4c57600080fd5b50610387610c5b3660046135ce565b611ab5565b348015610c6c57600080fd5b50610387610c7b366004613710565b611cae565b348015610c8c57600080fd5b50610449610c9b366004613386565b611efc565b348015610cac57600080fd5b50610387610cbb366004613386565b611f48565b348015610ccc57600080fd5b50610387610cdb3660046135fe565b611f77565b348015610cec57600080fd5b50610387610cfb36600461377b565b611fed565b348015610d0c57600080fd5b506103ae610d1b36600461336d565b600090815260046020908152604080832083805290915290205490565b348015610d4457600080fd5b50610387610d53366004613510565b612252565b348015610d6457600080fd5b506103ae610d733660046135ce565b6122b8565b600080805b84811015610dc557610da7868683818110610d9a57610d9a6137e2565b90506020020135856122b8565b610db1908361380e565b915080610dbd81613826565b915050610d7d565b50949350505050565b60006301ffc9a760e01b6001600160e01b031983161480610e0857506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b604051806060016040528060258152602001613b916025913981565b6002805403610e545760405162461bcd60e51b8152600401610e4b9061383f565b60405180910390fd5b600280556007546001600160401b03600160401b9091048116429091161015610e8f5760405162461bcd60e51b8152600401610e4b90613876565b610e998282612316565b50506001600255565b610eaa612388565b6003546001600160401b03600160a01b909104811690821611610eff5760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b6044820152606401610e4b565b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000610f386000611337565b905090565b610f45612388565b60035442600160a01b9091046001600160401b031610610f775760405162461bcd60e51b8152600401610e4b9061389f565b600c80546001600160401b0319166001600160401b0392909216919091179055565b610fa1612388565b600c54600160f81b900460ff1615610fcb5760405162461bcd60e51b8152600401610e4b906138c6565b600c805482919060ff60f01b1916600160f01b836003811115610ff057610ff061354c565b021790555050565b60028054036110195760405162461bcd60e51b8152600401610e4b9061383f565b60028055611026816123e7565b506001600255565b6000818152600b6020908152604080832054600a9092528220546001600160401b039182169116156110eb576000611064612452565b905042816001600160401b0316111561107a5750425b6000848152600a60205260409020546001600160401b0316156110e9576000848152600a60205260409020546001600160401b0390811690821611156110e9576000848152600a60205260409020546110dc906001600160401b0316826138e6565b6110e6908361390e565b91505b505b6009546001600160401b03600160401b90910481169082161115610e085750600954600160401b90046001600160401b031692915050565b61112e816000611ab5565b50565b6000805b8281101561117c5761115e848483818110611152576111526137e2565b905060200201356115ec565b611168908361380e565b91508061117481613826565b915050611135565b5092915050565b600080805b84811015610dc557600460008787848181106111a6576111a66137e2565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060000154826111ed919061380e565b9150806111f981613826565b915050611188565b60606000826001600160401b0381111561121d5761121d6133c7565b604051908082528060200260200182016040528015611246578160200160208202803683370190505b50905060005b838110156112a457611275858583818110611269576112696137e2565b905060200201356119b9565b828281518110611287576112876137e2565b60209081029190910101528061129c81613826565b91505061124c565b509392505050565b6112b98282600033611fed565b5050565b6112c5612388565b6112cf6000612490565b565b6112d9612388565b60035442600160a01b9091046001600160401b03161061130b5760405162461bcd60e51b8152600401610e4b9061389f565b600780546001600160401b03909216600160801b02600160801b600160c01b0319909216919091179055565b60006001600160a01b03821661136b576001600160a01b038216600090815260056020526040902054610e0890479061380e565b6040516370a0823160e01b81526001600160a01b038316906370a082319061139790309060040161361b565b602060405180830381865afa1580156113b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d89190613939565b6001600160a01b038316600090815260056020526040902054610e08919061380e565b611403612388565b600c54600160e01b900460ff161561142d5760405162461bcd60e51b8152600401610e4b906138c6565b600c805460ff60e01b1916600160e01b179055565b60008060005b838110156114b1576000600a6000878785818110611468576114686137e2565b60209081029290920135835250810191909152604001600020546001600160401b0316111561149f578161149b81613826565b9250505b806114a981613826565b915050611448565b50600854816006546114c39190613952565b6114cd9190613987565b949350505050565b60006114e383836000611183565b9392505050565b6000546201000090046001600160a01b031690565b6000610e088260006122b8565b6007546000906001600160401b038082169161153191600160401b90910416846138e6565b61153b919061399b565b6001600160401b0316600654610e089190613952565b611559612388565b60035442600160a01b9091046001600160401b03161061158b5760405162461bcd60e51b8152600401610e4b9061389f565b600655565b611598612388565b60035442600160a01b9091046001600160401b0316106115ca5760405162461bcd60e51b8152600401610e4b9061389f565b600980546001600160401b0319166001600160401b0392909216919091179055565b6007546008546000916001600160401b0316906116088461102e565b6001600160401b031660065461161e9190613952565b6116289190613987565b610e089190613987565b60028054036116535760405162461bcd60e51b8152600401610e4b9061383f565b600280556007546001600160401b03600160401b909104811642909116101561168e5760405162461bcd60e51b8152600401610e4b90613876565b611026816124eb565b6007546006546000916001600160401b0380821692916116c091600160401b90910416856138e6565b6001600160401b03166116289190613952565b600054610100900460ff16158080156116f35750600054600160ff909116105b80611714575061170230612307565b158015611714575060005460ff166001145b6117775760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610e4b565b6000805460ff19166001179055801561179a576000805461ff0019166101001790555b6117a382612490565b6117ae826000612525565b6117c083600001518460200151612556565b6117d283604001518460600151612587565b6117ee83608001518460a001518560c001518660e001516125c0565b6117fc8361010001516125f9565b61180a836101200151612629565b8015611850576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61185d612388565b60035442600160a01b9091046001600160401b03161061188f5760405162461bcd60e51b8152600401610e4b9061389f565b600780546001600160401b03909216600160401b02600160401b600160801b0319909216919091179055565b6118c3612388565b60035442600160a01b9091046001600160401b0316106118f55760405162461bcd60e51b8152600401610e4b9061389f565b600855565b611902612388565b600c54600160e01b900460ff161561192c5760405162461bcd60e51b8152600401610e4b906138c6565b600c80546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b611960612388565b600c54600160f81b900460ff16156119a25760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401610e4b565b600c80546001600160f81b0316600160f81b179055565b6000818152600a60205260408120546001600160401b03166119dc576000611a04565b6009546000838152600a6020526040902054611a04916001600160401b03908116911661390e565b6001600160401b031692915050565b611a1b612388565b60035442600160a01b9091046001600160401b031610611a4d5760405162461bcd60e51b8152600401610e4b9061389f565b600780546001600160401b0319166001600160401b0392909216919091179055565b611a77612388565b600c805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b6002805403611ad65760405162461bcd60e51b8152600401610e4b9061383f565b6002805533611ae6838383612659565b6000611af284846122b8565b905060008111611b375760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b6044820152606401610e4b565b60008481526004602090815260408083206001600160a01b038716845290915281208054839290611b6990849061380e565b909155505060008481526004602090815260408083206001600160a01b0387168452825280832042600190910155600590915281208054839290611bae90849061380e565b90915550506001600160a01b038316611bd957611bd46001600160a01b0383168261267a565b611c4c565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb90611c0790859085906004016139c1565b6020604051808303816000875af1158015611c26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4a91906139da565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b611cb733612790565b600c54600160401b90046001600160a01b0316611d0e5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401610e4b565b600c54600160e81b900460ff1615611d685760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610e4b565b60005b83811015611eb8576000858583818110611d8757611d876137e2565b9050602002016020810190611d9c91906135fe565b6001600160a01b031603611de757611de2838383818110611dbf57611dbf6137e2565b600c546001600160a01b03600160401b909104169260209091020135905061267a565b611ea6565b848482818110611df957611df96137e2565b9050602002016020810190611e0e91906135fe565b600c546001600160a01b039182169163a9059cbb91600160401b900416858585818110611e3d57611e3d6137e2565b905060200201356040518363ffffffff1660e01b8152600401611e619291906139c1565b6020604051808303816000875af1158015611e80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea491906139da565b505b80611eb081613826565b915050611d6b565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a584848484604051611eee9493929190613a32565b60405180910390a150505050565b600080805b838110156112a457611f2a858583818110611f1e57611f1e6137e2565b9050602002013561102e565b611f34908361390e565b915080611f4081613826565b915050611f01565b6002805403611f695760405162461bcd60e51b8152600401610e4b9061383f565b60028055610e99828261291d565b611f7f612388565b6001600160a01b038116611fe45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610e4b565b61112e81612490565b600280540361200e5760405162461bcd60e51b8152600401610e4b9061383f565b600280556000805b8481101561213e57612041868683818110612033576120336137e2565b905060200201358585612659565b6000612065878784818110612058576120586137e2565b90506020020135866122b8565b9050801561212b578060046000898986818110612084576120846137e2565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b0316815260200190815260200160002060000160008282546120ce919061380e565b90915550429050600460008989868181106120eb576120eb6137e2565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a168252909252902060010155612128818461380e565b92505b508061213681613826565b915050612016565b506001600160a01b0383166000908152600560205260408120805483929061216790849061380e565b90915550506001600160a01b0383166121925761218d6001600160a01b0383168261267a565b612205565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906121c090859085906004016139c1565b6020604051808303816000875af11580156121df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220391906139da565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b133838787878660405161223e96959493929190613a95565b60405180910390a150506001600255505050565b61225a612388565b60035442600160a01b9091046001600160401b03161061228c5760405162461bcd60e51b8152600401610e4b9061389f565b600980546001600160401b03909216600160401b02600160401b600160801b0319909216919091179055565b6000806122d76122d06122ca85611337565b50600090565b8585612959565b60008581526004602090815260408083206001600160a01b03881684529091529020549091506114cd9082613ad4565b6001600160a01b03163b151590565b612320828261299e565b6003546040516342cb086360e11b81526001600160a01b039091169063859610c6906123529085908590600401613aeb565b600060405180830381600087803b15801561236c57600080fd5b505af1158015612380573d6000803e3d6000fd5b505050505050565b336123916114ea565b6001600160a01b0316146112cf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e4b565b6123f0816129e0565b600354604051636198e33960e01b8152600481018390526001600160a01b0390911690636198e339906024015b600060405180830381600087803b15801561243757600080fd5b505af115801561244b573d6000803e3d6000fd5b5050505050565b600754600090600160801b90046001600160401b0316156124845750600754600160801b90046001600160401b031690565b506001600160401b0390565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6124f4816129eb565b6003546040516337519c1960e21b8152600481018390526001600160a01b039091169063dd4670649060240161241d565b600054610100900460ff1661254c5760405162461bcd60e51b8152600401610e4b90613aff565b6112b982826129f6565b600054610100900460ff1661257d5760405162461bcd60e51b8152600401610e4b90613aff565b6112b98282612a90565b600054610100900460ff166125ae5760405162461bcd60e51b8152600401610e4b90613aff565b6125b6612af5565b6112b98282612b2c565b600054610100900460ff166125e75760405162461bcd60e51b8152600401610e4b90613aff565b6125f384848484612b8b565b50505050565b600054610100900460ff166126205760405162461bcd60e51b8152600401610e4b90613aff565b61112e81612c0c565b600054610100900460ff166126505760405162461bcd60e51b8152600401610e4b90613aff565b61112e81612c48565b612664838383612c9a565b61266f838383612d4f565b611850838383612d9a565b804710156126ca5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610e4b565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612717576040519150601f19603f3d011682016040523d82523d6000602084013e61271c565b606091505b50509050806118505760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610e4b565b6003600c54600160f01b900460ff1660038111156127b0576127b061354c565b036127ef5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401610e4b565b6002600c54600160f01b900460ff16600381111561280f5761280f61354c565b036128175750565b6001600c54600160f01b900460ff1660038111156128375761283761354c565b0361289a57600c546001600160a01b03828116600160401b909204161461112e5760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401610e4b565b6000600c54600160f01b900460ff1660038111156128ba576128ba61354c565b0361112e57806001600160a01b03166128d16114ea565b6001600160a01b03161461112e5760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401610e4b565b6129278282612e5f565b600354604051635d36598f60e01b81526001600160a01b0390911690635d36598f906123529085908590600401613aeb565b6007546000906001600160401b03166129718461102e565b61297b919061399b565b6001600160401b03166008546006546129949190613987565b6114cd9190613952565b334260005b8381101561244b576129ce83838787858181106129c2576129c26137e2565b90506020020135612ea1565b806129d881613826565b9150506129a3565b61112e334283612f49565b61112e334283612ea1565b600054610100900460ff16612a1d5760405162461bcd60e51b8152600401610e4b90613aff565b612a2d63ac2ba33360e01b612ff1565b600c8054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b836003811115612a8757612a8761354c565b02179055505050565b600054610100900460ff16612ab75760405162461bcd60e51b8152600401610e4b90613aff565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b038516171790556112b9631ba050e960e21b612ff1565b600054610100900460ff16612b1c5760405162461bcd60e51b8152600401610e4b90613aff565b6112cf63d664280160e01b612ff1565b600054610100900460ff16612b535760405162461bcd60e51b8152600401610e4b90613aff565b600980546001600160401b03838116600160401b026001600160801b0319909216908516171790556112b9633a41ba5360e11b612ff1565b600054610100900460ff16612bb25760405162461bcd60e51b8152600401610e4b90613aff565b6006849055600780546001600160401b03838116600160801b02600160801b600160c01b0319868316600160401b026001600160801b03199094169288169290921792909217161790556125f363c9f600a960e01b612ff1565b600054610100900460ff16612c335760405162461bcd60e51b8152600401610e4b90613aff565b600881905561112e632d5305cb60e21b612ff1565b600054610100900460ff16612c6f5760405162461bcd60e51b8152600401610e4b90613aff565b600c80546001600160401b0319166001600160401b03831617905561112e6317b2ef4360e31b612ff1565b6003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa158015612ce5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d099190613b4a565b6001600160a01b0316146118505760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b6044820152606401610e4b565b600c54426001600160401b03909116106118505760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b6044820152606401610e4b565b60075442600160401b9091046001600160401b031610612dea5760405162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b6044820152606401610e4b565b600754612e00906001600160401b031642613ad4565b60008481526004602090815260408083206001600160a01b0387168452909152902060010154106118505760405162461bcd60e51b8152602060048201526009602482015268544f4f5f4541524c5960b81b6044820152606401610e4b565b334260005b8381101561244b57612e8f8383878785818110612e8357612e836137e2565b90506020020135612f49565b80612e9981613826565b915050612e64565b6003546040516331a9108f60e11b8152600481018390526001600160a01b0390911690636352211e90602401602060405180830381865afa158015612eea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f0e9190613b4a565b6001600160a01b0316836001600160a01b031614612f3e5760405162461bcd60e51b8152600401610e4b90613b67565b611850838383613072565b6003546040516331a9108f60e11b8152600481018390526001600160a01b0390911690636352211e90602401602060405180830381865afa158015612f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb69190613b4a565b6001600160a01b0316836001600160a01b031614612fe65760405162461bcd60e51b8152600401610e4b90613b67565b61185083838361310b565b6001600160e01b0319808216900361304a5760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401610e4b565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b600954600160401b90046001600160401b031661308e8261102e565b6001600160401b0316106130dc5760405162461bcd60e51b815260206004820152601560248201527413505617d1155490551253d397d15610d151511151605a1b6044820152606401610e4b565b6000908152600a6020526040902080546001600160401b0319166001600160401b039290921691909117905550565b6000818152600a60205260409020546001600160401b031661315c5760405162461bcd60e51b815260206004820152600a6024820152691393d517d4d51052d15160b21b6044820152606401610e4b565b6009546000828152600a6020526040902054613184916001600160401b03908116911661390e565b6001600160401b0316826001600160401b031610156131de5760405162461bcd60e51b815260206004820152601660248201527509c9ea8bea6a882968a88be989e9c8ebe8a9c9eaa8e960531b6044820152606401610e4b565b6131e78161102e565b6000918252600b6020908152604080842080546001600160401b03949094166001600160401b0319948516179055600a909152909120805490911690555050565b60008083601f84011261323a57600080fd5b5081356001600160401b0381111561325157600080fd5b6020830191508360208260051b850101111561326c57600080fd5b9250929050565b6001600160a01b038116811461112e57600080fd5b803561329381613273565b919050565b6000806000604084860312156132ad57600080fd5b83356001600160401b038111156132c357600080fd5b6132cf86828701613228565b90945092505060208401356132e381613273565b809150509250925092565b60006020828403121561330057600080fd5b81356001600160e01b0319811681146114e357600080fd5b600060208083528351808285015260005b8181101561334557858101830151858201604001528201613329565b81811115613357576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561337f57600080fd5b5035919050565b6000806020838503121561339957600080fd5b82356001600160401b038111156133af57600080fd5b6133bb85828601613228565b90969095509350505050565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b0381118282101715613400576134006133c7565b60405290565b604051601f8201601f191681016001600160401b038111828210171561342e5761342e6133c7565b604052919050565b6000806000806080858703121561344c57600080fd5b843561345781613273565b935060208581013561346881613273565b93506040860135925060608601356001600160401b038082111561348b57600080fd5b818801915088601f83011261349f57600080fd5b8135818111156134b1576134b16133c7565b6134c3601f8201601f19168501613406565b915080825289848285010111156134d957600080fd5b808484018584013760008482840101525080935050505092959194509250565b80356001600160401b038116811461329357600080fd5b60006020828403121561352257600080fd5b6114e3826134f9565b60006020828403121561353d57600080fd5b8135600481106114e357600080fd5b634e487b7160e01b600052602160045260246000fd5b602081016004831061358457634e487b7160e01b600052602160045260246000fd5b91905290565b6020808252825182820181905260009190848201906040850190845b818110156135c2578351835292840192918401916001016135a6565b50909695505050505050565b600080604083850312156135e157600080fd5b8235915060208301356135f381613273565b809150509250929050565b60006020828403121561361057600080fd5b81356114e381613273565b6001600160a01b0391909116815260200190565b60008082840361016081121561364457600080fd5b6101408082121561365457600080fd5b61365c6133dd565b915061366785613288565b8252613675602086016134f9565b6020830152613686604086016134f9565b6040830152613697606086016134f9565b6060830152608085013560808301526136b260a086016134f9565b60a08301526136c360c086016134f9565b60c08301526136d460e086016134f9565b60e083015261010085810135908301526101206136f28187016134f9565b8184015250819350613705818601613288565b925050509250929050565b6000806000806040858703121561372657600080fd5b84356001600160401b038082111561373d57600080fd5b61374988838901613228565b9096509450602087013591508082111561376257600080fd5b5061376f87828801613228565b95989497509550505050565b6000806000806060858703121561379157600080fd5b84356001600160401b038111156137a757600080fd5b6137b387828801613228565b90955093505060208501356137c781613273565b915060408501356137d781613273565b939692955090935050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115613821576138216137f8565b500190565b600060018201613838576138386137f8565b5060010190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252600f908201526e1393d517d4d5105495115117d65155608a1b604082015260600190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b60006001600160401b0383811690831681811015613906576139066137f8565b039392505050565b60006001600160401b03808316818516808303821115613930576139306137f8565b01949350505050565b60006020828403121561394b57600080fd5b5051919050565b600081600019048311821515161561396c5761396c6137f8565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261399657613996613971565b500490565b60006001600160401b03808416806139b5576139b5613971565b92169190910492915050565b6001600160a01b03929092168252602082015260400190565b6000602082840312156139ec57600080fd5b815180151581146114e357600080fd5b81835260006001600160fb1b03831115613a1557600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b87811015613a75578235613a5881613273565b6001600160a01b0316825260209283019290910190600101613a45565b508381036020850152613a898186886139fc565b98975050505050505050565b600060018060a01b038089168352808816602084015260a06040840152613ac060a0840187896139fc565b941660608301525060800152949350505050565b600082821015613ae657613ae66137f8565b500390565b6020815260006114cd6020830184866139fc565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208284031215613b5c57600080fd5b81516114e381613273565b6020808252600f908201526e2727aa2faa27a5a2a72fa7aba722a960891b60408201526060019056fe455243373231204c6f636b6564205374616b696e6720456d697373696f6e2053747265616da26469706673582212208f25add58955fb37bf1a2c1165d774e3f40c6cebc48664da09c1cd40c8cce2a364736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/presets/ERC721ShareEmissionStream":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721ShareEmissionStream","sourceName":"contracts/streams/ERC721/presets/ERC721ShareEmissionStream.sol","abi":[{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint256","name":"emissionRate","type":"uint256"},{"internalType":"uint64","name":"emissionTimeUnit","type":"uint64"},{"internalType":"uint64","name":"emissionStart","type":"uint64"},{"internalType":"uint64","name":"emissionEnd","type":"uint64"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"uint64","name":"claimLockedUntil","type":"uint64"}],"internalType":"struct ERC721ShareEmissionStream.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"prevShares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newShares","type":"uint256"}],"name":"SharesUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimLockedUntil","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"calcUntil","type":"uint64"}],"name":"emissionAmountUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionEnd","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionStart","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emissionTimeUnit","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"getSharesByTokens","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721EmissionReleaseExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721LockableClaimExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721ShareSplitExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint256","name":"emissionRate","type":"uint256"},{"internalType":"uint64","name":"emissionTimeUnit","type":"uint64"},{"internalType":"uint64","name":"emissionStart","type":"uint64"},{"internalType":"uint64","name":"emissionEnd","type":"uint64"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"uint64","name":"claimLockedUntil","type":"uint64"}],"internalType":"struct ERC721ShareEmissionStream.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"rateByToken","outputs":[{"internalType":"uint256","name":"totalRate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"calcUntil","type":"uint64"}],"name":"releasedAmountUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setClaimLockedUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionEnd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setEmissionRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setEmissionTimeUnit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_shares","type":"uint256[]"}],"name":"setSharesForTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"shares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162003b8b38038062003b8b83398101604081905262000034916200087a565b6200003f3362000057565b6001600255620000508133620000b2565b5062000a75565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620000d35750600054600160ff909116105b80620001035750620000f0306200025760201b62001c411760201c565b15801562000103575060005460ff166001145b6200016c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000190576000805461ff0019166101001790555b6200019b8262000057565b620001a882600062000266565b82516020840151620001bb9190620002a0565b620001df8360400151846060015185608001518660a00151620002d660201b60201c565b620001f98360c001518460e001516200031460201b60201c565b6101008301516200020a906200034a565b801562000252576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b6001600160a01b03163b151590565b600054610100900460ff16620002905760405162461bcd60e51b8152600401620001639062000997565b6200029c828262000382565b5050565b600054610100900460ff16620002ca5760405162461bcd60e51b8152600401620001639062000997565b6200029c828262000429565b600054610100900460ff16620003005760405162461bcd60e51b8152600401620001639062000997565b6200030e8484848462000493565b50505050565b600054610100900460ff166200033e5760405162461bcd60e51b8152600401620001639062000997565b6200029c82826200051e565b600054610100900460ff16620003745760405162461bcd60e51b8152600401620001639062000997565b6200037f81620005a9565b50565b600054610100900460ff16620003ac5760405162461bcd60e51b8152600401620001639062000997565b620003be63ac2ba33360e01b620005fb565b600a8054600160401b600160e01b03198116680100000000000000006001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b836003811115620004205762000420620009e2565b02179055505050565b600054610100900460ff16620004535760405162461bcd60e51b8152600401620001639062000997565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b038516171790556200029c631ba050e960e21b620005fb565b600054610100900460ff16620004bd5760405162461bcd60e51b8152600401620001639062000997565b6006849055600780546001600160401b03838116600160801b02600160801b600160c01b031986831668010000000000000000026001600160801b03199094169288169290921792909217161790556200030e63c9f600a960e01b620005fb565b600054610100900460ff16620005485760405162461bcd60e51b8152600401620001639062000997565b81518151146200058b5760405162461bcd60e51b815260206004820152600d60248201526c082a48ea6be9a92a69a82a8869609b1b604482015260640162000163565b6200059782826200067f565b6200029c6333c7a33f60e11b620005fb565b600054610100900460ff16620005d35760405162461bcd60e51b8152600401620001639062000997565b600a80546001600160401b0319166001600160401b0383161790556200037f6317b2ef4360e31b5b6001600160e01b03198082169003620006575760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640162000163565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60005b81518110156200025257620006d6838281518110620006a557620006a5620009f8565b6020026020010151838381518110620006c257620006c2620009f8565b6020026020010151620006eb60201b60201c565b80620006e28162000a24565b91505062000682565b600082815260096020526040902080549082905560085481906200071190849062000a40565b6200071d919062000a5b565b60085560408051848152602081018390529081018390527ff81b1f9d8b5d36a5a67d13006a8b091a9b63e2a38b331d315d99c6daefd2ddcc9060600162000249565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b03811182821017156200079b576200079b6200075f565b60405290565b80516001600160a01b0381168114620007b957600080fd5b919050565b80516001600160401b0381168114620007b957600080fd5b600082601f830112620007e857600080fd5b815160206001600160401b03808311156200080757620008076200075f565b8260051b604051601f19603f830116810181811084821117156200082f576200082f6200075f565b6040529384528581018301938381019250878511156200084e57600080fd5b83870191505b848210156200086f5781518352918301919083019062000854565b979650505050505050565b6000602082840312156200088d57600080fd5b81516001600160401b0380821115620008a557600080fd5b908301906101208286031215620008bb57600080fd5b620008c562000775565b620008d083620007a1565b8152620008e060208401620007be565b602082015260408301516040820152620008fd60608401620007be565b60608201526200091060808401620007be565b60808201526200092360a08401620007be565b60a082015260c0830151828111156200093b57600080fd5b6200094987828601620007d6565b60c08301525060e0830151828111156200096257600080fd5b6200097087828601620007d6565b60e083015250610100915062000988828401620007be565b91810191909152949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820162000a395762000a3962000a0e565b5060010190565b6000821982111562000a565762000a5662000a0e565b500190565b60008282101562000a705762000a7062000a0e565b500390565b6131068062000a856000396000f3fe6080604052600436106102a55760003560e01c806384fd5ae01161016157806384fd5ae01461076657806389c6b815146107865780638da5cb5b146107a65780638fc852b1146107c85780639199690b146107e8578063968d9b2c146107fc57806396afc4501461081c5780639edfe83014610832578063a1bdb15e14610852578063a1cf649314610872578063a86b21e8146108b5578063a8b46d87146107e8578063aaf2f999146108d5578063af121f54146108f5578063c088184914610916578063c0bb38ff1461094c578063c723955a1461096c578063d1335b69146107e8578063d5ed4d5a14610981578063d97314f5146109a1578063da82b227146109c1578063dcbe353f146109d6578063ddd5e1b2146109fd578063de6d6d9614610a1d578063f2fde38b14610a3d578063f389b6e414610a5d578063f4415ad614610a7d578063f66e38c214610ab5578063f685d74614610ad557600080fd5b80630191c0af146102be57806301ffc9a7146102f157806306fdde031461032157806314427a9614610376578063150b7a02146103ae5780631c725fdc146103f257806325289bad146104125780632890d033146104395780632c0e13131461044e5780632c2330671461046e5780632d00b5871461048e578063379607f5146104bc5780633a98ef39146104dc5780633b3f12e2146104f25780633d2dded51461051257806340f379481461054f57806349561cb91461057c578063513da9481461059d57806354fd4d50146105c457806357a858fc146105f357806357dc48c8146106205780636057e0ec1461067457806361949636146106955780636ba4c138146106b5578063715018a6146106d557806378b094ca146106ea578063790c0c731461070a5780638368909c1461072a578063837fe1401461075157600080fd5b366102b957600034116102b757600080fd5b005b600080fd5b3480156102ca57600080fd5b506102de6102d936600461272a565b610af5565b6040519081526020015b60405180910390f35b3480156102fd57600080fd5b5061031161030c366004612780565b610b4d565b60405190151581526020016102e8565b34801561032d57600080fd5b506103696040518060400160405280601c81526020017b45524337323120536861726520456d697373696f6e2053747265616d60201b81525081565b6040516102e891906127aa565b34801561038257600080fd5b50600a54610396906001600160401b031681565b6040516001600160401b0390911681526020016102e8565b3480156103ba57600080fd5b506103d96103c936600461286e565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016102e8565b3480156103fe57600080fd5b506102b761040d366004612948565b610b8d565b34801561041e57600080fd5b5060035461039690600160a01b90046001600160401b031681565b34801561044557600080fd5b506102de610c1c565b34801561045a57600080fd5b506102b7610469366004612948565b610c2d565b34801561047a57600080fd5b506102b7610489366004612963565b610c89565b34801561049a57600080fd5b50600a546104af90600160f01b900460ff1681565b6040516102e8919061299a565b3480156104c857600080fd5b506102b76104d73660046129c2565b610ce8565b3480156104e857600080fd5b506102de60085481565b3480156104fe57600080fd5b506102de61050d36600461272a565b610cf6565b34801561051e57600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc546102de565b34801561055b57600080fd5b5061056f61056a3660046129db565b610d74565b6040516102e89190612a1c565b34801561058857600080fd5b50600a5461031190600160f81b900460ff1681565b3480156105a957600080fd5b5060075461039690600160401b90046001600160401b031681565b3480156105d057600080fd5b5061036960405180604001604052806003815260200162302e3160e81b81525081565b3480156105ff57600080fd5b506102de61060e3660046129c2565b60096020526000908152604090205481565b34801561062c57600080fd5b5061065f61063b366004612a60565b60046020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016102e8565b34801561068057600080fd5b50600a5461031190600160e01b900460ff1681565b3480156106a157600080fd5b50600754610396906001600160401b031681565b3480156106c157600080fd5b506102b76106d03660046129db565b610e2b565b3480156106e157600080fd5b506102b7610e3c565b3480156106f657600080fd5b506102b7610705366004612948565b610e50565b34801561071657600080fd5b506102de610725366004612a90565b610eb6565b34801561073657600080fd5b5060075461039690600160801b90046001600160401b031681565b34801561075d57600080fd5b506102b7610f7a565b34801561077257600080fd5b506102de6107813660046129db565b610fc1565b34801561079257600080fd5b506102de6107a13660046129db565b61102b565b3480156107b257600080fd5b506107bb611039565b6040516102e89190612aad565b3480156107d457600080fd5b506102b76107e3366004612b40565b61104e565b3480156107f457600080fd5b506001610311565b34801561080857600080fd5b506102de6108173660046129c2565b6110b3565b34801561082857600080fd5b506102de60065481565b34801561083e57600080fd5b506102de61084d366004612948565b6110c0565b34801561085e57600080fd5b506102b761086d3660046129c2565b611105565b34801561087e57600080fd5b506102de61088d366004612a60565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b3480156108c157600080fd5b506102de6108d0366004612948565b611144565b3480156108e157600080fd5b506102b76108f0366004612948565b61118a565b34801561090157600080fd5b50600a5461031190600160e81b900460ff1681565b34801561092257600080fd5b506102de610931366004612a90565b6001600160a01b031660009081526005602052604090205490565b34801561095857600080fd5b506102b7610967366004612a90565b6111f1565b34801561097857600080fd5b506102b761124f565b34801561098d57600080fd5b506003546107bb906001600160a01b031681565b3480156109ad57600080fd5b506102b76109bc366004612948565b6112b0565b3480156109cd57600080fd5b506102b761130c565b3480156109e257600080fd5b50600a546107bb90600160401b90046001600160a01b031681565b348015610a0957600080fd5b506102b7610a18366004612a60565b611352565b348015610a2957600080fd5b506102b7610a38366004612ba3565b61154b565b348015610a4957600080fd5b506102b7610a58366004612a90565b611799565b348015610a6957600080fd5b506102b7610a78366004612c0e565b61180f565b348015610a8957600080fd5b506102de610a983660046129c2565b600090815260046020908152604080832083805290915290205490565b348015610ac157600080fd5b506102de610ad0366004612a60565b611a74565b348015610ae157600080fd5b506102b7610af0366004612c75565b611acc565b600080805b84811015610b4257610b24868683818110610b1757610b17612d8c565b9050602002013585611a74565b610b2e9083612db8565b915080610b3a81612dd0565b915050610afa565b5090505b9392505050565b60006301ffc9a760e01b6001600160e01b031983161480610b8757506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b610b95611c50565b6003546001600160401b03600160a01b909104811690821611610bef5760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b60448201526064015b60405180910390fd5b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000610c286000610eb6565b905090565b610c35611c50565b60035442600160a01b9091046001600160401b031610610c675760405162461bcd60e51b8152600401610be690612de9565b600a80546001600160401b0319166001600160401b0392909216919091179055565b610c91611c50565b600a54600160f81b900460ff1615610cbb5760405162461bcd60e51b8152600401610be690612e10565b600a805482919060ff60f01b1916600160f01b836003811115610ce057610ce0612984565b021790555050565b610cf3816000611352565b50565b600080805b84811015610b425760046000878784818110610d1957610d19612d8c565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b031681526020019081526020016000206000015482610d609190612db8565b915080610d6c81612dd0565b915050610cfb565b60606000826001600160401b03811115610d9057610d906127ff565b604051908082528060200260200182016040528015610db9578160200160208202803683370190505b50905060005b8151811015610e235760096000868684818110610dde57610dde612d8c565b90506020020135815260200190815260200160002054828281518110610e0657610e06612d8c565b602090810291909101015280610e1b81612dd0565b915050610dbf565b509392505050565b610e38828260003361180f565b5050565b610e44611c50565b610e4e6000611caf565b565b610e58611c50565b60035442600160a01b9091046001600160401b031610610e8a5760405162461bcd60e51b8152600401610be690612de9565b600780546001600160401b03909216600160801b02600160801b600160c01b0319909216919091179055565b60006001600160a01b038216610eea576001600160a01b038216600090815260056020526040902054610b87904790612db8565b6040516370a0823160e01b81526001600160a01b038316906370a0823190610f16903090600401612aad565b602060405180830381865afa158015610f33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f579190612e30565b6001600160a01b038316600090815260056020526040902054610b879190612db8565b610f82611c50565b600a54600160e01b900460ff1615610fac5760405162461bcd60e51b8152600401610be690612e10565b600a805460ff60e01b1916600160e01b179055565b6000805b828110156110245760096000858584818110610fe357610fe3612d8c565b905060200201358152602001908152602001600020546006546110069190612e5f565b6110109083612db8565b91508061101c81612dd0565b915050610fc5565b5092915050565b6000610b4683836000610cf6565b6000546201000090046001600160a01b031690565b611056611c50565b81518151146110775760405162461bcd60e51b8152600401610be690612e73565b60035442600160a01b9091046001600160401b0316106110a95760405162461bcd60e51b8152600401610be690612de9565b610e388282611d0a565b6000610b87826000611a74565b6007546000906001600160401b03808216916110e591600160401b9091041684612e9a565b6110ef9190612ec2565b6001600160401b0316600654610b879190612ee8565b61110d611c50565b60035442600160a01b9091046001600160401b03161061113f5760405162461bcd60e51b8152600401610be690612de9565b600655565b6007546006546000916001600160401b03808216929161116d91600160401b9091041685612e9a565b6001600160401b03166111809190612ee8565b610b879190612e5f565b611192611c50565b60035442600160a01b9091046001600160401b0316106111c45760405162461bcd60e51b8152600401610be690612de9565b600780546001600160401b03909216600160401b0267ffffffffffffffff60401b19909216919091179055565b6111f9611c50565b600a54600160e01b900460ff16156112235760405162461bcd60e51b8152600401610be690612e10565b600a80546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b611257611c50565b600a54600160f81b900460ff16156112995760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401610be6565b600a80546001600160f81b0316600160f81b179055565b6112b8611c50565b60035442600160a01b9091046001600160401b0316106112ea5760405162461bcd60e51b8152600401610be690612de9565b600780546001600160401b0319166001600160401b0392909216919091179055565b611314611c50565b600a805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b60028054036113735760405162461bcd60e51b8152600401610be690612f07565b6002805533611383838383611d64565b600061138f8484611a74565b9050600081116113d45760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b6044820152606401610be6565b60008481526004602090815260408083206001600160a01b038716845290915281208054839290611406908490612db8565b909155505060008481526004602090815260408083206001600160a01b038716845282528083204260019091015560059091528120805483929061144b908490612db8565b90915550506001600160a01b038316611476576114716001600160a01b03831682611d85565b6114e9565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906114a49085908590600401612f3e565b6020604051808303816000875af11580156114c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e79190612f57565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b61155433611e9b565b600a54600160401b90046001600160a01b03166115ab5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401610be6565b600a54600160e81b900460ff16156116055760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610be6565b60005b8381101561175557600085858381811061162457611624612d8c565b90506020020160208101906116399190612a90565b6001600160a01b0316036116845761167f83838381811061165c5761165c612d8c565b600a546001600160a01b03600160401b9091041692602090910201359050611d85565b611743565b84848281811061169657611696612d8c565b90506020020160208101906116ab9190612a90565b600a546001600160a01b039182169163a9059cbb91600160401b9004168585858181106116da576116da612d8c565b905060200201356040518363ffffffff1660e01b81526004016116fe929190612f3e565b6020604051808303816000875af115801561171d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117419190612f57565b505b8061174d81612dd0565b915050611608565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a58484848460405161178b9493929190612faf565b60405180910390a150505050565b6117a1611c50565b6001600160a01b0381166118065760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610be6565b610cf381611caf565b60028054036118305760405162461bcd60e51b8152600401610be690612f07565b600280556000805b848110156119605761186386868381811061185557611855612d8c565b905060200201358585611d64565b600061188787878481811061187a5761187a612d8c565b9050602002013586611a74565b9050801561194d5780600460008989868181106118a6576118a6612d8c565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b0316815260200190815260200160002060000160008282546118f09190612db8565b909155504290506004600089898681811061190d5761190d612d8c565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a16825290925290206001015561194a8184612db8565b92505b508061195881612dd0565b915050611838565b506001600160a01b03831660009081526005602052604081208054839290611989908490612db8565b90915550506001600160a01b0383166119b4576119af6001600160a01b03831682611d85565b611a27565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906119e29085908590600401612f3e565b6020604051808303816000875af1158015611a01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a259190612f57565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b1338387878786604051611a6096959493929190613012565b60405180910390a150506001600255505050565b600080611a94611a8d611a8685610eb6565b8686612028565b85856120b0565b60008581526004602090815260408083206001600160a01b0388168452909152902054909150611ac49082613051565b949350505050565b600054610100900460ff1615808015611aec5750600054600160ff909116105b80611b0d5750611afb30611c41565b158015611b0d575060005460ff166001145b611b705760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610be6565b6000805460ff191660011790558015611b93576000805461ff0019166101001790555b611b9c82611caf565b611ba78260006120d9565b611bb98360000151846020015161210a565b611bd58360400151846060015185608001518660a0015161213b565b611be78360c001518460e00151612174565b611bf58361010001516121a5565b8015611c3c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b6001600160a01b03163b151590565b33611c59611039565b6001600160a01b031614610e4e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be6565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b60005b8151811015611c3c57611d52838281518110611d2b57611d2b612d8c565b6020026020010151838381518110611d4557611d45612d8c565b60200260200101516121d5565b80611d5c81612dd0565b915050611d0d565b611d6f838383612244565b611d7a8383836122f9565b611c3c838383612344565b80471015611dd55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610be6565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611e22576040519150601f19603f3d011682016040523d82523d6000602084013e611e27565b606091505b5050905080611c3c5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610be6565b6003600a54600160f01b900460ff166003811115611ebb57611ebb612984565b03611efa5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401610be6565b6002600a54600160f01b900460ff166003811115611f1a57611f1a612984565b03611f225750565b6001600a54600160f01b900460ff166003811115611f4257611f42612984565b03611fa557600a546001600160a01b03828116600160401b9092041614610cf35760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401610be6565b6000600a54600160f01b900460ff166003811115611fc557611fc5612984565b03610cf357806001600160a01b0316611fdc611039565b6001600160a01b031614610cf35760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401610be6565b600754600090600160401b90046001600160401b031642101561204d57506000610b46565b600754600160801b90046001600160401b03161580159061207f5750600754600160801b90046001600160401b031642115b156120a7576007546120a090600160801b90046001600160401b03166110c0565b9050610b46565b6120a0426110c0565b6008546000838152600960205260408120549091906120cf9086612ee8565b611ac49190612e5f565b600054610100900460ff166121005760405162461bcd60e51b8152600401610be690613068565b610e388282612409565b600054610100900460ff166121315760405162461bcd60e51b8152600401610be690613068565b610e3882826124a3565b600054610100900460ff166121625760405162461bcd60e51b8152600401610be690613068565b61216e84848484612508565b50505050565b600054610100900460ff1661219b5760405162461bcd60e51b8152600401610be690613068565b610e388282612589565b600054610100900460ff166121cc5760405162461bcd60e51b8152600401610be690613068565b610cf3816125eb565b600082815260096020526040902080549082905560085481906121f9908490612db8565b6122039190613051565b60085560408051848152602081018390529081018390527ff81b1f9d8b5d36a5a67d13006a8b091a9b63e2a38b331d315d99c6daefd2ddcc90606001611c33565b6003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa15801561228f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b391906130b3565b6001600160a01b031614611c3c5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b6044820152606401610be6565b600a54426001600160401b0390911610611c3c5760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b6044820152606401610be6565b60075442600160401b9091046001600160401b0316106123945760405162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b6044820152606401610be6565b6007546123aa906001600160401b031642613051565b60008481526004602090815260408083206001600160a01b038716845290915290206001015410611c3c5760405162461bcd60e51b8152602060048201526009602482015268544f4f5f4541524c5960b81b6044820152606401610be6565b600054610100900460ff166124305760405162461bcd60e51b8152600401610be690613068565b61244063ac2ba33360e01b612639565b600a8054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b83600381111561249a5761249a612984565b02179055505050565b600054610100900460ff166124ca5760405162461bcd60e51b8152600401610be690613068565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055610e38631ba050e960e21b612639565b600054610100900460ff1661252f5760405162461bcd60e51b8152600401610be690613068565b6006849055600780546001600160401b03838116600160801b02600160801b600160c01b0319868316600160401b026001600160801b031990941692881692909217929092171617905561216e63c9f600a960e01b612639565b600054610100900460ff166125b05760405162461bcd60e51b8152600401610be690613068565b81518151146125d15760405162461bcd60e51b8152600401610be690612e73565b6125db8282611d0a565b610e386333c7a33f60e11b612639565b600054610100900460ff166126125760405162461bcd60e51b8152600401610be690613068565b600a80546001600160401b0319166001600160401b038316179055610cf36317b2ef4360e31b5b6001600160e01b031980821690036126925760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401610be6565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60008083601f8401126126cc57600080fd5b5081356001600160401b038111156126e357600080fd5b6020830191508360208260051b85010111156126fe57600080fd5b9250929050565b6001600160a01b0381168114610cf357600080fd5b803561272581612705565b919050565b60008060006040848603121561273f57600080fd5b83356001600160401b0381111561275557600080fd5b612761868287016126ba565b909450925050602084013561277581612705565b809150509250925092565b60006020828403121561279257600080fd5b81356001600160e01b031981168114610b4657600080fd5b600060208083528351808285015260005b818110156127d7578581018301518582016040015282016127bb565b818111156127e9576000604083870101525b50601f01601f1916929092016040019392505050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715612838576128386127ff565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612866576128666127ff565b604052919050565b6000806000806080858703121561288457600080fd5b843561288f81612705565b93506020858101356128a081612705565b93506040860135925060608601356001600160401b03808211156128c357600080fd5b818801915088601f8301126128d757600080fd5b8135818111156128e9576128e96127ff565b6128fb601f8201601f1916850161283e565b9150808252898482850101111561291157600080fd5b808484018584013760008482840101525080935050505092959194509250565b80356001600160401b038116811461272557600080fd5b60006020828403121561295a57600080fd5b610b4682612931565b60006020828403121561297557600080fd5b813560048110610b4657600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106129bc57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156129d457600080fd5b5035919050565b600080602083850312156129ee57600080fd5b82356001600160401b03811115612a0457600080fd5b612a10858286016126ba565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b81811015612a5457835183529284019291840191600101612a38565b50909695505050505050565b60008060408385031215612a7357600080fd5b823591506020830135612a8581612705565b809150509250929050565b600060208284031215612aa257600080fd5b8135610b4681612705565b6001600160a01b0391909116815260200190565b600082601f830112612ad257600080fd5b813560206001600160401b03821115612aed57612aed6127ff565b8160051b612afc82820161283e565b9283528481018201928281019087851115612b1657600080fd5b83870192505b84831015612b3557823582529183019190830190612b1c565b979650505050505050565b60008060408385031215612b5357600080fd5b82356001600160401b0380821115612b6a57600080fd5b612b7686838701612ac1565b93506020850135915080821115612b8c57600080fd5b50612b9985828601612ac1565b9150509250929050565b60008060008060408587031215612bb957600080fd5b84356001600160401b0380821115612bd057600080fd5b612bdc888389016126ba565b90965094506020870135915080821115612bf557600080fd5b50612c02878288016126ba565b95989497509550505050565b60008060008060608587031215612c2457600080fd5b84356001600160401b03811115612c3a57600080fd5b612c46878288016126ba565b9095509350506020850135612c5a81612705565b91506040850135612c6a81612705565b939692955090935050565b60008060408385031215612c8857600080fd5b82356001600160401b0380821115612c9f57600080fd5b908401906101208287031215612cb457600080fd5b612cbc612815565b612cc58361271a565b8152612cd360208401612931565b602082015260408301356040820152612cee60608401612931565b6060820152612cff60808401612931565b6080820152612d1060a08401612931565b60a082015260c083013582811115612d2757600080fd5b612d3388828601612ac1565b60c08301525060e083013582811115612d4b57600080fd5b612d5788828601612ac1565b60e0830152506101009150612d6d828401612931565b82820152809450505050612d836020840161271a565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115612dcb57612dcb612da2565b500190565b600060018201612de257612de2612da2565b5060010190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b600060208284031215612e4257600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600082612e6e57612e6e612e49565b500490565b6020808252600d908201526c082a48ea6be9a92a69a82a8869609b1b604082015260600190565b60006001600160401b0383811690831681811015612eba57612eba612da2565b039392505050565b60006001600160401b0380841680612edc57612edc612e49565b92169190910492915050565b6000816000190483118215151615612f0257612f02612da2565b500290565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b03929092168252602082015260400190565b600060208284031215612f6957600080fd5b81518015158114610b4657600080fd5b81835260006001600160fb1b03831115612f9257600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b87811015612ff2578235612fd581612705565b6001600160a01b0316825260209283019290910190600101612fc2565b508381036020850152613006818688612f79565b98975050505050505050565b600060018060a01b038089168352808816602084015260a0604084015261303d60a084018789612f79565b941660608301525060800152949350505050565b60008282101561306357613063612da2565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000602082840312156130c557600080fd5b8151610b468161270556fea2646970667358221220ddf9a9669766f1f409fe847aa01974c11ecaf7a5840b9995f80a334f80bff6ce64736f6c634300080f0033","deployedBytecode":"0x6080604052600436106102a55760003560e01c806384fd5ae01161016157806384fd5ae01461076657806389c6b815146107865780638da5cb5b146107a65780638fc852b1146107c85780639199690b146107e8578063968d9b2c146107fc57806396afc4501461081c5780639edfe83014610832578063a1bdb15e14610852578063a1cf649314610872578063a86b21e8146108b5578063a8b46d87146107e8578063aaf2f999146108d5578063af121f54146108f5578063c088184914610916578063c0bb38ff1461094c578063c723955a1461096c578063d1335b69146107e8578063d5ed4d5a14610981578063d97314f5146109a1578063da82b227146109c1578063dcbe353f146109d6578063ddd5e1b2146109fd578063de6d6d9614610a1d578063f2fde38b14610a3d578063f389b6e414610a5d578063f4415ad614610a7d578063f66e38c214610ab5578063f685d74614610ad557600080fd5b80630191c0af146102be57806301ffc9a7146102f157806306fdde031461032157806314427a9614610376578063150b7a02146103ae5780631c725fdc146103f257806325289bad146104125780632890d033146104395780632c0e13131461044e5780632c2330671461046e5780632d00b5871461048e578063379607f5146104bc5780633a98ef39146104dc5780633b3f12e2146104f25780633d2dded51461051257806340f379481461054f57806349561cb91461057c578063513da9481461059d57806354fd4d50146105c457806357a858fc146105f357806357dc48c8146106205780636057e0ec1461067457806361949636146106955780636ba4c138146106b5578063715018a6146106d557806378b094ca146106ea578063790c0c731461070a5780638368909c1461072a578063837fe1401461075157600080fd5b366102b957600034116102b757600080fd5b005b600080fd5b3480156102ca57600080fd5b506102de6102d936600461272a565b610af5565b6040519081526020015b60405180910390f35b3480156102fd57600080fd5b5061031161030c366004612780565b610b4d565b60405190151581526020016102e8565b34801561032d57600080fd5b506103696040518060400160405280601c81526020017b45524337323120536861726520456d697373696f6e2053747265616d60201b81525081565b6040516102e891906127aa565b34801561038257600080fd5b50600a54610396906001600160401b031681565b6040516001600160401b0390911681526020016102e8565b3480156103ba57600080fd5b506103d96103c936600461286e565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016102e8565b3480156103fe57600080fd5b506102b761040d366004612948565b610b8d565b34801561041e57600080fd5b5060035461039690600160a01b90046001600160401b031681565b34801561044557600080fd5b506102de610c1c565b34801561045a57600080fd5b506102b7610469366004612948565b610c2d565b34801561047a57600080fd5b506102b7610489366004612963565b610c89565b34801561049a57600080fd5b50600a546104af90600160f01b900460ff1681565b6040516102e8919061299a565b3480156104c857600080fd5b506102b76104d73660046129c2565b610ce8565b3480156104e857600080fd5b506102de60085481565b3480156104fe57600080fd5b506102de61050d36600461272a565b610cf6565b34801561051e57600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc546102de565b34801561055b57600080fd5b5061056f61056a3660046129db565b610d74565b6040516102e89190612a1c565b34801561058857600080fd5b50600a5461031190600160f81b900460ff1681565b3480156105a957600080fd5b5060075461039690600160401b90046001600160401b031681565b3480156105d057600080fd5b5061036960405180604001604052806003815260200162302e3160e81b81525081565b3480156105ff57600080fd5b506102de61060e3660046129c2565b60096020526000908152604090205481565b34801561062c57600080fd5b5061065f61063b366004612a60565b60046020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016102e8565b34801561068057600080fd5b50600a5461031190600160e01b900460ff1681565b3480156106a157600080fd5b50600754610396906001600160401b031681565b3480156106c157600080fd5b506102b76106d03660046129db565b610e2b565b3480156106e157600080fd5b506102b7610e3c565b3480156106f657600080fd5b506102b7610705366004612948565b610e50565b34801561071657600080fd5b506102de610725366004612a90565b610eb6565b34801561073657600080fd5b5060075461039690600160801b90046001600160401b031681565b34801561075d57600080fd5b506102b7610f7a565b34801561077257600080fd5b506102de6107813660046129db565b610fc1565b34801561079257600080fd5b506102de6107a13660046129db565b61102b565b3480156107b257600080fd5b506107bb611039565b6040516102e89190612aad565b3480156107d457600080fd5b506102b76107e3366004612b40565b61104e565b3480156107f457600080fd5b506001610311565b34801561080857600080fd5b506102de6108173660046129c2565b6110b3565b34801561082857600080fd5b506102de60065481565b34801561083e57600080fd5b506102de61084d366004612948565b6110c0565b34801561085e57600080fd5b506102b761086d3660046129c2565b611105565b34801561087e57600080fd5b506102de61088d366004612a60565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b3480156108c157600080fd5b506102de6108d0366004612948565b611144565b3480156108e157600080fd5b506102b76108f0366004612948565b61118a565b34801561090157600080fd5b50600a5461031190600160e81b900460ff1681565b34801561092257600080fd5b506102de610931366004612a90565b6001600160a01b031660009081526005602052604090205490565b34801561095857600080fd5b506102b7610967366004612a90565b6111f1565b34801561097857600080fd5b506102b761124f565b34801561098d57600080fd5b506003546107bb906001600160a01b031681565b3480156109ad57600080fd5b506102b76109bc366004612948565b6112b0565b3480156109cd57600080fd5b506102b761130c565b3480156109e257600080fd5b50600a546107bb90600160401b90046001600160a01b031681565b348015610a0957600080fd5b506102b7610a18366004612a60565b611352565b348015610a2957600080fd5b506102b7610a38366004612ba3565b61154b565b348015610a4957600080fd5b506102b7610a58366004612a90565b611799565b348015610a6957600080fd5b506102b7610a78366004612c0e565b61180f565b348015610a8957600080fd5b506102de610a983660046129c2565b600090815260046020908152604080832083805290915290205490565b348015610ac157600080fd5b506102de610ad0366004612a60565b611a74565b348015610ae157600080fd5b506102b7610af0366004612c75565b611acc565b600080805b84811015610b4257610b24868683818110610b1757610b17612d8c565b9050602002013585611a74565b610b2e9083612db8565b915080610b3a81612dd0565b915050610afa565b5090505b9392505050565b60006301ffc9a760e01b6001600160e01b031983161480610b8757506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b610b95611c50565b6003546001600160401b03600160a01b909104811690821611610bef5760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b60448201526064015b60405180910390fd5b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000610c286000610eb6565b905090565b610c35611c50565b60035442600160a01b9091046001600160401b031610610c675760405162461bcd60e51b8152600401610be690612de9565b600a80546001600160401b0319166001600160401b0392909216919091179055565b610c91611c50565b600a54600160f81b900460ff1615610cbb5760405162461bcd60e51b8152600401610be690612e10565b600a805482919060ff60f01b1916600160f01b836003811115610ce057610ce0612984565b021790555050565b610cf3816000611352565b50565b600080805b84811015610b425760046000878784818110610d1957610d19612d8c565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b031681526020019081526020016000206000015482610d609190612db8565b915080610d6c81612dd0565b915050610cfb565b60606000826001600160401b03811115610d9057610d906127ff565b604051908082528060200260200182016040528015610db9578160200160208202803683370190505b50905060005b8151811015610e235760096000868684818110610dde57610dde612d8c565b90506020020135815260200190815260200160002054828281518110610e0657610e06612d8c565b602090810291909101015280610e1b81612dd0565b915050610dbf565b509392505050565b610e38828260003361180f565b5050565b610e44611c50565b610e4e6000611caf565b565b610e58611c50565b60035442600160a01b9091046001600160401b031610610e8a5760405162461bcd60e51b8152600401610be690612de9565b600780546001600160401b03909216600160801b02600160801b600160c01b0319909216919091179055565b60006001600160a01b038216610eea576001600160a01b038216600090815260056020526040902054610b87904790612db8565b6040516370a0823160e01b81526001600160a01b038316906370a0823190610f16903090600401612aad565b602060405180830381865afa158015610f33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f579190612e30565b6001600160a01b038316600090815260056020526040902054610b879190612db8565b610f82611c50565b600a54600160e01b900460ff1615610fac5760405162461bcd60e51b8152600401610be690612e10565b600a805460ff60e01b1916600160e01b179055565b6000805b828110156110245760096000858584818110610fe357610fe3612d8c565b905060200201358152602001908152602001600020546006546110069190612e5f565b6110109083612db8565b91508061101c81612dd0565b915050610fc5565b5092915050565b6000610b4683836000610cf6565b6000546201000090046001600160a01b031690565b611056611c50565b81518151146110775760405162461bcd60e51b8152600401610be690612e73565b60035442600160a01b9091046001600160401b0316106110a95760405162461bcd60e51b8152600401610be690612de9565b610e388282611d0a565b6000610b87826000611a74565b6007546000906001600160401b03808216916110e591600160401b9091041684612e9a565b6110ef9190612ec2565b6001600160401b0316600654610b879190612ee8565b61110d611c50565b60035442600160a01b9091046001600160401b03161061113f5760405162461bcd60e51b8152600401610be690612de9565b600655565b6007546006546000916001600160401b03808216929161116d91600160401b9091041685612e9a565b6001600160401b03166111809190612ee8565b610b879190612e5f565b611192611c50565b60035442600160a01b9091046001600160401b0316106111c45760405162461bcd60e51b8152600401610be690612de9565b600780546001600160401b03909216600160401b0267ffffffffffffffff60401b19909216919091179055565b6111f9611c50565b600a54600160e01b900460ff16156112235760405162461bcd60e51b8152600401610be690612e10565b600a80546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b611257611c50565b600a54600160f81b900460ff16156112995760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401610be6565b600a80546001600160f81b0316600160f81b179055565b6112b8611c50565b60035442600160a01b9091046001600160401b0316106112ea5760405162461bcd60e51b8152600401610be690612de9565b600780546001600160401b0319166001600160401b0392909216919091179055565b611314611c50565b600a805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b60028054036113735760405162461bcd60e51b8152600401610be690612f07565b6002805533611383838383611d64565b600061138f8484611a74565b9050600081116113d45760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b6044820152606401610be6565b60008481526004602090815260408083206001600160a01b038716845290915281208054839290611406908490612db8565b909155505060008481526004602090815260408083206001600160a01b038716845282528083204260019091015560059091528120805483929061144b908490612db8565b90915550506001600160a01b038316611476576114716001600160a01b03831682611d85565b6114e9565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906114a49085908590600401612f3e565b6020604051808303816000875af11580156114c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e79190612f57565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b61155433611e9b565b600a54600160401b90046001600160a01b03166115ab5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401610be6565b600a54600160e81b900460ff16156116055760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610be6565b60005b8381101561175557600085858381811061162457611624612d8c565b90506020020160208101906116399190612a90565b6001600160a01b0316036116845761167f83838381811061165c5761165c612d8c565b600a546001600160a01b03600160401b9091041692602090910201359050611d85565b611743565b84848281811061169657611696612d8c565b90506020020160208101906116ab9190612a90565b600a546001600160a01b039182169163a9059cbb91600160401b9004168585858181106116da576116da612d8c565b905060200201356040518363ffffffff1660e01b81526004016116fe929190612f3e565b6020604051808303816000875af115801561171d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117419190612f57565b505b8061174d81612dd0565b915050611608565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a58484848460405161178b9493929190612faf565b60405180910390a150505050565b6117a1611c50565b6001600160a01b0381166118065760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610be6565b610cf381611caf565b60028054036118305760405162461bcd60e51b8152600401610be690612f07565b600280556000805b848110156119605761186386868381811061185557611855612d8c565b905060200201358585611d64565b600061188787878481811061187a5761187a612d8c565b9050602002013586611a74565b9050801561194d5780600460008989868181106118a6576118a6612d8c565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b0316815260200190815260200160002060000160008282546118f09190612db8565b909155504290506004600089898681811061190d5761190d612d8c565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a16825290925290206001015561194a8184612db8565b92505b508061195881612dd0565b915050611838565b506001600160a01b03831660009081526005602052604081208054839290611989908490612db8565b90915550506001600160a01b0383166119b4576119af6001600160a01b03831682611d85565b611a27565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906119e29085908590600401612f3e565b6020604051808303816000875af1158015611a01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a259190612f57565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b1338387878786604051611a6096959493929190613012565b60405180910390a150506001600255505050565b600080611a94611a8d611a8685610eb6565b8686612028565b85856120b0565b60008581526004602090815260408083206001600160a01b0388168452909152902054909150611ac49082613051565b949350505050565b600054610100900460ff1615808015611aec5750600054600160ff909116105b80611b0d5750611afb30611c41565b158015611b0d575060005460ff166001145b611b705760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610be6565b6000805460ff191660011790558015611b93576000805461ff0019166101001790555b611b9c82611caf565b611ba78260006120d9565b611bb98360000151846020015161210a565b611bd58360400151846060015185608001518660a0015161213b565b611be78360c001518460e00151612174565b611bf58361010001516121a5565b8015611c3c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b6001600160a01b03163b151590565b33611c59611039565b6001600160a01b031614610e4e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be6565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b60005b8151811015611c3c57611d52838281518110611d2b57611d2b612d8c565b6020026020010151838381518110611d4557611d45612d8c565b60200260200101516121d5565b80611d5c81612dd0565b915050611d0d565b611d6f838383612244565b611d7a8383836122f9565b611c3c838383612344565b80471015611dd55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610be6565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611e22576040519150601f19603f3d011682016040523d82523d6000602084013e611e27565b606091505b5050905080611c3c5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610be6565b6003600a54600160f01b900460ff166003811115611ebb57611ebb612984565b03611efa5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401610be6565b6002600a54600160f01b900460ff166003811115611f1a57611f1a612984565b03611f225750565b6001600a54600160f01b900460ff166003811115611f4257611f42612984565b03611fa557600a546001600160a01b03828116600160401b9092041614610cf35760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401610be6565b6000600a54600160f01b900460ff166003811115611fc557611fc5612984565b03610cf357806001600160a01b0316611fdc611039565b6001600160a01b031614610cf35760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401610be6565b600754600090600160401b90046001600160401b031642101561204d57506000610b46565b600754600160801b90046001600160401b03161580159061207f5750600754600160801b90046001600160401b031642115b156120a7576007546120a090600160801b90046001600160401b03166110c0565b9050610b46565b6120a0426110c0565b6008546000838152600960205260408120549091906120cf9086612ee8565b611ac49190612e5f565b600054610100900460ff166121005760405162461bcd60e51b8152600401610be690613068565b610e388282612409565b600054610100900460ff166121315760405162461bcd60e51b8152600401610be690613068565b610e3882826124a3565b600054610100900460ff166121625760405162461bcd60e51b8152600401610be690613068565b61216e84848484612508565b50505050565b600054610100900460ff1661219b5760405162461bcd60e51b8152600401610be690613068565b610e388282612589565b600054610100900460ff166121cc5760405162461bcd60e51b8152600401610be690613068565b610cf3816125eb565b600082815260096020526040902080549082905560085481906121f9908490612db8565b6122039190613051565b60085560408051848152602081018390529081018390527ff81b1f9d8b5d36a5a67d13006a8b091a9b63e2a38b331d315d99c6daefd2ddcc90606001611c33565b6003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa15801561228f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b391906130b3565b6001600160a01b031614611c3c5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b6044820152606401610be6565b600a54426001600160401b0390911610611c3c5760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b6044820152606401610be6565b60075442600160401b9091046001600160401b0316106123945760405162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b6044820152606401610be6565b6007546123aa906001600160401b031642613051565b60008481526004602090815260408083206001600160a01b038716845290915290206001015410611c3c5760405162461bcd60e51b8152602060048201526009602482015268544f4f5f4541524c5960b81b6044820152606401610be6565b600054610100900460ff166124305760405162461bcd60e51b8152600401610be690613068565b61244063ac2ba33360e01b612639565b600a8054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b83600381111561249a5761249a612984565b02179055505050565b600054610100900460ff166124ca5760405162461bcd60e51b8152600401610be690613068565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055610e38631ba050e960e21b612639565b600054610100900460ff1661252f5760405162461bcd60e51b8152600401610be690613068565b6006849055600780546001600160401b03838116600160801b02600160801b600160c01b0319868316600160401b026001600160801b031990941692881692909217929092171617905561216e63c9f600a960e01b612639565b600054610100900460ff166125b05760405162461bcd60e51b8152600401610be690613068565b81518151146125d15760405162461bcd60e51b8152600401610be690612e73565b6125db8282611d0a565b610e386333c7a33f60e11b612639565b600054610100900460ff166126125760405162461bcd60e51b8152600401610be690613068565b600a80546001600160401b0319166001600160401b038316179055610cf36317b2ef4360e31b5b6001600160e01b031980821690036126925760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401610be6565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60008083601f8401126126cc57600080fd5b5081356001600160401b038111156126e357600080fd5b6020830191508360208260051b85010111156126fe57600080fd5b9250929050565b6001600160a01b0381168114610cf357600080fd5b803561272581612705565b919050565b60008060006040848603121561273f57600080fd5b83356001600160401b0381111561275557600080fd5b612761868287016126ba565b909450925050602084013561277581612705565b809150509250925092565b60006020828403121561279257600080fd5b81356001600160e01b031981168114610b4657600080fd5b600060208083528351808285015260005b818110156127d7578581018301518582016040015282016127bb565b818111156127e9576000604083870101525b50601f01601f1916929092016040019392505050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715612838576128386127ff565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612866576128666127ff565b604052919050565b6000806000806080858703121561288457600080fd5b843561288f81612705565b93506020858101356128a081612705565b93506040860135925060608601356001600160401b03808211156128c357600080fd5b818801915088601f8301126128d757600080fd5b8135818111156128e9576128e96127ff565b6128fb601f8201601f1916850161283e565b9150808252898482850101111561291157600080fd5b808484018584013760008482840101525080935050505092959194509250565b80356001600160401b038116811461272557600080fd5b60006020828403121561295a57600080fd5b610b4682612931565b60006020828403121561297557600080fd5b813560048110610b4657600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106129bc57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156129d457600080fd5b5035919050565b600080602083850312156129ee57600080fd5b82356001600160401b03811115612a0457600080fd5b612a10858286016126ba565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b81811015612a5457835183529284019291840191600101612a38565b50909695505050505050565b60008060408385031215612a7357600080fd5b823591506020830135612a8581612705565b809150509250929050565b600060208284031215612aa257600080fd5b8135610b4681612705565b6001600160a01b0391909116815260200190565b600082601f830112612ad257600080fd5b813560206001600160401b03821115612aed57612aed6127ff565b8160051b612afc82820161283e565b9283528481018201928281019087851115612b1657600080fd5b83870192505b84831015612b3557823582529183019190830190612b1c565b979650505050505050565b60008060408385031215612b5357600080fd5b82356001600160401b0380821115612b6a57600080fd5b612b7686838701612ac1565b93506020850135915080821115612b8c57600080fd5b50612b9985828601612ac1565b9150509250929050565b60008060008060408587031215612bb957600080fd5b84356001600160401b0380821115612bd057600080fd5b612bdc888389016126ba565b90965094506020870135915080821115612bf557600080fd5b50612c02878288016126ba565b95989497509550505050565b60008060008060608587031215612c2457600080fd5b84356001600160401b03811115612c3a57600080fd5b612c46878288016126ba565b9095509350506020850135612c5a81612705565b91506040850135612c6a81612705565b939692955090935050565b60008060408385031215612c8857600080fd5b82356001600160401b0380821115612c9f57600080fd5b908401906101208287031215612cb457600080fd5b612cbc612815565b612cc58361271a565b8152612cd360208401612931565b602082015260408301356040820152612cee60608401612931565b6060820152612cff60808401612931565b6080820152612d1060a08401612931565b60a082015260c083013582811115612d2757600080fd5b612d3388828601612ac1565b60c08301525060e083013582811115612d4b57600080fd5b612d5788828601612ac1565b60e0830152506101009150612d6d828401612931565b82820152809450505050612d836020840161271a565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115612dcb57612dcb612da2565b500190565b600060018201612de257612de2612da2565b5060010190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b600060208284031215612e4257600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600082612e6e57612e6e612e49565b500490565b6020808252600d908201526c082a48ea6be9a92a69a82a8869609b1b604082015260600190565b60006001600160401b0383811690831681811015612eba57612eba612da2565b039392505050565b60006001600160401b0380841680612edc57612edc612e49565b92169190910492915050565b6000816000190483118215151615612f0257612f02612da2565b500290565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b03929092168252602082015260400190565b600060208284031215612f6957600080fd5b81518015158114610b4657600080fd5b81835260006001600160fb1b03831115612f9257600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b87811015612ff2578235612fd581612705565b6001600160a01b0316825260209283019290910190600101612fc2565b508381036020850152613006818688612f79565b98975050505050505050565b600060018060a01b038089168352808816602084015260a0604084015261303d60a084018789612f79565b941660608301525060800152949350505050565b60008282101561306357613063612da2565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000602082840312156130c557600080fd5b8151610b468161270556fea2646970667358221220ddf9a9669766f1f409fe847aa01974c11ecaf7a5840b9995f80a334f80bff6ce64736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/presets/ERC721ShareInstantStream":{"address":{"1":"0x5082a0AAffd7A82B16A15b6Ef42774A94527E69B","3":"0x2f6ccd01759b3DB70e15f29fa647873Ed6bD42E3","4":"0x8eDba367b8E43C7AD6Fcd1A1E49f774579170b35","5":"0x2ccF63FE5613d729E4bc7edAb240aba09B2A703b","25":"0x35F6B1d81aED96Ae0019bdec354a80E99219bEc5","56":"0x1dc99a44b07f1790647087D789173991DFa5EE65","65":"0xF8fA73a567812c638e3258144965c03680CD2D87","66":"0xdb2730fBef4d69d28Bb16d0C071Fca42ED59bE00","97":"0xe0F561A9C77c04092593Ff88370D703F239B4f7f","137":"0x17DF0F10FB59B270Bf207986282911fF450CE674","250":"0xF8ABF0b720378bb25b3f73c01BDBd1A7EC558FB6","280":"0x487C19e46b954F202F4311e5FB326C9b55C9B626","4002":"0xF8ABF0b720378bb25b3f73c01BDBd1A7EC558FB6","9000":"0xF8fA73a567812c638e3258144965c03680CD2D87","42161":"0xd90D65411bab7126E1Ffc6293B4db8E40Ae2da3c","43113":"0x5082a0AAffd7A82B16A15b6Ef42774A94527E69B","43114":"0xa878c0aeAaA76Ec7A370b76Ac5BcAc4364eD60e1","421611":"0xf0bC1455b81Cd9eFa6C89eF3ee304345450530A8","arbitrumOne":"0xd90D65411bab7126E1Ffc6293B4db8E40Ae2da3c","arbitrumTestnet":"0xf0bC1455b81Cd9eFa6C89eF3ee304345450530A8","avalanche":"0xa878c0aeAaA76Ec7A370b76Ac5BcAc4364eD60e1","avalancheFujiTestnet":"0x5082a0AAffd7A82B16A15b6Ef42774A94527E69B","bsc":"0x1dc99a44b07f1790647087D789173991DFa5EE65","bscTestnet":"0xe0F561A9C77c04092593Ff88370D703F239B4f7f","cronos":"0x35F6B1d81aED96Ae0019bdec354a80E99219bEc5","evmosTestnet":"0xF8fA73a567812c638e3258144965c03680CD2D87","ftmTestnet":"0xF8ABF0b720378bb25b3f73c01BDBd1A7EC558FB6","goerli":"0x2ccF63FE5613d729E4bc7edAb240aba09B2A703b","mainnet":"0x5082a0AAffd7A82B16A15b6Ef42774A94527E69B","okcMainnet":"0xdb2730fBef4d69d28Bb16d0C071Fca42ED59bE00","okcTestnet":"0xF8fA73a567812c638e3258144965c03680CD2D87","opera":"0xF8ABF0b720378bb25b3f73c01BDBd1A7EC558FB6","polygon":"0x17DF0F10FB59B270Bf207986282911fF450CE674","rinkeby":"0x8eDba367b8E43C7AD6Fcd1A1E49f774579170b35","ropsten":"0x2f6ccd01759b3DB70e15f29fa647873Ed6bD42E3","zksyncTestnet":"0x487C19e46b954F202F4311e5FB326C9b55C9B626"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721ShareInstantStream","sourceName":"contracts/streams/ERC721/presets/ERC721ShareInstantStream.sol","abi":[{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"uint64","name":"claimLockedUntil","type":"uint64"}],"internalType":"struct ERC721ShareInstantStream.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"prevShares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newShares","type":"uint256"}],"name":"SharesUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimLockedUntil","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"getSharesByTokens","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721InstantReleaseExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721LockableClaimExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721ShareSplitExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"uint64","name":"claimLockedUntil","type":"uint64"}],"internalType":"struct ERC721ShareInstantStream.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setClaimLockedUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_shares","type":"uint256[]"}],"name":"setSharesForTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"shares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x60806040523480156200001157600080fd5b506040516200343b3803806200343b8339810160408190526200003491620007ef565b6200003f3362000057565b6001600255620000508133620000b2565b50620009ae565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620000d35750600054600160ff909116105b80620001035750620000f0306200023c60201b620017f71760201c565b15801562000103575060005460ff166001145b6200016c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000190576000805461ff0019166101001790555b6200019b8262000057565b620001a88260006200024b565b82516020840151620001bb919062000285565b620001c5620002bb565b620001df83604001518460600151620002f160201b60201c565b6080830151620001ef9062000327565b801562000237576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b6001600160a01b03163b151590565b600054610100900460ff16620002755760405162461bcd60e51b81526004016200016390620008d0565b6200028182826200035f565b5050565b600054610100900460ff16620002af5760405162461bcd60e51b81526004016200016390620008d0565b62000281828262000406565b600054610100900460ff16620002e55760405162461bcd60e51b81526004016200016390620008d0565b620002ef62000470565b565b600054610100900460ff166200031b5760405162461bcd60e51b81526004016200016390620008d0565b620002818282620004ac565b600054610100900460ff16620003515760405162461bcd60e51b81526004016200016390620008d0565b6200035c8162000537565b50565b600054610100900460ff16620003895760405162461bcd60e51b81526004016200016390620008d0565b6200039b63ac2ba33360e01b62000589565b60088054600160401b600160e01b03198116680100000000000000006001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b836003811115620003fd57620003fd6200091b565b02179055505050565b600054610100900460ff16620004305760405162461bcd60e51b81526004016200016390620008d0565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b0385161717905562000281631ba050e960e21b62000589565b600054610100900460ff166200049a5760405162461bcd60e51b81526004016200016390620008d0565b620002ef631259990960e01b62000589565b600054610100900460ff16620004d65760405162461bcd60e51b81526004016200016390620008d0565b8151815114620005195760405162461bcd60e51b815260206004820152600d60248201526c082a48ea6be9a92a69a82a8869609b1b604482015260640162000163565b6200052582826200060d565b620002816333c7a33f60e11b62000589565b600054610100900460ff16620005615760405162461bcd60e51b81526004016200016390620008d0565b600880546001600160401b0319166001600160401b0383161790556200035c6317b2ef4360e31b5b6001600160e01b03198082169003620005e55760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640162000163565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60005b815181101562000237576200066483828151811062000633576200063362000931565b602002602001015183838151811062000650576200065062000931565b60200260200101516200067960201b60201c565b8062000670816200095d565b91505062000610565b600082815260076020526040902080549082905560065481906200069f90849062000979565b620006ab919062000994565b60065560408051848152602081018390529081018390527ff81b1f9d8b5d36a5a67d13006a8b091a9b63e2a38b331d315d99c6daefd2ddcc906060016200022e565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b0381118282101715620007285762000728620006ed565b60405290565b80516001600160401b03811681146200074657600080fd5b919050565b600082601f8301126200075d57600080fd5b815160206001600160401b03808311156200077c576200077c620006ed565b8260051b604051601f19603f83011681018181108482111715620007a457620007a4620006ed565b604052938452858101830193838101925087851115620007c357600080fd5b83870191505b84821015620007e457815183529183019190830190620007c9565b979650505050505050565b6000602082840312156200080257600080fd5b81516001600160401b03808211156200081a57600080fd5b9083019060a082860312156200082f57600080fd5b6200083962000703565b82516001600160a01b03811681146200085157600080fd5b815262000861602084016200072e565b60208201526040830151828111156200087957600080fd5b62000887878286016200074b565b604083015250606083015182811115620008a057600080fd5b620008ae878286016200074b565b606083015250620008c2608084016200072e565b608082015295945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820162000972576200097262000947565b5060010190565b600082198211156200098f576200098f62000947565b500190565b600082821015620009a957620009a962000947565b500390565b612a7d80620009be6000396000f3fe60806040526004361061022c5760003560e01c80636ba4c1381161012a5780636ba4c13814610628578063715018a614610648578063790c0c731461065d578063837fe1401461067d57806389c6b815146106925780638da5cb5b146106b25780638fc852b1146106d45780639199690b1461031c578063968d9b2c146106f4578063a1cf649314610714578063a8b46d871461031c578063af121f5414610757578063c088184914610778578063c0bb38ff146107ae578063c723955a146107ce578063d5ed4d5a146107e3578063da82b22714610803578063dcbe353f14610818578063ddd5e1b21461083f578063de6d6d961461085f578063f2fde38b1461087f578063f389b6e41461089f578063f4415ad6146108bf578063f66e38c2146108f757600080fd5b8063016b2798146102455780630191c0af1461026557806301ffc9a71461029857806306fdde03146102c8578063125999091461031c57806314427a9614610330578063150b7a02146103685780631c725fdc146103ac57806325289bad146103cc5780632890d033146103f35780632c0e1313146104085780632c233067146104285780632d00b58714610448578063379607f5146104765780633a98ef39146104965780633b3f12e2146104ac5780633d2dded5146104cc57806340f379481461050957806349561cb91461053657806354fd4d501461055757806357a858fc1461058657806357dc48c8146105b35780636057e0ec1461060757600080fd5b36610240576000341161023e57600080fd5b005b600080fd5b34801561025157600080fd5b5061023e6102603660046121f1565b610917565b34801561027157600080fd5b50610285610280366004612313565b610a7c565b6040519081526020015b60405180910390f35b3480156102a457600080fd5b506102b86102b3366004612369565b610ad2565b604051901515815260200161028f565b3480156102d457600080fd5b5061030f6040518060400160405280601b81526020017a45524337323120536861726520496e7374616e742053747265616d60281b81525081565b60405161028f9190612393565b34801561032857600080fd5b5060016102b8565b34801561033c57600080fd5b50600854610350906001600160401b031681565b6040516001600160401b03909116815260200161028f565b34801561037457600080fd5b506103936103833660046123e8565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161028f565b3480156103b857600080fd5b5061023e6103c73660046124ab565b610b12565b3480156103d857600080fd5b5060035461035090600160a01b90046001600160401b031681565b3480156103ff57600080fd5b50610285610b9c565b34801561041457600080fd5b5061023e6104233660046124ab565b610bad565b34801561043457600080fd5b5061023e6104433660046124c6565b610c09565b34801561045457600080fd5b5060085461046990600160f01b900460ff1681565b60405161028f91906124fd565b34801561048257600080fd5b5061023e610491366004612525565b610c68565b3480156104a257600080fd5b5061028560065481565b3480156104b857600080fd5b506102856104c7366004612313565b610c76565b3480156104d857600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc54610285565b34801561051557600080fd5b5061052961052436600461253e565b610cf4565b60405161028f919061257f565b34801561054257600080fd5b506008546102b890600160f81b900460ff1681565b34801561056357600080fd5b5061030f60405180604001604052806003815260200162302e3160e81b81525081565b34801561059257600080fd5b506102856105a1366004612525565b60076020526000908152604090205481565b3480156105bf57600080fd5b506105f26105ce3660046125c3565b60046020908152600092835260408084209091529082529020805460019091015482565b6040805192835260208301919091520161028f565b34801561061357600080fd5b506008546102b890600160e01b900460ff1681565b34801561063457600080fd5b5061023e61064336600461253e565b610dab565b34801561065457600080fd5b5061023e610dbc565b34801561066957600080fd5b506102856106783660046125f3565b610dd0565b34801561068957600080fd5b5061023e610e94565b34801561069e57600080fd5b506102856106ad36600461253e565b610edb565b3480156106be57600080fd5b506106c7610ef0565b60405161028f9190612610565b3480156106e057600080fd5b5061023e6106ef366004612624565b610f05565b34801561070057600080fd5b5061028561070f366004612525565b610f6a565b34801561072057600080fd5b5061028561072f3660046125c3565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b34801561076357600080fd5b506008546102b890600160e81b900460ff1681565b34801561078457600080fd5b506102856107933660046125f3565b6001600160a01b031660009081526005602052604090205490565b3480156107ba57600080fd5b5061023e6107c93660046125f3565b610f77565b3480156107da57600080fd5b5061023e610fd5565b3480156107ef57600080fd5b506003546106c7906001600160a01b031681565b34801561080f57600080fd5b5061023e611036565b34801561082457600080fd5b506008546106c790600160401b90046001600160a01b031681565b34801561084b57600080fd5b5061023e61085a3660046125c3565b61107c565b34801561086b57600080fd5b5061023e61087a366004612687565b611275565b34801561088b57600080fd5b5061023e61089a3660046125f3565b6114c8565b3480156108ab57600080fd5b5061023e6108ba3660046126f2565b61153e565b3480156108cb57600080fd5b506102856108da366004612525565b600090815260046020908152604080832083805290915290205490565b34801561090357600080fd5b506102856109123660046125c3565b6117a3565b600054610100900460ff16158080156109375750600054600160ff909116105b806109585750610946306117f7565b158015610958575060005460ff166001145b6109c05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156109e3576000805461ff0019166101001790555b6109ec82611806565b6109f7826000611861565b610a0983600001518460200151611892565b610a116118c3565b610a23836040015184606001516118f2565b610a308360800151611923565b8015610a77576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b600080805b84811015610ac957610aab868683818110610a9e57610a9e612759565b90506020020135856117a3565b610ab59083612785565b915080610ac18161279d565b915050610a81565b50949350505050565b60006301ffc9a760e01b6001600160e01b031983161480610b0c57506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b610b1a611953565b6003546001600160401b03600160a01b909104811690821611610b6f5760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b60448201526064016109b7565b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000610ba86000610dd0565b905090565b610bb5611953565b60035442600160a01b9091046001600160401b031610610be75760405162461bcd60e51b81526004016109b7906127b6565b600880546001600160401b0319166001600160401b0392909216919091179055565b610c11611953565b600854600160f81b900460ff1615610c3b5760405162461bcd60e51b81526004016109b7906127dd565b6008805482919060ff60f01b1916600160f01b836003811115610c6057610c606124e7565b021790555050565b610c7381600061107c565b50565b600080805b84811015610ac95760046000878784818110610c9957610c99612759565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b031681526020019081526020016000206000015482610ce09190612785565b915080610cec8161279d565b915050610c7b565b60606000826001600160401b03811115610d1057610d106120c8565b604051908082528060200260200182016040528015610d39578160200160208202803683370190505b50905060005b8151811015610da35760076000868684818110610d5e57610d5e612759565b90506020020135815260200190815260200160002054828281518110610d8657610d86612759565b602090810291909101015280610d9b8161279d565b915050610d3f565b509392505050565b610db8828260003361153e565b5050565b610dc4611953565b610dce6000611806565b565b60006001600160a01b038216610e04576001600160a01b038216600090815260056020526040902054610b0c904790612785565b6040516370a0823160e01b81526001600160a01b038316906370a0823190610e30903090600401612610565b602060405180830381865afa158015610e4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7191906127fd565b6001600160a01b038316600090815260056020526040902054610b0c9190612785565b610e9c611953565b600854600160e01b900460ff1615610ec65760405162461bcd60e51b81526004016109b7906127dd565b6008805460ff60e01b1916600160e01b179055565b6000610ee983836000610c76565b9392505050565b6000546201000090046001600160a01b031690565b610f0d611953565b8151815114610f2e5760405162461bcd60e51b81526004016109b790612816565b60035442600160a01b9091046001600160401b031610610f605760405162461bcd60e51b81526004016109b7906127b6565b610db882826119b2565b6000610b0c8260006117a3565b610f7f611953565b600854600160e01b900460ff1615610fa95760405162461bcd60e51b81526004016109b7906127dd565b600880546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b610fdd611953565b600854600160f81b900460ff161561101f5760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b60448201526064016109b7565b600880546001600160f81b0316600160f81b179055565b61103e611953565b6008805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b600280540361109d5760405162461bcd60e51b81526004016109b79061283d565b60028055336110ad838383611a0c565b60006110b984846117a3565b9050600081116110fe5760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b60448201526064016109b7565b60008481526004602090815260408083206001600160a01b038716845290915281208054839290611130908490612785565b909155505060008481526004602090815260408083206001600160a01b0387168452825280832042600190910155600590915281208054839290611175908490612785565b90915550506001600160a01b0383166111a05761119b6001600160a01b03831682611a22565b611213565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906111ce9085908590600401612874565b6020604051808303816000875af11580156111ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611211919061288d565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b61127e33611b38565b600854600160401b90046001600160a01b03166112d55760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b60448201526064016109b7565b600854600160e81b900460ff161561132f5760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b454460448201526064016109b7565b60005b8381101561148457600085858381811061134e5761134e612759565b905060200201602081019061136391906125f3565b6001600160a01b0316036113ae576113a983838381811061138657611386612759565b6008546001600160a01b03600160401b9091041692602090910201359050611a22565b611472565b8484828181106113c0576113c0612759565b90506020020160208101906113d591906125f3565b6001600160a01b031663a9059cbb60088054906101000a90046001600160a01b031685858581811061140957611409612759565b905060200201356040518363ffffffff1660e01b815260040161142d929190612874565b6020604051808303816000875af115801561144c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611470919061288d565b505b8061147c8161279d565b915050611332565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a5848484846040516114ba94939291906128e5565b60405180910390a150505050565b6114d0611953565b6001600160a01b0381166115355760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109b7565b610c7381611806565b600280540361155f5760405162461bcd60e51b81526004016109b79061283d565b600280556000805b8481101561168f5761159286868381811061158457611584612759565b905060200201358585611a0c565b60006115b68787848181106115a9576115a9612759565b90506020020135866117a3565b9050801561167c5780600460008989868181106115d5576115d5612759565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b03168152602001908152602001600020600001600082825461161f9190612785565b909155504290506004600089898681811061163c5761163c612759565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a1682529092529020600101556116798184612785565b92505b50806116878161279d565b915050611567565b506001600160a01b038316600090815260056020526040812080548392906116b8908490612785565b90915550506001600160a01b0383166116e3576116de6001600160a01b03831682611a22565b611756565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906117119085908590600401612874565b6020604051808303816000875af1158015611730573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611754919061288d565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b133838787878660405161178f96959493929190612948565b60405180910390a150506001600255505050565b6000806117bf6117b86117b585610dd0565b90565b8585611cc5565b60008581526004602090815260408083206001600160a01b03881684529091529020549091506117ef9082612987565b949350505050565b6001600160a01b03163b151590565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff166118885760405162461bcd60e51b81526004016109b79061299e565b610db88282611cee565b600054610100900460ff166118b95760405162461bcd60e51b81526004016109b79061299e565b610db88282611d88565b600054610100900460ff166118ea5760405162461bcd60e51b81526004016109b79061299e565b610dce611ded565b600054610100900460ff166119195760405162461bcd60e51b81526004016109b79061299e565b610db88282611e24565b600054610100900460ff1661194a5760405162461bcd60e51b81526004016109b79061299e565b610c7381611e86565b3361195c610ef0565b6001600160a01b031614610dce5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109b7565b60005b8151811015610a77576119fa8382815181106119d3576119d3612759565b60200260200101518383815181106119ed576119ed612759565b6020026020010151611ed8565b80611a048161279d565b9150506119b5565b611a17838383611f47565b610a77838383611ffc565b80471015611a725760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016109b7565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611abf576040519150601f19603f3d011682016040523d82523d6000602084013e611ac4565b606091505b5050905080610a775760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b60648201526084016109b7565b6003600854600160f01b900460ff166003811115611b5857611b586124e7565b03611b975760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b60448201526064016109b7565b6002600854600160f01b900460ff166003811115611bb757611bb76124e7565b03611bbf5750565b6001600854600160f01b900460ff166003811115611bdf57611bdf6124e7565b03611c42576008546001600160a01b03828116600160401b9092041614610c735760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b60448201526064016109b7565b6000600854600160f01b900460ff166003811115611c6257611c626124e7565b03610c7357806001600160a01b0316611c79610ef0565b6001600160a01b031614610c735760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b60448201526064016109b7565b600654600083815260076020526040812054909190611ce490866129e9565b6117ef9190612a08565b600054610100900460ff16611d155760405162461bcd60e51b81526004016109b79061299e565b611d2563ac2ba33360e01b612047565b60088054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b836003811115611d7f57611d7f6124e7565b02179055505050565b600054610100900460ff16611daf5760405162461bcd60e51b81526004016109b79061299e565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055610db8631ba050e960e21b612047565b600054610100900460ff16611e145760405162461bcd60e51b81526004016109b79061299e565b610dce631259990960e01b612047565b600054610100900460ff16611e4b5760405162461bcd60e51b81526004016109b79061299e565b8151815114611e6c5760405162461bcd60e51b81526004016109b790612816565b611e7682826119b2565b610db86333c7a33f60e11b612047565b600054610100900460ff16611ead5760405162461bcd60e51b81526004016109b79061299e565b600880546001600160401b0319166001600160401b038316179055610c736317b2ef4360e31b612047565b60008281526007602052604090208054908290556006548190611efc908490612785565b611f069190612987565b60065560408051848152602081018390529081018390527ff81b1f9d8b5d36a5a67d13006a8b091a9b63e2a38b331d315d99c6daefd2ddcc90606001610a6e565b6003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa158015611f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb69190612a2a565b6001600160a01b031614610a775760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b60448201526064016109b7565b600854426001600160401b0390911610610a775760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b60448201526064016109b7565b6001600160e01b031980821690036120a05760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b60448201526064016109b7565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b0381118282101715612100576121006120c8565b60405290565b604051601f8201601f191681016001600160401b038111828210171561212e5761212e6120c8565b604052919050565b6001600160a01b0381168114610c7357600080fd5b803561215681612136565b919050565b80356001600160401b038116811461215657600080fd5b600082601f83011261218357600080fd5b813560206001600160401b0382111561219e5761219e6120c8565b8160051b6121ad828201612106565b92835284810182019282810190878511156121c757600080fd5b83870192505b848310156121e6578235825291830191908301906121cd565b979650505050505050565b6000806040838503121561220457600080fd5b82356001600160401b038082111561221b57600080fd5b9084019060a0828703121561222f57600080fd5b6122376120de565b823561224281612136565b81526122506020840161215b565b602082015260408301358281111561226757600080fd5b61227388828601612172565b60408301525060608301358281111561228b57600080fd5b61229788828601612172565b6060830152506122a96080840161215b565b608082015293506122bf9150506020840161214b565b90509250929050565b60008083601f8401126122da57600080fd5b5081356001600160401b038111156122f157600080fd5b6020830191508360208260051b850101111561230c57600080fd5b9250929050565b60008060006040848603121561232857600080fd5b83356001600160401b0381111561233e57600080fd5b61234a868287016122c8565b909450925050602084013561235e81612136565b809150509250925092565b60006020828403121561237b57600080fd5b81356001600160e01b031981168114610ee957600080fd5b600060208083528351808285015260005b818110156123c0578581018301518582016040015282016123a4565b818111156123d2576000604083870101525b50601f01601f1916929092016040019392505050565b600080600080608085870312156123fe57600080fd5b843561240981612136565b935060208581013561241a81612136565b93506040860135925060608601356001600160401b038082111561243d57600080fd5b818801915088601f83011261245157600080fd5b813581811115612463576124636120c8565b612475601f8201601f19168501612106565b9150808252898482850101111561248b57600080fd5b808484018584013760008482840101525080935050505092959194509250565b6000602082840312156124bd57600080fd5b610ee98261215b565b6000602082840312156124d857600080fd5b813560048110610ee957600080fd5b634e487b7160e01b600052602160045260246000fd5b602081016004831061251f57634e487b7160e01b600052602160045260246000fd5b91905290565b60006020828403121561253757600080fd5b5035919050565b6000806020838503121561255157600080fd5b82356001600160401b0381111561256757600080fd5b612573858286016122c8565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156125b75783518352928401929184019160010161259b565b50909695505050505050565b600080604083850312156125d657600080fd5b8235915060208301356125e881612136565b809150509250929050565b60006020828403121561260557600080fd5b8135610ee981612136565b6001600160a01b0391909116815260200190565b6000806040838503121561263757600080fd5b82356001600160401b038082111561264e57600080fd5b61265a86838701612172565b9350602085013591508082111561267057600080fd5b5061267d85828601612172565b9150509250929050565b6000806000806040858703121561269d57600080fd5b84356001600160401b03808211156126b457600080fd5b6126c0888389016122c8565b909650945060208701359150808211156126d957600080fd5b506126e6878288016122c8565b95989497509550505050565b6000806000806060858703121561270857600080fd5b84356001600160401b0381111561271e57600080fd5b61272a878288016122c8565b909550935050602085013561273e81612136565b9150604085013561274e81612136565b939692955090935050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156127985761279861276f565b500190565b6000600182016127af576127af61276f565b5060010190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b60006020828403121561280f57600080fd5b5051919050565b6020808252600d908201526c082a48ea6be9a92a69a82a8869609b1b604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b03929092168252602082015260400190565b60006020828403121561289f57600080fd5b81518015158114610ee957600080fd5b81835260006001600160fb1b038311156128c857600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b8781101561292857823561290b81612136565b6001600160a01b03168252602092830192909101906001016128f8565b50838103602085015261293c8186886128af565b98975050505050505050565b600060018060a01b038089168352808816602084015260a0604084015261297360a0840187896128af565b941660608301525060800152949350505050565b6000828210156129995761299961276f565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000816000190483118215151615612a0357612a0361276f565b500290565b600082612a2557634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612a3c57600080fd5b8151610ee98161213656fea2646970667358221220d26a6df42722932791ecb63792dc24ad30f801677c1065e87325297eddf1585864736f6c634300080f0033","deployedBytecode":"0x60806040526004361061022c5760003560e01c80636ba4c1381161012a5780636ba4c13814610628578063715018a614610648578063790c0c731461065d578063837fe1401461067d57806389c6b815146106925780638da5cb5b146106b25780638fc852b1146106d45780639199690b1461031c578063968d9b2c146106f4578063a1cf649314610714578063a8b46d871461031c578063af121f5414610757578063c088184914610778578063c0bb38ff146107ae578063c723955a146107ce578063d5ed4d5a146107e3578063da82b22714610803578063dcbe353f14610818578063ddd5e1b21461083f578063de6d6d961461085f578063f2fde38b1461087f578063f389b6e41461089f578063f4415ad6146108bf578063f66e38c2146108f757600080fd5b8063016b2798146102455780630191c0af1461026557806301ffc9a71461029857806306fdde03146102c8578063125999091461031c57806314427a9614610330578063150b7a02146103685780631c725fdc146103ac57806325289bad146103cc5780632890d033146103f35780632c0e1313146104085780632c233067146104285780632d00b58714610448578063379607f5146104765780633a98ef39146104965780633b3f12e2146104ac5780633d2dded5146104cc57806340f379481461050957806349561cb91461053657806354fd4d501461055757806357a858fc1461058657806357dc48c8146105b35780636057e0ec1461060757600080fd5b36610240576000341161023e57600080fd5b005b600080fd5b34801561025157600080fd5b5061023e6102603660046121f1565b610917565b34801561027157600080fd5b50610285610280366004612313565b610a7c565b6040519081526020015b60405180910390f35b3480156102a457600080fd5b506102b86102b3366004612369565b610ad2565b604051901515815260200161028f565b3480156102d457600080fd5b5061030f6040518060400160405280601b81526020017a45524337323120536861726520496e7374616e742053747265616d60281b81525081565b60405161028f9190612393565b34801561032857600080fd5b5060016102b8565b34801561033c57600080fd5b50600854610350906001600160401b031681565b6040516001600160401b03909116815260200161028f565b34801561037457600080fd5b506103936103833660046123e8565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161028f565b3480156103b857600080fd5b5061023e6103c73660046124ab565b610b12565b3480156103d857600080fd5b5060035461035090600160a01b90046001600160401b031681565b3480156103ff57600080fd5b50610285610b9c565b34801561041457600080fd5b5061023e6104233660046124ab565b610bad565b34801561043457600080fd5b5061023e6104433660046124c6565b610c09565b34801561045457600080fd5b5060085461046990600160f01b900460ff1681565b60405161028f91906124fd565b34801561048257600080fd5b5061023e610491366004612525565b610c68565b3480156104a257600080fd5b5061028560065481565b3480156104b857600080fd5b506102856104c7366004612313565b610c76565b3480156104d857600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc54610285565b34801561051557600080fd5b5061052961052436600461253e565b610cf4565b60405161028f919061257f565b34801561054257600080fd5b506008546102b890600160f81b900460ff1681565b34801561056357600080fd5b5061030f60405180604001604052806003815260200162302e3160e81b81525081565b34801561059257600080fd5b506102856105a1366004612525565b60076020526000908152604090205481565b3480156105bf57600080fd5b506105f26105ce3660046125c3565b60046020908152600092835260408084209091529082529020805460019091015482565b6040805192835260208301919091520161028f565b34801561061357600080fd5b506008546102b890600160e01b900460ff1681565b34801561063457600080fd5b5061023e61064336600461253e565b610dab565b34801561065457600080fd5b5061023e610dbc565b34801561066957600080fd5b506102856106783660046125f3565b610dd0565b34801561068957600080fd5b5061023e610e94565b34801561069e57600080fd5b506102856106ad36600461253e565b610edb565b3480156106be57600080fd5b506106c7610ef0565b60405161028f9190612610565b3480156106e057600080fd5b5061023e6106ef366004612624565b610f05565b34801561070057600080fd5b5061028561070f366004612525565b610f6a565b34801561072057600080fd5b5061028561072f3660046125c3565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b34801561076357600080fd5b506008546102b890600160e81b900460ff1681565b34801561078457600080fd5b506102856107933660046125f3565b6001600160a01b031660009081526005602052604090205490565b3480156107ba57600080fd5b5061023e6107c93660046125f3565b610f77565b3480156107da57600080fd5b5061023e610fd5565b3480156107ef57600080fd5b506003546106c7906001600160a01b031681565b34801561080f57600080fd5b5061023e611036565b34801561082457600080fd5b506008546106c790600160401b90046001600160a01b031681565b34801561084b57600080fd5b5061023e61085a3660046125c3565b61107c565b34801561086b57600080fd5b5061023e61087a366004612687565b611275565b34801561088b57600080fd5b5061023e61089a3660046125f3565b6114c8565b3480156108ab57600080fd5b5061023e6108ba3660046126f2565b61153e565b3480156108cb57600080fd5b506102856108da366004612525565b600090815260046020908152604080832083805290915290205490565b34801561090357600080fd5b506102856109123660046125c3565b6117a3565b600054610100900460ff16158080156109375750600054600160ff909116105b806109585750610946306117f7565b158015610958575060005460ff166001145b6109c05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156109e3576000805461ff0019166101001790555b6109ec82611806565b6109f7826000611861565b610a0983600001518460200151611892565b610a116118c3565b610a23836040015184606001516118f2565b610a308360800151611923565b8015610a77576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b600080805b84811015610ac957610aab868683818110610a9e57610a9e612759565b90506020020135856117a3565b610ab59083612785565b915080610ac18161279d565b915050610a81565b50949350505050565b60006301ffc9a760e01b6001600160e01b031983161480610b0c57506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b610b1a611953565b6003546001600160401b03600160a01b909104811690821611610b6f5760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b60448201526064016109b7565b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000610ba86000610dd0565b905090565b610bb5611953565b60035442600160a01b9091046001600160401b031610610be75760405162461bcd60e51b81526004016109b7906127b6565b600880546001600160401b0319166001600160401b0392909216919091179055565b610c11611953565b600854600160f81b900460ff1615610c3b5760405162461bcd60e51b81526004016109b7906127dd565b6008805482919060ff60f01b1916600160f01b836003811115610c6057610c606124e7565b021790555050565b610c7381600061107c565b50565b600080805b84811015610ac95760046000878784818110610c9957610c99612759565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b031681526020019081526020016000206000015482610ce09190612785565b915080610cec8161279d565b915050610c7b565b60606000826001600160401b03811115610d1057610d106120c8565b604051908082528060200260200182016040528015610d39578160200160208202803683370190505b50905060005b8151811015610da35760076000868684818110610d5e57610d5e612759565b90506020020135815260200190815260200160002054828281518110610d8657610d86612759565b602090810291909101015280610d9b8161279d565b915050610d3f565b509392505050565b610db8828260003361153e565b5050565b610dc4611953565b610dce6000611806565b565b60006001600160a01b038216610e04576001600160a01b038216600090815260056020526040902054610b0c904790612785565b6040516370a0823160e01b81526001600160a01b038316906370a0823190610e30903090600401612610565b602060405180830381865afa158015610e4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7191906127fd565b6001600160a01b038316600090815260056020526040902054610b0c9190612785565b610e9c611953565b600854600160e01b900460ff1615610ec65760405162461bcd60e51b81526004016109b7906127dd565b6008805460ff60e01b1916600160e01b179055565b6000610ee983836000610c76565b9392505050565b6000546201000090046001600160a01b031690565b610f0d611953565b8151815114610f2e5760405162461bcd60e51b81526004016109b790612816565b60035442600160a01b9091046001600160401b031610610f605760405162461bcd60e51b81526004016109b7906127b6565b610db882826119b2565b6000610b0c8260006117a3565b610f7f611953565b600854600160e01b900460ff1615610fa95760405162461bcd60e51b81526004016109b7906127dd565b600880546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b610fdd611953565b600854600160f81b900460ff161561101f5760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b60448201526064016109b7565b600880546001600160f81b0316600160f81b179055565b61103e611953565b6008805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b600280540361109d5760405162461bcd60e51b81526004016109b79061283d565b60028055336110ad838383611a0c565b60006110b984846117a3565b9050600081116110fe5760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b60448201526064016109b7565b60008481526004602090815260408083206001600160a01b038716845290915281208054839290611130908490612785565b909155505060008481526004602090815260408083206001600160a01b0387168452825280832042600190910155600590915281208054839290611175908490612785565b90915550506001600160a01b0383166111a05761119b6001600160a01b03831682611a22565b611213565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906111ce9085908590600401612874565b6020604051808303816000875af11580156111ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611211919061288d565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b61127e33611b38565b600854600160401b90046001600160a01b03166112d55760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b60448201526064016109b7565b600854600160e81b900460ff161561132f5760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b454460448201526064016109b7565b60005b8381101561148457600085858381811061134e5761134e612759565b905060200201602081019061136391906125f3565b6001600160a01b0316036113ae576113a983838381811061138657611386612759565b6008546001600160a01b03600160401b9091041692602090910201359050611a22565b611472565b8484828181106113c0576113c0612759565b90506020020160208101906113d591906125f3565b6001600160a01b031663a9059cbb60088054906101000a90046001600160a01b031685858581811061140957611409612759565b905060200201356040518363ffffffff1660e01b815260040161142d929190612874565b6020604051808303816000875af115801561144c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611470919061288d565b505b8061147c8161279d565b915050611332565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a5848484846040516114ba94939291906128e5565b60405180910390a150505050565b6114d0611953565b6001600160a01b0381166115355760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109b7565b610c7381611806565b600280540361155f5760405162461bcd60e51b81526004016109b79061283d565b600280556000805b8481101561168f5761159286868381811061158457611584612759565b905060200201358585611a0c565b60006115b68787848181106115a9576115a9612759565b90506020020135866117a3565b9050801561167c5780600460008989868181106115d5576115d5612759565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b03168152602001908152602001600020600001600082825461161f9190612785565b909155504290506004600089898681811061163c5761163c612759565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a1682529092529020600101556116798184612785565b92505b50806116878161279d565b915050611567565b506001600160a01b038316600090815260056020526040812080548392906116b8908490612785565b90915550506001600160a01b0383166116e3576116de6001600160a01b03831682611a22565b611756565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906117119085908590600401612874565b6020604051808303816000875af1158015611730573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611754919061288d565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b133838787878660405161178f96959493929190612948565b60405180910390a150506001600255505050565b6000806117bf6117b86117b585610dd0565b90565b8585611cc5565b60008581526004602090815260408083206001600160a01b03881684529091529020549091506117ef9082612987565b949350505050565b6001600160a01b03163b151590565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff166118885760405162461bcd60e51b81526004016109b79061299e565b610db88282611cee565b600054610100900460ff166118b95760405162461bcd60e51b81526004016109b79061299e565b610db88282611d88565b600054610100900460ff166118ea5760405162461bcd60e51b81526004016109b79061299e565b610dce611ded565b600054610100900460ff166119195760405162461bcd60e51b81526004016109b79061299e565b610db88282611e24565b600054610100900460ff1661194a5760405162461bcd60e51b81526004016109b79061299e565b610c7381611e86565b3361195c610ef0565b6001600160a01b031614610dce5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109b7565b60005b8151811015610a77576119fa8382815181106119d3576119d3612759565b60200260200101518383815181106119ed576119ed612759565b6020026020010151611ed8565b80611a048161279d565b9150506119b5565b611a17838383611f47565b610a77838383611ffc565b80471015611a725760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016109b7565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611abf576040519150601f19603f3d011682016040523d82523d6000602084013e611ac4565b606091505b5050905080610a775760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b60648201526084016109b7565b6003600854600160f01b900460ff166003811115611b5857611b586124e7565b03611b975760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b60448201526064016109b7565b6002600854600160f01b900460ff166003811115611bb757611bb76124e7565b03611bbf5750565b6001600854600160f01b900460ff166003811115611bdf57611bdf6124e7565b03611c42576008546001600160a01b03828116600160401b9092041614610c735760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b60448201526064016109b7565b6000600854600160f01b900460ff166003811115611c6257611c626124e7565b03610c7357806001600160a01b0316611c79610ef0565b6001600160a01b031614610c735760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b60448201526064016109b7565b600654600083815260076020526040812054909190611ce490866129e9565b6117ef9190612a08565b600054610100900460ff16611d155760405162461bcd60e51b81526004016109b79061299e565b611d2563ac2ba33360e01b612047565b60088054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b836003811115611d7f57611d7f6124e7565b02179055505050565b600054610100900460ff16611daf5760405162461bcd60e51b81526004016109b79061299e565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055610db8631ba050e960e21b612047565b600054610100900460ff16611e145760405162461bcd60e51b81526004016109b79061299e565b610dce631259990960e01b612047565b600054610100900460ff16611e4b5760405162461bcd60e51b81526004016109b79061299e565b8151815114611e6c5760405162461bcd60e51b81526004016109b790612816565b611e7682826119b2565b610db86333c7a33f60e11b612047565b600054610100900460ff16611ead5760405162461bcd60e51b81526004016109b79061299e565b600880546001600160401b0319166001600160401b038316179055610c736317b2ef4360e31b612047565b60008281526007602052604090208054908290556006548190611efc908490612785565b611f069190612987565b60065560408051848152602081018390529081018390527ff81b1f9d8b5d36a5a67d13006a8b091a9b63e2a38b331d315d99c6daefd2ddcc90606001610a6e565b6003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa158015611f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb69190612a2a565b6001600160a01b031614610a775760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b60448201526064016109b7565b600854426001600160401b0390911610610a775760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b60448201526064016109b7565b6001600160e01b031980821690036120a05760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b60448201526064016109b7565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b0381118282101715612100576121006120c8565b60405290565b604051601f8201601f191681016001600160401b038111828210171561212e5761212e6120c8565b604052919050565b6001600160a01b0381168114610c7357600080fd5b803561215681612136565b919050565b80356001600160401b038116811461215657600080fd5b600082601f83011261218357600080fd5b813560206001600160401b0382111561219e5761219e6120c8565b8160051b6121ad828201612106565b92835284810182019282810190878511156121c757600080fd5b83870192505b848310156121e6578235825291830191908301906121cd565b979650505050505050565b6000806040838503121561220457600080fd5b82356001600160401b038082111561221b57600080fd5b9084019060a0828703121561222f57600080fd5b6122376120de565b823561224281612136565b81526122506020840161215b565b602082015260408301358281111561226757600080fd5b61227388828601612172565b60408301525060608301358281111561228b57600080fd5b61229788828601612172565b6060830152506122a96080840161215b565b608082015293506122bf9150506020840161214b565b90509250929050565b60008083601f8401126122da57600080fd5b5081356001600160401b038111156122f157600080fd5b6020830191508360208260051b850101111561230c57600080fd5b9250929050565b60008060006040848603121561232857600080fd5b83356001600160401b0381111561233e57600080fd5b61234a868287016122c8565b909450925050602084013561235e81612136565b809150509250925092565b60006020828403121561237b57600080fd5b81356001600160e01b031981168114610ee957600080fd5b600060208083528351808285015260005b818110156123c0578581018301518582016040015282016123a4565b818111156123d2576000604083870101525b50601f01601f1916929092016040019392505050565b600080600080608085870312156123fe57600080fd5b843561240981612136565b935060208581013561241a81612136565b93506040860135925060608601356001600160401b038082111561243d57600080fd5b818801915088601f83011261245157600080fd5b813581811115612463576124636120c8565b612475601f8201601f19168501612106565b9150808252898482850101111561248b57600080fd5b808484018584013760008482840101525080935050505092959194509250565b6000602082840312156124bd57600080fd5b610ee98261215b565b6000602082840312156124d857600080fd5b813560048110610ee957600080fd5b634e487b7160e01b600052602160045260246000fd5b602081016004831061251f57634e487b7160e01b600052602160045260246000fd5b91905290565b60006020828403121561253757600080fd5b5035919050565b6000806020838503121561255157600080fd5b82356001600160401b0381111561256757600080fd5b612573858286016122c8565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156125b75783518352928401929184019160010161259b565b50909695505050505050565b600080604083850312156125d657600080fd5b8235915060208301356125e881612136565b809150509250929050565b60006020828403121561260557600080fd5b8135610ee981612136565b6001600160a01b0391909116815260200190565b6000806040838503121561263757600080fd5b82356001600160401b038082111561264e57600080fd5b61265a86838701612172565b9350602085013591508082111561267057600080fd5b5061267d85828601612172565b9150509250929050565b6000806000806040858703121561269d57600080fd5b84356001600160401b03808211156126b457600080fd5b6126c0888389016122c8565b909650945060208701359150808211156126d957600080fd5b506126e6878288016122c8565b95989497509550505050565b6000806000806060858703121561270857600080fd5b84356001600160401b0381111561271e57600080fd5b61272a878288016122c8565b909550935050602085013561273e81612136565b9150604085013561274e81612136565b939692955090935050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156127985761279861276f565b500190565b6000600182016127af576127af61276f565b5060010190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b60006020828403121561280f57600080fd5b5051919050565b6020808252600d908201526c082a48ea6be9a92a69a82a8869609b1b604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b03929092168252602082015260400190565b60006020828403121561289f57600080fd5b81518015158114610ee957600080fd5b81835260006001600160fb1b038311156128c857600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b8781101561292857823561290b81612136565b6001600160a01b03168252602092830192909101906001016128f8565b50838103602085015261293c8186886128af565b98975050505050505050565b600060018060a01b038089168352808816602084015260a0604084015261297360a0840187896128af565b941660608301525060800152949350505050565b6000828210156129995761299961276f565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000816000190483118215151615612a0357612a0361276f565b500290565b600082612a2557634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612a3c57600080fd5b8151610ee98161213656fea2646970667358221220d26a6df42722932791ecb63792dc24ad30f801677c1065e87325297eddf1585864736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"streams/ERC721/presets/ERC721ShareVestingStream":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721ShareVestingStream","sourceName":"contracts/streams/ERC721/presets/ERC721ShareVestingStream.sol","abi":[{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"},{"internalType":"uint64","name":"durationSeconds","type":"uint64"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"uint64","name":"claimLockedUntil","type":"uint64"}],"internalType":"struct ERC721ShareVestingStream.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"claimToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"releasedAmount","type":"uint256"}],"name":"ClaimMany","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"prevShares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newShares","type":"uint256"}],"name":"SharesUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimLockedUntil","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"entitlements","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimedAt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"getSharesByTokens","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasERC721LockableClaimExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721ShareSplitExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"hasERC721VestingReleaseExtension","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"ticketToken","type":"address"},{"internalType":"uint64","name":"lockedUntilTimestamp","type":"uint64"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"},{"internalType":"uint64","name":"durationSeconds","type":"uint64"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"uint64","name":"claimLockedUntil","type":"uint64"}],"internalType":"struct ERC721ShareVestingStream.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"lockUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntilTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setClaimLockedUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_shares","type":"uint256[]"}],"name":"setSharesForTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setVestingDurationSeconds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setVestingStartTimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"shares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"},{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ticketTokenId","type":"uint256"}],"name":"streamTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"claimToken","type":"address"}],"name":"streamTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"ticketToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vestingDurationSeconds","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vestingStartTimestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x60806040523480156200001157600080fd5b506040516200372338038062003723833981016040819052620000349162000844565b6200003f3362000057565b6001600255620000508133620000b2565b5062000a1c565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620000d35750600054600160ff909116105b80620001035750620000f0306200024c60201b620019711760201c565b15801562000103575060005460ff166001145b6200016c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000190576000805461ff0019166101001790555b6200019b8262000057565b620001a88260006200025b565b82516020840151620001bb919062000295565b620001d583604001518460600151620002cb60201b60201c565b620001ef83608001518460a001516200030160201b60201c565b60c0830151620001ff9062000337565b801562000247576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b6001600160a01b03163b151590565b600054610100900460ff16620002855760405162461bcd60e51b815260040162000163906200093e565b6200029182826200036f565b5050565b600054610100900460ff16620002bf5760405162461bcd60e51b815260040162000163906200093e565b62000291828262000416565b600054610100900460ff16620002f55760405162461bcd60e51b815260040162000163906200093e565b62000291828262000480565b600054610100900460ff166200032b5760405162461bcd60e51b815260040162000163906200093e565b620002918282620004e9565b600054610100900460ff16620003615760405162461bcd60e51b815260040162000163906200093e565b6200036c8162000574565b50565b600054610100900460ff16620003995760405162461bcd60e51b815260040162000163906200093e565b620003ab63ac2ba33360e01b620005c6565b60098054600160401b600160e01b03198116680100000000000000006001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b8360038111156200040d576200040d62000989565b02179055505050565b600054610100900460ff16620004405760405162461bcd60e51b815260040162000163906200093e565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b0385161717905562000291631ba050e960e21b620005c6565b600054610100900460ff16620004aa5760405162461bcd60e51b815260040162000163906200093e565b600680546001600160401b0383811668010000000000000000026001600160801b0319909216908516171790556200029163d1bdccff60e01b620005c6565b600054610100900460ff16620005135760405162461bcd60e51b815260040162000163906200093e565b8151815114620005565760405162461bcd60e51b815260206004820152600d60248201526c082a48ea6be9a92a69a82a8869609b1b604482015260640162000163565b6200056282826200064a565b620002916333c7a33f60e11b620005c6565b600054610100900460ff166200059e5760405162461bcd60e51b815260040162000163906200093e565b600980546001600160401b0319166001600160401b0383161790556200036c6317b2ef4360e31b5b6001600160e01b03198082169003620006225760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640162000163565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60005b81518110156200024757620006a18382815181106200067057620006706200099f565b60200260200101518383815181106200068d576200068d6200099f565b6020026020010151620006b660201b60201c565b80620006ad81620009cb565b9150506200064d565b60008281526008602052604090208054908290556007548190620006dc908490620009e7565b620006e8919062000a02565b60075560408051848152602081018390529081018390527ff81b1f9d8b5d36a5a67d13006a8b091a9b63e2a38b331d315d99c6daefd2ddcc906060016200023e565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b03811182821017156200076557620007656200072a565b60405290565b80516001600160a01b03811681146200078357600080fd5b919050565b80516001600160401b03811681146200078357600080fd5b600082601f830112620007b257600080fd5b815160206001600160401b0380831115620007d157620007d16200072a565b8260051b604051601f19603f83011681018181108482111715620007f957620007f96200072a565b6040529384528581018301938381019250878511156200081857600080fd5b83870191505b8482101562000839578151835291830191908301906200081e565b979650505050505050565b6000602082840312156200085757600080fd5b81516001600160401b03808211156200086f57600080fd5b9083019060e082860312156200088457600080fd5b6200088e62000740565b62000899836200076b565b8152620008a96020840162000788565b6020820152620008bc6040840162000788565b6040820152620008cf6060840162000788565b6060820152608083015182811115620008e757600080fd5b620008f587828601620007a0565b60808301525060a0830151828111156200090e57600080fd5b6200091c87828601620007a0565b60a0830152506200093060c0840162000788565b60c082015295945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201620009e057620009e0620009b5565b5060010190565b60008219821115620009fd57620009fd620009b5565b500190565b60008282101562000a175762000a17620009b5565b500390565b612cf78062000a2c6000396000f3fe6080604052600436106102585760003560e01c80637520cade116101405780637520cade1461069c578063790c0c73146106b0578063837fe140146106d057806389c6b815146106e55780638da5cb5b146107055780638fc852b1146107275780639199690b1461069c578063968d9b2c14610747578063a1cf649314610767578063a8b46d871461069c578063af121f54146107aa578063c0881849146107cb578063c0bb38ff14610801578063c723955a14610821578063d5ed4d5a14610836578063d6ddd21b14610856578063da82b22714610876578063dcbe353f1461088b578063ddd5e1b2146108b2578063de6d6d96146108d2578063e3860742146108f2578063f2fde38b14610912578063f389b6e414610932578063f4415ad614610952578063f66e38c21461098a578063fb5a2907146109aa57600080fd5b80630191c0af1461027157806301ffc9a7146102a457806306fdde03146102d457806314427a9614610328578063150b7a02146103605780631c725fdc146103a457806325289bad146103c45780632890d033146103eb5780632c0e1313146104005780632c233067146104205780632d00b58714610440578063379607f51461046e5780633a98ef391461048e5780633b3f12e2146104a45780633d2dded5146104c457806340f3794814610501578063471b01631461052e57806349561cb91461054e57806354fd4d501461056f57806357a858fc1461059e57806357dc48c8146105cb5780635f1bf3a01461061f5780636057e0ec146106465780636ba4c13814610667578063715018a61461068757600080fd5b3661026c576000341161026a57600080fd5b005b600080fd5b34801561027d57600080fd5b5061029161028c366004612367565b6109ca565b6040519081526020015b60405180910390f35b3480156102b057600080fd5b506102c46102bf3660046123bd565b610a22565b604051901515815260200161029b565b3480156102e057600080fd5b5061031b6040518060400160405280601b81526020017a4552433732312053686172652056657374696e672053747265616d60281b81525081565b60405161029b91906123e7565b34801561033457600080fd5b50600954610348906001600160401b031681565b6040516001600160401b03909116815260200161029b565b34801561036c57600080fd5b5061038b61037b3660046124aa565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161029b565b3480156103b057600080fd5b5061026a6103bf366004612584565b610a62565b3480156103d057600080fd5b5060035461034890600160a01b90046001600160401b031681565b3480156103f757600080fd5b50610291610af1565b34801561040c57600080fd5b5061026a61041b366004612584565b610b02565b34801561042c57600080fd5b5061026a61043b36600461259f565b610b5e565b34801561044c57600080fd5b5060095461046190600160f01b900460ff1681565b60405161029b91906125d6565b34801561047a57600080fd5b5061026a6104893660046125fe565b610bbd565b34801561049a57600080fd5b5061029160075481565b3480156104b057600080fd5b506102916104bf366004612367565b610bcb565b3480156104d057600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc54610291565b34801561050d57600080fd5b5061052161051c366004612617565b610c49565b60405161029b9190612658565b34801561053a57600080fd5b5061026a610549366004612584565b610d00565b34801561055a57600080fd5b506009546102c490600160f81b900460ff1681565b34801561057b57600080fd5b5061031b60405180604001604052806003815260200162302e3160e81b81525081565b3480156105aa57600080fd5b506102916105b93660046125fe565b60086020526000908152604090205481565b3480156105d757600080fd5b5061060a6105e636600461269c565b60046020908152600092835260408084209091529082529020805460019091015482565b6040805192835260208301919091520161029b565b34801561062b57600080fd5b5060065461034890600160401b90046001600160401b031681565b34801561065257600080fd5b506009546102c490600160e01b900460ff1681565b34801561067357600080fd5b5061026a610682366004612617565b610d67565b34801561069357600080fd5b5061026a610d78565b3480156106a857600080fd5b5060016102c4565b3480156106bc57600080fd5b506102916106cb3660046126cc565b610d8c565b3480156106dc57600080fd5b5061026a610e50565b3480156106f157600080fd5b50610291610700366004612617565b610e97565b34801561071157600080fd5b5061071a610ea5565b60405161029b91906126e9565b34801561073357600080fd5b5061026a61074236600461277c565b610eba565b34801561075357600080fd5b506102916107623660046125fe565b610f1f565b34801561077357600080fd5b5061029161078236600461269c565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b3480156107b657600080fd5b506009546102c490600160e81b900460ff1681565b3480156107d757600080fd5b506102916107e63660046126cc565b6001600160a01b031660009081526005602052604090205490565b34801561080d57600080fd5b5061026a61081c3660046126cc565b610f2c565b34801561082d57600080fd5b5061026a610f8a565b34801561084257600080fd5b5060035461071a906001600160a01b031681565b34801561086257600080fd5b50600654610348906001600160401b031681565b34801561088257600080fd5b5061026a610feb565b34801561089757600080fd5b5060095461071a90600160401b90046001600160a01b031681565b3480156108be57600080fd5b5061026a6108cd36600461269c565b611031565b3480156108de57600080fd5b5061026a6108ed3660046127df565b61122a565b3480156108fe57600080fd5b5061026a61090d366004612584565b611478565b34801561091e57600080fd5b5061026a61092d3660046126cc565b6114d4565b34801561093e57600080fd5b5061026a61094d36600461284a565b61154a565b34801561095e57600080fd5b5061029161096d3660046125fe565b600090815260046020908152604080832083805290915290205490565b34801561099657600080fd5b506102916109a536600461269c565b6117af565b3480156109b657600080fd5b5061026a6109c53660046128b1565b611807565b600080805b84811015610a17576109f98686838181106109ec576109ec6129a8565b90506020020135856117af565b610a0390836129d4565b915080610a0f816129ec565b9150506109cf565b5090505b9392505050565b60006301ffc9a760e01b6001600160e01b031983161480610a5c57506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b610a6a611980565b6003546001600160401b03600160a01b909104811690821611610ac45760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b60448201526064015b60405180910390fd5b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000610afd6000610d8c565b905090565b610b0a611980565b60035442600160a01b9091046001600160401b031610610b3c5760405162461bcd60e51b8152600401610abb90612a05565b600980546001600160401b0319166001600160401b0392909216919091179055565b610b66611980565b600954600160f81b900460ff1615610b905760405162461bcd60e51b8152600401610abb90612a2c565b6009805482919060ff60f01b1916600160f01b836003811115610bb557610bb56125c0565b021790555050565b610bc8816000611031565b50565b600080805b84811015610a175760046000878784818110610bee57610bee6129a8565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b031681526020019081526020016000206000015482610c3591906129d4565b915080610c41816129ec565b915050610bd0565b60606000826001600160401b03811115610c6557610c6561243c565b604051908082528060200260200182016040528015610c8e578160200160208202803683370190505b50905060005b8151811015610cf85760086000868684818110610cb357610cb36129a8565b90506020020135815260200190815260200160002054828281518110610cdb57610cdb6129a8565b602090810291909101015280610cf0816129ec565b915050610c94565b509392505050565b610d08611980565b60035442600160a01b9091046001600160401b031610610d3a5760405162461bcd60e51b8152600401610abb90612a05565b600680546001600160401b03909216600160401b0267ffffffffffffffff60401b19909216919091179055565b610d74828260003361154a565b5050565b610d80611980565b610d8a60006119df565b565b60006001600160a01b038216610dc0576001600160a01b038216600090815260056020526040902054610a5c9047906129d4565b6040516370a0823160e01b81526001600160a01b038316906370a0823190610dec9030906004016126e9565b602060405180830381865afa158015610e09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2d9190612a4c565b6001600160a01b038316600090815260056020526040902054610a5c91906129d4565b610e58611980565b600954600160e01b900460ff1615610e825760405162461bcd60e51b8152600401610abb90612a2c565b6009805460ff60e01b1916600160e01b179055565b6000610a1b83836000610bcb565b6000546201000090046001600160a01b031690565b610ec2611980565b8151815114610ee35760405162461bcd60e51b8152600401610abb90612a65565b60035442600160a01b9091046001600160401b031610610f155760405162461bcd60e51b8152600401610abb90612a05565b610d748282611a3a565b6000610a5c8260006117af565b610f34611980565b600954600160e01b900460ff1615610f5e5760405162461bcd60e51b8152600401610abb90612a2c565b600980546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b610f92611980565b600954600160f81b900460ff1615610fd45760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401610abb565b600980546001600160f81b0316600160f81b179055565b610ff3611980565b6009805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b60028054036110525760405162461bcd60e51b8152600401610abb90612a8c565b6002805533611062838383611a94565b600061106e84846117af565b9050600081116110b35760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b6044820152606401610abb565b60008481526004602090815260408083206001600160a01b0387168452909152812080548392906110e59084906129d4565b909155505060008481526004602090815260408083206001600160a01b038716845282528083204260019091015560059091528120805483929061112a9084906129d4565b90915550506001600160a01b038316611155576111506001600160a01b03831682611aaa565b6111c8565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906111839085908590600401612ac3565b6020604051808303816000875af11580156111a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c69190612adc565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b61123333611bc0565b600954600160401b90046001600160a01b031661128a5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401610abb565b600954600160e81b900460ff16156112e45760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610abb565b60005b83811015611434576000858583818110611303576113036129a8565b905060200201602081019061131891906126cc565b6001600160a01b0316036113635761135e83838381811061133b5761133b6129a8565b6009546001600160a01b03600160401b9091041692602090910201359050611aaa565b611422565b848482818110611375576113756129a8565b905060200201602081019061138a91906126cc565b6009546001600160a01b039182169163a9059cbb91600160401b9004168585858181106113b9576113b96129a8565b905060200201356040518363ffffffff1660e01b81526004016113dd929190612ac3565b6020604051808303816000875af11580156113fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114209190612adc565b505b8061142c816129ec565b9150506112e7565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a58484848460405161146a9493929190612b34565b60405180910390a150505050565b611480611980565b60035442600160a01b9091046001600160401b0316106114b25760405162461bcd60e51b8152600401610abb90612a05565b600680546001600160401b0319166001600160401b0392909216919091179055565b6114dc611980565b6001600160a01b0381166115415760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abb565b610bc8816119df565b600280540361156b5760405162461bcd60e51b8152600401610abb90612a8c565b600280556000805b8481101561169b5761159e868683818110611590576115906129a8565b905060200201358585611a94565b60006115c28787848181106115b5576115b56129a8565b90506020020135866117af565b905080156116885780600460008989868181106115e1576115e16129a8565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b03168152602001908152602001600020600001600082825461162b91906129d4565b9091555042905060046000898986818110611648576116486129a8565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a16825290925290206001015561168581846129d4565b92505b5080611693816129ec565b915050611573565b506001600160a01b038316600090815260056020526040812080548392906116c49084906129d4565b90915550506001600160a01b0383166116ef576116ea6001600160a01b03831682611aaa565b611762565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb9061171d9085908590600401612ac3565b6020604051808303816000875af115801561173c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117609190612adc565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b133838787878660405161179b96959493929190612b97565b60405180910390a150506001600255505050565b6000806117cf6117c86117c185610d8c565b8686611d4d565b8585611ddc565b60008581526004602090815260408083206001600160a01b03881684529091529020549091506117ff9082612bd6565b949350505050565b600054610100900460ff16158080156118275750600054600160ff909116105b80611848575061183630611971565b158015611848575060005460ff166001145b6118ab5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610abb565b6000805460ff1916600117905580156118ce576000805461ff0019166101001790555b6118d7826119df565b6118e2826000611e05565b6118f483600001518460200151611e36565b61190683604001518460600151611e67565b61191883608001518460a00151611e98565b6119258360c00151611ec9565b801561196c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b6001600160a01b03163b151590565b33611989610ea5565b6001600160a01b031614610d8a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610abb565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b60005b815181101561196c57611a82838281518110611a5b57611a5b6129a8565b6020026020010151838381518110611a7557611a756129a8565b6020026020010151611ef9565b80611a8c816129ec565b915050611a3d565b611a9f838383611f68565b61196c83838361201d565b80471015611afa5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610abb565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611b47576040519150601f19603f3d011682016040523d82523d6000602084013e611b4c565b606091505b505090508061196c5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610abb565b6003600954600160f01b900460ff166003811115611be057611be06125c0565b03611c1f5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401610abb565b6002600954600160f01b900460ff166003811115611c3f57611c3f6125c0565b03611c475750565b6001600954600160f01b900460ff166003811115611c6757611c676125c0565b03611cca576009546001600160a01b03828116600160401b9092041614610bc85760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401610abb565b6000600954600160f01b900460ff166003811115611cea57611cea6125c0565b03610bc857806001600160a01b0316611d01610ea5565b6001600160a01b031614610bc85760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401610abb565b6006546000906001600160401b0316421015611d6b57506000610a1b565b600654611d8a906001600160401b03600160401b820481169116612bed565b6001600160401b0316421115611da1575082610a1b565b6006546001600160401b03600160401b8204811691611dc1911642612bd6565b611dcb9086612c18565b611dd59190612c37565b9050610a1b565b600754600083815260086020526040812054909190611dfb9086612c18565b6117ff9190612c37565b600054610100900460ff16611e2c5760405162461bcd60e51b8152600401610abb90612c59565b610d748282612068565b600054610100900460ff16611e5d5760405162461bcd60e51b8152600401610abb90612c59565b610d748282612102565b600054610100900460ff16611e8e5760405162461bcd60e51b8152600401610abb90612c59565b610d748282612167565b600054610100900460ff16611ebf5760405162461bcd60e51b8152600401610abb90612c59565b610d7482826121c6565b600054610100900460ff16611ef05760405162461bcd60e51b8152600401610abb90612c59565b610bc881612228565b60008281526008602052604090208054908290556007548190611f1d9084906129d4565b611f279190612bd6565b60075560408051848152602081018390529081018390527ff81b1f9d8b5d36a5a67d13006a8b091a9b63e2a38b331d315d99c6daefd2ddcc90606001611963565b6003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa158015611fb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd79190612ca4565b6001600160a01b03161461196c5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b6044820152606401610abb565b600954426001600160401b039091161061196c5760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b6044820152606401610abb565b600054610100900460ff1661208f5760405162461bcd60e51b8152600401610abb90612c59565b61209f63ac2ba33360e01b612276565b60098054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b8360038111156120f9576120f96125c0565b02179055505050565b600054610100900460ff166121295760405162461bcd60e51b8152600401610abb90612c59565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055610d74631ba050e960e21b612276565b600054610100900460ff1661218e5760405162461bcd60e51b8152600401610abb90612c59565b600680546001600160401b03838116600160401b026001600160801b031990921690851617179055610d7463d1bdccff60e01b612276565b600054610100900460ff166121ed5760405162461bcd60e51b8152600401610abb90612c59565b815181511461220e5760405162461bcd60e51b8152600401610abb90612a65565b6122188282611a3a565b610d746333c7a33f60e11b612276565b600054610100900460ff1661224f5760405162461bcd60e51b8152600401610abb90612c59565b600980546001600160401b0319166001600160401b038316179055610bc86317b2ef4360e31b5b6001600160e01b031980821690036122cf5760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401610abb565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60008083601f84011261230957600080fd5b5081356001600160401b0381111561232057600080fd5b6020830191508360208260051b850101111561233b57600080fd5b9250929050565b6001600160a01b0381168114610bc857600080fd5b803561236281612342565b919050565b60008060006040848603121561237c57600080fd5b83356001600160401b0381111561239257600080fd5b61239e868287016122f7565b90945092505060208401356123b281612342565b809150509250925092565b6000602082840312156123cf57600080fd5b81356001600160e01b031981168114610a1b57600080fd5b600060208083528351808285015260005b81811015612414578581018301518582016040015282016123f8565b81811115612426576000604083870101525b50601f01601f1916929092016040019392505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b03811182821017156124745761247461243c565b60405290565b604051601f8201601f191681016001600160401b03811182821017156124a2576124a261243c565b604052919050565b600080600080608085870312156124c057600080fd5b84356124cb81612342565b93506020858101356124dc81612342565b93506040860135925060608601356001600160401b03808211156124ff57600080fd5b818801915088601f83011261251357600080fd5b8135818111156125255761252561243c565b612537601f8201601f1916850161247a565b9150808252898482850101111561254d57600080fd5b808484018584013760008482840101525080935050505092959194509250565b80356001600160401b038116811461236257600080fd5b60006020828403121561259657600080fd5b610a1b8261256d565b6000602082840312156125b157600080fd5b813560048110610a1b57600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106125f857634e487b7160e01b600052602160045260246000fd5b91905290565b60006020828403121561261057600080fd5b5035919050565b6000806020838503121561262a57600080fd5b82356001600160401b0381111561264057600080fd5b61264c858286016122f7565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b8181101561269057835183529284019291840191600101612674565b50909695505050505050565b600080604083850312156126af57600080fd5b8235915060208301356126c181612342565b809150509250929050565b6000602082840312156126de57600080fd5b8135610a1b81612342565b6001600160a01b0391909116815260200190565b600082601f83011261270e57600080fd5b813560206001600160401b038211156127295761272961243c565b8160051b61273882820161247a565b928352848101820192828101908785111561275257600080fd5b83870192505b8483101561277157823582529183019190830190612758565b979650505050505050565b6000806040838503121561278f57600080fd5b82356001600160401b03808211156127a657600080fd5b6127b2868387016126fd565b935060208501359150808211156127c857600080fd5b506127d5858286016126fd565b9150509250929050565b600080600080604085870312156127f557600080fd5b84356001600160401b038082111561280c57600080fd5b612818888389016122f7565b9096509450602087013591508082111561283157600080fd5b5061283e878288016122f7565b95989497509550505050565b6000806000806060858703121561286057600080fd5b84356001600160401b0381111561287657600080fd5b612882878288016122f7565b909550935050602085013561289681612342565b915060408501356128a681612342565b939692955090935050565b600080604083850312156128c457600080fd5b82356001600160401b03808211156128db57600080fd5b9084019060e082870312156128ef57600080fd5b6128f7612452565b61290083612357565b815261290e6020840161256d565b602082015261291f6040840161256d565b60408201526129306060840161256d565b606082015260808301358281111561294757600080fd5b612953888286016126fd565b60808301525060a08301358281111561296b57600080fd5b612977888286016126fd565b60a08301525061298960c0840161256d565b60c0820152935061299f91505060208401612357565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156129e7576129e76129be565b500190565b6000600182016129fe576129fe6129be565b5060010190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b600060208284031215612a5e57600080fd5b5051919050565b6020808252600d908201526c082a48ea6be9a92a69a82a8869609b1b604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b03929092168252602082015260400190565b600060208284031215612aee57600080fd5b81518015158114610a1b57600080fd5b81835260006001600160fb1b03831115612b1757600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b87811015612b77578235612b5a81612342565b6001600160a01b0316825260209283019290910190600101612b47565b508381036020850152612b8b818688612afe565b98975050505050505050565b600060018060a01b038089168352808816602084015260a06040840152612bc260a084018789612afe565b941660608301525060800152949350505050565b600082821015612be857612be86129be565b500390565b60006001600160401b03808316818516808303821115612c0f57612c0f6129be565b01949350505050565b6000816000190483118215151615612c3257612c326129be565b500290565b600082612c5457634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208284031215612cb657600080fd5b8151610a1b8161234256fea2646970667358221220aa0f7b1dc42a060eeb08e1ee69ce071b7e224ff4298e79adce21e3261466f41964736f6c634300080f0033","deployedBytecode":"0x6080604052600436106102585760003560e01c80637520cade116101405780637520cade1461069c578063790c0c73146106b0578063837fe140146106d057806389c6b815146106e55780638da5cb5b146107055780638fc852b1146107275780639199690b1461069c578063968d9b2c14610747578063a1cf649314610767578063a8b46d871461069c578063af121f54146107aa578063c0881849146107cb578063c0bb38ff14610801578063c723955a14610821578063d5ed4d5a14610836578063d6ddd21b14610856578063da82b22714610876578063dcbe353f1461088b578063ddd5e1b2146108b2578063de6d6d96146108d2578063e3860742146108f2578063f2fde38b14610912578063f389b6e414610932578063f4415ad614610952578063f66e38c21461098a578063fb5a2907146109aa57600080fd5b80630191c0af1461027157806301ffc9a7146102a457806306fdde03146102d457806314427a9614610328578063150b7a02146103605780631c725fdc146103a457806325289bad146103c45780632890d033146103eb5780632c0e1313146104005780632c233067146104205780632d00b58714610440578063379607f51461046e5780633a98ef391461048e5780633b3f12e2146104a45780633d2dded5146104c457806340f3794814610501578063471b01631461052e57806349561cb91461054e57806354fd4d501461056f57806357a858fc1461059e57806357dc48c8146105cb5780635f1bf3a01461061f5780636057e0ec146106465780636ba4c13814610667578063715018a61461068757600080fd5b3661026c576000341161026a57600080fd5b005b600080fd5b34801561027d57600080fd5b5061029161028c366004612367565b6109ca565b6040519081526020015b60405180910390f35b3480156102b057600080fd5b506102c46102bf3660046123bd565b610a22565b604051901515815260200161029b565b3480156102e057600080fd5b5061031b6040518060400160405280601b81526020017a4552433732312053686172652056657374696e672053747265616d60281b81525081565b60405161029b91906123e7565b34801561033457600080fd5b50600954610348906001600160401b031681565b6040516001600160401b03909116815260200161029b565b34801561036c57600080fd5b5061038b61037b3660046124aa565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161029b565b3480156103b057600080fd5b5061026a6103bf366004612584565b610a62565b3480156103d057600080fd5b5060035461034890600160a01b90046001600160401b031681565b3480156103f757600080fd5b50610291610af1565b34801561040c57600080fd5b5061026a61041b366004612584565b610b02565b34801561042c57600080fd5b5061026a61043b36600461259f565b610b5e565b34801561044c57600080fd5b5060095461046190600160f01b900460ff1681565b60405161029b91906125d6565b34801561047a57600080fd5b5061026a6104893660046125fe565b610bbd565b34801561049a57600080fd5b5061029160075481565b3480156104b057600080fd5b506102916104bf366004612367565b610bcb565b3480156104d057600080fd5b506000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc54610291565b34801561050d57600080fd5b5061052161051c366004612617565b610c49565b60405161029b9190612658565b34801561053a57600080fd5b5061026a610549366004612584565b610d00565b34801561055a57600080fd5b506009546102c490600160f81b900460ff1681565b34801561057b57600080fd5b5061031b60405180604001604052806003815260200162302e3160e81b81525081565b3480156105aa57600080fd5b506102916105b93660046125fe565b60086020526000908152604090205481565b3480156105d757600080fd5b5061060a6105e636600461269c565b60046020908152600092835260408084209091529082529020805460019091015482565b6040805192835260208301919091520161029b565b34801561062b57600080fd5b5060065461034890600160401b90046001600160401b031681565b34801561065257600080fd5b506009546102c490600160e01b900460ff1681565b34801561067357600080fd5b5061026a610682366004612617565b610d67565b34801561069357600080fd5b5061026a610d78565b3480156106a857600080fd5b5060016102c4565b3480156106bc57600080fd5b506102916106cb3660046126cc565b610d8c565b3480156106dc57600080fd5b5061026a610e50565b3480156106f157600080fd5b50610291610700366004612617565b610e97565b34801561071157600080fd5b5061071a610ea5565b60405161029b91906126e9565b34801561073357600080fd5b5061026a61074236600461277c565b610eba565b34801561075357600080fd5b506102916107623660046125fe565b610f1f565b34801561077357600080fd5b5061029161078236600461269c565b60009182526004602090815260408084206001600160a01b0393909316845291905290205490565b3480156107b657600080fd5b506009546102c490600160e81b900460ff1681565b3480156107d757600080fd5b506102916107e63660046126cc565b6001600160a01b031660009081526005602052604090205490565b34801561080d57600080fd5b5061026a61081c3660046126cc565b610f2c565b34801561082d57600080fd5b5061026a610f8a565b34801561084257600080fd5b5060035461071a906001600160a01b031681565b34801561086257600080fd5b50600654610348906001600160401b031681565b34801561088257600080fd5b5061026a610feb565b34801561089757600080fd5b5060095461071a90600160401b90046001600160a01b031681565b3480156108be57600080fd5b5061026a6108cd36600461269c565b611031565b3480156108de57600080fd5b5061026a6108ed3660046127df565b61122a565b3480156108fe57600080fd5b5061026a61090d366004612584565b611478565b34801561091e57600080fd5b5061026a61092d3660046126cc565b6114d4565b34801561093e57600080fd5b5061026a61094d36600461284a565b61154a565b34801561095e57600080fd5b5061029161096d3660046125fe565b600090815260046020908152604080832083805290915290205490565b34801561099657600080fd5b506102916109a536600461269c565b6117af565b3480156109b657600080fd5b5061026a6109c53660046128b1565b611807565b600080805b84811015610a17576109f98686838181106109ec576109ec6129a8565b90506020020135856117af565b610a0390836129d4565b915080610a0f816129ec565b9150506109cf565b5090505b9392505050565b60006301ffc9a760e01b6001600160e01b031983161480610a5c57506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b610a6a611980565b6003546001600160401b03600160a01b909104811690821611610ac45760405162461bcd60e51b815260206004820152600d60248201526c10d0539393d517d49155d25391609a1b60448201526064015b60405180910390fd5b600380546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6000610afd6000610d8c565b905090565b610b0a611980565b60035442600160a01b9091046001600160401b031610610b3c5760405162461bcd60e51b8152600401610abb90612a05565b600980546001600160401b0319166001600160401b0392909216919091179055565b610b66611980565b600954600160f81b900460ff1615610b905760405162461bcd60e51b8152600401610abb90612a2c565b6009805482919060ff60f01b1916600160f01b836003811115610bb557610bb56125c0565b021790555050565b610bc8816000611031565b50565b600080805b84811015610a175760046000878784818110610bee57610bee6129a8565b9050602002013581526020019081526020016000206000856001600160a01b03166001600160a01b031681526020019081526020016000206000015482610c3591906129d4565b915080610c41816129ec565b915050610bd0565b60606000826001600160401b03811115610c6557610c6561243c565b604051908082528060200260200182016040528015610c8e578160200160208202803683370190505b50905060005b8151811015610cf85760086000868684818110610cb357610cb36129a8565b90506020020135815260200190815260200160002054828281518110610cdb57610cdb6129a8565b602090810291909101015280610cf0816129ec565b915050610c94565b509392505050565b610d08611980565b60035442600160a01b9091046001600160401b031610610d3a5760405162461bcd60e51b8152600401610abb90612a05565b600680546001600160401b03909216600160401b0267ffffffffffffffff60401b19909216919091179055565b610d74828260003361154a565b5050565b610d80611980565b610d8a60006119df565b565b60006001600160a01b038216610dc0576001600160a01b038216600090815260056020526040902054610a5c9047906129d4565b6040516370a0823160e01b81526001600160a01b038316906370a0823190610dec9030906004016126e9565b602060405180830381865afa158015610e09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2d9190612a4c565b6001600160a01b038316600090815260056020526040902054610a5c91906129d4565b610e58611980565b600954600160e01b900460ff1615610e825760405162461bcd60e51b8152600401610abb90612a2c565b6009805460ff60e01b1916600160e01b179055565b6000610a1b83836000610bcb565b6000546201000090046001600160a01b031690565b610ec2611980565b8151815114610ee35760405162461bcd60e51b8152600401610abb90612a65565b60035442600160a01b9091046001600160401b031610610f155760405162461bcd60e51b8152600401610abb90612a05565b610d748282611a3a565b6000610a5c8260006117af565b610f34611980565b600954600160e01b900460ff1615610f5e5760405162461bcd60e51b8152600401610abb90612a2c565b600980546001600160a01b03909216600160401b02600160401b600160e01b0319909216919091179055565b610f92611980565b600954600160f81b900460ff1615610fd45760405162461bcd60e51b815260206004820152600560248201526413d0d2d15160da1b6044820152606401610abb565b600980546001600160f81b0316600160f81b179055565b610ff3611980565b6009805460ff60e81b1916600160e81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b60028054036110525760405162461bcd60e51b8152600401610abb90612a8c565b6002805533611062838383611a94565b600061106e84846117af565b9050600081116110b35760405162461bcd60e51b815260206004820152601060248201526f4e4f5448494e475f544f5f434c41494d60801b6044820152606401610abb565b60008481526004602090815260408083206001600160a01b0387168452909152812080548392906110e59084906129d4565b909155505060008481526004602090815260408083206001600160a01b038716845282528083204260019091015560059091528120805483929061112a9084906129d4565b90915550506001600160a01b038316611155576111506001600160a01b03831682611aaa565b6111c8565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906111839085908590600401612ac3565b6020604051808303816000875af11580156111a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c69190612adc565b505b604080513381526001600160a01b038481166020830152818301879052851660608201526080810183905290517fa2d3c4c1fc934d6d2d8f9e862df90c01ae4eb0e920cd8957d242ba26b8dc40789181900360a00190a1505060016002555050565b61123333611bc0565b600954600160401b90046001600160a01b031661128a5760405162461bcd60e51b815260206004820152601560248201527415d2551211149055cbd393d7d49150d25412515395605a1b6044820152606401610abb565b600954600160e81b900460ff16156112e45760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610abb565b60005b83811015611434576000858583818110611303576113036129a8565b905060200201602081019061131891906126cc565b6001600160a01b0316036113635761135e83838381811061133b5761133b6129a8565b6009546001600160a01b03600160401b9091041692602090910201359050611aaa565b611422565b848482818110611375576113756129a8565b905060200201602081019061138a91906126cc565b6009546001600160a01b039182169163a9059cbb91600160401b9004168585858181106113b9576113b96129a8565b905060200201356040518363ffffffff1660e01b81526004016113dd929190612ac3565b6020604051808303816000875af11580156113fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114209190612adc565b505b8061142c816129ec565b9150506112e7565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a58484848460405161146a9493929190612b34565b60405180910390a150505050565b611480611980565b60035442600160a01b9091046001600160401b0316106114b25760405162461bcd60e51b8152600401610abb90612a05565b600680546001600160401b0319166001600160401b0392909216919091179055565b6114dc611980565b6001600160a01b0381166115415760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abb565b610bc8816119df565b600280540361156b5760405162461bcd60e51b8152600401610abb90612a8c565b600280556000805b8481101561169b5761159e868683818110611590576115906129a8565b905060200201358585611a94565b60006115c28787848181106115b5576115b56129a8565b90506020020135866117af565b905080156116885780600460008989868181106115e1576115e16129a8565b9050602002013581526020019081526020016000206000876001600160a01b03166001600160a01b03168152602001908152602001600020600001600082825461162b91906129d4565b9091555042905060046000898986818110611648576116486129a8565b6020908102929092013583525081810192909252604090810160009081206001600160a01b038a16825290925290206001015561168581846129d4565b92505b5080611693816129ec565b915050611573565b506001600160a01b038316600090815260056020526040812080548392906116c49084906129d4565b90915550506001600160a01b0383166116ef576116ea6001600160a01b03831682611aaa565b611762565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb9061171d9085908590600401612ac3565b6020604051808303816000875af115801561173c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117609190612adc565b505b7fd84a5c424a4f777bcf4f645712b8e5ebfc550f42bde444fa822fe98ee1b132b133838787878660405161179b96959493929190612b97565b60405180910390a150506001600255505050565b6000806117cf6117c86117c185610d8c565b8686611d4d565b8585611ddc565b60008581526004602090815260408083206001600160a01b03881684529091529020549091506117ff9082612bd6565b949350505050565b600054610100900460ff16158080156118275750600054600160ff909116105b80611848575061183630611971565b158015611848575060005460ff166001145b6118ab5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610abb565b6000805460ff1916600117905580156118ce576000805461ff0019166101001790555b6118d7826119df565b6118e2826000611e05565b6118f483600001518460200151611e36565b61190683604001518460600151611e67565b61191883608001518460a00151611e98565b6119258360c00151611ec9565b801561196c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b6001600160a01b03163b151590565b33611989610ea5565b6001600160a01b031614610d8a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610abb565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b60005b815181101561196c57611a82838281518110611a5b57611a5b6129a8565b6020026020010151838381518110611a7557611a756129a8565b6020026020010151611ef9565b80611a8c816129ec565b915050611a3d565b611a9f838383611f68565b61196c83838361201d565b80471015611afa5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610abb565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611b47576040519150601f19603f3d011682016040523d82523d6000602084013e611b4c565b606091505b505090508061196c5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610abb565b6003600954600160f01b900460ff166003811115611be057611be06125c0565b03611c1f5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055cbd313d0d2d151608a1b6044820152606401610abb565b6002600954600160f01b900460ff166003811115611c3f57611c3f6125c0565b03611c475750565b6001600954600160f01b900460ff166003811115611c6757611c676125c0565b03611cca576009546001600160a01b03828116600160401b9092041614610bc85760405162461bcd60e51b815260206004820152601760248201527615d2551211149055cbd3d3931657d49150d25412515395604a1b6044820152606401610abb565b6000600954600160f01b900460ff166003811115611cea57611cea6125c0565b03610bc857806001600160a01b0316611d01610ea5565b6001600160a01b031614610bc85760405162461bcd60e51b81526020600482015260136024820152722ba4aa24222920ab97a7a7262cafa7aba722a960691b6044820152606401610abb565b6006546000906001600160401b0316421015611d6b57506000610a1b565b600654611d8a906001600160401b03600160401b820481169116612bed565b6001600160401b0316421115611da1575082610a1b565b6006546001600160401b03600160401b8204811691611dc1911642612bd6565b611dcb9086612c18565b611dd59190612c37565b9050610a1b565b600754600083815260086020526040812054909190611dfb9086612c18565b6117ff9190612c37565b600054610100900460ff16611e2c5760405162461bcd60e51b8152600401610abb90612c59565b610d748282612068565b600054610100900460ff16611e5d5760405162461bcd60e51b8152600401610abb90612c59565b610d748282612102565b600054610100900460ff16611e8e5760405162461bcd60e51b8152600401610abb90612c59565b610d748282612167565b600054610100900460ff16611ebf5760405162461bcd60e51b8152600401610abb90612c59565b610d7482826121c6565b600054610100900460ff16611ef05760405162461bcd60e51b8152600401610abb90612c59565b610bc881612228565b60008281526008602052604090208054908290556007548190611f1d9084906129d4565b611f279190612bd6565b60075560408051848152602081018390529081018390527ff81b1f9d8b5d36a5a67d13006a8b091a9b63e2a38b331d315d99c6daefd2ddcc90606001611963565b6003546040516331a9108f60e11b8152600481018590526001600160a01b03838116921690636352211e90602401602060405180830381865afa158015611fb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd79190612ca4565b6001600160a01b03161461196c5760405162461bcd60e51b815260206004820152600d60248201526c2727aa2fa7232a2fa7aba722a960991b6044820152606401610abb565b600954426001600160401b039091161061196c5760405162461bcd60e51b815260206004820152600c60248201526b10d310525357d313d0d2d15160a21b6044820152606401610abb565b600054610100900460ff1661208f5760405162461bcd60e51b8152600401610abb90612c59565b61209f63ac2ba33360e01b612276565b60098054600160401b600160e01b03198116600160401b6001600160a01b038616029081178355839291600160401b62ff000160e01b03191660ff60f01b1990911617600160f01b8360038111156120f9576120f96125c0565b02179055505050565b600054610100900460ff166121295760405162461bcd60e51b8152600401610abb90612c59565b600380546001600160401b038316600160a01b026001600160e01b03199091166001600160a01b03851617179055610d74631ba050e960e21b612276565b600054610100900460ff1661218e5760405162461bcd60e51b8152600401610abb90612c59565b600680546001600160401b03838116600160401b026001600160801b031990921690851617179055610d7463d1bdccff60e01b612276565b600054610100900460ff166121ed5760405162461bcd60e51b8152600401610abb90612c59565b815181511461220e5760405162461bcd60e51b8152600401610abb90612a65565b6122188282611a3a565b610d746333c7a33f60e11b612276565b600054610100900460ff1661224f5760405162461bcd60e51b8152600401610abb90612c59565b600980546001600160401b0319166001600160401b038316179055610bc86317b2ef4360e31b5b6001600160e01b031980821690036122cf5760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b6044820152606401610abb565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60008083601f84011261230957600080fd5b5081356001600160401b0381111561232057600080fd5b6020830191508360208260051b850101111561233b57600080fd5b9250929050565b6001600160a01b0381168114610bc857600080fd5b803561236281612342565b919050565b60008060006040848603121561237c57600080fd5b83356001600160401b0381111561239257600080fd5b61239e868287016122f7565b90945092505060208401356123b281612342565b809150509250925092565b6000602082840312156123cf57600080fd5b81356001600160e01b031981168114610a1b57600080fd5b600060208083528351808285015260005b81811015612414578581018301518582016040015282016123f8565b81811115612426576000604083870101525b50601f01601f1916929092016040019392505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b03811182821017156124745761247461243c565b60405290565b604051601f8201601f191681016001600160401b03811182821017156124a2576124a261243c565b604052919050565b600080600080608085870312156124c057600080fd5b84356124cb81612342565b93506020858101356124dc81612342565b93506040860135925060608601356001600160401b03808211156124ff57600080fd5b818801915088601f83011261251357600080fd5b8135818111156125255761252561243c565b612537601f8201601f1916850161247a565b9150808252898482850101111561254d57600080fd5b808484018584013760008482840101525080935050505092959194509250565b80356001600160401b038116811461236257600080fd5b60006020828403121561259657600080fd5b610a1b8261256d565b6000602082840312156125b157600080fd5b813560048110610a1b57600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106125f857634e487b7160e01b600052602160045260246000fd5b91905290565b60006020828403121561261057600080fd5b5035919050565b6000806020838503121561262a57600080fd5b82356001600160401b0381111561264057600080fd5b61264c858286016122f7565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b8181101561269057835183529284019291840191600101612674565b50909695505050505050565b600080604083850312156126af57600080fd5b8235915060208301356126c181612342565b809150509250929050565b6000602082840312156126de57600080fd5b8135610a1b81612342565b6001600160a01b0391909116815260200190565b600082601f83011261270e57600080fd5b813560206001600160401b038211156127295761272961243c565b8160051b61273882820161247a565b928352848101820192828101908785111561275257600080fd5b83870192505b8483101561277157823582529183019190830190612758565b979650505050505050565b6000806040838503121561278f57600080fd5b82356001600160401b03808211156127a657600080fd5b6127b2868387016126fd565b935060208501359150808211156127c857600080fd5b506127d5858286016126fd565b9150509250929050565b600080600080604085870312156127f557600080fd5b84356001600160401b038082111561280c57600080fd5b612818888389016122f7565b9096509450602087013591508082111561283157600080fd5b5061283e878288016122f7565b95989497509550505050565b6000806000806060858703121561286057600080fd5b84356001600160401b0381111561287657600080fd5b612882878288016122f7565b909550935050602085013561289681612342565b915060408501356128a681612342565b939692955090935050565b600080604083850312156128c457600080fd5b82356001600160401b03808211156128db57600080fd5b9084019060e082870312156128ef57600080fd5b6128f7612452565b61290083612357565b815261290e6020840161256d565b602082015261291f6040840161256d565b60408201526129306060840161256d565b606082015260808301358281111561294757600080fd5b612953888286016126fd565b60808301525060a08301358281111561296b57600080fd5b612977888286016126fd565b60a08301525061298960c0840161256d565b60c0820152935061299f91505060208401612357565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156129e7576129e76129be565b500190565b6000600182016129fe576129fe6129be565b5060010190565b6020808252600d908201526c10d3d3919251d7d313d0d2d151609a1b604082015260600190565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b600060208284031215612a5e57600080fd5b5051919050565b6020808252600d908201526c082a48ea6be9a92a69a82a8869609b1b604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b03929092168252602082015260400190565b600060208284031215612aee57600080fd5b81518015158114610a1b57600080fd5b81835260006001600160fb1b03831115612b1757600080fd5b8260051b8083602087013760009401602001938452509192915050565b6040808252810184905260008560608301825b87811015612b77578235612b5a81612342565b6001600160a01b0316825260209283019290910190600101612b47565b508381036020850152612b8b818688612afe565b98975050505050505050565b600060018060a01b038089168352808816602084015260a06040840152612bc260a084018789612afe565b941660608301525060800152949350505050565b600082821015612be857612be86129be565b500390565b60006001600160401b03808316818516808303821115612c0f57612c0f6129be565b01949350505050565b6000816000190483118215151615612c3257612c326129be565b500290565b600082612c5457634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208284031215612cb657600080fd5b8151610a1b8161234256fea2646970667358221220aa0f7b1dc42a060eeb08e1ee69ce071b7e224ff4298e79adce21e3261466f41964736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"test/TestERC20":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"TestERC20","sourceName":"contracts/test/TestERC20.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b5060405180604001604052806009815260200168119b185a5c95195cdd60ba1b8152506040518060400160405280600381526020016246545360e81b815250816003908161005e9190610112565b50600461006b8282610112565b5050506101d1565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009d57607f821691505b6020821081036100bd57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010d57600081815260208120601f850160051c810160208610156100ea5750805b601f850160051c820191505b81811015610109578281556001016100f6565b5050505b505050565b81516001600160401b0381111561012b5761012b610073565b61013f816101398454610089565b846100c3565b602080601f831160018114610174576000841561015c5750858301515b600019600386901b1c1916600185901b178555610109565b600085815260208120601f198616915b828110156101a357888601518255948401946001909101908401610184565b50858210156101c15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610983806101e06000396000f3fe608060405234801561001057600080fd5b50600436106100a45760003560e01c806306fdde03146100a9578063095ea7b3146100c757806318160ddd146100ea57806323b872dd146100fc578063313ce5671461010f578063395093511461011e57806340c10f191461013157806370a082311461014657806395d89b411461016f578063a457c2d714610177578063a9059cbb1461018a578063dd62ed3e1461019d575b600080fd5b6100b16101b0565b6040516100be91906107c1565b60405180910390f35b6100da6100d5366004610832565b610242565b60405190151581526020016100be565b6002545b6040519081526020016100be565b6100da61010a36600461085c565b61025a565b604051601281526020016100be565b6100da61012c366004610832565b61027e565b61014461013f366004610832565b6102a0565b005b6100ee610154366004610898565b6001600160a01b031660009081526020819052604090205490565b6100b16102ae565b6100da610185366004610832565b6102bd565b6100da610198366004610832565b61033d565b6100ee6101ab3660046108ba565b61034b565b6060600380546101bf906108ed565b80601f01602080910402602001604051908101604052809291908181526020018280546101eb906108ed565b80156102385780601f1061020d57610100808354040283529160200191610238565b820191906000526020600020905b81548152906001019060200180831161021b57829003601f168201915b5050505050905090565b600033610250818585610376565b5060019392505050565b60003361026885828561049a565b610273858585610514565b506001949350505050565b600033610250818585610291838361034b565b61029b9190610927565b610376565b6102aa82826106e2565b5050565b6060600480546101bf906108ed565b600033816102cb828661034b565b9050838110156103305760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102738286868403610376565b600033610250818585610514565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103d85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610327565b6001600160a01b0382166104395760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610327565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006104a6848461034b565b9050600019811461050e57818110156105015760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610327565b61050e8484848403610376565b50505050565b6001600160a01b0383166105785760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610327565b6001600160a01b0382166105da5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610327565b6001600160a01b038316600090815260208190526040902054818110156106525760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610327565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610689908490610927565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106d591815260200190565b60405180910390a361050e565b6001600160a01b0382166107385760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610327565b806002600082825461074a9190610927565b90915550506001600160a01b03821660009081526020819052604081208054839290610777908490610927565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600060208083528351808285015260005b818110156107ee578581018301518582016040015282016107d2565b81811115610800576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461082d57600080fd5b919050565b6000806040838503121561084557600080fd5b61084e83610816565b946020939093013593505050565b60008060006060848603121561087157600080fd5b61087a84610816565b925061088860208501610816565b9150604084013590509250925092565b6000602082840312156108aa57600080fd5b6108b382610816565b9392505050565b600080604083850312156108cd57600080fd5b6108d683610816565b91506108e460208401610816565b90509250929050565b600181811c9082168061090157607f821691505b60208210810361092157634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561094857634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220638c874dab3731636a634e155fb170c73c711f8ec5239cff04647e9f50d24a4364736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100a45760003560e01c806306fdde03146100a9578063095ea7b3146100c757806318160ddd146100ea57806323b872dd146100fc578063313ce5671461010f578063395093511461011e57806340c10f191461013157806370a082311461014657806395d89b411461016f578063a457c2d714610177578063a9059cbb1461018a578063dd62ed3e1461019d575b600080fd5b6100b16101b0565b6040516100be91906107c1565b60405180910390f35b6100da6100d5366004610832565b610242565b60405190151581526020016100be565b6002545b6040519081526020016100be565b6100da61010a36600461085c565b61025a565b604051601281526020016100be565b6100da61012c366004610832565b61027e565b61014461013f366004610832565b6102a0565b005b6100ee610154366004610898565b6001600160a01b031660009081526020819052604090205490565b6100b16102ae565b6100da610185366004610832565b6102bd565b6100da610198366004610832565b61033d565b6100ee6101ab3660046108ba565b61034b565b6060600380546101bf906108ed565b80601f01602080910402602001604051908101604052809291908181526020018280546101eb906108ed565b80156102385780601f1061020d57610100808354040283529160200191610238565b820191906000526020600020905b81548152906001019060200180831161021b57829003601f168201915b5050505050905090565b600033610250818585610376565b5060019392505050565b60003361026885828561049a565b610273858585610514565b506001949350505050565b600033610250818585610291838361034b565b61029b9190610927565b610376565b6102aa82826106e2565b5050565b6060600480546101bf906108ed565b600033816102cb828661034b565b9050838110156103305760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102738286868403610376565b600033610250818585610514565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103d85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610327565b6001600160a01b0382166104395760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610327565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006104a6848461034b565b9050600019811461050e57818110156105015760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610327565b61050e8484848403610376565b50505050565b6001600160a01b0383166105785760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610327565b6001600160a01b0382166105da5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610327565b6001600160a01b038316600090815260208190526040902054818110156106525760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610327565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610689908490610927565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106d591815260200190565b60405180910390a361050e565b6001600160a01b0382166107385760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610327565b806002600082825461074a9190610927565b90915550506001600160a01b03821660009081526020819052604081208054839290610777908490610927565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600060208083528351808285015260005b818110156107ee578581018301518582016040015282016107d2565b81811115610800576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461082d57600080fd5b919050565b6000806040838503121561084557600080fd5b61084e83610816565b946020939093013593505050565b60008060006060848603121561087157600080fd5b61087a84610816565b925061088860208501610816565b9150604084013590509250925092565b6000602082840312156108aa57600080fd5b6108b382610816565b9392505050565b600080604083850312156108cd57600080fd5b6108d683610816565b91506108e460208401610816565b90509250929050565b600181811c9082168061090157607f821691505b60208210810361092157634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561094857634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220638c874dab3731636a634e155fb170c73c711f8ec5239cff04647e9f50d24a4364736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"test/TestERC721":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"TestERC721","sourceName":"contracts/test/TestERC721.sol","abi":[{"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":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"},{"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":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"address","name":"to","type":"address"},{"internalType":"uint256","name":"total","type":"uint256"}],"name":"mintBulk","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"mintExact","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"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":"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":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405180604001604052806009815260200168119b185a5c95195cdd60ba1b8152506040518060400160405280600381526020016246545360e81b81525081600090816200006191906200011e565b5060016200007082826200011e565b505050620001ea565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000a457607f821691505b602082108103620000c557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200011957600081815260208120601f850160051c81016020861015620000f45750805b601f850160051c820191505b81811015620001155782815560010162000100565b5050505b505050565b81516001600160401b038111156200013a576200013a62000079565b62000152816200014b84546200008f565b84620000cb565b602080601f8311600181146200018a5760008415620001715750858301515b600019600386901b1c1916600185901b17855562000115565b600085815260208120601f198616915b82811015620001bb578886015182559484019460019091019084016200019a565b5085821015620001da5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6116c580620001fa6000396000f3fe608060405234801561001057600080fd5b50600436106100e65760003560e01c806301ffc9a7146100eb57806306fdde0314610113578063081812fc14610128578063095ea7b31461015357806318160ddd1461016857806323b872dd1461017a5780632f745c591461018d57806342842e0e146101a05780634f6ccce7146101b35780636352211e146101c657806370a08231146101d957806395d89b41146101ec578063a22cb465146101f4578063b88d4fde14610207578063bca4d1661461021a578063c80120f11461022d578063c87b56dd14610240578063e985e9c514610253575b600080fd5b6100fe6100f9366004611194565b610266565b60405190151581526020015b60405180910390f35b61011b610277565b60405161010a9190611209565b61013b61013636600461121c565b610309565b6040516001600160a01b03909116815260200161010a565b610166610161366004611251565b610330565b005b6008545b60405190815260200161010a565b61016661018836600461127b565b61044a565b61016c61019b366004611251565b61047b565b6101666101ae36600461127b565b610511565b61016c6101c136600461121c565b61052c565b61013b6101d436600461121c565b6105bf565b61016c6101e73660046112b7565b6105f4565b61011b61067a565b6101666102023660046112d2565b610689565b610166610215366004611324565b610698565b6100fe610228366004611251565b6106d0565b6100fe61023b366004611251565b61070a565b61011b61024e36600461121c565b61071f565b6100fe6102613660046113ff565b610793565b6000610271826107c1565b92915050565b60606000805461028690611432565b80601f01602080910402602001604051908101604052809291908181526020018280546102b290611432565b80156102ff5780601f106102d4576101008083540402835291602001916102ff565b820191906000526020600020905b8154815290600101906020018083116102e257829003601f168201915b5050505050905090565b6000610314826107e6565b506000908152600460205260409020546001600160a01b031690565b600061033b826105bf565b9050806001600160a01b0316836001600160a01b0316036103ad5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103c957506103c98133610793565b61043b5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016103a4565b610445838361080e565b505050565b610454338261087c565b6104705760405162461bcd60e51b81526004016103a49061146c565b6104458383836108db565b6000610486836105f4565b82106104e85760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016103a4565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b61044583838360405180602001604052806000815250610698565b600061053760085490565b821061059a5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016103a4565b600882815481106105ad576105ad6114ba565b90600052602060002001549050919050565b6000818152600260205260408120546001600160a01b0316806102715760405162461bcd60e51b81526004016103a4906114d0565b60006001600160a01b03821661065e5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103a4565b506001600160a01b031660009081526003602052604090205490565b60606001805461028690611432565b610694338383610a82565b5050565b6106a2338361087c565b6106be5760405162461bcd60e51b81526004016103a49061146c565b6106ca84848484610b4c565b50505050565b6000805b82811015610700576106ee846106e960085490565b610b7f565b806106f881611518565b9150506106d4565b5060019392505050565b60006107168383610b7f565b50600192915050565b606061072a826107e6565b600061074160408051602081019091526000815290565b90506000815111610761576040518060200160405280600081525061078c565b8061076b84610cbd565b60405160200161077c929190611531565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b0319821663780e9d6360e01b1480610271575061027182610dbd565b6107ef81610e0d565b61080b5760405162461bcd60e51b81526004016103a4906114d0565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610843826105bf565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610888836105bf565b9050806001600160a01b0316846001600160a01b031614806108af57506108af8185610793565b806108d35750836001600160a01b03166108c884610309565b6001600160a01b0316145b949350505050565b826001600160a01b03166108ee826105bf565b6001600160a01b0316146109525760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103a4565b6001600160a01b0382166109b45760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103a4565b6109bf838383610e2a565b6109ca60008261080e565b6001600160a01b03831660009081526003602052604081208054600192906109f3908490611560565b90915550506001600160a01b0382166000908152600360205260408120805460019290610a21908490611577565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b031603610adf5760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b60448201526064016103a4565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610b578484846108db565b610b6384848484610e35565b6106ca5760405162461bcd60e51b81526004016103a49061158f565b6001600160a01b038216610bd55760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016103a4565b610bde81610e0d565b15610c2a5760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b60448201526064016103a4565b610c3660008383610e2a565b6001600160a01b0382166000908152600360205260408120805460019290610c5f908490611577565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b606081600003610ce45750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610d0e5780610cf881611518565b9150610d079050600a836115f7565b9150610ce8565b6000816001600160401b03811115610d2857610d2861130e565b6040519080825280601f01601f191660200182016040528015610d52576020820181803683370190505b5090505b84156108d357610d67600183611560565b9150610d74600a8661160b565b610d7f906030611577565b60f81b818381518110610d9457610d946114ba565b60200101906001600160f81b031916908160001a905350610db6600a866115f7565b9450610d56565b60006001600160e01b031982166380ac58cd60e01b1480610dee57506001600160e01b03198216635b5e139f60e01b145b8061027157506301ffc9a760e01b6001600160e01b0319831614610271565b6000908152600260205260409020546001600160a01b0316151590565b610445838383610f36565b60006001600160a01b0384163b15610f2b57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610e7990339089908890889060040161161f565b6020604051808303816000875af1925050508015610eb4575060408051601f3d908101601f19168201909252610eb19181019061165c565b60015b610f11573d808015610ee2576040519150601f19603f3d011682016040523d82523d6000602084013e610ee7565b606091505b508051600003610f095760405162461bcd60e51b81526004016103a49061158f565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506108d3565b506001949350505050565b6001600160a01b038316610f9157610f8c81600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b610fb4565b816001600160a01b0316836001600160a01b031614610fb457610fb48382610fee565b6001600160a01b038216610fcb576104458161108b565b826001600160a01b0316826001600160a01b03161461044557610445828261113a565b60006001610ffb846105f4565b6110059190611560565b600083815260076020526040902054909150808214611058576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b60085460009061109d90600190611560565b600083815260096020526040812054600880549394509092849081106110c5576110c56114ba565b9060005260206000200154905080600883815481106110e6576110e66114ba565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061111e5761111e611679565b6001900381819060005260206000200160009055905550505050565b6000611145836105f4565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160e01b03198116811461080b57600080fd5b6000602082840312156111a657600080fd5b813561078c8161117e565b60005b838110156111cc5781810151838201526020016111b4565b838111156106ca5750506000910152565b600081518084526111f58160208601602086016111b1565b601f01601f19169290920160200192915050565b60208152600061078c60208301846111dd565b60006020828403121561122e57600080fd5b5035919050565b80356001600160a01b038116811461124c57600080fd5b919050565b6000806040838503121561126457600080fd5b61126d83611235565b946020939093013593505050565b60008060006060848603121561129057600080fd5b61129984611235565b92506112a760208501611235565b9150604084013590509250925092565b6000602082840312156112c957600080fd5b61078c82611235565b600080604083850312156112e557600080fd5b6112ee83611235565b91506020830135801515811461130357600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561133a57600080fd5b61134385611235565b935061135160208601611235565b92506040850135915060608501356001600160401b038082111561137457600080fd5b818701915087601f83011261138857600080fd5b81358181111561139a5761139a61130e565b604051601f8201601f19908116603f011681019083821181831017156113c2576113c261130e565b816040528281528a60208487010111156113db57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561141257600080fd5b61141b83611235565b915061142960208401611235565b90509250929050565b600181811c9082168061144657607f821691505b60208210810361146657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60006001820161152a5761152a611502565b5060010190565b600083516115438184602088016111b1565b8351908301906115578183602088016111b1565b01949350505050565b60008282101561157257611572611502565b500390565b6000821982111561158a5761158a611502565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082611606576116066115e1565b500490565b60008261161a5761161a6115e1565b500690565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611652908301846111dd565b9695505050505050565b60006020828403121561166e57600080fd5b815161078c8161117e565b634e487b7160e01b600052603160045260246000fdfea26469706673582212208a3df3c648bd00c35bd65b9ccc698db60e3feb20061d92b4d48b5020193895b064736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100e65760003560e01c806301ffc9a7146100eb57806306fdde0314610113578063081812fc14610128578063095ea7b31461015357806318160ddd1461016857806323b872dd1461017a5780632f745c591461018d57806342842e0e146101a05780634f6ccce7146101b35780636352211e146101c657806370a08231146101d957806395d89b41146101ec578063a22cb465146101f4578063b88d4fde14610207578063bca4d1661461021a578063c80120f11461022d578063c87b56dd14610240578063e985e9c514610253575b600080fd5b6100fe6100f9366004611194565b610266565b60405190151581526020015b60405180910390f35b61011b610277565b60405161010a9190611209565b61013b61013636600461121c565b610309565b6040516001600160a01b03909116815260200161010a565b610166610161366004611251565b610330565b005b6008545b60405190815260200161010a565b61016661018836600461127b565b61044a565b61016c61019b366004611251565b61047b565b6101666101ae36600461127b565b610511565b61016c6101c136600461121c565b61052c565b61013b6101d436600461121c565b6105bf565b61016c6101e73660046112b7565b6105f4565b61011b61067a565b6101666102023660046112d2565b610689565b610166610215366004611324565b610698565b6100fe610228366004611251565b6106d0565b6100fe61023b366004611251565b61070a565b61011b61024e36600461121c565b61071f565b6100fe6102613660046113ff565b610793565b6000610271826107c1565b92915050565b60606000805461028690611432565b80601f01602080910402602001604051908101604052809291908181526020018280546102b290611432565b80156102ff5780601f106102d4576101008083540402835291602001916102ff565b820191906000526020600020905b8154815290600101906020018083116102e257829003601f168201915b5050505050905090565b6000610314826107e6565b506000908152600460205260409020546001600160a01b031690565b600061033b826105bf565b9050806001600160a01b0316836001600160a01b0316036103ad5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103c957506103c98133610793565b61043b5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016103a4565b610445838361080e565b505050565b610454338261087c565b6104705760405162461bcd60e51b81526004016103a49061146c565b6104458383836108db565b6000610486836105f4565b82106104e85760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016103a4565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b61044583838360405180602001604052806000815250610698565b600061053760085490565b821061059a5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016103a4565b600882815481106105ad576105ad6114ba565b90600052602060002001549050919050565b6000818152600260205260408120546001600160a01b0316806102715760405162461bcd60e51b81526004016103a4906114d0565b60006001600160a01b03821661065e5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103a4565b506001600160a01b031660009081526003602052604090205490565b60606001805461028690611432565b610694338383610a82565b5050565b6106a2338361087c565b6106be5760405162461bcd60e51b81526004016103a49061146c565b6106ca84848484610b4c565b50505050565b6000805b82811015610700576106ee846106e960085490565b610b7f565b806106f881611518565b9150506106d4565b5060019392505050565b60006107168383610b7f565b50600192915050565b606061072a826107e6565b600061074160408051602081019091526000815290565b90506000815111610761576040518060200160405280600081525061078c565b8061076b84610cbd565b60405160200161077c929190611531565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b0319821663780e9d6360e01b1480610271575061027182610dbd565b6107ef81610e0d565b61080b5760405162461bcd60e51b81526004016103a4906114d0565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610843826105bf565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610888836105bf565b9050806001600160a01b0316846001600160a01b031614806108af57506108af8185610793565b806108d35750836001600160a01b03166108c884610309565b6001600160a01b0316145b949350505050565b826001600160a01b03166108ee826105bf565b6001600160a01b0316146109525760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103a4565b6001600160a01b0382166109b45760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103a4565b6109bf838383610e2a565b6109ca60008261080e565b6001600160a01b03831660009081526003602052604081208054600192906109f3908490611560565b90915550506001600160a01b0382166000908152600360205260408120805460019290610a21908490611577565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b031603610adf5760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b60448201526064016103a4565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610b578484846108db565b610b6384848484610e35565b6106ca5760405162461bcd60e51b81526004016103a49061158f565b6001600160a01b038216610bd55760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016103a4565b610bde81610e0d565b15610c2a5760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b60448201526064016103a4565b610c3660008383610e2a565b6001600160a01b0382166000908152600360205260408120805460019290610c5f908490611577565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b606081600003610ce45750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610d0e5780610cf881611518565b9150610d079050600a836115f7565b9150610ce8565b6000816001600160401b03811115610d2857610d2861130e565b6040519080825280601f01601f191660200182016040528015610d52576020820181803683370190505b5090505b84156108d357610d67600183611560565b9150610d74600a8661160b565b610d7f906030611577565b60f81b818381518110610d9457610d946114ba565b60200101906001600160f81b031916908160001a905350610db6600a866115f7565b9450610d56565b60006001600160e01b031982166380ac58cd60e01b1480610dee57506001600160e01b03198216635b5e139f60e01b145b8061027157506301ffc9a760e01b6001600160e01b0319831614610271565b6000908152600260205260409020546001600160a01b0316151590565b610445838383610f36565b60006001600160a01b0384163b15610f2b57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610e7990339089908890889060040161161f565b6020604051808303816000875af1925050508015610eb4575060408051601f3d908101601f19168201909252610eb19181019061165c565b60015b610f11573d808015610ee2576040519150601f19603f3d011682016040523d82523d6000602084013e610ee7565b606091505b508051600003610f095760405162461bcd60e51b81526004016103a49061158f565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506108d3565b506001949350505050565b6001600160a01b038316610f9157610f8c81600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b610fb4565b816001600160a01b0316836001600160a01b031614610fb457610fb48382610fee565b6001600160a01b038216610fcb576104458161108b565b826001600160a01b0316826001600160a01b03161461044557610445828261113a565b60006001610ffb846105f4565b6110059190611560565b600083815260076020526040902054909150808214611058576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b60085460009061109d90600190611560565b600083815260096020526040812054600880549394509092849081106110c5576110c56114ba565b9060005260206000200154905080600883815481106110e6576110e66114ba565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061111e5761111e611679565b6001900381819060005260206000200160009055905550505050565b6000611145836105f4565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160e01b03198116811461080b57600080fd5b6000602082840312156111a657600080fd5b813561078c8161117e565b60005b838110156111cc5781810151838201526020016111b4565b838111156106ca5750506000910152565b600081518084526111f58160208601602086016111b1565b601f01601f19169290920160200192915050565b60208152600061078c60208301846111dd565b60006020828403121561122e57600080fd5b5035919050565b80356001600160a01b038116811461124c57600080fd5b919050565b6000806040838503121561126457600080fd5b61126d83611235565b946020939093013593505050565b60008060006060848603121561129057600080fd5b61129984611235565b92506112a760208501611235565b9150604084013590509250925092565b6000602082840312156112c957600080fd5b61078c82611235565b600080604083850312156112e557600080fd5b6112ee83611235565b91506020830135801515811461130357600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561133a57600080fd5b61134385611235565b935061135160208601611235565b92506040850135915060608501356001600160401b038082111561137457600080fd5b818701915087601f83011261138857600080fd5b81358181111561139a5761139a61130e565b604051601f8201601f19908116603f011681019083821181831017156113c2576113c261130e565b816040528281528a60208487010111156113db57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561141257600080fd5b61141b83611235565b915061142960208401611235565b90509250929050565b600181811c9082168061144657607f821691505b60208210810361146657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60006001820161152a5761152a611502565b5060010190565b600083516115438184602088016111b1565b8351908301906115578183602088016111b1565b01949350505050565b60008282101561157257611572611502565b500390565b6000821982111561158a5761158a611502565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082611606576116066115e1565b500490565b60008261161a5761161a6115e1565b500690565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611652908301846111dd565b9695505050505050565b60006020828403121561166e57600080fd5b815161078c8161117e565b634e487b7160e01b600052603160045260246000fdfea26469706673582212208a3df3c648bd00c35bd65b9ccc698db60e3feb20061d92b4d48b5020193895b064736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"tokens/extensions/ERC20RoleBasedLockingExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20RoleBasedLockingExtension","sourceName":"contracts/tokens/extensions/ERC20RoleBasedLockingExtension.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TRANSFER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"canTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockForAll","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"tokens/extensions/ERC20RoleBasedLockingExtensionInterface":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20RoleBasedLockingExtensionInterface","sourceName":"contracts/tokens/extensions/ERC20RoleBasedLockingExtension.sol","abi":[{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"canTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockForAll","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"tokens/presets/ERC20BasicToken":{"address":{"1":"0xb91057014bFB01df21e541335a78D930266f7869","3":"0xEE122C46dFd680194268E614928b6dCD621aa533","4":"0x0FEe7a8A54Afb8eFeF1EFF735Ca5F5Cff264e5D9","5":"0x102B9F9D28A46f0AdbC562FdC333f5CBe3aBcA27","25":"0x26aaa1F0Be85042402C97766EAC22357AeCCEbc6","56":"0xb2edC1E98b147137D7f6894403E163236bc6FffC","65":"0x35F6B1d81aED96Ae0019bdec354a80E99219bEc5","66":"0xad0B69e01dC4F051e23F247F2EA41dFCBe3a78b1","97":"0xa2b85F51affCAa00EFf599805407781C582d3d7F","137":"0x876f2Ade3C3CD75C90D86FA674BC50D66F25e474","250":"0x2a89238074A3eF4cE606ed3f53CfE5C50CdD9299","280":"0xa1CbEC852b9b6FE5F8B690bc0e102C291de6256C","4002":"0x2a89238074A3eF4cE606ed3f53CfE5C50CdD9299","9000":"0x35F6B1d81aED96Ae0019bdec354a80E99219bEc5","42161":"0xe69E05f4f2b86aA996d76b43A407a93d3Fa84345","43113":"0xBB0AA646E8D63d920a7Ab1C96Ba082cbF075DcDA","43114":"0x8043d592263311ccCaAeeC871Df6ad1e127A52E1","421611":"0x73fb9dDfA54EC7d0fecC22c88B8e9E98a2C1bF78","arbitrumOne":"0xe69E05f4f2b86aA996d76b43A407a93d3Fa84345","arbitrumTestnet":"0x73fb9dDfA54EC7d0fecC22c88B8e9E98a2C1bF78","avalanche":"0x8043d592263311ccCaAeeC871Df6ad1e127A52E1","avalancheFujiTestnet":"0xBB0AA646E8D63d920a7Ab1C96Ba082cbF075DcDA","bsc":"0xb2edC1E98b147137D7f6894403E163236bc6FffC","bscTestnet":"0xa2b85F51affCAa00EFf599805407781C582d3d7F","cronos":"0x26aaa1F0Be85042402C97766EAC22357AeCCEbc6","evmosTestnet":"0x35F6B1d81aED96Ae0019bdec354a80E99219bEc5","ftmTestnet":"0x2a89238074A3eF4cE606ed3f53CfE5C50CdD9299","goerli":"0x102B9F9D28A46f0AdbC562FdC333f5CBe3aBcA27","mainnet":"0xb91057014bFB01df21e541335a78D930266f7869","okcMainnet":"0xad0B69e01dC4F051e23F247F2EA41dFCBe3a78b1","okcTestnet":"0x35F6B1d81aED96Ae0019bdec354a80E99219bEc5","opera":"0x2a89238074A3eF4cE606ed3f53CfE5C50CdD9299","polygon":"0x876f2Ade3C3CD75C90D86FA674BC50D66F25e474","rinkeby":"0x0FEe7a8A54Afb8eFeF1EFF735Ca5F5Cff264e5D9","ropsten":"0xEE122C46dFd680194268E614928b6dCD621aa533","zksyncTestnet":"0xa1CbEC852b9b6FE5F8B690bc0e102C291de6256C"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20BasicToken","sourceName":"contracts/tokens/presets/ERC20BasicToken.sol","abi":[{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"internalType":"struct ERC20BasicToken.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"internalType":"struct ERC20BasicToken.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162001d7f38038062001d7f8339810160408190526200003491620003bf565b805160208201516004620000498382620004ff565b506005620000588282620004ff565b50506006805460ff191690555062000071813362000078565b50620005cb565b600054610100900460ff1615808015620000995750600054600160ff909116105b80620000c95750620000b6306200022d60201b620008261760201c565b158015620000c9575060005460ff166001145b620001315760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff19166001179055801562000155576000805461ff0019166101001790555b8251600890620001669082620004ff565b5060208301516009906200017b9082620004ff565b50620001896000836200023c565b620001b57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a836200023c565b620001e17f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6836200023c565b801562000228576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6001600160a01b03163b151590565b60008281526007602090815260408083206001600160a01b038516845290915290205460ff16620002dd5760008281526007602090815260408083206001600160a01b03851684529091529020805460ff191660011790556200029c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620003225762000322620002e1565b604052919050565b600082601f8301126200033c57600080fd5b81516001600160401b03811115620003585762000358620002e1565b60206200036e601f8301601f19168201620002f7565b82815285828487010111156200038357600080fd5b60005b83811015620003a357858101830151828201840152820162000386565b83811115620003b55760008385840101525b5095945050505050565b600060208284031215620003d257600080fd5b81516001600160401b0380821115620003ea57600080fd5b9083019060408286031215620003ff57600080fd5b6040516040810181811083821117156200041d576200041d620002e1565b6040528251828111156200043057600080fd5b6200043e878286016200032a565b8252506020830151828111156200045457600080fd5b62000462878286016200032a565b60208301525095945050505050565b600181811c908216806200048657607f821691505b602082108103620004a757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200022857600081815260208120601f850160051c81016020861015620004d65750805b601f850160051c820191505b81811015620004f757828155600101620004e2565b505050505050565b81516001600160401b038111156200051b576200051b620002e1565b62000533816200052c845462000471565b84620004ad565b602080601f8311600181146200056b5760008415620005525750858301515b600019600386901b1c1916600185901b178555620004f7565b600085815260208120601f198616915b828110156200059c578886015182559484019460019091019084016200057b565b5085821015620005bb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6117a480620005db6000396000f3fe608060405234801561001057600080fd5b50600436106101495760003560e01c806301ffc9a71461014e57806306fdde0314610176578063095ea7b31461018b57806318160ddd1461019e57806323b872dd146101b0578063248a9ca3146101c35780632f2ff15d146101d6578063313ce567146101eb57806336568abe146101fa578063395093511461020d5780633f4ba83a1461022057806340c10f191461022857806342966c681461023b5780635539160f1461024e5780635c975abb1461026157806370a082311461026c57806379cc6790146102955780638456cb59146102a857806391d14854146102b057806395d89b41146102c3578063a217fddf146102cb578063a457c2d7146102d3578063a9059cbb146102e6578063d5391393146102f9578063d547741f1461030e578063dd62ed3e14610321578063e63ab1e914610334575b600080fd5b61016161015c3660046111e0565b610349565b60405190151581526020015b60405180910390f35b61017e610380565b60405161016d9190611236565b610161610199366004611285565b610412565b6003545b60405190815260200161016d565b6101616101be3660046112af565b61042a565b6101a26101d13660046112eb565b61044e565b6101e96101e4366004611304565b610463565b005b6040516012815260200161016d565b6101e9610208366004611304565b610484565b61016161021b366004611285565b610507565b6101e9610529565b6101e9610236366004611285565b61054c565b6101e96102493660046112eb565b61056e565b6101e961025c3660046113d2565b610578565b60065460ff16610161565b6101a261027a366004611482565b6001600160a01b031660009081526001602052604090205490565b6101e96102a3366004611285565b6106e7565b6101e96106fc565b6101616102be366004611304565b61071c565b61017e610747565b6101a2600081565b6101616102e1366004611285565b610756565b6101616102f4366004611285565b6107d1565b6101a260008051602061172f83398151915281565b6101e961031c366004611304565b6107df565b6101a261032f36600461149d565b6107fb565b6101a260008051602061170f83398151915281565b60006001600160e01b03198216637965db0b60e01b148061037a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606008805461038f906114c7565b80601f01602080910402602001604051908101604052809291908181526020018280546103bb906114c7565b80156104085780601f106103dd57610100808354040283529160200191610408565b820191906000526020600020905b8154815290600101906020018083116103eb57829003601f168201915b5050505050905090565b600033610420818585610835565b5060019392505050565b600033610438858285610959565b6104438585856109d3565b506001949350505050565b60009081526007602052604090206001015490565b61046c8261044e565b61047581610b9a565b61047f8383610ba4565b505050565b6001600160a01b03811633146104f95760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105038282610c2a565b5050565b60003361042081858561051a83836107fb565b6105249190611517565b610835565b60008051602061170f83398151915261054181610b9a565b610549610c91565b50565b60008051602061172f83398151915261056481610b9a565b61047f8383610ce3565b6105493382610dbc565b600054610100900460ff16158080156105985750600054600160ff909116105b806105b957506105a730610826565b1580156105b9575060005460ff166001145b61061c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104f0565b6000805460ff19166001179055801561063f576000805461ff0019166101001790555b825160089061064e908261157d565b506020830151600990610661908261157d565b5061066d600083610ba4565b61068560008051602061170f83398151915283610ba4565b61069d60008051602061172f83398151915283610ba4565b801561047f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6106f2823383610959565b6105038282610dbc565b60008051602061170f83398151915261071481610b9a565b610549610f04565b60009182526007602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606009805461038f906114c7565b6000338161076482866107fb565b9050838110156107c45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104f0565b6104438286868403610835565b6000336104208185856109d3565b6107e88261044e565b6107f181610b9a565b61047f8383610c2a565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6001600160a01b03163b151590565b6001600160a01b0383166108975760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104f0565b6001600160a01b0382166108f85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104f0565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061096584846107fb565b905060001981146109cd57818110156109c05760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104f0565b6109cd8484848403610835565b50505050565b6001600160a01b038316610a375760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104f0565b6001600160a01b038216610a995760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104f0565b610aa4838383610f41565b6001600160a01b03831660009081526001602052604090205481811015610b1c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104f0565b6001600160a01b03808516600090815260016020526040808220858503905591851681529081208054849290610b53908490611517565b92505081905550826001600160a01b0316846001600160a01b031660008051602061174f83398151915284604051610b8d91815260200190565b60405180910390a36109cd565b6105498133610f49565b610bae828261071c565b6105035760008281526007602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610be63390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610c34828261071c565b156105035760008281526007602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b610c99610fad565b6006805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610d395760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104f0565b610d4560008383610f41565b8060036000828254610d579190611517565b90915550506001600160a01b03821660009081526001602052604081208054839290610d84908490611517565b90915550506040518181526001600160a01b0383169060009060008051602061174f8339815191529060200160405180910390a35050565b6001600160a01b038216610e1c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104f0565b610e2882600083610f41565b6001600160a01b03821660009081526001602052604090205481811015610e9c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104f0565b6001600160a01b0383166000908152600160205260408120838303905560038054849290610ecb90849061163c565b90915550506040518281526000906001600160a01b0385169060008051602061174f8339815191529060200160405180910390a3505050565b610f0c610ff8565b6006805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610cc63390565b61047f610ff8565b610f53828261071c565b61050357610f6b816001600160a01b0316601461103e565b610f7683602061103e565b604051602001610f87929190611653565b60408051601f198184030181529082905262461bcd60e51b82526104f091600401611236565b60065460ff16610ff65760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016104f0565b565b60065460ff1615610ff65760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016104f0565b6060600061104d8360026116c2565b611058906002611517565b6001600160401b0381111561106f5761106f611330565b6040519080825280601f01601f191660200182016040528015611099576020820181803683370190505b509050600360fc1b816000815181106110b4576110b46116e1565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106110e3576110e36116e1565b60200101906001600160f81b031916908160001a90535060006111078460026116c2565b611112906001611517565b90505b600181111561118a576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611146576111466116e1565b1a60f81b82828151811061115c5761115c6116e1565b60200101906001600160f81b031916908160001a90535060049490941c93611183816116f7565b9050611115565b5083156111d95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016104f0565b9392505050565b6000602082840312156111f257600080fd5b81356001600160e01b0319811681146111d957600080fd5b60005b8381101561122557818101518382015260200161120d565b838111156109cd5750506000910152565b602081526000825180602084015261125581604085016020870161120a565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461128057600080fd5b919050565b6000806040838503121561129857600080fd5b6112a183611269565b946020939093013593505050565b6000806000606084860312156112c457600080fd5b6112cd84611269565b92506112db60208501611269565b9150604084013590509250925092565b6000602082840312156112fd57600080fd5b5035919050565b6000806040838503121561131757600080fd5b8235915061132760208401611269565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261135757600080fd5b81356001600160401b038082111561137157611371611330565b604051601f8301601f19908116603f0116810190828211818310171561139957611399611330565b816040528381528660208588010111156113b257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080604083850312156113e557600080fd5b82356001600160401b03808211156113fc57600080fd5b908401906040828703121561141057600080fd5b60405160408101818110838211171561142b5761142b611330565b60405282358281111561143d57600080fd5b61144988828601611346565b82525060208301358281111561145e57600080fd5b61146a88828601611346565b60208301525080945050505061132760208401611269565b60006020828403121561149457600080fd5b6111d982611269565b600080604083850312156114b057600080fd5b6114b983611269565b915061132760208401611269565b600181811c908216806114db57607f821691505b6020821081036114fb57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561152a5761152a611501565b500190565b601f82111561047f57600081815260208120601f850160051c810160208610156115565750805b601f850160051c820191505b8181101561157557828155600101611562565b505050505050565b81516001600160401b0381111561159657611596611330565b6115aa816115a484546114c7565b8461152f565b602080601f8311600181146115df57600084156115c75750858301515b600019600386901b1c1916600185901b178555611575565b600085815260208120601f198616915b8281101561160e578886015182559484019460019091019084016115ef565b508582101561162c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008282101561164e5761164e611501565b500390565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b81526000835161168581601785016020880161120a565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516116b681602884016020880161120a565b01602801949350505050565b60008160001904831182151516156116dc576116dc611501565b500290565b634e487b7160e01b600052603260045260246000fd5b60008161170657611706611501565b50600019019056fe65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220349c4a57e1837921223ab6b358937189308554505c83ca95ea30104a79881b9864736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101495760003560e01c806301ffc9a71461014e57806306fdde0314610176578063095ea7b31461018b57806318160ddd1461019e57806323b872dd146101b0578063248a9ca3146101c35780632f2ff15d146101d6578063313ce567146101eb57806336568abe146101fa578063395093511461020d5780633f4ba83a1461022057806340c10f191461022857806342966c681461023b5780635539160f1461024e5780635c975abb1461026157806370a082311461026c57806379cc6790146102955780638456cb59146102a857806391d14854146102b057806395d89b41146102c3578063a217fddf146102cb578063a457c2d7146102d3578063a9059cbb146102e6578063d5391393146102f9578063d547741f1461030e578063dd62ed3e14610321578063e63ab1e914610334575b600080fd5b61016161015c3660046111e0565b610349565b60405190151581526020015b60405180910390f35b61017e610380565b60405161016d9190611236565b610161610199366004611285565b610412565b6003545b60405190815260200161016d565b6101616101be3660046112af565b61042a565b6101a26101d13660046112eb565b61044e565b6101e96101e4366004611304565b610463565b005b6040516012815260200161016d565b6101e9610208366004611304565b610484565b61016161021b366004611285565b610507565b6101e9610529565b6101e9610236366004611285565b61054c565b6101e96102493660046112eb565b61056e565b6101e961025c3660046113d2565b610578565b60065460ff16610161565b6101a261027a366004611482565b6001600160a01b031660009081526001602052604090205490565b6101e96102a3366004611285565b6106e7565b6101e96106fc565b6101616102be366004611304565b61071c565b61017e610747565b6101a2600081565b6101616102e1366004611285565b610756565b6101616102f4366004611285565b6107d1565b6101a260008051602061172f83398151915281565b6101e961031c366004611304565b6107df565b6101a261032f36600461149d565b6107fb565b6101a260008051602061170f83398151915281565b60006001600160e01b03198216637965db0b60e01b148061037a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606008805461038f906114c7565b80601f01602080910402602001604051908101604052809291908181526020018280546103bb906114c7565b80156104085780601f106103dd57610100808354040283529160200191610408565b820191906000526020600020905b8154815290600101906020018083116103eb57829003601f168201915b5050505050905090565b600033610420818585610835565b5060019392505050565b600033610438858285610959565b6104438585856109d3565b506001949350505050565b60009081526007602052604090206001015490565b61046c8261044e565b61047581610b9a565b61047f8383610ba4565b505050565b6001600160a01b03811633146104f95760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105038282610c2a565b5050565b60003361042081858561051a83836107fb565b6105249190611517565b610835565b60008051602061170f83398151915261054181610b9a565b610549610c91565b50565b60008051602061172f83398151915261056481610b9a565b61047f8383610ce3565b6105493382610dbc565b600054610100900460ff16158080156105985750600054600160ff909116105b806105b957506105a730610826565b1580156105b9575060005460ff166001145b61061c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104f0565b6000805460ff19166001179055801561063f576000805461ff0019166101001790555b825160089061064e908261157d565b506020830151600990610661908261157d565b5061066d600083610ba4565b61068560008051602061170f83398151915283610ba4565b61069d60008051602061172f83398151915283610ba4565b801561047f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6106f2823383610959565b6105038282610dbc565b60008051602061170f83398151915261071481610b9a565b610549610f04565b60009182526007602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606009805461038f906114c7565b6000338161076482866107fb565b9050838110156107c45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104f0565b6104438286868403610835565b6000336104208185856109d3565b6107e88261044e565b6107f181610b9a565b61047f8383610c2a565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6001600160a01b03163b151590565b6001600160a01b0383166108975760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104f0565b6001600160a01b0382166108f85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104f0565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061096584846107fb565b905060001981146109cd57818110156109c05760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104f0565b6109cd8484848403610835565b50505050565b6001600160a01b038316610a375760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104f0565b6001600160a01b038216610a995760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104f0565b610aa4838383610f41565b6001600160a01b03831660009081526001602052604090205481811015610b1c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104f0565b6001600160a01b03808516600090815260016020526040808220858503905591851681529081208054849290610b53908490611517565b92505081905550826001600160a01b0316846001600160a01b031660008051602061174f83398151915284604051610b8d91815260200190565b60405180910390a36109cd565b6105498133610f49565b610bae828261071c565b6105035760008281526007602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610be63390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610c34828261071c565b156105035760008281526007602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b610c99610fad565b6006805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610d395760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104f0565b610d4560008383610f41565b8060036000828254610d579190611517565b90915550506001600160a01b03821660009081526001602052604081208054839290610d84908490611517565b90915550506040518181526001600160a01b0383169060009060008051602061174f8339815191529060200160405180910390a35050565b6001600160a01b038216610e1c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104f0565b610e2882600083610f41565b6001600160a01b03821660009081526001602052604090205481811015610e9c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104f0565b6001600160a01b0383166000908152600160205260408120838303905560038054849290610ecb90849061163c565b90915550506040518281526000906001600160a01b0385169060008051602061174f8339815191529060200160405180910390a3505050565b610f0c610ff8565b6006805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610cc63390565b61047f610ff8565b610f53828261071c565b61050357610f6b816001600160a01b0316601461103e565b610f7683602061103e565b604051602001610f87929190611653565b60408051601f198184030181529082905262461bcd60e51b82526104f091600401611236565b60065460ff16610ff65760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016104f0565b565b60065460ff1615610ff65760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016104f0565b6060600061104d8360026116c2565b611058906002611517565b6001600160401b0381111561106f5761106f611330565b6040519080825280601f01601f191660200182016040528015611099576020820181803683370190505b509050600360fc1b816000815181106110b4576110b46116e1565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106110e3576110e36116e1565b60200101906001600160f81b031916908160001a90535060006111078460026116c2565b611112906001611517565b90505b600181111561118a576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611146576111466116e1565b1a60f81b82828151811061115c5761115c6116e1565b60200101906001600160f81b031916908160001a90535060049490941c93611183816116f7565b9050611115565b5083156111d95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016104f0565b9392505050565b6000602082840312156111f257600080fd5b81356001600160e01b0319811681146111d957600080fd5b60005b8381101561122557818101518382015260200161120d565b838111156109cd5750506000910152565b602081526000825180602084015261125581604085016020870161120a565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461128057600080fd5b919050565b6000806040838503121561129857600080fd5b6112a183611269565b946020939093013593505050565b6000806000606084860312156112c457600080fd5b6112cd84611269565b92506112db60208501611269565b9150604084013590509250925092565b6000602082840312156112fd57600080fd5b5035919050565b6000806040838503121561131757600080fd5b8235915061132760208401611269565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261135757600080fd5b81356001600160401b038082111561137157611371611330565b604051601f8301601f19908116603f0116810190828211818310171561139957611399611330565b816040528381528660208588010111156113b257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080604083850312156113e557600080fd5b82356001600160401b03808211156113fc57600080fd5b908401906040828703121561141057600080fd5b60405160408101818110838211171561142b5761142b611330565b60405282358281111561143d57600080fd5b61144988828601611346565b82525060208301358281111561145e57600080fd5b61146a88828601611346565b60208301525080945050505061132760208401611269565b60006020828403121561149457600080fd5b6111d982611269565b600080604083850312156114b057600080fd5b6114b983611269565b915061132760208401611269565b600181811c908216806114db57607f821691505b6020821081036114fb57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561152a5761152a611501565b500190565b601f82111561047f57600081815260208120601f850160051c810160208610156115565750805b601f850160051c820191505b8181101561157557828155600101611562565b505050505050565b81516001600160401b0381111561159657611596611330565b6115aa816115a484546114c7565b8461152f565b602080601f8311600181146115df57600084156115c75750858301515b600019600386901b1c1916600185901b178555611575565b600085815260208120601f198616915b8281101561160e578886015182559484019460019091019084016115ef565b508582101561162c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008282101561164e5761164e611501565b500390565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b81526000835161168581601785016020880161120a565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516116b681602884016020880161120a565b01602801949350505050565b60008160001904831182151516156116dc576116dc611501565b500290565b634e487b7160e01b600052603260045260246000fd5b60008161170657611706611501565b50600019019056fe65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220349c4a57e1837921223ab6b358937189308554505c83ca95ea30104a79881b9864736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"tokens/presets/ERC20LockableToken":{"address":{"1":"0x8fa6C988b115B46Ed2910C53992864754316305f","3":"0x21e829BaFF29509e87E94D59d57d200B50Eaeb7F","4":"0xA1A62B5F2fE75691853A4fDf935fBe1218648627","5":"0x99aCCfe475D59DeA6C6F45595Ee553Eee5e62c1A","25":"0xa79B21B345846224b307212FB7278b2e74Ea3295","56":"0x35F6B1d81aED96Ae0019bdec354a80E99219bEc5","65":"0x01d50c1438f38A9DD5906a92bdEC7efB60A7c584","66":"0x0c73275707240354C7fF30a5d5485F76B73a24f4","97":"0x5bdECF506Cc673a60dD8c820fa1fd3806e459864","137":"0x6114D14349602a7B683283FC6F074132232352A3","250":"0xfdc3a9eB43e0fa62cA206D9F51A1cDdf9dD5f1e8","280":"0xc6Baaaf451a615F224792e421d36459F826aB557","4002":"0xfdc3a9eB43e0fa62cA206D9F51A1cDdf9dD5f1e8","9000":"0x01d50c1438f38A9DD5906a92bdEC7efB60A7c584","42161":"0xc65C4e0C5f81E7016F75f38387b5D13e8775f729","43113":"0xC97b52877Aa14987198eA8cABaa678B566baadF1","43114":"0x5082a0AAffd7A82B16A15b6Ef42774A94527E69B","421611":"0xe9832698308707D18dE429Aaf6260355196CEFB7","arbitrumOne":"0xc65C4e0C5f81E7016F75f38387b5D13e8775f729","arbitrumTestnet":"0xe9832698308707D18dE429Aaf6260355196CEFB7","avalanche":"0x5082a0AAffd7A82B16A15b6Ef42774A94527E69B","avalancheFujiTestnet":"0xC97b52877Aa14987198eA8cABaa678B566baadF1","bsc":"0x35F6B1d81aED96Ae0019bdec354a80E99219bEc5","bscTestnet":"0x5bdECF506Cc673a60dD8c820fa1fd3806e459864","cronos":"0xa79B21B345846224b307212FB7278b2e74Ea3295","evmosTestnet":"0x01d50c1438f38A9DD5906a92bdEC7efB60A7c584","ftmTestnet":"0xfdc3a9eB43e0fa62cA206D9F51A1cDdf9dD5f1e8","goerli":"0x99aCCfe475D59DeA6C6F45595Ee553Eee5e62c1A","mainnet":"0x8fa6C988b115B46Ed2910C53992864754316305f","okcMainnet":"0x0c73275707240354C7fF30a5d5485F76B73a24f4","okcTestnet":"0x01d50c1438f38A9DD5906a92bdEC7efB60A7c584","opera":"0xfdc3a9eB43e0fa62cA206D9F51A1cDdf9dD5f1e8","polygon":"0x6114D14349602a7B683283FC6F074132232352A3","rinkeby":"0xA1A62B5F2fE75691853A4fDf935fBe1218648627","ropsten":"0x21e829BaFF29509e87E94D59d57d200B50Eaeb7F","zksyncTestnet":"0xc6Baaaf451a615F224792e421d36459F826aB557"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20LockableToken","sourceName":"contracts/tokens/presets/ERC20LockableToken.sol","abi":[{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"internalType":"struct ERC20LockableToken.Config","name":"config","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TRANSFER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"canTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"internalType":"struct ERC20LockableToken.Config","name":"config","type":"tuple"},{"internalType":"address","name":"deployer","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162002225380380620022258339810160408190526200003491620004ef565b8051602082015160066200004983826200062f565b5060076200005882826200062f565b50506008805460ff191690555062000071813362000078565b5062000746565b600054610100900460ff1615808015620000995750600054600160ff909116105b80620000c95750620000b6306200023960201b620009091760201c565b158015620000c9575060005460ff166001145b620001325760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000156576000805461ff0019166101001790555b82516009906200016790826200062f565b506020830151600a906200017c90826200062f565b506200018a60008362000248565b620001b67f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8362000248565b620001e27f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68362000248565b620001ed82620002ed565b801562000234576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6001600160a01b03163b151590565b60008281526002602090815260408083206001600160a01b038516845290915290205460ff16620002e95760008281526002602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620002a83390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600054610100900460ff16620003175760405162461bcd60e51b81526004016200012990620006fb565b620003228162000325565b50565b600054610100900460ff166200034f5760405162461bcd60e51b81526004016200012990620006fb565b62000361630a615bcd60e11b6200038d565b620003227f8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c8262000248565b6001600160e01b03198082169003620003e95760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640162000129565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562000452576200045262000411565b604052919050565b600082601f8301126200046c57600080fd5b81516001600160401b0381111562000488576200048862000411565b60206200049e601f8301601f1916820162000427565b8281528582848701011115620004b357600080fd5b60005b83811015620004d3578581018301518282018401528201620004b6565b83811115620004e55760008385840101525b5095945050505050565b6000602082840312156200050257600080fd5b81516001600160401b03808211156200051a57600080fd5b90830190604082860312156200052f57600080fd5b6040516040810181811083821117156200054d576200054d62000411565b6040528251828111156200056057600080fd5b6200056e878286016200045a565b8252506020830151828111156200058457600080fd5b62000592878286016200045a565b60208301525095945050505050565b600181811c90821680620005b657607f821691505b602082108103620005d757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200023457600081815260208120601f850160051c81016020861015620006065750805b601f850160051c820191505b81811015620006275782815560010162000612565b505050505050565b81516001600160401b038111156200064b576200064b62000411565b62000663816200065c8454620005a1565b84620005dd565b602080601f8311600181146200069b5760008415620006825750858301515b600019600386901b1c1916600185901b17855562000627565b600085815260208120601f198616915b82811015620006cc57888601518255948401946001909101908401620006ab565b5085821015620006eb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b611acf80620007566000396000f3fe608060405234801561001057600080fd5b50600436106101755760003560e01c806301ffc9a71461017a57806306fdde03146101a2578063095ea7b3146101b757806318160ddd146101ca578063206b60f9146101dc57806323b872dd146101f1578063248a9ca3146102045780632f2ff15d14610217578063313ce5671461022c57806336568abe1461023b578063395093511461024e5780633f4ba83a1461026157806340c10f191461026957806342966c681461027c5780635539160f1461028f5780635c975abb146102a257806370a08231146102ad57806378fc3cb3146102d657806379cc6790146102e95780638456cb59146102fc57806391d148541461030457806395d89b411461031757806398a2a3231461031f578063a217fddf14610327578063a457c2d71461032f578063a9059cbb14610342578063d539139314610355578063d547741f1461036a578063dd62ed3e1461037d578063e63ab1e914610390578063f49c280a146103a5575b600080fd5b61018d61018836600461147d565b6103ad565b60405190151581526020015b60405180910390f35b6101aa6103be565b60405161019991906114d3565b61018d6101c5366004611522565b610450565b6005545b604051908152602001610199565b6101ce600080516020611a1a83398151915281565b61018d6101ff36600461154c565b610468565b6101ce610212366004611588565b61048c565b61022a6102253660046115a1565b6104a1565b005b60405160128152602001610199565b61022a6102493660046115a1565b6104c2565b61018d61025c366004611522565b610545565b61022a610567565b61022a610277366004611522565b61058a565b61022a61028a366004611588565b6105ac565b61022a61029d36600461166f565b6105b6565b60085460ff1661018d565b6101ce6102bb36600461171f565b6001600160a01b031660009081526003602052604090205490565b61018d6102e436600461171f565b61072e565b61022a6102f7366004611522565b610748565b61022a61075d565b61018d6103123660046115a1565b61077d565b6101aa6107a8565b61022a6107b7565b6101ce600081565b61018d61033d366004611522565b6107f9565b61018d610350366004611522565b610874565b6101ce600080516020611a5a83398151915281565b61022a6103783660046115a1565b610882565b6101ce61038b36600461173a565b61089e565b6101ce600080516020611a3a83398151915281565b61022a6108c9565b60006103b882610918565b92915050565b6060600980546103cd90611764565b80601f01602080910402602001604051908101604052809291908181526020018280546103f990611764565b80156104465780601f1061041b57610100808354040283529160200191610446565b820191906000526020600020905b81548152906001019060200180831161042957829003601f168201915b5050505050905090565b60003361045e818585610954565b5060019392505050565b600033610476858285610a78565b610481858585610af2565b506001949350505050565b60009081526002602052604090206001015490565b6104aa8261048c565b6104b381610cb9565b6104bd8383610cc3565b505050565b6001600160a01b03811633146105375760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105418282610d49565b5050565b60003361045e818585610558838361089e565b61056291906117b4565b610954565b600080516020611a3a83398151915261057f81610cb9565b610587610db0565b50565b600080516020611a5a8339815191526105a281610cb9565b6104bd8383610e02565b6105873382610edb565b600054610100900460ff16158080156105d65750600054600160ff909116105b806105f757506105e530610909565b1580156105f7575060005460ff166001145b61065a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161052e565b6000805460ff19166001179055801561067d576000805461ff0019166101001790555b825160099061068c908261181a565b506020830151600a9061069f908261181a565b506106ab600083610cc3565b6106c3600080516020611a3a83398151915283610cc3565b6106db600080516020611a5a83398151915283610cc3565b6106e482611023565b80156104bd576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60006103b8600080516020611a1a8339815191528361077d565b610753823383610a78565b6105418282610edb565b600080516020611a3a83398151915261077581610cb9565b610587611053565b60009182526002602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600a80546103cd90611764565b6107c260003361077d565b6107de5760405162461bcd60e51b815260040161052e906118d9565b6107f7600080516020611a1a8339815191526000610d49565b565b60003381610807828661089e565b9050838110156108675760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161052e565b6104818286868403610954565b60003361045e818585610af2565b61088b8261048c565b61089481610cb9565b6104bd8383610d49565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6108d460003361077d565b6108f05760405162461bcd60e51b815260040161052e906118d9565b6107f7600080516020611a1a8339815191526000610cc3565b6001600160a01b03163b151590565b60006301ffc9a760e01b6001600160e01b0319831614806103b85750506001600160e01b03191660009081526001602052604090205460ff1690565b6001600160a01b0383166109b65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161052e565b6001600160a01b038216610a175760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161052e565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610a84848461089e565b90506000198114610aec5781811015610adf5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161052e565b610aec8484848403610954565b50505050565b6001600160a01b038316610b565760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161052e565b6001600160a01b038216610bb85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161052e565b610bc3838383611090565b6001600160a01b03831660009081526003602052604090205481811015610c3b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161052e565b6001600160a01b03808516600090815260036020526040808220858503905591851681529081208054849290610c729084906117b4565b92505081905550826001600160a01b0316846001600160a01b0316600080516020611a7a83398151915284604051610cac91815260200190565b60405180910390a3610aec565b61058781336110a3565b610ccd828261077d565b6105415760008281526002602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610d053390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610d53828261077d565b156105415760008281526002602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b610db8611107565b6008805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610e585760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161052e565b610e6460008383611090565b8060056000828254610e7691906117b4565b90915550506001600160a01b03821660009081526003602052604081208054839290610ea39084906117b4565b90915550506040518181526001600160a01b03831690600090600080516020611a7a8339815191529060200160405180910390a35050565b6001600160a01b038216610f3b5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161052e565b610f4782600083611090565b6001600160a01b03821660009081526003602052604090205481811015610fbb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161052e565b6001600160a01b0383166000908152600360205260408120838303905560058054849290610fea9084906118fc565b90915550506040518281526000906001600160a01b03851690600080516020611a7a8339815191529060200160405180910390a3505050565b600054610100900460ff1661104a5760405162461bcd60e51b815260040161052e90611913565b61058781611150565b61105b61119f565b6008805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610de53390565b61109861119f565b6104bd8383836111e5565b6110ad828261077d565b610541576110c5816001600160a01b0316601461125a565b6110d083602061125a565b6040516020016110e192919061195e565b60408051601f198184030181529082905262461bcd60e51b825261052e916004016114d3565b60085460ff166107f75760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161052e565b600054610100900460ff166111775760405162461bcd60e51b815260040161052e90611913565b611187630a615bcd60e11b6113fc565b610587600080516020611a1a83398151915282610cc3565b60085460ff16156107f75760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161052e565b6111fe600080516020611a1a833981519152600061077d565b8061121c575061121c600080516020611a1a8339815191523361077d565b6104bd5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d313d0d2d151608a1b604482015260640161052e565b606060006112698360026119cd565b6112749060026117b4565b6001600160401b0381111561128b5761128b6115cd565b6040519080825280601f01601f1916602001820160405280156112b5576020820181803683370190505b509050600360fc1b816000815181106112d0576112d06119ec565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106112ff576112ff6119ec565b60200101906001600160f81b031916908160001a90535060006113238460026119cd565b61132e9060016117b4565b90505b60018111156113a6576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611362576113626119ec565b1a60f81b828281518110611378576113786119ec565b60200101906001600160f81b031916908160001a90535060049490941c9361139f81611a02565b9050611331565b5083156113f55760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161052e565b9392505050565b6001600160e01b031980821690036114555760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b604482015260640161052e565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60006020828403121561148f57600080fd5b81356001600160e01b0319811681146113f557600080fd5b60005b838110156114c25781810151838201526020016114aa565b83811115610aec5750506000910152565b60208152600082518060208401526114f28160408501602087016114a7565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461151d57600080fd5b919050565b6000806040838503121561153557600080fd5b61153e83611506565b946020939093013593505050565b60008060006060848603121561156157600080fd5b61156a84611506565b925061157860208501611506565b9150604084013590509250925092565b60006020828403121561159a57600080fd5b5035919050565b600080604083850312156115b457600080fd5b823591506115c460208401611506565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126115f457600080fd5b81356001600160401b038082111561160e5761160e6115cd565b604051601f8301601f19908116603f01168101908282118183101715611636576116366115cd565b8160405283815286602085880101111561164f57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561168257600080fd5b82356001600160401b038082111561169957600080fd5b90840190604082870312156116ad57600080fd5b6040516040810181811083821117156116c8576116c86115cd565b6040528235828111156116da57600080fd5b6116e6888286016115e3565b8252506020830135828111156116fb57600080fd5b611707888286016115e3565b6020830152508094505050506115c460208401611506565b60006020828403121561173157600080fd5b6113f582611506565b6000806040838503121561174d57600080fd5b61175683611506565b91506115c460208401611506565b600181811c9082168061177857607f821691505b60208210810361179857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156117c7576117c761179e565b500190565b601f8211156104bd57600081815260208120601f850160051c810160208610156117f35750805b601f850160051c820191505b81811015611812578281556001016117ff565b505050505050565b81516001600160401b03811115611833576118336115cd565b611847816118418454611764565b846117cc565b602080601f83116001811461187c57600084156118645750858301515b600019600386901b1c1916600185901b178555611812565b600085815260208120601f198616915b828110156118ab5788860151825594840194600190910190840161188c565b50858210156118c95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252600990820152682727aa2fa0a226a4a760b91b604082015260600190565b60008282101561190e5761190e61179e565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516119908160178501602088016114a7565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516119c18160288401602088016114a7565b01602801949350505050565b60008160001904831182151516156119e7576119e761179e565b500290565b634e487b7160e01b600052603260045260246000fd5b600081611a1157611a1161179e565b50600019019056fe8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220568bf96c8db66f426e71126d207bb08c5c3cf552d676ac91212141a3cccc9ed064736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101755760003560e01c806301ffc9a71461017a57806306fdde03146101a2578063095ea7b3146101b757806318160ddd146101ca578063206b60f9146101dc57806323b872dd146101f1578063248a9ca3146102045780632f2ff15d14610217578063313ce5671461022c57806336568abe1461023b578063395093511461024e5780633f4ba83a1461026157806340c10f191461026957806342966c681461027c5780635539160f1461028f5780635c975abb146102a257806370a08231146102ad57806378fc3cb3146102d657806379cc6790146102e95780638456cb59146102fc57806391d148541461030457806395d89b411461031757806398a2a3231461031f578063a217fddf14610327578063a457c2d71461032f578063a9059cbb14610342578063d539139314610355578063d547741f1461036a578063dd62ed3e1461037d578063e63ab1e914610390578063f49c280a146103a5575b600080fd5b61018d61018836600461147d565b6103ad565b60405190151581526020015b60405180910390f35b6101aa6103be565b60405161019991906114d3565b61018d6101c5366004611522565b610450565b6005545b604051908152602001610199565b6101ce600080516020611a1a83398151915281565b61018d6101ff36600461154c565b610468565b6101ce610212366004611588565b61048c565b61022a6102253660046115a1565b6104a1565b005b60405160128152602001610199565b61022a6102493660046115a1565b6104c2565b61018d61025c366004611522565b610545565b61022a610567565b61022a610277366004611522565b61058a565b61022a61028a366004611588565b6105ac565b61022a61029d36600461166f565b6105b6565b60085460ff1661018d565b6101ce6102bb36600461171f565b6001600160a01b031660009081526003602052604090205490565b61018d6102e436600461171f565b61072e565b61022a6102f7366004611522565b610748565b61022a61075d565b61018d6103123660046115a1565b61077d565b6101aa6107a8565b61022a6107b7565b6101ce600081565b61018d61033d366004611522565b6107f9565b61018d610350366004611522565b610874565b6101ce600080516020611a5a83398151915281565b61022a6103783660046115a1565b610882565b6101ce61038b36600461173a565b61089e565b6101ce600080516020611a3a83398151915281565b61022a6108c9565b60006103b882610918565b92915050565b6060600980546103cd90611764565b80601f01602080910402602001604051908101604052809291908181526020018280546103f990611764565b80156104465780601f1061041b57610100808354040283529160200191610446565b820191906000526020600020905b81548152906001019060200180831161042957829003601f168201915b5050505050905090565b60003361045e818585610954565b5060019392505050565b600033610476858285610a78565b610481858585610af2565b506001949350505050565b60009081526002602052604090206001015490565b6104aa8261048c565b6104b381610cb9565b6104bd8383610cc3565b505050565b6001600160a01b03811633146105375760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105418282610d49565b5050565b60003361045e818585610558838361089e565b61056291906117b4565b610954565b600080516020611a3a83398151915261057f81610cb9565b610587610db0565b50565b600080516020611a5a8339815191526105a281610cb9565b6104bd8383610e02565b6105873382610edb565b600054610100900460ff16158080156105d65750600054600160ff909116105b806105f757506105e530610909565b1580156105f7575060005460ff166001145b61065a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161052e565b6000805460ff19166001179055801561067d576000805461ff0019166101001790555b825160099061068c908261181a565b506020830151600a9061069f908261181a565b506106ab600083610cc3565b6106c3600080516020611a3a83398151915283610cc3565b6106db600080516020611a5a83398151915283610cc3565b6106e482611023565b80156104bd576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60006103b8600080516020611a1a8339815191528361077d565b610753823383610a78565b6105418282610edb565b600080516020611a3a83398151915261077581610cb9565b610587611053565b60009182526002602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600a80546103cd90611764565b6107c260003361077d565b6107de5760405162461bcd60e51b815260040161052e906118d9565b6107f7600080516020611a1a8339815191526000610d49565b565b60003381610807828661089e565b9050838110156108675760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161052e565b6104818286868403610954565b60003361045e818585610af2565b61088b8261048c565b61089481610cb9565b6104bd8383610d49565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6108d460003361077d565b6108f05760405162461bcd60e51b815260040161052e906118d9565b6107f7600080516020611a1a8339815191526000610cc3565b6001600160a01b03163b151590565b60006301ffc9a760e01b6001600160e01b0319831614806103b85750506001600160e01b03191660009081526001602052604090205460ff1690565b6001600160a01b0383166109b65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161052e565b6001600160a01b038216610a175760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161052e565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610a84848461089e565b90506000198114610aec5781811015610adf5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161052e565b610aec8484848403610954565b50505050565b6001600160a01b038316610b565760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161052e565b6001600160a01b038216610bb85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161052e565b610bc3838383611090565b6001600160a01b03831660009081526003602052604090205481811015610c3b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161052e565b6001600160a01b03808516600090815260036020526040808220858503905591851681529081208054849290610c729084906117b4565b92505081905550826001600160a01b0316846001600160a01b0316600080516020611a7a83398151915284604051610cac91815260200190565b60405180910390a3610aec565b61058781336110a3565b610ccd828261077d565b6105415760008281526002602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610d053390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610d53828261077d565b156105415760008281526002602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b610db8611107565b6008805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610e585760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161052e565b610e6460008383611090565b8060056000828254610e7691906117b4565b90915550506001600160a01b03821660009081526003602052604081208054839290610ea39084906117b4565b90915550506040518181526001600160a01b03831690600090600080516020611a7a8339815191529060200160405180910390a35050565b6001600160a01b038216610f3b5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161052e565b610f4782600083611090565b6001600160a01b03821660009081526003602052604090205481811015610fbb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161052e565b6001600160a01b0383166000908152600360205260408120838303905560058054849290610fea9084906118fc565b90915550506040518281526000906001600160a01b03851690600080516020611a7a8339815191529060200160405180910390a3505050565b600054610100900460ff1661104a5760405162461bcd60e51b815260040161052e90611913565b61058781611150565b61105b61119f565b6008805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610de53390565b61109861119f565b6104bd8383836111e5565b6110ad828261077d565b610541576110c5816001600160a01b0316601461125a565b6110d083602061125a565b6040516020016110e192919061195e565b60408051601f198184030181529082905262461bcd60e51b825261052e916004016114d3565b60085460ff166107f75760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161052e565b600054610100900460ff166111775760405162461bcd60e51b815260040161052e90611913565b611187630a615bcd60e11b6113fc565b610587600080516020611a1a83398151915282610cc3565b60085460ff16156107f75760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161052e565b6111fe600080516020611a1a833981519152600061077d565b8061121c575061121c600080516020611a1a8339815191523361077d565b6104bd5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d313d0d2d151608a1b604482015260640161052e565b606060006112698360026119cd565b6112749060026117b4565b6001600160401b0381111561128b5761128b6115cd565b6040519080825280601f01601f1916602001820160405280156112b5576020820181803683370190505b509050600360fc1b816000815181106112d0576112d06119ec565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106112ff576112ff6119ec565b60200101906001600160f81b031916908160001a90535060006113238460026119cd565b61132e9060016117b4565b90505b60018111156113a6576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611362576113626119ec565b1a60f81b828281518110611378576113786119ec565b60200101906001600160f81b031916908160001a90535060049490941c9361139f81611a02565b9050611331565b5083156113f55760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161052e565b9392505050565b6001600160e01b031980821690036114555760405162461bcd60e51b815260206004820152601c60248201527b115490cc4d8d4e881a5b9d985b1a59081a5b9d195c999858d9481a5960221b604482015260640161052e565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60006020828403121561148f57600080fd5b81356001600160e01b0319811681146113f557600080fd5b60005b838110156114c25781810151838201526020016114aa565b83811115610aec5750506000910152565b60208152600082518060208401526114f28160408501602087016114a7565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461151d57600080fd5b919050565b6000806040838503121561153557600080fd5b61153e83611506565b946020939093013593505050565b60008060006060848603121561156157600080fd5b61156a84611506565b925061157860208501611506565b9150604084013590509250925092565b60006020828403121561159a57600080fd5b5035919050565b600080604083850312156115b457600080fd5b823591506115c460208401611506565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126115f457600080fd5b81356001600160401b038082111561160e5761160e6115cd565b604051601f8301601f19908116603f01168101908282118183101715611636576116366115cd565b8160405283815286602085880101111561164f57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561168257600080fd5b82356001600160401b038082111561169957600080fd5b90840190604082870312156116ad57600080fd5b6040516040810181811083821117156116c8576116c86115cd565b6040528235828111156116da57600080fd5b6116e6888286016115e3565b8252506020830135828111156116fb57600080fd5b611707888286016115e3565b6020830152508094505050506115c460208401611506565b60006020828403121561173157600080fd5b6113f582611506565b6000806040838503121561174d57600080fd5b61175683611506565b91506115c460208401611506565b600181811c9082168061177857607f821691505b60208210810361179857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156117c7576117c761179e565b500190565b601f8211156104bd57600081815260208120601f850160051c810160208610156117f35750805b601f850160051c820191505b81811015611812578281556001016117ff565b505050505050565b81516001600160401b03811115611833576118336115cd565b611847816118418454611764565b846117cc565b602080601f83116001811461187c57600084156118645750858301515b600019600386901b1c1916600185901b178555611812565b600085815260208120601f198616915b828110156118ab5788860151825594840194600190910190840161188c565b50858210156118c95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252600990820152682727aa2fa0a226a4a760b91b604082015260600190565b60008282101561190e5761190e61179e565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516119908160178501602088016114a7565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516119c18160288401602088016114a7565b01602801949350505050565b60008160001904831182151516156119e7576119e761179e565b500290565b634e487b7160e01b600052603260045260246000fd5b600081611a1157611a1161179e565b50600019019056fe8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220568bf96c8db66f426e71126d207bb08c5c3cf552d676ac91212141a3cccc9ed064736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}}},"v2":{"access/ownable/IERC173":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC173","sourceName":"src/access/ownable/IERC173.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"access/ownable/IERC173Events":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC173Events","sourceName":"src/access/ownable/IERC173Events.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"access/ownable/Ownable":{"address":{"3":"0x0459EE30E19776c6283Ce0A97DEC799c914BEB96","4":"0x2620537bcb9d8c3442547D8D8D1d19f62B187079","rinkeby":"0x2620537bcb9d8c3442547D8D8D1d19f62B187079","ropsten":"0x0459EE30E19776c6283Ce0A97DEC799c914BEB96"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"Ownable","sourceName":"src/access/ownable/Ownable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506102bf806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063715018a6146100465780638da5cb5b14610050578063f2fde38b14610074575b600080fd5b61004e610087565b005b610058610111565b6040516001600160a01b03909116815260200160405180910390f35b61004e610082366004610259565b610149565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146101055760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064015b60405180910390fd5b61010f60006101ce565b565b60006101447fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031690565b905090565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146101c25760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016100fc565b6101cb816101ce565b50565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556040516001600160a01b0382169033907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a350565b60006020828403121561026b57600080fd5b81356001600160a01b038116811461028257600080fd5b939250505056fea2646970667358221220054c9f312d50129e913357c91589315c6f5bfd771c661672099a4112c1118e1164736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063715018a6146100465780638da5cb5b14610050578063f2fde38b14610074575b600080fd5b61004e610087565b005b610058610111565b6040516001600160a01b03909116815260200160405180910390f35b61004e610082366004610259565b610149565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146101055760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064015b60405180910390fd5b61010f60006101ce565b565b60006101447fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031690565b905090565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146101c25760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016100fc565b6101cb816101ce565b50565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556040516001600160a01b0382169033907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a350565b60006020828403121561026b57600080fd5b81356001600160a01b038116811461028257600080fd5b939250505056fea2646970667358221220054c9f312d50129e913357c91589315c6f5bfd771c661672099a4112c1118e1164736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"access/ownable/OwnableERC2771":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"OwnableERC2771","sourceName":"src/access/ownable/OwnableERC2771.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"access/ownable/OwnableInternal":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"OwnableInternal","sourceName":"src/access/ownable/OwnableInternal.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"access/ownable/OwnableStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"OwnableStorage","sourceName":"src/access/ownable/OwnableStorage.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200a9644eb62028c77b2cecb78414818b2b720f9c7d37aaca8c8a4e16035de865864736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200a9644eb62028c77b2cecb78414818b2b720f9c7d37aaca8c8a4e16035de865864736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"access/roles/AccessControl":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"AccessControl","sourceName":"src/access/roles/AccessControl.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"access/roles/AccessControlEnumerable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"AccessControlEnumerable","sourceName":"src/access/roles/AccessControlEnumerable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"access/roles/AccessControlEnumerableERC2771":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"AccessControlEnumerableERC2771","sourceName":"src/access/roles/AccessControlEnumerableERC2771.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"access/roles/AccessControlEnumerableStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"AccessControlEnumerableStorage","sourceName":"src/access/roles/AccessControlEnumerableStorage.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e34e354ff029dbbc0bc67bc12c680035aa3fa319b994a961eaab7603ce40490c64736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e34e354ff029dbbc0bc67bc12c680035aa3fa319b994a961eaab7603ce40490c64736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"access/roles/AccessControlERC2771":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"AccessControlERC2771","sourceName":"src/access/roles/AccessControlERC2771.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"access/roles/AccessControlInternal":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"AccessControlInternal","sourceName":"src/access/roles/AccessControlInternal.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"access/roles/AccessControlStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"AccessControlStorage","sourceName":"src/access/roles/AccessControlStorage.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207ccf122b1e38e22d696aa42a229e9713191bbc1c43e560630917346043b0aeb964736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207ccf122b1e38e22d696aa42a229e9713191bbc1c43e560630917346043b0aeb964736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"access/roles/IAccessControl":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IAccessControl","sourceName":"src/access/roles/IAccessControl.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"access/roles/IAccessControlEnumerable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IAccessControlEnumerable","sourceName":"src/access/roles/IAccessControlEnumerable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"access/roles/IAccessControlEvents":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IAccessControlEvents","sourceName":"src/access/roles/IAccessControlEvents.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"common/IWithdrawExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IWithdrawExtension","sourceName":"src/common/WithdrawExtension.sol","abi":[{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"common/UnorderedForwarder":{"address":{"3":"0x294Fe22BcF44ff08A730C7791Ae0e9F473c13876","ropsten":"0x294Fe22BcF44ff08A730C7791Ae0e9F473c13876"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"UnorderedForwarder","sourceName":"src/common/UnorderedForwarder.sol","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"minGasPrice","type":"uint256"},{"internalType":"uint256","name":"maxGasPrice","type":"uint256"},{"internalType":"uint256","name":"expiresAt","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct UnorderedForwarder.MetaTransaction[]","name":"mtxs","type":"tuple[]"},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"name":"batchExecute","outputs":[{"internalType":"bytes[]","name":"returnResults","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"minGasPrice","type":"uint256"},{"internalType":"uint256","name":"maxGasPrice","type":"uint256"},{"internalType":"uint256","name":"expiresAt","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct UnorderedForwarder.MetaTransaction","name":"mtx","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"execute","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"minGasPrice","type":"uint256"},{"internalType":"uint256","name":"maxGasPrice","type":"uint256"},{"internalType":"uint256","name":"expiresAt","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct UnorderedForwarder.MetaTransaction","name":"mtx","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"verify","outputs":[{"internalType":"bytes32","name":"mtxHash","type":"bytes32"}],"stateMutability":"view","type":"function"}],"bytecode":"0x61014060405234801561001157600080fd5b5060408051808201825260128152712ab737b93232b932b22337b93bb0b93232b960711b602080830191825283518085019094526005845264302e302e3160d81b908401528151902060e08190527fae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc1991638118856101008190524660a0529192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6100fd8184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c0526101205250506001600055506101179050565b60805160a05160c05160e05161010051610120516110b2610166600039600061095f015260006109ae01526000610989015260006108e20152600061090c0152600061093601526110b26000f3fe6080604052600436106100345760003560e01c8063b0565b2714610039578063b122ea941461006c578063cd74662f1461008c575b600080fd5b34801561004557600080fd5b50610059610054366004610ce7565b6100ac565b6040519081526020015b60405180910390f35b61007f61007a366004610dcc565b610300565b6040516100639190610e94565b61009f61009a366004610ce7565b610536565b6040516100639190610ef6565b60006101957f2bbaa6c701d9ecd9e324adef5727bb11883e2c24df1dd4c8f19e4e038b3734666100df6020870187610f09565b6100ef6040880160208901610f09565b6040880135606089013560808a013560a08b013560c08c013561011560e08e018e610f32565b604051610123929190610f79565b60408051918290038220602083019a909a526001600160a01b0398891690820152969095166060870152608086019390935260a085019190915260c084015260e08301526101008201526101208101919091526101400160405160208183030381529060405280519060200120610650565b9050428460a00135116101ef5760405162461bcd60e51b815260206004820152600b60248201527f4657445f4558504952454400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6101fc6020850185610f09565b6001600160a01b031661024784848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086939250506106bf9050565b6001600160a01b03161461029d5760405162461bcd60e51b815260206004820152601560248201527f4657445f494e56414c49445f5349474e4154555245000000000000000000000060448201526064016101e6565b600081815260016020526040902054156102f95760405162461bcd60e51b815260206004820152600c60248201527f4657445f5245504c41594544000000000000000000000000000000000000000060448201526064016101e6565b9392505050565b60606002600054036103545760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101e6565b600260009081556103653447610f9f565b90508483146103b65760405162461bcd60e51b815260206004820152601760248201527f4657445f4d49534d415443485f5349474e41545552455300000000000000000060448201526064016101e6565b8467ffffffffffffffff8111156103cf576103cf610fb6565b60405190808252806020026020018201604052801561040257816020015b60608152602001906001900390816103ed5790505b50915060005b8581101561048e5761046087878381811061042557610425610fcc565b90506020028101906104379190610fe2565b86868481811061044957610449610fcc565b905060200281019061045b9190610f32565b6106e3565b83828151811061047257610472610fcc565b60200260200101819052508061048790611002565b9050610408565b50600047341161049e57346104a0565b475b905080156104d757604051339082156108fc029083906000818181858888f193505050501580156104d5573d6000803e3d6000fd5b505b50478111156105285760405162461bcd60e51b815260206004820152600c60248201527f4657445f4554485f4c45414b000000000000000000000000000000000000000060448201526064016101e6565b506001600055949350505050565b606060026000540361058a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101e6565b6002600090815561059b3447610f9f565b90506105a88585856106e3565b915060004734116105b957346105bb565b475b905080156105f257604051339082156108fc029083906000818181858888f193505050501580156105f0573d6000803e3d6000fd5b505b50478111156106435760405162461bcd60e51b815260206004820152600c60248201527f4657445f4554485f4c45414b000000000000000000000000000000000000000060448201526064016101e6565b5060016000559392505050565b60006106b961065d6108d5565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b92915050565b60008060006106ce85856109fc565b915091506106db81610a41565b509392505050565b60603a8460600135111580156106fd575083608001353a11155b6107495760405162461bcd60e51b815260206004820152600f60248201527f4657445f494e56414c49445f474153000000000000000000000000000000000060448201526064016101e6565b478460400135111561079d5760405162461bcd60e51b815260206004820152601160248201527f4657445f494e56414c49445f56414c554500000000000000000000000000000060448201526064016101e6565b60006107aa8585856100ac565b6000818152600160209081526040808320439055929350909182916107d3918901908901610f09565b6001600160a01b031660408801356107ee60e08a018a610f32565b6107fb60208c018c610f09565b60405160200161080d9392919061101b565b60408051601f198184030181529082905261082791611054565b60006040518083038185875af1925050503d8060008114610864576040519150601f19603f3d011682016040523d82523d6000602084013e610869565b606091505b5091509150816108cb578051156108835780518082602001fd5b60405162461bcd60e51b815260206004820152600f60248201527f4657445f43414c4c5f4641494c4544000000000000000000000000000000000060448201526064016101e6565b9695505050505050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561092e57507f000000000000000000000000000000000000000000000000000000000000000046145b1561095857507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b6000808251604103610a325760208301516040840151606085015160001a610a2687828585610bfa565b94509450505050610a3a565b506000905060025b9250929050565b6000816004811115610a5557610a55611066565b03610a5d5750565b6001816004811115610a7157610a71611066565b03610abe5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016101e6565b6002816004811115610ad257610ad2611066565b03610b1f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016101e6565b6003816004811115610b3357610b33611066565b03610b8b5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016101e6565b6004816004811115610b9f57610b9f611066565b03610bf75760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016101e6565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610c315750600090506003610cde565b8460ff16601b14158015610c4957508460ff16601c14155b15610c5a5750600090506004610cde565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610cae573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610cd757600060019250925050610cde565b9150600090505b94509492505050565b600080600060408486031215610cfc57600080fd5b833567ffffffffffffffff80821115610d1457600080fd5b908501906101008288031215610d2957600080fd5b90935060208501359080821115610d3f57600080fd5b818601915086601f830112610d5357600080fd5b813581811115610d6257600080fd5b876020828501011115610d7457600080fd5b6020830194508093505050509250925092565b60008083601f840112610d9957600080fd5b50813567ffffffffffffffff811115610db157600080fd5b6020830191508360208260051b8501011115610a3a57600080fd5b60008060008060408587031215610de257600080fd5b843567ffffffffffffffff80821115610dfa57600080fd5b610e0688838901610d87565b90965094506020870135915080821115610e1f57600080fd5b50610e2c87828801610d87565b95989497509550505050565b60005b83811015610e53578181015183820152602001610e3b565b83811115610e62576000848401525b50505050565b60008151808452610e80816020860160208601610e38565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610ee957603f19888603018452610ed7858351610e68565b94509285019290850190600101610ebb565b5092979650505050505050565b6020815260006102f96020830184610e68565b600060208284031215610f1b57600080fd5b81356001600160a01b03811681146102f957600080fd5b6000808335601e19843603018112610f4957600080fd5b83018035915067ffffffffffffffff821115610f6457600080fd5b602001915036819003821315610a3a57600080fd5b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b600082821015610fb157610fb1610f89565b500390565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000823560fe19833603018112610ff857600080fd5b9190910192915050565b60006001820161101457611014610f89565b5060010190565b8284823760609190911b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169101908152601401919050565b60008251610ff8818460208701610e38565b634e487b7160e01b600052602160045260246000fdfea264697066735822122039e6a60b11d6f061f2da1e791d621d94acc7570e414d8635d822865fc60c525464736f6c634300080f0033","deployedBytecode":"0x6080604052600436106100345760003560e01c8063b0565b2714610039578063b122ea941461006c578063cd74662f1461008c575b600080fd5b34801561004557600080fd5b50610059610054366004610ce7565b6100ac565b6040519081526020015b60405180910390f35b61007f61007a366004610dcc565b610300565b6040516100639190610e94565b61009f61009a366004610ce7565b610536565b6040516100639190610ef6565b60006101957f2bbaa6c701d9ecd9e324adef5727bb11883e2c24df1dd4c8f19e4e038b3734666100df6020870187610f09565b6100ef6040880160208901610f09565b6040880135606089013560808a013560a08b013560c08c013561011560e08e018e610f32565b604051610123929190610f79565b60408051918290038220602083019a909a526001600160a01b0398891690820152969095166060870152608086019390935260a085019190915260c084015260e08301526101008201526101208101919091526101400160405160208183030381529060405280519060200120610650565b9050428460a00135116101ef5760405162461bcd60e51b815260206004820152600b60248201527f4657445f4558504952454400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6101fc6020850185610f09565b6001600160a01b031661024784848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086939250506106bf9050565b6001600160a01b03161461029d5760405162461bcd60e51b815260206004820152601560248201527f4657445f494e56414c49445f5349474e4154555245000000000000000000000060448201526064016101e6565b600081815260016020526040902054156102f95760405162461bcd60e51b815260206004820152600c60248201527f4657445f5245504c41594544000000000000000000000000000000000000000060448201526064016101e6565b9392505050565b60606002600054036103545760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101e6565b600260009081556103653447610f9f565b90508483146103b65760405162461bcd60e51b815260206004820152601760248201527f4657445f4d49534d415443485f5349474e41545552455300000000000000000060448201526064016101e6565b8467ffffffffffffffff8111156103cf576103cf610fb6565b60405190808252806020026020018201604052801561040257816020015b60608152602001906001900390816103ed5790505b50915060005b8581101561048e5761046087878381811061042557610425610fcc565b90506020028101906104379190610fe2565b86868481811061044957610449610fcc565b905060200281019061045b9190610f32565b6106e3565b83828151811061047257610472610fcc565b60200260200101819052508061048790611002565b9050610408565b50600047341161049e57346104a0565b475b905080156104d757604051339082156108fc029083906000818181858888f193505050501580156104d5573d6000803e3d6000fd5b505b50478111156105285760405162461bcd60e51b815260206004820152600c60248201527f4657445f4554485f4c45414b000000000000000000000000000000000000000060448201526064016101e6565b506001600055949350505050565b606060026000540361058a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101e6565b6002600090815561059b3447610f9f565b90506105a88585856106e3565b915060004734116105b957346105bb565b475b905080156105f257604051339082156108fc029083906000818181858888f193505050501580156105f0573d6000803e3d6000fd5b505b50478111156106435760405162461bcd60e51b815260206004820152600c60248201527f4657445f4554485f4c45414b000000000000000000000000000000000000000060448201526064016101e6565b5060016000559392505050565b60006106b961065d6108d5565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b92915050565b60008060006106ce85856109fc565b915091506106db81610a41565b509392505050565b60603a8460600135111580156106fd575083608001353a11155b6107495760405162461bcd60e51b815260206004820152600f60248201527f4657445f494e56414c49445f474153000000000000000000000000000000000060448201526064016101e6565b478460400135111561079d5760405162461bcd60e51b815260206004820152601160248201527f4657445f494e56414c49445f56414c554500000000000000000000000000000060448201526064016101e6565b60006107aa8585856100ac565b6000818152600160209081526040808320439055929350909182916107d3918901908901610f09565b6001600160a01b031660408801356107ee60e08a018a610f32565b6107fb60208c018c610f09565b60405160200161080d9392919061101b565b60408051601f198184030181529082905261082791611054565b60006040518083038185875af1925050503d8060008114610864576040519150601f19603f3d011682016040523d82523d6000602084013e610869565b606091505b5091509150816108cb578051156108835780518082602001fd5b60405162461bcd60e51b815260206004820152600f60248201527f4657445f43414c4c5f4641494c4544000000000000000000000000000000000060448201526064016101e6565b9695505050505050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561092e57507f000000000000000000000000000000000000000000000000000000000000000046145b1561095857507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b6000808251604103610a325760208301516040840151606085015160001a610a2687828585610bfa565b94509450505050610a3a565b506000905060025b9250929050565b6000816004811115610a5557610a55611066565b03610a5d5750565b6001816004811115610a7157610a71611066565b03610abe5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016101e6565b6002816004811115610ad257610ad2611066565b03610b1f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016101e6565b6003816004811115610b3357610b33611066565b03610b8b5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016101e6565b6004816004811115610b9f57610b9f611066565b03610bf75760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016101e6565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610c315750600090506003610cde565b8460ff16601b14158015610c4957508460ff16601c14155b15610c5a5750600090506004610cde565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610cae573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610cd757600060019250925050610cde565b9150600090505b94509492505050565b600080600060408486031215610cfc57600080fd5b833567ffffffffffffffff80821115610d1457600080fd5b908501906101008288031215610d2957600080fd5b90935060208501359080821115610d3f57600080fd5b818601915086601f830112610d5357600080fd5b813581811115610d6257600080fd5b876020828501011115610d7457600080fd5b6020830194508093505050509250925092565b60008083601f840112610d9957600080fd5b50813567ffffffffffffffff811115610db157600080fd5b6020830191508360208260051b8501011115610a3a57600080fd5b60008060008060408587031215610de257600080fd5b843567ffffffffffffffff80821115610dfa57600080fd5b610e0688838901610d87565b90965094506020870135915080821115610e1f57600080fd5b50610e2c87828801610d87565b95989497509550505050565b60005b83811015610e53578181015183820152602001610e3b565b83811115610e62576000848401525b50505050565b60008151808452610e80816020860160208601610e38565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610ee957603f19888603018452610ed7858351610e68565b94509285019290850190600101610ebb565b5092979650505050505050565b6020815260006102f96020830184610e68565b600060208284031215610f1b57600080fd5b81356001600160a01b03811681146102f957600080fd5b6000808335601e19843603018112610f4957600080fd5b83018035915067ffffffffffffffff821115610f6457600080fd5b602001915036819003821315610a3a57600080fd5b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b600082821015610fb157610fb1610f89565b500390565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000823560fe19833603018112610ff857600080fd5b9190910192915050565b60006001820161101457611014610f89565b5060010190565b8284823760609190911b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169101908152601401919050565b60008251610ff8818460208701610e38565b634e487b7160e01b600052602160045260246000fdfea264697066735822122039e6a60b11d6f061f2da1e791d621d94acc7570e414d8635d822865fc60c525464736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"common/WithdrawExtension":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"WithdrawExtension","sourceName":"src/common/WithdrawExtension.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"diamond/Diamond":{"address":{"3":"0x293E9F67cEF4d7465b6B9E19ccDB16F68536F54d","4":"0x902e955Dd4dfe334183AB1FD36A50aa7E856FFAB","rinkeby":"0x902e955Dd4dfe334183AB1FD36A50aa7E856FFAB","ropsten":"0x293E9F67cEF4d7465b6B9E19ccDB16F68536F54d"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"Diamond","sourceName":"src/diamond/Diamond.sol","abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"components":[{"internalType":"address","name":"diamondCutFacet","type":"address"},{"internalType":"address","name":"diamondLoupeFacet","type":"address"},{"internalType":"address","name":"erc165Facet","type":"address"},{"internalType":"address","name":"erc173Facet","type":"address"}],"internalType":"struct Diamond.CoreFacets","name":"_coreFacets","type":"tuple"},{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamondCut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct IDiamondCut.FacetCut[]","name":"_facets","type":"tuple[]"},{"components":[{"internalType":"address","name":"initContract","type":"address"},{"internalType":"bytes","name":"initData","type":"bytes"}],"internalType":"struct Diamond.Initialization[]","name":"_initializations","type":"tuple[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"facet","type":"address"},{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"DiamondFacetAlreadyExists","type":"error"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162001c3438038062001c34833981016040819052620000349162000e1f565b60006200004b620004bc60201b620002111760201c565b6040805160018082528183019092529192506000919060208083019080368337019050509050631f931c1c60e01b816000815181106200008f576200008f62000f09565b6001600160e01b0319909216602092830291909101820152620000c99083906307e4c70760e21b9060019062000235620004e0821b17901c565b60408051600480825260a0820190925260009160208201608080368337019050509050637a0ed62760e01b816000815181106200010a576200010a62000f09565b6001600160e01b03199092166020928302919091019091015280516356fe50af60e11b908290600190811062000144576200014462000f09565b6001600160e01b03199092166020928302919091019091015280516314bbdacb60e21b90829060029081106200017e576200017e62000f09565b6001600160e01b03199092166020928302919091019091015280516366ffd66360e11b9082906003908110620001b857620001b862000f09565b6001600160e01b0319909216602092830291909101820152620001f29084906348e2b09360e01b9060019062000235620004e0821b17901c565b604080516001808252818301909252600091602080830190803683370190505090506301ffc9a760e01b8160008151811062000232576200023262000f09565b6001600160e01b03199092166020928302919091018201526200026c9085906301ffc9a760e01b9060019062000235620004e0821b17901c565b604080516002808252606082018352600092602083019080368337019050509050638da5cb5b60e01b81600081518110620002ab57620002ab62000f09565b6001600160e01b031990921660209283029190910190910152805163f2fde38b60e01b9082906001908110620002e557620002e562000f09565b6001600160e01b03199092166020928302919091018201526200031f9086906307f5828d60e41b9060019062000235620004e0821b17901c565b6200033a8860000151856200056e60201b620002bd1760201c565b620003558860200151846200056e60201b620002bd1760201c565b620003708860400151836200056e60201b620002bd1760201c565b6200038b8860600151826200056e60201b620002bd1760201c565b620003b989620003a56200073d60201b620004bf1760201c565b6200076160201b620004e31790919060201c565b60005b875181101562000432576200041d888281518110620003df57620003df62000f09565b60200260200101516000015189838151811062000400576200040062000f09565b6020026020010151604001516200056e60201b620002bd1760201c565b80620004298162000f35565b915050620003bc565b5060005b8651811015620004ac576200049787828151811062000459576200045962000f09565b6020026020010151600001518883815181106200047a576200047a62000f09565b6020026020010151602001516200077e60201b6200050d1760201c565b80620004a38162000f35565b91505062000436565b5050505050505050505062000fd5565b7fff923f4a67695a9cdd5da4b8580a5a20edf2183c42aa111dd7fc15dc7bed264090565b6001600160e01b03198083169003620005405760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e746572666163652069640000000060448201526064015b60405180910390fd5b6001600160e01b03199190911660009081526020929092526040909120805460ff1916911515919091179055565b6001600160a01b03821660009081527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d60205260408120547fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c916001600160601b0382169003620005e557620005e58285620009a3565b60005b83518110156200073657600084828151811062000609576200060962000f09565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b03168015620006775760405163752eb76d60e01b81526001600160a01b03821660048201526001600160e01b03198316602482015260440162000537565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b031916179055836200071b8162000f51565b945050505080806200072d9062000f35565b915050620005e8565b5050505050565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed490565b81546001600160a01b0319166001600160a01b0391909116179055565b6001600160a01b0382166200080857805115620008045760405162461bcd60e51b815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d70747900000000606482015260840162000537565b5050565b6000815111620008815760405162461bcd60e51b815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f742061646472657373283029000000606482015260840162000537565b6001600160a01b0382163014620008b757620008b78260405180606001604052806028815260200162001be86028913962000a10565b600080836001600160a01b031683604051620008d4919062000f82565b600060405180830381855af49150503d806000811462000911576040519150601f19603f3d011682016040523d82523d6000602084013e62000916565b606091505b5091509150816200099d5780511562000945578060405162461bcd60e51b815260040162000537919062000fa0565b60405162461bcd60e51b815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656044820152651d995c9d195960d21b606482015260840162000537565b50505050565b620009c88160405180606001604052806024815260200162001c106024913962000a10565b6002820180546001600160a01b0390921660008181526001948501602090815260408220860185905594840183559182529290200180546001600160a01b0319169091179055565b813b81816200099d5760405162461bcd60e51b815260040162000537919062000fa0565b80516001600160a01b038116811462000a4c57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171562000a8c5762000a8c62000a51565b60405290565b604080519081016001600160401b038111828210171562000a8c5762000a8c62000a51565b604051608081016001600160401b038111828210171562000a8c5762000a8c62000a51565b604051601f8201601f191681016001600160401b038111828210171562000b075762000b0762000a51565b604052919050565b60006001600160401b0382111562000b2b5762000b2b62000a51565b5060051b60200190565b600082601f83011262000b4757600080fd5b8151602062000b6062000b5a8362000b0f565b62000adc565b828152600592831b850182019282820191908785111562000b8057600080fd5b8387015b8581101562000ca05780516001600160401b038082111562000ba65760008081fd5b908901906060828c03601f190181131562000bc15760008081fd5b62000bcb62000a67565b62000bd889850162000a34565b81526040808501516003811062000bef5760008081fd5b828b015291840151918383111562000c075760008081fd5b82850194508d603f86011262000c1f57600093508384fd5b89850151935062000c3462000b5a8562000b0f565b84815293871b85018101938a810193508e85111562000c535760008081fd5b948101945b8486101562000c8b5785516001600160e01b03198116811462000c7b5760008081fd5b8452948a0194928a019262000c58565b90820152875250505092840192840162000b84565b5090979650505050505050565b60005b8381101562000cca57818101518382015260200162000cb0565b838111156200099d5750506000910152565b6000601f838184011262000cef57600080fd5b8251602062000d0262000b5a8362000b0f565b82815260059290921b8501810191818101908784111562000d2257600080fd5b8287015b8481101562000e135780516001600160401b038082111562000d485760008081fd5b908901906040601f19838d03810182131562000d645760008081fd5b62000d6e62000a92565b62000d7b89860162000a34565b8152828501518481111562000d905760008081fd5b8086019550508d603f86011262000da75760008081fd5b888501518481111562000dbe5762000dbe62000a51565b62000dcf8a848e8401160162000adc565b94508085528e8482880101111562000de957600092508283fd5b62000dfa818b870186890162000cad565b5080890193909352505084525091830191830162000d26565b50979650505050505050565b60008060008084860360e081121562000e3757600080fd5b62000e428662000a34565b94506080601f198201121562000e5757600080fd5b5062000e6262000ab7565b62000e706020870162000a34565b815262000e806040870162000a34565b602082015262000e936060870162000a34565b604082015262000ea66080870162000a34565b606082015260a08601519093506001600160401b038082111562000ec957600080fd5b62000ed78883890162000b35565b935060c087015191508082111562000eee57600080fd5b5062000efd8782880162000cdc565b91505092959194509250565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820162000f4a5762000f4a62000f1f565b5060010190565b60006001600160601b038281166002600160601b0319810162000f785762000f7862000f1f565b6001019392505050565b6000825162000f9681846020870162000cad565b9190910192915050565b602081526000825180602084015262000fc181604085016020870162000cad565b601f01601f19169190910160400192915050565b610c038062000fe56000396000f3fe6080604052600436106100225760003560e01c8063ac9650d8146100e657610029565b3661002957005b600080356001600160e01b03191681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602081905260409091205481906001600160a01b0316806100c25760405162461bcd60e51b815260206004820152600860248201527f4241445f46554e4300000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b3480156100f257600080fd5b50610106610101366004610928565b61011c565b60405161011391906109f5565b60405180910390f35b60608167ffffffffffffffff81111561013757610137610a57565b60405190808252806020026020018201604052801561016a57816020015b60608152602001906001900390816101555790505b50905060005b8281101561020a576101da3085858481811061018e5761018e610a6d565b90506020028101906101a09190610a83565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061073792505050565b8282815181106101ec576101ec610a6d565b6020026020010181905250808061020290610ae7565b915050610170565b5092915050565b7fff923f4a67695a9cdd5da4b8580a5a20edf2183c42aa111dd7fc15dc7bed264090565b6001600160e01b0319808316900361028f5760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e746572666163652069640000000060448201526064016100b9565b6001600160e01b03199190911660009081526020929092526040909120805460ff1916911515919091179055565b6001600160a01b03821660009081527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d60205260408120547fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c916bffffffffffffffffffffffff82169003610336576103368285610763565b60005b83518110156104b857600084828151811061035657610356610a6d565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b031680156103db576040517f752eb76d0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526001600160e01b0319831660248201526044016100b9565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c949094029390931790925593909252879052815473ffffffffffffffffffffffffffffffffffffffff1916179055836104a081610b00565b945050505080806104b090610ae7565b915050610339565b5050505050565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed490565b815473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0391909116179055565b6001600160a01b038216610594578051156105905760405162461bcd60e51b815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d7074790000000060648201526084016100b9565b5050565b600081511161060b5760405162461bcd60e51b815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f74206164647265737328302900000060648201526084016100b9565b6001600160a01b038216301461063d5761063d82604051806060016040528060288152602001610b5b602891396107da565b600080836001600160a01b0316836040516106589190610b2b565b600060405180830381855af49150503d8060008114610693576040519150601f19603f3d011682016040523d82523d6000602084013e610698565b606091505b509150915081610731578051156106c3578060405162461bcd60e51b81526004016100b99190610b47565b60405162461bcd60e51b815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e20726560448201527f766572746564000000000000000000000000000000000000000000000000000060648201526084016100b9565b50505050565b606061075c8383604051806060016040528060278152602001610ba7602791396107fb565b9392505050565b61078581604051806060016040528060248152602001610b83602491396107da565b6002820180546001600160a01b03909216600081815260019485016020908152604082208601859055948401835591825292902001805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b813b81816107315760405162461bcd60e51b81526004016100b99190610b47565b60606001600160a01b0384163b61087a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084016100b9565b600080856001600160a01b0316856040516108959190610b2b565b600060405180830381855af49150503d80600081146108d0576040519150601f19603f3d011682016040523d82523d6000602084013e6108d5565b606091505b50915091506108e58282866108ef565b9695505050505050565b606083156108fe57508161075c565b82511561090e5782518084602001fd5b8160405162461bcd60e51b81526004016100b99190610b47565b6000806020838503121561093b57600080fd5b823567ffffffffffffffff8082111561095357600080fd5b818501915085601f83011261096757600080fd5b81358181111561097657600080fd5b8660208260051b850101111561098b57600080fd5b60209290920196919550909350505050565b60005b838110156109b85781810151838201526020016109a0565b838111156107315750506000910152565b600081518084526109e181602086016020860161099d565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610a4a57603f19888603018452610a388583516109c9565b94509285019290850190600101610a1c565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112610a9a57600080fd5b83018035915067ffffffffffffffff821115610ab557600080fd5b602001915036819003821315610aca57600080fd5b9250929050565b634e487b7160e01b600052601160045260246000fd5b600060018201610af957610af9610ad1565b5060010190565b60006bffffffffffffffffffffffff808316818103610b2157610b21610ad1565b6001019392505050565b60008251610b3d81846020870161099d565b9190910192915050565b60208152600061075c60208301846109c956fe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122065cc727ac452b6bea10c4fa8d902fdfb599696fd3bc707500705a9a02337deeb64736f6c634300080f00334c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465","deployedBytecode":"0x6080604052600436106100225760003560e01c8063ac9650d8146100e657610029565b3661002957005b600080356001600160e01b03191681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602081905260409091205481906001600160a01b0316806100c25760405162461bcd60e51b815260206004820152600860248201527f4241445f46554e4300000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b3480156100f257600080fd5b50610106610101366004610928565b61011c565b60405161011391906109f5565b60405180910390f35b60608167ffffffffffffffff81111561013757610137610a57565b60405190808252806020026020018201604052801561016a57816020015b60608152602001906001900390816101555790505b50905060005b8281101561020a576101da3085858481811061018e5761018e610a6d565b90506020028101906101a09190610a83565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061073792505050565b8282815181106101ec576101ec610a6d565b6020026020010181905250808061020290610ae7565b915050610170565b5092915050565b7fff923f4a67695a9cdd5da4b8580a5a20edf2183c42aa111dd7fc15dc7bed264090565b6001600160e01b0319808316900361028f5760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e746572666163652069640000000060448201526064016100b9565b6001600160e01b03199190911660009081526020929092526040909120805460ff1916911515919091179055565b6001600160a01b03821660009081527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d60205260408120547fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c916bffffffffffffffffffffffff82169003610336576103368285610763565b60005b83518110156104b857600084828151811061035657610356610a6d565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b031680156103db576040517f752eb76d0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526001600160e01b0319831660248201526044016100b9565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c949094029390931790925593909252879052815473ffffffffffffffffffffffffffffffffffffffff1916179055836104a081610b00565b945050505080806104b090610ae7565b915050610339565b5050505050565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed490565b815473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0391909116179055565b6001600160a01b038216610594578051156105905760405162461bcd60e51b815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d7074790000000060648201526084016100b9565b5050565b600081511161060b5760405162461bcd60e51b815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f74206164647265737328302900000060648201526084016100b9565b6001600160a01b038216301461063d5761063d82604051806060016040528060288152602001610b5b602891396107da565b600080836001600160a01b0316836040516106589190610b2b565b600060405180830381855af49150503d8060008114610693576040519150601f19603f3d011682016040523d82523d6000602084013e610698565b606091505b509150915081610731578051156106c3578060405162461bcd60e51b81526004016100b99190610b47565b60405162461bcd60e51b815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e20726560448201527f766572746564000000000000000000000000000000000000000000000000000060648201526084016100b9565b50505050565b606061075c8383604051806060016040528060278152602001610ba7602791396107fb565b9392505050565b61078581604051806060016040528060248152602001610b83602491396107da565b6002820180546001600160a01b03909216600081815260019485016020908152604082208601859055948401835591825292902001805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b813b81816107315760405162461bcd60e51b81526004016100b99190610b47565b60606001600160a01b0384163b61087a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084016100b9565b600080856001600160a01b0316856040516108959190610b2b565b600060405180830381855af49150503d80600081146108d0576040519150601f19603f3d011682016040523d82523d6000602084013e6108d5565b606091505b50915091506108e58282866108ef565b9695505050505050565b606083156108fe57508161075c565b82511561090e5782518084602001fd5b8160405162461bcd60e51b81526004016100b99190610b47565b6000806020838503121561093b57600080fd5b823567ffffffffffffffff8082111561095357600080fd5b818501915085601f83011261096757600080fd5b81358181111561097657600080fd5b8660208260051b850101111561098b57600080fd5b60209290920196919550909350505050565b60005b838110156109b85781810151838201526020016109a0565b838111156107315750506000910152565b600081518084526109e181602086016020860161099d565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610a4a57603f19888603018452610a388583516109c9565b94509285019290850190600101610a1c565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112610a9a57600080fd5b83018035915067ffffffffffffffff821115610ab557600080fd5b602001915036819003821315610aca57600080fd5b9250929050565b634e487b7160e01b600052601160045260246000fd5b600060018201610af957610af9610ad1565b5060010190565b60006bffffffffffffffffffffffff808316818103610b2157610b21610ad1565b6001019392505050565b60008251610b3d81846020870161099d565b9190910192915050565b60208152600061075c60208301846109c956fe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122065cc727ac452b6bea10c4fa8d902fdfb599696fd3bc707500705a9a02337deeb64736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"diamond/DiamondCut":{"address":{"3":"0x2ccF63FE5613d729E4bc7edAb240aba09B2A703b","4":"0x34d0fd8aA560340707B364c03D1CC4F70c132Da3","rinkeby":"0x34d0fd8aA560340707B364c03D1CC4F70c132Da3","ropsten":"0x2ccF63FE5613d729E4bc7edAb240aba09B2A703b"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"DiamondCut","sourceName":"src/diamond/DiamondCut.sol","abi":[{"inputs":[{"internalType":"address","name":"facet","type":"address"},{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"DiamondFacetAlreadyExists","type":"error"},{"inputs":[{"internalType":"address","name":"facet","type":"address"},{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"DiamondFacetSameFunction","type":"error"},{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamondCut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"indexed":false,"internalType":"struct IDiamondCut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"indexed":false,"internalType":"address","name":"_init","type":"address"},{"indexed":false,"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"DiamondCut","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamondCut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct IDiamondCut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"internalType":"address","name":"_init","type":"address"},{"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"diamondCut","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b50611321806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80631f931c1c14610030575b600080fd5b61004361003e366004610dd5565b610045565b005b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146100c35760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064015b60405180910390fd5b61010d6100d08587610f1b565b8484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061011492505050565b5050505050565b60005b83518110156102f05760008482815181106101345761013461105f565b60200260200101516020015190506000600281111561015557610155611075565b81600281111561016757610167611075565b036101b5576101b08583815181106101815761018161105f565b60200260200101516000015186848151811061019f5761019f61105f565b60200260200101516040015161033b565b6102dd565b60018160028111156101c9576101c9611075565b03610212576101b08583815181106101e3576101e361105f565b6020026020010151600001518684815181106102015761020161105f565b602002602001015160400151610525565b600281600281111561022657610226611075565b0361026f576101b08583815181106102405761024061105f565b60200260200101516000015186848151811061025e5761025e61105f565b60200260200101516040015161071f565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560448201527f74416374696f6e0000000000000000000000000000000000000000000000000060648201526084016100ba565b50806102e8816110a1565b915050610117565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67383838360405161032493929190611112565b60405180910390a161033682826107b8565b505050565b6001600160a01b03821660009081527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d60205260408120547fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c916bffffffffffffffffffffffff821690036103b4576103b482856109dc565b60005b835181101561010d5760008482815181106103d4576103d461105f565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b03168015610459576040517f752eb76d0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526001600160e01b0319831660248201526044016100ba565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c949094029390931790925593909252879052815473ffffffffffffffffffffffffffffffffffffffff19161790558361050d81611211565b9450505050808061051d906110a1565b9150506103b7565b6001600160a01b03821660009081527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d60205260408120547fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c916bffffffffffffffffffffffff8216900361059e5761059e82856109dc565b60005b835181101561010d5760008482815181106105be576105be61105f565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b039081169087168103610648576040517f0f63c2400000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526001600160e01b0319831660248201526044016100ba565b610653858284610a53565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c949094029390931790925593909252879052815473ffffffffffffffffffffffffffffffffffffffff19161790558361070781611211565b94505050508080610717906110a1565b9150506105a1565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c60005b82518110156107b25760008382815181106107605761076061105f565b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b031661079d848284610a53565b505080806107aa906110a1565b915050610743565b50505050565b6001600160a01b03821661083f5780511561083b5760405162461bcd60e51b815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d7074790000000060648201526084016100ba565b5050565b60008151116108b65760405162461bcd60e51b815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f74206164647265737328302900000060648201526084016100ba565b6001600160a01b03821630146108e8576108e8826040518060600160405280602881526020016112a060289139610d4f565b600080836001600160a01b031683604051610903919061123c565b600060405180830381855af49150503d806000811461093e576040519150601f19603f3d011682016040523d82523d6000602084013e610943565b606091505b5091509150816107b25780511561096e578060405162461bcd60e51b81526004016100ba9190611258565b60405162461bcd60e51b815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e20726560448201527f766572746564000000000000000000000000000000000000000000000000000060648201526084016100ba565b6109fe816040518060600160405280602481526020016112c860249139610d4f565b6002820180546001600160a01b03909216600081815260019485016020908152604082208601859055948401835591825292902001805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b6001600160e01b03198116600090815260208481526040808320546001600160a01b0386168452600180880190935290832054600160a01b9091046bffffffffffffffffffffffff169291610aa791611272565b9050808214610b9e576001600160a01b03841660009081526001860160205260408120805483908110610adc57610adc61105f565b600091825260208083206008830401546001600160a01b038916845260018a019091526040909220805460079092166004026101000a90920460e01b925082919085908110610b2d57610b2d61105f565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b03199290921682528690526040902080546001600160a01b0316600160a01b6bffffffffffffffffffffffff8516021790555b6001600160a01b03841660009081526001860160205260409020805480610bc757610bc7611289565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319851682528690526040812081905581900361010d576002850154600090610c2a90600190611272565b6001600160a01b0386166000908152600180890160205260409091200154909150808214610ce6576000876002018381548110610c6957610c6961105f565b6000918252602090912001546002890180546001600160a01b039092169250829184908110610c9a57610c9a61105f565b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03948516179055929091168152600189810190925260409020018190555b86600201805480610cf957610cf9611289565b600082815260208082208301600019908101805473ffffffffffffffffffffffffffffffffffffffff191690559092019092556001600160a01b0388168252600189810190915260408220015550505050505050565b813b81816107b25760405162461bcd60e51b81526004016100ba9190611258565b80356001600160a01b0381168114610d8757600080fd5b919050565b60008083601f840112610d9e57600080fd5b50813567ffffffffffffffff811115610db657600080fd5b602083019150836020828501011115610dce57600080fd5b9250929050565b600080600080600060608688031215610ded57600080fd5b853567ffffffffffffffff80821115610e0557600080fd5b818801915088601f830112610e1957600080fd5b813581811115610e2857600080fd5b8960208260051b8501011115610e3d57600080fd5b60208301975080965050610e5360208901610d70565b94506040880135915080821115610e6957600080fd5b50610e7688828901610d8c565b969995985093965092949392505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715610ec057610ec0610e87565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610eef57610eef610e87565b604052919050565b600067ffffffffffffffff821115610f1157610f11610e87565b5060051b60200190565b6000610f2e610f2984610ef7565b610ec6565b83815260208082019190600586811b860136811115610f4c57600080fd5b865b8181101561105257803567ffffffffffffffff80821115610f6f5760008081fd5b818a01915060608236031215610f855760008081fd5b610f8d610e9d565b610f9683610d70565b81528683013560038110610faa5760008081fd5b8188015260408381013583811115610fc25760008081fd5b939093019236601f850112610fd957600092508283fd5b83359250610fe9610f2984610ef7565b83815292871b840188019288810190368511156110065760008081fd5b948901945b8486101561103b5785356001600160e01b03198116811461102c5760008081fd5b8252948901949089019061100b565b918301919091525088525050948301948301610f4e565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016110b3576110b361108b565b5060010190565b60005b838110156110d55781810151838201526020016110bd565b838111156107b25750506000910152565b600081518084526110fe8160208601602086016110ba565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b848110156111e157607f198a850301865281518885016001600160a01b038251168652848201516003811061118057634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b808310156111cc5783516001600160e01b03191682529286019260019290920191908601906111a2565b5097850197955050509082019060010161113b565b50506001600160a01b038a1690880152868103604088015261120381896110e6565b9a9950505050505050505050565b60006bffffffffffffffffffffffff8083168181036112325761123261108b565b6001019392505050565b6000825161124e8184602087016110ba565b9190910192915050565b60208152600061126b60208301846110e6565b9392505050565b6000828210156112845761128461108b565b500390565b634e487b7160e01b600052603160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a26469706673582212206cc792acb64c21764e52cc287ad2a0c1f623ba33a027bec5887940919e3fa7c764736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80631f931c1c14610030575b600080fd5b61004361003e366004610dd5565b610045565b005b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146100c35760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064015b60405180910390fd5b61010d6100d08587610f1b565b8484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061011492505050565b5050505050565b60005b83518110156102f05760008482815181106101345761013461105f565b60200260200101516020015190506000600281111561015557610155611075565b81600281111561016757610167611075565b036101b5576101b08583815181106101815761018161105f565b60200260200101516000015186848151811061019f5761019f61105f565b60200260200101516040015161033b565b6102dd565b60018160028111156101c9576101c9611075565b03610212576101b08583815181106101e3576101e361105f565b6020026020010151600001518684815181106102015761020161105f565b602002602001015160400151610525565b600281600281111561022657610226611075565b0361026f576101b08583815181106102405761024061105f565b60200260200101516000015186848151811061025e5761025e61105f565b60200260200101516040015161071f565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560448201527f74416374696f6e0000000000000000000000000000000000000000000000000060648201526084016100ba565b50806102e8816110a1565b915050610117565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67383838360405161032493929190611112565b60405180910390a161033682826107b8565b505050565b6001600160a01b03821660009081527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d60205260408120547fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c916bffffffffffffffffffffffff821690036103b4576103b482856109dc565b60005b835181101561010d5760008482815181106103d4576103d461105f565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b03168015610459576040517f752eb76d0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526001600160e01b0319831660248201526044016100ba565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c949094029390931790925593909252879052815473ffffffffffffffffffffffffffffffffffffffff19161790558361050d81611211565b9450505050808061051d906110a1565b9150506103b7565b6001600160a01b03821660009081527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d60205260408120547fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c916bffffffffffffffffffffffff8216900361059e5761059e82856109dc565b60005b835181101561010d5760008482815181106105be576105be61105f565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b039081169087168103610648576040517f0f63c2400000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526001600160e01b0319831660248201526044016100ba565b610653858284610a53565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c949094029390931790925593909252879052815473ffffffffffffffffffffffffffffffffffffffff19161790558361070781611211565b94505050508080610717906110a1565b9150506105a1565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c60005b82518110156107b25760008382815181106107605761076061105f565b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b031661079d848284610a53565b505080806107aa906110a1565b915050610743565b50505050565b6001600160a01b03821661083f5780511561083b5760405162461bcd60e51b815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d7074790000000060648201526084016100ba565b5050565b60008151116108b65760405162461bcd60e51b815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f74206164647265737328302900000060648201526084016100ba565b6001600160a01b03821630146108e8576108e8826040518060600160405280602881526020016112a060289139610d4f565b600080836001600160a01b031683604051610903919061123c565b600060405180830381855af49150503d806000811461093e576040519150601f19603f3d011682016040523d82523d6000602084013e610943565b606091505b5091509150816107b25780511561096e578060405162461bcd60e51b81526004016100ba9190611258565b60405162461bcd60e51b815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e20726560448201527f766572746564000000000000000000000000000000000000000000000000000060648201526084016100ba565b6109fe816040518060600160405280602481526020016112c860249139610d4f565b6002820180546001600160a01b03909216600081815260019485016020908152604082208601859055948401835591825292902001805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b6001600160e01b03198116600090815260208481526040808320546001600160a01b0386168452600180880190935290832054600160a01b9091046bffffffffffffffffffffffff169291610aa791611272565b9050808214610b9e576001600160a01b03841660009081526001860160205260408120805483908110610adc57610adc61105f565b600091825260208083206008830401546001600160a01b038916845260018a019091526040909220805460079092166004026101000a90920460e01b925082919085908110610b2d57610b2d61105f565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b03199290921682528690526040902080546001600160a01b0316600160a01b6bffffffffffffffffffffffff8516021790555b6001600160a01b03841660009081526001860160205260409020805480610bc757610bc7611289565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319851682528690526040812081905581900361010d576002850154600090610c2a90600190611272565b6001600160a01b0386166000908152600180890160205260409091200154909150808214610ce6576000876002018381548110610c6957610c6961105f565b6000918252602090912001546002890180546001600160a01b039092169250829184908110610c9a57610c9a61105f565b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03948516179055929091168152600189810190925260409020018190555b86600201805480610cf957610cf9611289565b600082815260208082208301600019908101805473ffffffffffffffffffffffffffffffffffffffff191690559092019092556001600160a01b0388168252600189810190915260408220015550505050505050565b813b81816107b25760405162461bcd60e51b81526004016100ba9190611258565b80356001600160a01b0381168114610d8757600080fd5b919050565b60008083601f840112610d9e57600080fd5b50813567ffffffffffffffff811115610db657600080fd5b602083019150836020828501011115610dce57600080fd5b9250929050565b600080600080600060608688031215610ded57600080fd5b853567ffffffffffffffff80821115610e0557600080fd5b818801915088601f830112610e1957600080fd5b813581811115610e2857600080fd5b8960208260051b8501011115610e3d57600080fd5b60208301975080965050610e5360208901610d70565b94506040880135915080821115610e6957600080fd5b50610e7688828901610d8c565b969995985093965092949392505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715610ec057610ec0610e87565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610eef57610eef610e87565b604052919050565b600067ffffffffffffffff821115610f1157610f11610e87565b5060051b60200190565b6000610f2e610f2984610ef7565b610ec6565b83815260208082019190600586811b860136811115610f4c57600080fd5b865b8181101561105257803567ffffffffffffffff80821115610f6f5760008081fd5b818a01915060608236031215610f855760008081fd5b610f8d610e9d565b610f9683610d70565b81528683013560038110610faa5760008081fd5b8188015260408381013583811115610fc25760008081fd5b939093019236601f850112610fd957600092508283fd5b83359250610fe9610f2984610ef7565b83815292871b840188019288810190368511156110065760008081fd5b948901945b8486101561103b5785356001600160e01b03198116811461102c5760008081fd5b8252948901949089019061100b565b918301919091525088525050948301948301610f4e565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016110b3576110b361108b565b5060010190565b60005b838110156110d55781810151838201526020016110bd565b838111156107b25750506000910152565b600081518084526110fe8160208601602086016110ba565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b848110156111e157607f198a850301865281518885016001600160a01b038251168652848201516003811061118057634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b808310156111cc5783516001600160e01b03191682529286019260019290920191908601906111a2565b5097850197955050509082019060010161113b565b50506001600160a01b038a1690880152868103604088015261120381896110e6565b9a9950505050505050505050565b60006bffffffffffffffffffffffff8083168181036112325761123261108b565b6001019392505050565b6000825161124e8184602087016110ba565b9190910192915050565b60208152600061126b60208301846110e6565b9392505050565b6000828210156112845761128461108b565b500390565b634e487b7160e01b600052603160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a26469706673582212206cc792acb64c21764e52cc287ad2a0c1f623ba33a027bec5887940919e3fa7c764736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"diamond/DiamondLoupe":{"address":{"3":"0x9d938a88094296ff207966671bBCAF14Bf28286f","4":"0x702355611a2d7F54275f9d6660082F2A72Ba5DF6","rinkeby":"0x702355611a2d7F54275f9d6660082F2A72Ba5DF6","ropsten":"0x9d938a88094296ff207966671bBCAF14Bf28286f"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"DiamondLoupe","sourceName":"src/diamond/DiamondLoupe.sol","abi":[{"inputs":[{"internalType":"bytes4","name":"_functionSelector","type":"bytes4"}],"name":"facetAddress","outputs":[{"internalType":"address","name":"facetAddress_","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"facetAddresses","outputs":[{"internalType":"address[]","name":"facetAddresses_","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_facet","type":"address"}],"name":"facetFunctionSelectors","outputs":[{"internalType":"bytes4[]","name":"facetFunctionSelectors_","type":"bytes4[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"facets","outputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct IDiamondLoupe.Facet[]","name":"facets_","type":"tuple[]"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506106c5806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806352ef6b2c146100515780637a0ed6271461006f578063adfca15e14610084578063cdffacc6146100a4575b600080fd5b610059610126565b6040516100669190610490565b60405180910390f35b6100776101ab565b604051610066919061053a565b6100976100923660046105b7565b61039d565b60405161006691906105e7565b61010e6100b23660046105fa565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c60205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610066565b606060007fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c600281018054604080516020808402820181019092528281529394508301828280156101a057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610182575b505050505091505090565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131e546060907fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c908067ffffffffffffffff81111561020b5761020b61063c565b60405190808252806020026020018201604052801561025157816020015b6040805180820190915260008152606060208201528152602001906001900390816102295790505b50925060005b8181101561039757600083600201828154811061027657610276610652565b9060005260206000200160009054906101000a90046001600160a01b03169050808583815181106102a9576102a9610652565b6020908102919091018101516001600160a01b03928316905290821660009081526001860182526040908190208054825181850281018501909352808352919290919083018282801561035d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161030a5790505b505050505085838151811061037457610374610652565b60200260200101516020018190525050808061038f90610668565b915050610257565b50505090565b6001600160a01b03811660009081527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d602090815260409182902080548351818402810184019094528084526060937fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c939092919083018282801561048357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116104305790505b5050505050915050919050565b6020808252825182820181905260009190848201906040850190845b818110156104d15783516001600160a01b0316835292840192918401916001016104ac565b50909695505050505050565b600081518084526020808501945080840160005b8381101561052f5781517fffffffff0000000000000000000000000000000000000000000000000000000016875295820195908201906001016104f1565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b838110156105a957888303603f19018552815180516001600160a01b03168452870151878401879052610596878501826104dd565b9588019593505090860190600101610561565b509098975050505050505050565b6000602082840312156105c957600080fd5b81356001600160a01b03811681146105e057600080fd5b9392505050565b6020815260006105e060208301846104dd565b60006020828403121561060c57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146105e057600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006001820161068857634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220956854b6a36937cc51d45b68549ced6d1e10b5ecc557b2b25cd11eda0e834a6464736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806352ef6b2c146100515780637a0ed6271461006f578063adfca15e14610084578063cdffacc6146100a4575b600080fd5b610059610126565b6040516100669190610490565b60405180910390f35b6100776101ab565b604051610066919061053a565b6100976100923660046105b7565b61039d565b60405161006691906105e7565b61010e6100b23660046105fa565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c60205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610066565b606060007fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c600281018054604080516020808402820181019092528281529394508301828280156101a057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610182575b505050505091505090565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131e546060907fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c908067ffffffffffffffff81111561020b5761020b61063c565b60405190808252806020026020018201604052801561025157816020015b6040805180820190915260008152606060208201528152602001906001900390816102295790505b50925060005b8181101561039757600083600201828154811061027657610276610652565b9060005260206000200160009054906101000a90046001600160a01b03169050808583815181106102a9576102a9610652565b6020908102919091018101516001600160a01b03928316905290821660009081526001860182526040908190208054825181850281018501909352808352919290919083018282801561035d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161030a5790505b505050505085838151811061037457610374610652565b60200260200101516020018190525050808061038f90610668565b915050610257565b50505090565b6001600160a01b03811660009081527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d602090815260409182902080548351818402810184019094528084526060937fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c939092919083018282801561048357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116104305790505b5050505050915050919050565b6020808252825182820181905260009190848201906040850190845b818110156104d15783516001600160a01b0316835292840192918401916001016104ac565b50909695505050505050565b600081518084526020808501945080840160005b8381101561052f5781517fffffffff0000000000000000000000000000000000000000000000000000000016875295820195908201906001016104f1565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b838110156105a957888303603f19018552815180516001600160a01b03168452870151878401879052610596878501826104dd565b9588019593505090860190600101610561565b509098975050505050505050565b6000602082840312156105c957600080fd5b81356001600160a01b03811681146105e057600080fd5b9392505050565b6020815260006105e060208301846104dd565b60006020828403121561060c57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146105e057600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006001820161068857634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220956854b6a36937cc51d45b68549ced6d1e10b5ecc557b2b25cd11eda0e834a6464736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"diamond/DiamondStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"DiamondStorage","sourceName":"src/diamond/DiamondStorage.sol","abi":[{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamondCut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"indexed":false,"internalType":"struct IDiamondCut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"indexed":false,"internalType":"address","name":"_init","type":"address"},{"indexed":false,"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"DiamondCut","type":"event"}],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ae0f4e1ead0c8a12cb4450a8dfd0eb87cda01ef74ba6ca5884c0be27b912576664736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ae0f4e1ead0c8a12cb4450a8dfd0eb87cda01ef74ba6ca5884c0be27b912576664736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"diamond/IDiamondCut":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IDiamondCut","sourceName":"src/diamond/IDiamondCut.sol","abi":[{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamondCut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"indexed":false,"internalType":"struct IDiamondCut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"indexed":false,"internalType":"address","name":"_init","type":"address"},{"indexed":false,"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"DiamondCut","type":"event"},{"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamondCut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct IDiamondCut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"internalType":"address","name":"_init","type":"address"},{"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"diamondCut","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"diamond/IDiamondLoupe":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IDiamondLoupe","sourceName":"src/diamond/IDiamondLoupe.sol","abi":[{"inputs":[{"internalType":"bytes4","name":"_functionSelector","type":"bytes4"}],"name":"facetAddress","outputs":[{"internalType":"address","name":"facetAddress_","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"facetAddresses","outputs":[{"internalType":"address[]","name":"facetAddresses_","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_facet","type":"address"}],"name":"facetFunctionSelectors","outputs":[{"internalType":"bytes4[]","name":"facetFunctionSelectors_","type":"bytes4[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"facets","outputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct IDiamondLoupe.Facet[]","name":"facets_","type":"tuple[]"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"factory/Clones":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Clones","sourceName":"src/factory/Clones.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220402596091f8c07fa2df1f9fa42908316e1c18588be42dcf7ff7ceb55c7db7b3464736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220402596091f8c07fa2df1f9fa42908316e1c18588be42dcf7ff7ceb55c7db7b3464736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"factory/FlairFactory":{"address":{"3":"0x88D339113E47355A9544E0665193F47A0325EBcB","ropsten":"0x88D339113E47355A9544E0665193F47A0325EBcB"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"FlairFactory","sourceName":"src/factory/FlairFactory.sol","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"deployer","type":"address"},{"indexed":true,"internalType":"address","name":"proxyAddress","type":"address"}],"name":"ProxyCreated","type":"event"},{"anonymous":false,"inputs":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"cloneDeterministicSimple","outputs":[{"internalType":"address","name":"deployedProxy","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"predictDeterministicSimple","outputs":[{"internalType":"address","name":"deployedProxy","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b506200001d336200002d565b6200002762000088565b62000390565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620000a95750600054600160ff909116105b80620000d95750620000c630620001bd60201b62000c071760201c565b158015620000d9575060005460ff166001145b620001425760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000166576000805461ff0019166101001790555b62000173336000620001cc565b8015620001ba576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6001600160a01b03163b151590565b600054610100900460ff16620002285760405162461bcd60e51b815260206004820152602b602482015260008051602062001a0a83398151915260448201526a6e697469616c697a696e6760a81b606482015260840162000139565b62000234828262000238565b5050565b600054610100900460ff16620002945760405162461bcd60e51b815260206004820152602b602482015260008051602062001a0a83398151915260448201526a6e697469616c697a696e6760a81b606482015260840162000139565b620002a663ac2ba33360e01b620002f6565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b836003811115620002ed57620002ed6200037a565b02179055505050565b6001600160e01b03198082169003620003525760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640162000139565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b634e487b7160e01b600052602160045260246000fd5b61166a80620003a06000396000f3fe6080604052600436106101295760003560e01c8063837fe140116100a5578063c723955a11610074578063dcbe353f11610059578063dcbe353f1461030e578063de6d6d961461032e578063f2fde38b1461034e57600080fd5b8063c723955a146102e4578063da82b227146102f957600080fd5b8063837fe1401461026a5780638da5cb5b1461027f578063af121f54146102a3578063c0bb38ff146102c457600080fd5b806347791ece116100fc5780636057e0ec116100e15780636057e0ec1461021f578063715018a6146102405780638129fc1c1461025557600080fd5b806347791ece146101eb57806349561cb9146101fe57600080fd5b806301ffc9a71461012e57806310db94b9146101635780632c2330671461019b5780632d00b587146101bd575b600080fd5b34801561013a57600080fd5b5061014e610149366004611301565b61036e565b60405190151581526020015b60405180910390f35b34801561016f57600080fd5b5061018361017e366004611347565b6103c7565b6040516001600160a01b03909116815260200161015a565b3480156101a757600080fd5b506101bb6101b6366004611371565b61041b565b005b3480156101c957600080fd5b506002546101de90600160b01b900460ff1681565b60405161015a91906113a8565b6101836101f93660046113d0565b6104b3565b34801561020a57600080fd5b5060025461014e90600160b81b900460ff1681565b34801561022b57600080fd5b5060025461014e90600160a01b900460ff1681565b34801561024c57600080fd5b506101bb61060a565b34801561026157600080fd5b506101bb61061e565b34801561027657600080fd5b506101bb610741565b34801561028b57600080fd5b506000546201000090046001600160a01b0316610183565b3480156102af57600080fd5b5060025461014e90600160a81b900460ff1681565b3480156102d057600080fd5b506101bb6102df366004611457565b6107bc565b3480156102f057600080fd5b506101bb610836565b34801561030557600080fd5b506101bb6108c8565b34801561031a57600080fd5b50600254610183906001600160a01b031681565b34801561033a57600080fd5b506101bb6103493660046114be565b610929565b34801561035a57600080fd5b506101bb610369366004611457565b610b7a565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b0319831614806103c157506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b6040516bffffffffffffffffffffffff193360601b1660208201526034810182905260009081906054016040516020818303038152906040528051906020012090506104138482610c16565b949350505050565b610423610c99565b600254600160b81b900460ff161561046b5760405162461bcd60e51b81526020600482015260066024820152651313d0d2d15160d21b60448201526064015b60405180910390fd5b600280548291907fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff16600160b01b8360038111156104ab576104ab611392565b021790555050565b6040516bffffffffffffffffffffffff193360601b1660208201526034810184905260009081906054016040516020818303038152906040528051906020012090506104ff8682610cfa565b915082156105cb57600080836001600160a01b0316868660405161052492919061152a565b6000604051808303816000865af19150503d8060008114610561576040519150601f19603f3d011682016040523d82523d6000602084013e610566565b606091505b5091509150816105c8578051156105805780518082602001fd5b60405162461bcd60e51b815260206004820152600f60248201527f4641494c45445f544f5f434c4f4e4500000000000000000000000000000000006044820152606401610462565b50505b6040516001600160a01b0383169033907f9678a1e87ca9f1a37dc659a97b39d812d98cd236947e1b53b3d0d6fd346acb6e90600090a350949350505050565b610612610c99565b61061c6000610db1565b565b600054610100900460ff161580801561063e5750600054600160ff909116105b806106585750303b158015610658575060005460ff166001145b6106ca5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610462565b6000805460ff1916600117905580156106ed576000805461ff0019166101001790555b6106f8336000610e22565b801561073e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b610749610c99565b600254600160a01b900460ff161561078c5760405162461bcd60e51b81526020600482015260066024820152651313d0d2d15160d21b6044820152606401610462565b600280547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055565b6107c4610c99565b600254600160a01b900460ff16156108075760405162461bcd60e51b81526020600482015260066024820152651313d0d2d15160d21b6044820152606401610462565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b61083e610c99565b600254600160b81b900460ff16156108985760405162461bcd60e51b815260206004820152600560248201527f4f434b45440000000000000000000000000000000000000000000000000000006044820152606401610462565b600280547fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff16600160b81b179055565b6108d0610c99565b600280547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b61093233610ead565b6002546001600160a01b031661098a5760405162461bcd60e51b815260206004820152601560248201527f57495448445241572f4e4f5f524543495049454e5400000000000000000000006044820152606401610462565b600254600160a81b900460ff16156109e45760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610462565b60005b83811015610b36576000858583818110610a0357610a0361153a565b9050602002016020810190610a189190611457565b6001600160a01b031603610a5b57610a56838383818110610a3b57610a3b61153a565b6002546001600160a01b03169260209091020135905061104b565b610b24565b848482818110610a6d57610a6d61153a565b9050602002016020810190610a829190611457565b6002546001600160a01b039182169163a9059cbb9116858585818110610aaa57610aaa61153a565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015610afe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b229190611550565b505b80610b2e81611572565b9150506109e7565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a584848484604051610b6c9493929190611599565b60405180910390a150505050565b610b82610c99565b6001600160a01b038116610bfe5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610462565b61073e81610db1565b6001600160a01b03163b151590565b6000610c928383306040517f3d602d80600a3d3981f3363d3d373d3d3d363d730000000000000000000000008152606093841b60148201527f5af43d82803e903d91602b57fd5bf3ff000000000000000000000000000000006028820152921b6038830152604c8201526037808220606c830152605591012090565b9392505050565b6000546001600160a01b036201000090910416331461061c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610462565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528360601b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f59150506001600160a01b0381166103c15760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c65640000000000000000006044820152606401610462565b600080546001600160a01b03838116620100008181027fffffffffffffffffffff0000000000000000000000000000000000000000ffff851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff16610e9f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610462565b610ea98282611169565b5050565b6003600254600160b01b900460ff166003811115610ecd57610ecd611392565b03610f1a5760405162461bcd60e51b815260206004820152600f60248201527f57495448445241572f4c4f434b454400000000000000000000000000000000006044820152606401610462565b60028054600160b01b900460ff166003811115610f3957610f39611392565b03610f415750565b6001600254600160b01b900460ff166003811115610f6157610f61611392565b03610fc3576002546001600160a01b0382811691161461073e5760405162461bcd60e51b815260206004820152601760248201527f57495448445241572f4f4e4c595f524543495049454e540000000000000000006044820152606401610462565b6000600254600160b01b900460ff166003811115610fe357610fe3611392565b0361073e576000546001600160a01b0382811662010000909204161461073e5760405162461bcd60e51b815260206004820152601360248201527f57495448445241572f4f4e4c595f4f574e4552000000000000000000000000006044820152606401610462565b8047101561109b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610462565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146110e8576040519150601f19603f3d011682016040523d82523d6000602084013e6110ed565b606091505b50509050806111645760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610462565b505050565b600054610100900460ff166111e65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610462565b61120f7fac2ba3330000000000000000000000000000000000000000000000000000000061127f565b600280546001600160a01b03841673ffffffffffffffffffffffffffffffffffffffff198216811783558392917fffffffffffffffffff00ffff00000000000000000000000000000000000000001617600160b01b83600381111561127657611276611392565b02179055505050565b6001600160e01b031980821690036112d95760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e74657266616365206964000000006044820152606401610462565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60006020828403121561131357600080fd5b81356001600160e01b031981168114610c9257600080fd5b80356001600160a01b038116811461134257600080fd5b919050565b6000806040838503121561135a57600080fd5b6113638361132b565b946020939093013593505050565b60006020828403121561138357600080fd5b813560048110610c9257600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106113ca57634e487b7160e01b600052602160045260246000fd5b91905290565b600080600080606085870312156113e657600080fd5b6113ef8561132b565b935060208501359250604085013567ffffffffffffffff8082111561141357600080fd5b818701915087601f83011261142757600080fd5b81358181111561143657600080fd5b88602082850101111561144857600080fd5b95989497505060200194505050565b60006020828403121561146957600080fd5b610c928261132b565b60008083601f84011261148457600080fd5b50813567ffffffffffffffff81111561149c57600080fd5b6020830191508360208260051b85010111156114b757600080fd5b9250929050565b600080600080604085870312156114d457600080fd5b843567ffffffffffffffff808211156114ec57600080fd5b6114f888838901611472565b9096509450602087013591508082111561151157600080fd5b5061151e87828801611472565b95989497509550505050565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561156257600080fd5b81518015158114610c9257600080fd5b60006001820161159257634e487b7160e01b600052601160045260246000fd5b5060010190565b6040808252810184905260008560608301825b878110156115da576001600160a01b036115c58461132b565b168252602092830192909101906001016115ac565b5083810360208501528481527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85111561161357600080fd5b8460051b91508186602083013760009101602001908152969550505050505056fea2646970667358221220ed60731ee92a21b70bac7c8c9a33fc8b9336ce44dff44c362abff4367aaed54764736f6c634300080f0033496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","deployedBytecode":"0x6080604052600436106101295760003560e01c8063837fe140116100a5578063c723955a11610074578063dcbe353f11610059578063dcbe353f1461030e578063de6d6d961461032e578063f2fde38b1461034e57600080fd5b8063c723955a146102e4578063da82b227146102f957600080fd5b8063837fe1401461026a5780638da5cb5b1461027f578063af121f54146102a3578063c0bb38ff146102c457600080fd5b806347791ece116100fc5780636057e0ec116100e15780636057e0ec1461021f578063715018a6146102405780638129fc1c1461025557600080fd5b806347791ece146101eb57806349561cb9146101fe57600080fd5b806301ffc9a71461012e57806310db94b9146101635780632c2330671461019b5780632d00b587146101bd575b600080fd5b34801561013a57600080fd5b5061014e610149366004611301565b61036e565b60405190151581526020015b60405180910390f35b34801561016f57600080fd5b5061018361017e366004611347565b6103c7565b6040516001600160a01b03909116815260200161015a565b3480156101a757600080fd5b506101bb6101b6366004611371565b61041b565b005b3480156101c957600080fd5b506002546101de90600160b01b900460ff1681565b60405161015a91906113a8565b6101836101f93660046113d0565b6104b3565b34801561020a57600080fd5b5060025461014e90600160b81b900460ff1681565b34801561022b57600080fd5b5060025461014e90600160a01b900460ff1681565b34801561024c57600080fd5b506101bb61060a565b34801561026157600080fd5b506101bb61061e565b34801561027657600080fd5b506101bb610741565b34801561028b57600080fd5b506000546201000090046001600160a01b0316610183565b3480156102af57600080fd5b5060025461014e90600160a81b900460ff1681565b3480156102d057600080fd5b506101bb6102df366004611457565b6107bc565b3480156102f057600080fd5b506101bb610836565b34801561030557600080fd5b506101bb6108c8565b34801561031a57600080fd5b50600254610183906001600160a01b031681565b34801561033a57600080fd5b506101bb6103493660046114be565b610929565b34801561035a57600080fd5b506101bb610369366004611457565b610b7a565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b0319831614806103c157506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b6040516bffffffffffffffffffffffff193360601b1660208201526034810182905260009081906054016040516020818303038152906040528051906020012090506104138482610c16565b949350505050565b610423610c99565b600254600160b81b900460ff161561046b5760405162461bcd60e51b81526020600482015260066024820152651313d0d2d15160d21b60448201526064015b60405180910390fd5b600280548291907fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff16600160b01b8360038111156104ab576104ab611392565b021790555050565b6040516bffffffffffffffffffffffff193360601b1660208201526034810184905260009081906054016040516020818303038152906040528051906020012090506104ff8682610cfa565b915082156105cb57600080836001600160a01b0316868660405161052492919061152a565b6000604051808303816000865af19150503d8060008114610561576040519150601f19603f3d011682016040523d82523d6000602084013e610566565b606091505b5091509150816105c8578051156105805780518082602001fd5b60405162461bcd60e51b815260206004820152600f60248201527f4641494c45445f544f5f434c4f4e4500000000000000000000000000000000006044820152606401610462565b50505b6040516001600160a01b0383169033907f9678a1e87ca9f1a37dc659a97b39d812d98cd236947e1b53b3d0d6fd346acb6e90600090a350949350505050565b610612610c99565b61061c6000610db1565b565b600054610100900460ff161580801561063e5750600054600160ff909116105b806106585750303b158015610658575060005460ff166001145b6106ca5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610462565b6000805460ff1916600117905580156106ed576000805461ff0019166101001790555b6106f8336000610e22565b801561073e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b610749610c99565b600254600160a01b900460ff161561078c5760405162461bcd60e51b81526020600482015260066024820152651313d0d2d15160d21b6044820152606401610462565b600280547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055565b6107c4610c99565b600254600160a01b900460ff16156108075760405162461bcd60e51b81526020600482015260066024820152651313d0d2d15160d21b6044820152606401610462565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b61083e610c99565b600254600160b81b900460ff16156108985760405162461bcd60e51b815260206004820152600560248201527f4f434b45440000000000000000000000000000000000000000000000000000006044820152606401610462565b600280547fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff16600160b81b179055565b6108d0610c99565b600280547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b61093233610ead565b6002546001600160a01b031661098a5760405162461bcd60e51b815260206004820152601560248201527f57495448445241572f4e4f5f524543495049454e5400000000000000000000006044820152606401610462565b600254600160a81b900460ff16156109e45760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b45446044820152606401610462565b60005b83811015610b36576000858583818110610a0357610a0361153a565b9050602002016020810190610a189190611457565b6001600160a01b031603610a5b57610a56838383818110610a3b57610a3b61153a565b6002546001600160a01b03169260209091020135905061104b565b610b24565b848482818110610a6d57610a6d61153a565b9050602002016020810190610a829190611457565b6002546001600160a01b039182169163a9059cbb9116858585818110610aaa57610aaa61153a565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015610afe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b229190611550565b505b80610b2e81611572565b9150506109e7565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a584848484604051610b6c9493929190611599565b60405180910390a150505050565b610b82610c99565b6001600160a01b038116610bfe5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610462565b61073e81610db1565b6001600160a01b03163b151590565b6000610c928383306040517f3d602d80600a3d3981f3363d3d373d3d3d363d730000000000000000000000008152606093841b60148201527f5af43d82803e903d91602b57fd5bf3ff000000000000000000000000000000006028820152921b6038830152604c8201526037808220606c830152605591012090565b9392505050565b6000546001600160a01b036201000090910416331461061c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610462565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528360601b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f59150506001600160a01b0381166103c15760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c65640000000000000000006044820152606401610462565b600080546001600160a01b03838116620100008181027fffffffffffffffffffff0000000000000000000000000000000000000000ffff851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff16610e9f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610462565b610ea98282611169565b5050565b6003600254600160b01b900460ff166003811115610ecd57610ecd611392565b03610f1a5760405162461bcd60e51b815260206004820152600f60248201527f57495448445241572f4c4f434b454400000000000000000000000000000000006044820152606401610462565b60028054600160b01b900460ff166003811115610f3957610f39611392565b03610f415750565b6001600254600160b01b900460ff166003811115610f6157610f61611392565b03610fc3576002546001600160a01b0382811691161461073e5760405162461bcd60e51b815260206004820152601760248201527f57495448445241572f4f4e4c595f524543495049454e540000000000000000006044820152606401610462565b6000600254600160b01b900460ff166003811115610fe357610fe3611392565b0361073e576000546001600160a01b0382811662010000909204161461073e5760405162461bcd60e51b815260206004820152601360248201527f57495448445241572f4f4e4c595f4f574e4552000000000000000000000000006044820152606401610462565b8047101561109b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610462565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146110e8576040519150601f19603f3d011682016040523d82523d6000602084013e6110ed565b606091505b50509050806111645760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610462565b505050565b600054610100900460ff166111e65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610462565b61120f7fac2ba3330000000000000000000000000000000000000000000000000000000061127f565b600280546001600160a01b03841673ffffffffffffffffffffffffffffffffffffffff198216811783558392917fffffffffffffffffff00ffff00000000000000000000000000000000000000001617600160b01b83600381111561127657611276611392565b02179055505050565b6001600160e01b031980821690036112d95760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e74657266616365206964000000006044820152606401610462565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b60006020828403121561131357600080fd5b81356001600160e01b031981168114610c9257600080fd5b80356001600160a01b038116811461134257600080fd5b919050565b6000806040838503121561135a57600080fd5b6113638361132b565b946020939093013593505050565b60006020828403121561138357600080fd5b813560048110610c9257600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106113ca57634e487b7160e01b600052602160045260246000fd5b91905290565b600080600080606085870312156113e657600080fd5b6113ef8561132b565b935060208501359250604085013567ffffffffffffffff8082111561141357600080fd5b818701915087601f83011261142757600080fd5b81358181111561143657600080fd5b88602082850101111561144857600080fd5b95989497505060200194505050565b60006020828403121561146957600080fd5b610c928261132b565b60008083601f84011261148457600080fd5b50813567ffffffffffffffff81111561149c57600080fd5b6020830191508360208260051b85010111156114b757600080fd5b9250929050565b600080600080604085870312156114d457600080fd5b843567ffffffffffffffff808211156114ec57600080fd5b6114f888838901611472565b9096509450602087013591508082111561151157600080fd5b5061151e87828801611472565b95989497509550505050565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561156257600080fd5b81518015158114610c9257600080fd5b60006001820161159257634e487b7160e01b600052601160045260246000fd5b5060010190565b6040808252810184905260008560608301825b878110156115da576001600160a01b036115c58461132b565b168252602092830192909101906001016115ac565b5083810360208501528481527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85111561161357600080fd5b8460051b91508186602083013760009101602001908152969550505050505056fea2646970667358221220ed60731ee92a21b70bac7c8c9a33fc8b9336ce44dff44c362abff4367aaed54764736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"factory/FlairFactoryNewable":{"address":{"3":"0x5e88650C4e38206addb2561cec3103Fa6C6A9bF7","ropsten":"0x5e88650C4e38206addb2561cec3103Fa6C6A9bF7"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"FlairFactoryNewable","sourceName":"src/factory/FlairFactoryNewable.sol","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"deployer","type":"address"},{"indexed":true,"internalType":"address","name":"proxyAddress","type":"address"}],"name":"ProxyCreated","type":"event"},{"anonymous":false,"inputs":[],"name":"WithdrawPowerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"claimTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"cloneDeterministicSimple","outputs":[{"internalType":"address","name":"deployedProxy","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeWithdrawPower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum WithdrawMode","name":"_withdrawMode","type":"uint8"}],"name":"setWithdrawMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawRecipient","type":"address"}],"name":"setWithdrawRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimTokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMode","outputs":[{"internalType":"enum WithdrawMode","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawModeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawPowerRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawRecipientLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b506200001d336200002d565b6200002762000088565b62000390565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff1615808015620000a95750600054600160ff909116105b80620000d95750620000c630620001bd60201b62000b711760201c565b158015620000d9575060005460ff166001145b620001425760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000166576000805461ff0019166101001790555b62000173336000620001cc565b8015620001ba576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6001600160a01b03163b151590565b600054610100900460ff16620002285760405162461bcd60e51b815260206004820152602b60248201526000805160206200199683398151915260448201526a6e697469616c697a696e6760a81b606482015260840162000139565b62000234828262000238565b5050565b600054610100900460ff16620002945760405162461bcd60e51b815260206004820152602b60248201526000805160206200199683398151915260448201526a6e697469616c697a696e6760a81b606482015260840162000139565b620002a663ac2ba33360e01b620002f6565b600280546001600160a01b0384166001600160a01b0319821681178355839291600162ff000160a01b03191617600160b01b836003811115620002ed57620002ed6200037a565b02179055505050565b6001600160e01b03198082169003620003525760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640162000139565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b634e487b7160e01b600052602160045260246000fd5b6115f680620003a06000396000f3fe60806040526004361061010e5760003560e01c8063837fe140116100a5578063c723955a11610074578063dcbe353f11610059578063dcbe353f146102d3578063de6d6d96146102f3578063f2fde38b1461031357600080fd5b8063c723955a146102a9578063da82b227146102be57600080fd5b8063837fe1401461022f5780638da5cb5b14610244578063af121f5414610268578063c0bb38ff1461028957600080fd5b806349561cb9116100e157806349561cb9146101c35780636057e0ec146101e4578063715018a6146102055780638129fc1c1461021a57600080fd5b806301ffc9a7146101135780632c233067146101485780632d00b5871461016a57806347791ece14610198575b600080fd5b34801561011f57600080fd5b5061013361012e36600461113e565b610333565b60405190151581526020015b60405180910390f35b34801561015457600080fd5b5061016861016336600461116f565b61038c565b005b34801561017657600080fd5b5060025461018b90600160b01b900460ff1681565b60405161013f91906111a6565b6101ab6101a63660046111ea565b610424565b6040516001600160a01b03909116815260200161013f565b3480156101cf57600080fd5b5060025461013390600160b81b900460ff1681565b3480156101f057600080fd5b5060025461013390600160a01b900460ff1681565b34801561021157600080fd5b50610168610574565b34801561022657600080fd5b50610168610588565b34801561023b57600080fd5b506101686106ab565b34801561025057600080fd5b506000546201000090046001600160a01b03166101ab565b34801561027457600080fd5b5060025461013390600160a81b900460ff1681565b34801561029557600080fd5b506101686102a4366004611271565b610726565b3480156102b557600080fd5b506101686107a0565b3480156102ca57600080fd5b50610168610832565b3480156102df57600080fd5b506002546101ab906001600160a01b031681565b3480156102ff57600080fd5b5061016861030e3660046112d8565b610893565b34801561031f57600080fd5b5061016861032e366004611271565b610ae4565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316148061038657506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b610394610b80565b600254600160b81b900460ff16156103dc5760405162461bcd60e51b81526020600482015260066024820152651313d0d2d15160d21b60448201526064015b60405180910390fd5b600280548291907fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff16600160b01b83600381111561041c5761041c611190565b021790555050565b600080848660405161043590611131565b6001600160a01b0390911681526020018190604051809103906000f5905080158015610465573d6000803e3d6000fd5b509150819050821561053557600080836001600160a01b0316868660405161048e929190611344565b6000604051808303816000865af19150503d80600081146104cb576040519150601f19603f3d011682016040523d82523d6000602084013e6104d0565b606091505b509150915081610532578051156104ea5780518082602001fd5b60405162461bcd60e51b815260206004820152600f60248201527f4641494c45445f544f5f434c4f4e45000000000000000000000000000000000060448201526064016103d3565b50505b6040516001600160a01b0383169033907f9678a1e87ca9f1a37dc659a97b39d812d98cd236947e1b53b3d0d6fd346acb6e90600090a350949350505050565b61057c610b80565b6105866000610be1565b565b600054610100900460ff16158080156105a85750600054600160ff909116105b806105c25750303b1580156105c2575060005460ff166001145b6106345760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103d3565b6000805460ff191660011790558015610657576000805461ff0019166101001790555b610662336000610c52565b80156106a8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6106b3610b80565b600254600160a01b900460ff16156106f65760405162461bcd60e51b81526020600482015260066024820152651313d0d2d15160d21b60448201526064016103d3565b600280547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055565b61072e610b80565b600254600160a01b900460ff16156107715760405162461bcd60e51b81526020600482015260066024820152651313d0d2d15160d21b60448201526064016103d3565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6107a8610b80565b600254600160b81b900460ff16156108025760405162461bcd60e51b815260206004820152600560248201527f4f434b454400000000000000000000000000000000000000000000000000000060448201526064016103d3565b600280547fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff16600160b81b179055565b61083a610b80565b600280547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b61089c33610cdd565b6002546001600160a01b03166108f45760405162461bcd60e51b815260206004820152601560248201527f57495448445241572f4e4f5f524543495049454e54000000000000000000000060448201526064016103d3565b600254600160a81b900460ff161561094e5760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b454460448201526064016103d3565b60005b83811015610aa057600085858381811061096d5761096d611354565b90506020020160208101906109829190611271565b6001600160a01b0316036109c5576109c08383838181106109a5576109a5611354565b6002546001600160a01b031692602090910201359050610e7b565b610a8e565b8484828181106109d7576109d7611354565b90506020020160208101906109ec9190611271565b6002546001600160a01b039182169163a9059cbb9116858585818110610a1457610a14611354565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015610a68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8c919061136a565b505b80610a988161138c565b915050610951565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a584848484604051610ad694939291906113b3565b60405180910390a150505050565b610aec610b80565b6001600160a01b038116610b685760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016103d3565b6106a881610be1565b6001600160a01b03163b151590565b6000546001600160a01b03620100009091041633146105865760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103d3565b600080546001600160a01b03838116620100008181027fffffffffffffffffffff0000000000000000000000000000000000000000ffff851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff16610ccf5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016103d3565b610cd98282610f99565b5050565b6003600254600160b01b900460ff166003811115610cfd57610cfd611190565b03610d4a5760405162461bcd60e51b815260206004820152600f60248201527f57495448445241572f4c4f434b4544000000000000000000000000000000000060448201526064016103d3565b60028054600160b01b900460ff166003811115610d6957610d69611190565b03610d715750565b6001600254600160b01b900460ff166003811115610d9157610d91611190565b03610df3576002546001600160a01b038281169116146106a85760405162461bcd60e51b815260206004820152601760248201527f57495448445241572f4f4e4c595f524543495049454e5400000000000000000060448201526064016103d3565b6000600254600160b01b900460ff166003811115610e1357610e13611190565b036106a8576000546001600160a01b038281166201000090920416146106a85760405162461bcd60e51b815260206004820152601360248201527f57495448445241572f4f4e4c595f4f574e45520000000000000000000000000060448201526064016103d3565b80471015610ecb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016103d3565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610f18576040519150601f19603f3d011682016040523d82523d6000602084013e610f1d565b606091505b5050905080610f945760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016103d3565b505050565b600054610100900460ff166110165760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016103d3565b61103f7fac2ba333000000000000000000000000000000000000000000000000000000006110af565b600280546001600160a01b03841673ffffffffffffffffffffffffffffffffffffffff198216811783558392917fffffffffffffffffff00ffff00000000000000000000000000000000000000001617600160b01b8360038111156110a6576110a6611190565b02179055505050565b6001600160e01b031980821690036111095760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e746572666163652069640000000060448201526064016103d3565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b6101728061144f83390190565b60006020828403121561115057600080fd5b81356001600160e01b03198116811461116857600080fd5b9392505050565b60006020828403121561118157600080fd5b81356004811061116857600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106111c857634e487b7160e01b600052602160045260246000fd5b91905290565b80356001600160a01b03811681146111e557600080fd5b919050565b6000806000806060858703121561120057600080fd5b611209856111ce565b935060208501359250604085013567ffffffffffffffff8082111561122d57600080fd5b818701915087601f83011261124157600080fd5b81358181111561125057600080fd5b88602082850101111561126257600080fd5b95989497505060200194505050565b60006020828403121561128357600080fd5b611168826111ce565b60008083601f84011261129e57600080fd5b50813567ffffffffffffffff8111156112b657600080fd5b6020830191508360208260051b85010111156112d157600080fd5b9250929050565b600080600080604085870312156112ee57600080fd5b843567ffffffffffffffff8082111561130657600080fd5b6113128883890161128c565b9096509450602087013591508082111561132b57600080fd5b506113388782880161128c565b95989497509550505050565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561137c57600080fd5b8151801515811461116857600080fd5b6000600182016113ac57634e487b7160e01b600052601160045260246000fd5b5060010190565b6040808252810184905260008560608301825b878110156113f4576001600160a01b036113df846111ce565b168252602092830192909101906001016113c6565b5083810360208501528481527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85111561142d57600080fd5b8460051b91508186602083013760009101602001908152969550505050505056fe608060405260405161017238038061017283398101604081905261002291610080565b806100597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61007d60201b6100581760201c565b80546001600160a01b0319166001600160a01b0392909216919091179055506100b0565b90565b60006020828403121561009257600080fd5b81516001600160a01b03811681146100a957600080fd5b9392505050565b60b4806100be6000396000f3fe608060405236601057600e6013565b005b600e5b605660527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b605b565b565b90565b3660008037600080366000845af43d6000803e8080156079573d6000f35b3d6000fdfea264697066735822122010e3d1afd2c437d773a5002b589123ae499d9167b69637e26ef5120fc87f46dc64736f6c634300080f0033a2646970667358221220516ebf9c27f086c09355dd72ef43f510961e1e6800bf2157730909d8b6cad2e664736f6c634300080f0033496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","deployedBytecode":"0x60806040526004361061010e5760003560e01c8063837fe140116100a5578063c723955a11610074578063dcbe353f11610059578063dcbe353f146102d3578063de6d6d96146102f3578063f2fde38b1461031357600080fd5b8063c723955a146102a9578063da82b227146102be57600080fd5b8063837fe1401461022f5780638da5cb5b14610244578063af121f5414610268578063c0bb38ff1461028957600080fd5b806349561cb9116100e157806349561cb9146101c35780636057e0ec146101e4578063715018a6146102055780638129fc1c1461021a57600080fd5b806301ffc9a7146101135780632c233067146101485780632d00b5871461016a57806347791ece14610198575b600080fd5b34801561011f57600080fd5b5061013361012e36600461113e565b610333565b60405190151581526020015b60405180910390f35b34801561015457600080fd5b5061016861016336600461116f565b61038c565b005b34801561017657600080fd5b5060025461018b90600160b01b900460ff1681565b60405161013f91906111a6565b6101ab6101a63660046111ea565b610424565b6040516001600160a01b03909116815260200161013f565b3480156101cf57600080fd5b5060025461013390600160b81b900460ff1681565b3480156101f057600080fd5b5060025461013390600160a01b900460ff1681565b34801561021157600080fd5b50610168610574565b34801561022657600080fd5b50610168610588565b34801561023b57600080fd5b506101686106ab565b34801561025057600080fd5b506000546201000090046001600160a01b03166101ab565b34801561027457600080fd5b5060025461013390600160a81b900460ff1681565b34801561029557600080fd5b506101686102a4366004611271565b610726565b3480156102b557600080fd5b506101686107a0565b3480156102ca57600080fd5b50610168610832565b3480156102df57600080fd5b506002546101ab906001600160a01b031681565b3480156102ff57600080fd5b5061016861030e3660046112d8565b610893565b34801561031f57600080fd5b5061016861032e366004611271565b610ae4565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316148061038657506001600160e01b0319821660009081526001602052604090205460ff165b92915050565b610394610b80565b600254600160b81b900460ff16156103dc5760405162461bcd60e51b81526020600482015260066024820152651313d0d2d15160d21b60448201526064015b60405180910390fd5b600280548291907fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff16600160b01b83600381111561041c5761041c611190565b021790555050565b600080848660405161043590611131565b6001600160a01b0390911681526020018190604051809103906000f5905080158015610465573d6000803e3d6000fd5b509150819050821561053557600080836001600160a01b0316868660405161048e929190611344565b6000604051808303816000865af19150503d80600081146104cb576040519150601f19603f3d011682016040523d82523d6000602084013e6104d0565b606091505b509150915081610532578051156104ea5780518082602001fd5b60405162461bcd60e51b815260206004820152600f60248201527f4641494c45445f544f5f434c4f4e45000000000000000000000000000000000060448201526064016103d3565b50505b6040516001600160a01b0383169033907f9678a1e87ca9f1a37dc659a97b39d812d98cd236947e1b53b3d0d6fd346acb6e90600090a350949350505050565b61057c610b80565b6105866000610be1565b565b600054610100900460ff16158080156105a85750600054600160ff909116105b806105c25750303b1580156105c2575060005460ff166001145b6106345760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103d3565b6000805460ff191660011790558015610657576000805461ff0019166101001790555b610662336000610c52565b80156106a8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6106b3610b80565b600254600160a01b900460ff16156106f65760405162461bcd60e51b81526020600482015260066024820152651313d0d2d15160d21b60448201526064016103d3565b600280547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055565b61072e610b80565b600254600160a01b900460ff16156107715760405162461bcd60e51b81526020600482015260066024820152651313d0d2d15160d21b60448201526064016103d3565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6107a8610b80565b600254600160b81b900460ff16156108025760405162461bcd60e51b815260206004820152600560248201527f4f434b454400000000000000000000000000000000000000000000000000000060448201526064016103d3565b600280547fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff16600160b81b179055565b61083a610b80565b600280547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16600160a81b1790556040517fa24423a69b45c25c0479663125e48b482e71d85eae416f589545243bafaf3c9590600090a1565b61089c33610cdd565b6002546001600160a01b03166108f45760405162461bcd60e51b815260206004820152601560248201527f57495448445241572f4e4f5f524543495049454e54000000000000000000000060448201526064016103d3565b600254600160a81b900460ff161561094e5760405162461bcd60e51b815260206004820181905260248201527f57495448445241572f454d455247454e43595f504f5745525f5245564f4b454460448201526064016103d3565b60005b83811015610aa057600085858381811061096d5761096d611354565b90506020020160208101906109829190611271565b6001600160a01b0316036109c5576109c08383838181106109a5576109a5611354565b6002546001600160a01b031692602090910201359050610e7b565b610a8e565b8484828181106109d7576109d7611354565b90506020020160208101906109ec9190611271565b6002546001600160a01b039182169163a9059cbb9116858585818110610a1457610a14611354565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015610a68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8c919061136a565b505b80610a988161138c565b915050610951565b507fd40c399a83caf67d15628b821aa7c7bd940e563c57a047e2bd3b8c602bcaf5a584848484604051610ad694939291906113b3565b60405180910390a150505050565b610aec610b80565b6001600160a01b038116610b685760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016103d3565b6106a881610be1565b6001600160a01b03163b151590565b6000546001600160a01b03620100009091041633146105865760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103d3565b600080546001600160a01b03838116620100008181027fffffffffffffffffffff0000000000000000000000000000000000000000ffff851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600054610100900460ff16610ccf5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016103d3565b610cd98282610f99565b5050565b6003600254600160b01b900460ff166003811115610cfd57610cfd611190565b03610d4a5760405162461bcd60e51b815260206004820152600f60248201527f57495448445241572f4c4f434b4544000000000000000000000000000000000060448201526064016103d3565b60028054600160b01b900460ff166003811115610d6957610d69611190565b03610d715750565b6001600254600160b01b900460ff166003811115610d9157610d91611190565b03610df3576002546001600160a01b038281169116146106a85760405162461bcd60e51b815260206004820152601760248201527f57495448445241572f4f4e4c595f524543495049454e5400000000000000000060448201526064016103d3565b6000600254600160b01b900460ff166003811115610e1357610e13611190565b036106a8576000546001600160a01b038281166201000090920416146106a85760405162461bcd60e51b815260206004820152601360248201527f57495448445241572f4f4e4c595f4f574e45520000000000000000000000000060448201526064016103d3565b80471015610ecb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016103d3565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610f18576040519150601f19603f3d011682016040523d82523d6000602084013e610f1d565b606091505b5050905080610f945760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016103d3565b505050565b600054610100900460ff166110165760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016103d3565b61103f7fac2ba333000000000000000000000000000000000000000000000000000000006110af565b600280546001600160a01b03841673ffffffffffffffffffffffffffffffffffffffff198216811783558392917fffffffffffffffffff00ffff00000000000000000000000000000000000000001617600160b01b8360038111156110a6576110a6611190565b02179055505050565b6001600160e01b031980821690036111095760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e746572666163652069640000000060448201526064016103d3565b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b6101728061144f83390190565b60006020828403121561115057600080fd5b81356001600160e01b03198116811461116857600080fd5b9392505050565b60006020828403121561118157600080fd5b81356004811061116857600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600483106111c857634e487b7160e01b600052602160045260246000fd5b91905290565b80356001600160a01b03811681146111e557600080fd5b919050565b6000806000806060858703121561120057600080fd5b611209856111ce565b935060208501359250604085013567ffffffffffffffff8082111561122d57600080fd5b818701915087601f83011261124157600080fd5b81358181111561125057600080fd5b88602082850101111561126257600080fd5b95989497505060200194505050565b60006020828403121561128357600080fd5b611168826111ce565b60008083601f84011261129e57600080fd5b50813567ffffffffffffffff8111156112b657600080fd5b6020830191508360208260051b85010111156112d157600080fd5b9250929050565b600080600080604085870312156112ee57600080fd5b843567ffffffffffffffff8082111561130657600080fd5b6113128883890161128c565b9096509450602087013591508082111561132b57600080fd5b506113388782880161128c565b95989497509550505050565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561137c57600080fd5b8151801515811461116857600080fd5b6000600182016113ac57634e487b7160e01b600052601160045260246000fd5b5060010190565b6040808252810184905260008560608301825b878110156113f4576001600160a01b036113df846111ce565b168252602092830192909101906001016113c6565b5083810360208501528481527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85111561142d57600080fd5b8460051b91508186602083013760009101602001908152969550505050505056fe608060405260405161017238038061017283398101604081905261002291610080565b806100597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61007d60201b6100581760201c565b80546001600160a01b0319166001600160a01b0392909216919091179055506100b0565b90565b60006020828403121561009257600080fd5b81516001600160a01b03811681146100a957600080fd5b9392505050565b60b4806100be6000396000f3fe608060405236601057600e6013565b005b600e5b605660527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b605b565b565b90565b3660008037600080366000845af43d6000803e8080156079573d6000f35b3d6000fdfea264697066735822122010e3d1afd2c437d773a5002b589123ae499d9167b69637e26ef5120fc87f46dc64736f6c634300080f0033a2646970667358221220516ebf9c27f086c09355dd72ef43f510961e1e6800bf2157730909d8b6cad2e664736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"factory/MinimalProxy":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"MinimalProxy","sourceName":"src/factory/MinimalProxy.sol","abi":[{"inputs":[{"internalType":"address","name":"_impl","type":"address"}],"stateMutability":"payable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x608060405260405161017238038061017283398101604081905261002291610080565b806100597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61007d60201b6100581760201c565b80546001600160a01b0319166001600160a01b0392909216919091179055506100b0565b90565b60006020828403121561009257600080fd5b81516001600160a01b03811681146100a957600080fd5b9392505050565b60b4806100be6000396000f3fe608060405236601057600e6013565b005b600e5b605660527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b605b565b565b90565b3660008037600080366000845af43d6000803e8080156079573d6000f35b3d6000fdfea264697066735822122010e3d1afd2c437d773a5002b589123ae499d9167b69637e26ef5120fc87f46dc64736f6c634300080f0033","deployedBytecode":"0x608060405236601057600e6013565b005b600e5b605660527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b605b565b565b90565b3660008037600080366000845af43d6000803e8080156079573d6000f35b3d6000fdfea264697066735822122010e3d1afd2c437d773a5002b589123ae499d9167b69637e26ef5120fc87f46dc64736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"finance/sales/ITieredSales":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ITieredSales","sourceName":"src/finance/sales/ITieredSales.sol","abi":[{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"eligibleForTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintByTier","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onTierAllowlist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"remainingForTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reservedMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"tierMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"tiers","outputs":[{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct ITieredSalesInternal.Tier","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReserved","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"name":"walletMintedByTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"finance/sales/ITieredSalesAdmin":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ITieredSalesAdmin","sourceName":"src/finance/sales/ITieredSalesAdmin.sol","abi":[{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct ITieredSalesInternal.Tier","name":"","type":"tuple"}],"name":"configureTiering","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct ITieredSalesInternal.Tier[]","name":"","type":"tuple[]"}],"name":"configureTiering","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"finance/sales/ITieredSalesInternal":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ITieredSalesInternal","sourceName":"src/finance/sales/ITieredSalesInternal.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"finance/sales/TieredSales":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"TieredSales","sourceName":"src/finance/sales/TieredSales.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"eligibleForTier","outputs":[{"internalType":"uint256","name":"maxMintable","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintByTier","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onTierAllowlist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"remainingForTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reservedMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"tierMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"tiers","outputs":[{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct ITieredSalesInternal.Tier","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReserved","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"name":"walletMintedByTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"finance/sales/TieredSalesERC2771":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"TieredSalesERC2771","sourceName":"src/finance/sales/TieredSalesERC2771.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"eligibleForTier","outputs":[{"internalType":"uint256","name":"maxMintable","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintByTier","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onTierAllowlist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"remainingForTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reservedMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"tierMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"tiers","outputs":[{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct ITieredSalesInternal.Tier","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReserved","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"name":"walletMintedByTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"finance/sales/TieredSalesInternal":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"TieredSalesInternal","sourceName":"src/finance/sales/TieredSalesInternal.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"finance/sales/TieredSalesOwnable":{"address":{"3":"0xe61cc06a7435EC72507c028a577BbAD42E67eAc1","4":"0x80b613989a974AD6877b163eE2fa59535d462F47","rinkeby":"0x80b613989a974AD6877b163eE2fa59535d462F47","ropsten":"0xe61cc06a7435EC72507c028a577BbAD42E67eAc1"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"TieredSalesOwnable","sourceName":"src/finance/sales/TieredSalesOwnable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct ITieredSalesInternal.Tier","name":"tier","type":"tuple"}],"name":"configureTiering","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tierIds","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct ITieredSalesInternal.Tier[]","name":"tiers","type":"tuple[]"}],"name":"configureTiering","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b50610654806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806320f1bb301461003b578063d8b436fd14610050575b600080fd5b61004e6100493660046103fa565b610063565b005b61004e61005e366004610434565b6100fc565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146100ee5760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064015b60405180910390fd5b6100f88282610194565b5050565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146101825760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016100e5565b61018e8484848461039c565b50505050565b60008281527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbe60205260409020547fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb9060e083013510156102375760405162461bcd60e51b815260206004820152601160248201527f4c4f5745525f5448414e5f4d494e54454400000000000000000000000000000060448201526064016100e5565b6000838152600282016020526040902060060154156102b457600083815260038201602052604090205460c083013510156102b45760405162461bcd60e51b815260206004820152601260248201527f4c4f575f524553455256455f414d4f554e54000000000000000000000000000060448201526064016100e5565b600083815260038201602052604090205415610331576000838152600282016020526040902060040154608083013510156103315760405162461bcd60e51b815260206004820152601260248201527f4c4f575f4d41585f5045525f57414c4c4554000000000000000000000000000060448201526064016100e5565b6000838152600282016020526040812060060154825490918391610356908490610512565b90915550506000838152600282016020526040902082906103778282610529565b9050508160c0013581600001600082825461039291906105d7565b9091555050505050565b60005b838110156103f3576103e18585838181106103bc576103bc6105ef565b905060200201358484848181106103d5576103d56105ef565b90506101000201610194565b806103eb81610605565b91505061039f565b5050505050565b60008082840361012081121561040f57600080fd5b83359250610100601f198201121561042657600080fd5b506020830190509250929050565b6000806000806040858703121561044a57600080fd5b843567ffffffffffffffff8082111561046257600080fd5b818701915087601f83011261047657600080fd5b81358181111561048557600080fd5b8860208260051b850101111561049a57600080fd5b6020928301965094509086013590808211156104b557600080fd5b818701915087601f8301126104c957600080fd5b8135818111156104d857600080fd5b8860208260081b85010111156104ed57600080fd5b95989497505060200194505050565b634e487b7160e01b600052601160045260246000fd5b600082821015610524576105246104fc565b500390565b8135815560208201356001820155604082013573ffffffffffffffffffffffffffffffffffffffff8116811461055e57600080fd5b6002820180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905550606082013560038201556080820135600482015560a0820135600582015560c0820135600682015560e082013560078201555050565b600082198211156105ea576105ea6104fc565b500190565b634e487b7160e01b600052603260045260246000fd5b600060018201610617576106176104fc565b506001019056fea26469706673582212209740d6fbbcdd8b947cba31731e9b368710a784eff21b52fd55c66bded186c32664736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c806320f1bb301461003b578063d8b436fd14610050575b600080fd5b61004e6100493660046103fa565b610063565b005b61004e61005e366004610434565b6100fc565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146100ee5760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064015b60405180910390fd5b6100f88282610194565b5050565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146101825760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016100e5565b61018e8484848461039c565b50505050565b60008281527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbe60205260409020547fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb9060e083013510156102375760405162461bcd60e51b815260206004820152601160248201527f4c4f5745525f5448414e5f4d494e54454400000000000000000000000000000060448201526064016100e5565b6000838152600282016020526040902060060154156102b457600083815260038201602052604090205460c083013510156102b45760405162461bcd60e51b815260206004820152601260248201527f4c4f575f524553455256455f414d4f554e54000000000000000000000000000060448201526064016100e5565b600083815260038201602052604090205415610331576000838152600282016020526040902060040154608083013510156103315760405162461bcd60e51b815260206004820152601260248201527f4c4f575f4d41585f5045525f57414c4c4554000000000000000000000000000060448201526064016100e5565b6000838152600282016020526040812060060154825490918391610356908490610512565b90915550506000838152600282016020526040902082906103778282610529565b9050508160c0013581600001600082825461039291906105d7565b9091555050505050565b60005b838110156103f3576103e18585838181106103bc576103bc6105ef565b905060200201358484848181106103d5576103d56105ef565b90506101000201610194565b806103eb81610605565b91505061039f565b5050505050565b60008082840361012081121561040f57600080fd5b83359250610100601f198201121561042657600080fd5b506020830190509250929050565b6000806000806040858703121561044a57600080fd5b843567ffffffffffffffff8082111561046257600080fd5b818701915087601f83011261047657600080fd5b81358181111561048557600080fd5b8860208260051b850101111561049a57600080fd5b6020928301965094509086013590808211156104b557600080fd5b818701915087601f8301126104c957600080fd5b8135818111156104d857600080fd5b8860208260081b85010111156104ed57600080fd5b95989497505060200194505050565b634e487b7160e01b600052601160045260246000fd5b600082821015610524576105246104fc565b500390565b8135815560208201356001820155604082013573ffffffffffffffffffffffffffffffffffffffff8116811461055e57600080fd5b6002820180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905550606082013560038201556080820135600482015560a0820135600582015560c0820135600682015560e082013560078201555050565b600082198211156105ea576105ea6104fc565b500190565b634e487b7160e01b600052603260045260246000fd5b600060018201610617576106176104fc565b506001019056fea26469706673582212209740d6fbbcdd8b947cba31731e9b368710a784eff21b52fd55c66bded186c32664736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"finance/sales/TieredSalesStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"TieredSalesStorage","sourceName":"src/finance/sales/TieredSalesStorage.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c01ad5c60383a6ddfcecb64824d48cd60e50fede8605cdfd55dc8b1cd00cc31164736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c01ad5c60383a6ddfcecb64824d48cd60e50fede8605cdfd55dc8b1cd00cc31164736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"introspection/ERC165":{"address":{"3":"0x4F9bf8f997b2Ce586f7Bc7a976aEBAc8D17312D3","4":"0x0A42B5Df15924b40fb98dedb0a0A9f3CC962c09E","rinkeby":"0x0A42B5Df15924b40fb98dedb0a0A9f3CC962c09E","ropsten":"0x4F9bf8f997b2Ce586f7Bc7a976aEBAc8D17312D3"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC165","sourceName":"src/introspection/ERC165.sol","abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b5061011f806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806301ffc9a714602d575b600080fd5b608e603836600460a2565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081527fff923f4a67695a9cdd5da4b8580a5a20edf2183c42aa111dd7fc15dc7bed2640602052604090205460ff1690565b604051901515815260200160405180910390f35b60006020828403121560b357600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811460e257600080fd5b939250505056fea2646970667358221220978c0f9d0ff751ebb5636f15644f255b2df4fde84b5657d3fc110466d7ccc52464736f6c634300080f0033","deployedBytecode":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c806301ffc9a714602d575b600080fd5b608e603836600460a2565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081527fff923f4a67695a9cdd5da4b8580a5a20edf2183c42aa111dd7fc15dc7bed2640602052604090205460ff1690565b604051901515815260200160405180910390f35b60006020828403121560b357600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811460e257600080fd5b939250505056fea2646970667358221220978c0f9d0ff751ebb5636f15644f255b2df4fde84b5657d3fc110466d7ccc52464736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"introspection/ERC165Ownable":{"address":{"3":"0xE07116Ab6e1599eF4991986D68E0377d705Ab455","4":"0xdd13cD39976d4Ae6c7Bb6F0333bB68Abcd0b8f88","rinkeby":"0xdd13cD39976d4Ae6c7Bb6F0333bB68Abcd0b8f88","ropsten":"0xE07116Ab6e1599eF4991986D68E0377d705Ab455"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC165Ownable","sourceName":"src/introspection/ERC165Ownable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"bytes4[]","name":"interfaceIds","type":"bytes4[]"},{"internalType":"bytes4[]","name":"interfaceIdsToRemove","type":"bytes4[]"}],"name":"setERC165","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506103f0806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80632a84809114610030575b600080fd5b61004361003e3660046102c8565b610045565b005b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146100e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e6572000000604482015260640160405180910390fd5b7f01ffc9a70000000000000000000000000000000000000000000000000000000060009081527fff923f4a67695a9cdd5da4b8580a5a20edf2183c42aa111dd7fc15dc7bed264060208190527fe1cd5a39bd0bb11debfd51073019ab01630b5cba823095c51b2463cd8445abf8805460ff19166001179055905b848110156101ea57600182600088888581811061018257610182610334565b9050602002016020810190610197919061034a565b7fffffffff000000000000000000000000000000000000000000000000000000001681526020810191909152604001600020805460ff1916911515919091179055806101e281610393565b915050610163565b5060005b82811015610274576000828186868581811061020c5761020c610334565b9050602002016020810190610221919061034a565b7fffffffff000000000000000000000000000000000000000000000000000000001681526020810191909152604001600020805460ff19169115159190911790558061026c81610393565b9150506101ee565b505050505050565b60008083601f84011261028e57600080fd5b50813567ffffffffffffffff8111156102a657600080fd5b6020830191508360208260051b85010111156102c157600080fd5b9250929050565b600080600080604085870312156102de57600080fd5b843567ffffffffffffffff808211156102f657600080fd5b6103028883890161027c565b9096509450602087013591508082111561031b57600080fd5b506103288782880161027c565b95989497509550505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561035c57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461038c57600080fd5b9392505050565b6000600182016103b357634e487b7160e01b600052601160045260246000fd5b506001019056fea264697066735822122073a69efeed33091ae3f263e0f10f05ffedabf51097fa3293ec1990c5a6b8f8b764736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80632a84809114610030575b600080fd5b61004361003e3660046102c8565b610045565b005b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146100e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e6572000000604482015260640160405180910390fd5b7f01ffc9a70000000000000000000000000000000000000000000000000000000060009081527fff923f4a67695a9cdd5da4b8580a5a20edf2183c42aa111dd7fc15dc7bed264060208190527fe1cd5a39bd0bb11debfd51073019ab01630b5cba823095c51b2463cd8445abf8805460ff19166001179055905b848110156101ea57600182600088888581811061018257610182610334565b9050602002016020810190610197919061034a565b7fffffffff000000000000000000000000000000000000000000000000000000001681526020810191909152604001600020805460ff1916911515919091179055806101e281610393565b915050610163565b5060005b82811015610274576000828186868581811061020c5761020c610334565b9050602002016020810190610221919061034a565b7fffffffff000000000000000000000000000000000000000000000000000000001681526020810191909152604001600020805460ff19169115159190911790558061026c81610393565b9150506101ee565b505050505050565b60008083601f84011261028e57600080fd5b50813567ffffffffffffffff8111156102a657600080fd5b6020830191508360208260051b85010111156102c157600080fd5b9250929050565b600080600080604085870312156102de57600080fd5b843567ffffffffffffffff808211156102f657600080fd5b6103028883890161027c565b9096509450602087013591508082111561031b57600080fd5b506103288782880161027c565b95989497509550505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561035c57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461038c57600080fd5b9392505050565b6000600182016103b357634e487b7160e01b600052601160045260246000fd5b506001019056fea264697066735822122073a69efeed33091ae3f263e0f10f05ffedabf51097fa3293ec1990c5a6b8f8b764736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"introspection/ERC165Storage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC165Storage","sourceName":"src/introspection/ERC165Storage.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220335575a17fdf013187b6fe327b5e16ec14c4a89ab9b738e4c6bc7c8639c847a864736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220335575a17fdf013187b6fe327b5e16ec14c4a89ab9b738e4c6bc7c8639c847a864736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"introspection/IERC165":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC165","sourceName":"src/introspection/IERC165.sol","abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"introspection/IERC165Admin":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC165Admin","sourceName":"src/introspection/IERC165Admin.sol","abi":[{"inputs":[{"internalType":"bytes4[]","name":"interfaceIds","type":"bytes4[]"},{"internalType":"bytes4[]","name":"interfaceIdsToRemove","type":"bytes4[]"}],"name":"setERC165","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"metatx/ERC2771Context":{"address":{"3":"0x4c4226c746c9ce072710f44d7ee8798c6f6dcffd","4":"0x84B454aC1e3f1CFE1551D86a5BECa645Ee1D8393","rinkeby":"0x84B454aC1e3f1CFE1551D86a5BECa645Ee1D8393","ropsten":"0x4c4226c746c9ce072710f44d7ee8798c6f6dcffd"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC2771Context","sourceName":"src/metatx/ERC2771Context.sol","abi":[{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b5060fd8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063572b6c0514602d575b600080fd5b60786038366004608c565b7fdb1d5e345c4903e9a32b6674ecc8b1deaddbbb2551474fb34c9d34becbe7f4205473ffffffffffffffffffffffffffffffffffffffff90811691161490565b604051901515815260200160405180910390f35b600060208284031215609d57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811460c057600080fd5b939250505056fea264697066735822122036045f6946f82eb62e22b239246a916163dfa7bda5f809f73e73ac0438e1ffa564736f6c634300080f0033","deployedBytecode":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063572b6c0514602d575b600080fd5b60786038366004608c565b7fdb1d5e345c4903e9a32b6674ecc8b1deaddbbb2551474fb34c9d34becbe7f4205473ffffffffffffffffffffffffffffffffffffffff90811691161490565b604051901515815260200160405180910390f35b600060208284031215609d57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811460c057600080fd5b939250505056fea264697066735822122036045f6946f82eb62e22b239246a916163dfa7bda5f809f73e73ac0438e1ffa564736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"metatx/ERC2771ContextInternal":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC2771ContextInternal","sourceName":"src/metatx/ERC2771ContextInternal.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"metatx/ERC2771ContextOwnable":{"address":{"3":"0xD89b756f2a891E99C1eC9FB452d99Fe1cd9C0876","4":"0x2FE6A1c703baAa73901E4e2D533e3F3A0cE29332","rinkeby":"0x2FE6A1c703baAa73901E4e2D533e3F3A0cE29332","ropsten":"0xD89b756f2a891E99C1eC9FB452d99Fe1cd9C0876"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC2771ContextOwnable","sourceName":"src/metatx/ERC2771ContextOwnable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"trustedForwarder","type":"address"}],"name":"setTrustedForwarder","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506101c2806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063da74222814610030575b600080fd5b61004361003e36600461014f565b610045565b005b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146100e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e6572000000604482015260640160405180910390fd5b7fdb1d5e345c4903e9a32b6674ecc8b1deaddbbb2551474fb34c9d34becbe7f42080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60006020828403121561016157600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461018557600080fd5b939250505056fea264697066735822122013fab626059dddf1e1ab5b6c661f17c68a6b37de16d9a867be3aedd0def9fa5a64736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063da74222814610030575b600080fd5b61004361003e36600461014f565b610045565b005b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146100e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e6572000000604482015260640160405180910390fd5b7fdb1d5e345c4903e9a32b6674ecc8b1deaddbbb2551474fb34c9d34becbe7f42080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60006020828403121561016157600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461018557600080fd5b939250505056fea264697066735822122013fab626059dddf1e1ab5b6c661f17c68a6b37de16d9a867be3aedd0def9fa5a64736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"metatx/ERC2771ContextStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC2771ContextStorage","sourceName":"src/metatx/ERC2771ContextStorage.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205dc5ec96f791de7c80b4c2e714402892061240872a4e3ee5e8d9227d97c29be564736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205dc5ec96f791de7c80b4c2e714402892061240872a4e3ee5e8d9227d97c29be564736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"metatx/IERC2771Context":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC2771Context","sourceName":"src/metatx/IERC2771Context.sol","abi":[{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"metatx/IERC2771ContextAdmin":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC2771ContextAdmin","sourceName":"src/metatx/IERC2771ContextAdmin.sol","abi":[{"inputs":[{"internalType":"address","name":"trustedForwarder","type":"address"}],"name":"setTrustedForwarder","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/access/AccessControl":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"AccessControl","sourceName":"contracts/access/AccessControl.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/access/AccessControlCrossChain":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"AccessControlCrossChain","sourceName":"contracts/access/AccessControlCrossChain.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"CROSSCHAIN_ALIAS","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/access/AccessControlEnumerable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"AccessControlEnumerable","sourceName":"contracts/access/AccessControlEnumerable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/access/IAccessControl":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IAccessControl","sourceName":"contracts/access/IAccessControl.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/access/IAccessControlEnumerable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IAccessControlEnumerable","sourceName":"contracts/access/IAccessControlEnumerable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/access/Ownable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Ownable","sourceName":"contracts/access/Ownable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/amb/CrossChainEnabledAMB":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"CrossChainEnabledAMB","sourceName":"contracts/crosschain/amb/CrossChainEnabledAMB.sol","abi":[{"inputs":[{"internalType":"address","name":"bridge","type":"address"}],"stateMutability":"nonpayable","type":"constructor"}],"bytecode":"0x60a0604052348015600f57600080fd5b5060405160bc38038060bc833981016040819052602a91603a565b6001600160a01b03166080526068565b600060208284031215604b57600080fd5b81516001600160a01b0381168114606157600080fd5b9392505050565b608051603f607d60003960005050603f6000f3fe6080604052600080fdfea26469706673582212209884bd67993706561c6e5b4d273a774582590b63288266669c10629930cb4ad664736f6c63430008090033","deployedBytecode":"0x6080604052600080fdfea26469706673582212209884bd67993706561c6e5b4d273a774582590b63288266669c10629930cb4ad664736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/amb/LibAMB":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"LibAMB","sourceName":"contracts/crosschain/amb/LibAMB.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220288fb1df8b52873fc67e1921066d5bc1566a8daea933ac55a279f2f8a2a2f6a864736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220288fb1df8b52873fc67e1921066d5bc1566a8daea933ac55a279f2f8a2a2f6a864736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/arbitrum/CrossChainEnabledArbitrumL1":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"CrossChainEnabledArbitrumL1","sourceName":"contracts/crosschain/arbitrum/CrossChainEnabledArbitrumL1.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/arbitrum/CrossChainEnabledArbitrumL2":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"CrossChainEnabledArbitrumL2","sourceName":"contracts/crosschain/arbitrum/CrossChainEnabledArbitrumL2.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/arbitrum/LibArbitrumL1":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"LibArbitrumL1","sourceName":"contracts/crosschain/arbitrum/LibArbitrumL1.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209f0010b404592d904745111d8cdd71c3be14fb9fede8338df2e9e52072d0ae6564736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209f0010b404592d904745111d8cdd71c3be14fb9fede8338df2e9e52072d0ae6564736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/arbitrum/LibArbitrumL2":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"LibArbitrumL2","sourceName":"contracts/crosschain/arbitrum/LibArbitrumL2.sol","abi":[{"inputs":[],"name":"ARBSYS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"bytecode":"0x6091610038600b82828239805160001a607314602b57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063bf0a12cf146038575b600080fd5b603f606481565b6040516001600160a01b03909116815260200160405180910390f3fea2646970667358221220ab77562c84149237fab25891fe1774b814b98c91e76d3514eed6eca6c576ce6864736f6c63430008090033","deployedBytecode":"0x730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063bf0a12cf146038575b600080fd5b603f606481565b6040516001600160a01b03909116815260200160405180910390f3fea2646970667358221220ab77562c84149237fab25891fe1774b814b98c91e76d3514eed6eca6c576ce6864736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/CrossChainEnabled":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"CrossChainEnabled","sourceName":"contracts/crosschain/CrossChainEnabled.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/optimism/CrossChainEnabledOptimism":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"CrossChainEnabledOptimism","sourceName":"contracts/crosschain/optimism/CrossChainEnabledOptimism.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/optimism/LibOptimism":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"LibOptimism","sourceName":"contracts/crosschain/optimism/LibOptimism.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209df9178eb2af42ed4c0dd55637a52437ad90595b04abc6b7ddea128c39a72cd464736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209df9178eb2af42ed4c0dd55637a52437ad90595b04abc6b7ddea128c39a72cd464736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/crosschain/polygon/CrossChainEnabledPolygonChild":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"CrossChainEnabledPolygonChild","sourceName":"contracts/crosschain/polygon/CrossChainEnabledPolygonChild.sol","abi":[{"inputs":[],"name":"NotCrossChainCall","type":"error"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"rootMessageSender","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"processMessageFromRoot","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/finance/PaymentSplitter":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"PaymentSplitter","sourceName":"contracts/finance/PaymentSplitter.sol","abi":[{"inputs":[{"internalType":"address[]","name":"payees","type":"address[]"},{"internalType":"uint256[]","name":"shares_","type":"uint256[]"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ERC20PaymentReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"PayeeAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PaymentReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PaymentReleased","type":"event"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"payee","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"releasable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"releasable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"totalReleased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReleased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x6080604052604051620011f0380380620011f083398101604081905262000026916200042e565b8051825114620000985760405162461bcd60e51b815260206004820152603260248201527f5061796d656e7453706c69747465723a2070617965657320616e6420736861726044820152710cae640d8cadccee8d040dad2e6dac2e8c6d60731b60648201526084015b60405180910390fd5b6000825111620000eb5760405162461bcd60e51b815260206004820152601a60248201527f5061796d656e7453706c69747465723a206e6f2070617965657300000000000060448201526064016200008f565b60005b82518110156200015757620001428382815181106200011157620001116200050c565b60200260200101518383815181106200012e576200012e6200050c565b60200260200101516200016060201b60201c565b806200014e8162000538565b915050620000ee565b50505062000571565b6001600160a01b038216620001cd5760405162461bcd60e51b815260206004820152602c60248201527f5061796d656e7453706c69747465723a206163636f756e74206973207468652060448201526b7a65726f206164647265737360a01b60648201526084016200008f565b600081116200021f5760405162461bcd60e51b815260206004820152601d60248201527f5061796d656e7453706c69747465723a2073686172657320617265203000000060448201526064016200008f565b6001600160a01b038216600090815260026020526040902054156200029b5760405162461bcd60e51b815260206004820152602b60248201527f5061796d656e7453706c69747465723a206163636f756e7420616c726561647960448201526a206861732073686172657360a81b60648201526084016200008f565b60048054600181019091557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319166001600160a01b0384169081179091556000908152600260205260408120829055546200030390829062000556565b600055604080516001600160a01b0384168152602081018390527f40c340f65e17194d14ddddb073d3c9f888e3cb52b5aae0c6c7706b4fbc905fac910160405180910390a15050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156200038d576200038d6200034c565b604052919050565b60006001600160401b03821115620003b157620003b16200034c565b5060051b60200190565b600082601f830112620003cd57600080fd5b81516020620003e6620003e08362000395565b62000362565b82815260059290921b840181019181810190868411156200040657600080fd5b8286015b848110156200042357805183529183019183016200040a565b509695505050505050565b600080604083850312156200044257600080fd5b82516001600160401b03808211156200045a57600080fd5b818501915085601f8301126200046f57600080fd5b8151602062000482620003e08362000395565b82815260059290921b84018101918181019089841115620004a257600080fd5b948201945b83861015620004d95785516001600160a01b0381168114620004c95760008081fd5b82529482019490820190620004a7565b91880151919650909350505080821115620004f357600080fd5b506200050285828601620003bb565b9150509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156200054f576200054f62000522565b5060010190565b600082198211156200056c576200056c62000522565b500190565b610c6f80620005816000396000f3fe6080604052600436106100a05760003560e01c80639852595c116100645780639852595c146101d2578063a3f8eace14610208578063c45ac05014610228578063ce7c2ac214610248578063d79779b21461027e578063e33b7de3146102b457600080fd5b806319165587146100ee5780633a98ef3914610110578063406072a91461013457806348b750441461017a5780638b83209b1461019a57600080fd5b366100e9577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be77033604080516001600160a01b0390921682523460208301520160405180910390a1005b600080fd5b3480156100fa57600080fd5b5061010e6101093660046109e3565b6102c9565b005b34801561011c57600080fd5b506000545b6040519081526020015b60405180910390f35b34801561014057600080fd5b5061012161014f366004610a00565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561018657600080fd5b5061010e610195366004610a00565b6103c8565b3480156101a657600080fd5b506101ba6101b5366004610a39565b6104e8565b6040516001600160a01b03909116815260200161012b565b3480156101de57600080fd5b506101216101ed3660046109e3565b6001600160a01b031660009081526003602052604090205490565b34801561021457600080fd5b506101216102233660046109e3565b610518565b34801561023457600080fd5b50610121610243366004610a00565b610560565b34801561025457600080fd5b506101216102633660046109e3565b6001600160a01b031660009081526002602052604090205490565b34801561028a57600080fd5b506101216102993660046109e3565b6001600160a01b031660009081526005602052604090205490565b3480156102c057600080fd5b50600154610121565b6001600160a01b0381166000908152600260205260409020546103075760405162461bcd60e51b81526004016102fe90610a52565b60405180910390fd5b600061031282610518565b9050806103315760405162461bcd60e51b81526004016102fe90610a98565b6001600160a01b03821660009081526003602052604081208054839290610359908490610af9565b9250508190555080600160008282546103729190610af9565b909155506103829050828261063a565b604080516001600160a01b0384168152602081018390527fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b056910160405180910390a15050565b6001600160a01b0381166000908152600260205260409020546103fd5760405162461bcd60e51b81526004016102fe90610a52565b60006104098383610560565b9050806104285760405162461bcd60e51b81526004016102fe90610a98565b6001600160a01b0380841660009081526006602090815260408083209386168352929052908120805483929061045f908490610af9565b90915550506001600160a01b0383166000908152600560205260408120805483929061048c908490610af9565b9091555061049d9050838383610758565b604080516001600160a01b038481168252602082018490528516917f3be5b7a71e84ed12875d241991c70855ac5817d847039e17a9d895c1ceb0f18a910160405180910390a2505050565b6000600482815481106104fd576104fd610b11565b6000918252602090912001546001600160a01b031692915050565b60008061052460015490565b61052e9047610af9565b90506105598382610554866001600160a01b031660009081526003602052604090205490565b6107aa565b9392505050565b6001600160a01b03821660009081526005602052604081205481906040516370a0823160e01b81523060048201526001600160a01b038616906370a082319060240160206040518083038186803b1580156105ba57600080fd5b505afa1580156105ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f29190610b27565b6105fc9190610af9565b6001600160a01b0380861660009081526006602090815260408083209388168352929052205490915061063290849083906107aa565b949350505050565b8047101561068a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016102fe565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146106d7576040519150601f19603f3d011682016040523d82523d6000602084013e6106dc565b606091505b50509050806107535760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016102fe565b505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526107539084906107e5565b600080546001600160a01b0385168252600260205260408220548391906107d19086610b40565b6107db9190610b5f565b6106329190610b81565b600061083a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166108b79092919063ffffffff16565b80519091501561075357808060200190518101906108589190610b98565b6107535760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102fe565b60606106328484600085856001600160a01b0385163b6109195760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102fe565b600080866001600160a01b031685876040516109359190610bea565b60006040518083038185875af1925050503d8060008114610972576040519150601f19603f3d011682016040523d82523d6000602084013e610977565b606091505b5091509150610987828286610992565b979650505050505050565b606083156109a1575081610559565b8251156109b15782518084602001fd5b8160405162461bcd60e51b81526004016102fe9190610c06565b6001600160a01b03811681146109e057600080fd5b50565b6000602082840312156109f557600080fd5b8135610559816109cb565b60008060408385031215610a1357600080fd5b8235610a1e816109cb565b91506020830135610a2e816109cb565b809150509250929050565b600060208284031215610a4b57600080fd5b5035919050565b60208082526026908201527f5061796d656e7453706c69747465723a206163636f756e7420686173206e6f2060408201526573686172657360d01b606082015260800190565b6020808252602b908201527f5061796d656e7453706c69747465723a206163636f756e74206973206e6f742060408201526a191d59481c185e5b595b9d60aa1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115610b0c57610b0c610ae3565b500190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610b3957600080fd5b5051919050565b6000816000190483118215151615610b5a57610b5a610ae3565b500290565b600082610b7c57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015610b9357610b93610ae3565b500390565b600060208284031215610baa57600080fd5b8151801515811461055957600080fd5b60005b83811015610bd5578181015183820152602001610bbd565b83811115610be4576000848401525b50505050565b60008251610bfc818460208701610bba565b9190910192915050565b6020815260008251806020840152610c25816040850160208701610bba565b601f01601f1916919091016040019291505056fea2646970667358221220cf59afca0f8e649fbe17743ba4f9050bac27a9e528709aca4fc303dd4caafd6164736f6c63430008090033","deployedBytecode":"0x6080604052600436106100a05760003560e01c80639852595c116100645780639852595c146101d2578063a3f8eace14610208578063c45ac05014610228578063ce7c2ac214610248578063d79779b21461027e578063e33b7de3146102b457600080fd5b806319165587146100ee5780633a98ef3914610110578063406072a91461013457806348b750441461017a5780638b83209b1461019a57600080fd5b366100e9577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be77033604080516001600160a01b0390921682523460208301520160405180910390a1005b600080fd5b3480156100fa57600080fd5b5061010e6101093660046109e3565b6102c9565b005b34801561011c57600080fd5b506000545b6040519081526020015b60405180910390f35b34801561014057600080fd5b5061012161014f366004610a00565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561018657600080fd5b5061010e610195366004610a00565b6103c8565b3480156101a657600080fd5b506101ba6101b5366004610a39565b6104e8565b6040516001600160a01b03909116815260200161012b565b3480156101de57600080fd5b506101216101ed3660046109e3565b6001600160a01b031660009081526003602052604090205490565b34801561021457600080fd5b506101216102233660046109e3565b610518565b34801561023457600080fd5b50610121610243366004610a00565b610560565b34801561025457600080fd5b506101216102633660046109e3565b6001600160a01b031660009081526002602052604090205490565b34801561028a57600080fd5b506101216102993660046109e3565b6001600160a01b031660009081526005602052604090205490565b3480156102c057600080fd5b50600154610121565b6001600160a01b0381166000908152600260205260409020546103075760405162461bcd60e51b81526004016102fe90610a52565b60405180910390fd5b600061031282610518565b9050806103315760405162461bcd60e51b81526004016102fe90610a98565b6001600160a01b03821660009081526003602052604081208054839290610359908490610af9565b9250508190555080600160008282546103729190610af9565b909155506103829050828261063a565b604080516001600160a01b0384168152602081018390527fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b056910160405180910390a15050565b6001600160a01b0381166000908152600260205260409020546103fd5760405162461bcd60e51b81526004016102fe90610a52565b60006104098383610560565b9050806104285760405162461bcd60e51b81526004016102fe90610a98565b6001600160a01b0380841660009081526006602090815260408083209386168352929052908120805483929061045f908490610af9565b90915550506001600160a01b0383166000908152600560205260408120805483929061048c908490610af9565b9091555061049d9050838383610758565b604080516001600160a01b038481168252602082018490528516917f3be5b7a71e84ed12875d241991c70855ac5817d847039e17a9d895c1ceb0f18a910160405180910390a2505050565b6000600482815481106104fd576104fd610b11565b6000918252602090912001546001600160a01b031692915050565b60008061052460015490565b61052e9047610af9565b90506105598382610554866001600160a01b031660009081526003602052604090205490565b6107aa565b9392505050565b6001600160a01b03821660009081526005602052604081205481906040516370a0823160e01b81523060048201526001600160a01b038616906370a082319060240160206040518083038186803b1580156105ba57600080fd5b505afa1580156105ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f29190610b27565b6105fc9190610af9565b6001600160a01b0380861660009081526006602090815260408083209388168352929052205490915061063290849083906107aa565b949350505050565b8047101561068a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016102fe565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146106d7576040519150601f19603f3d011682016040523d82523d6000602084013e6106dc565b606091505b50509050806107535760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016102fe565b505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526107539084906107e5565b600080546001600160a01b0385168252600260205260408220548391906107d19086610b40565b6107db9190610b5f565b6106329190610b81565b600061083a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166108b79092919063ffffffff16565b80519091501561075357808060200190518101906108589190610b98565b6107535760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102fe565b60606106328484600085856001600160a01b0385163b6109195760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102fe565b600080866001600160a01b031685876040516109359190610bea565b60006040518083038185875af1925050503d8060008114610972576040519150601f19603f3d011682016040523d82523d6000602084013e610977565b606091505b5091509150610987828286610992565b979650505050505050565b606083156109a1575081610559565b8251156109b15782518084602001fd5b8160405162461bcd60e51b81526004016102fe9190610c06565b6001600160a01b03811681146109e057600080fd5b50565b6000602082840312156109f557600080fd5b8135610559816109cb565b60008060408385031215610a1357600080fd5b8235610a1e816109cb565b91506020830135610a2e816109cb565b809150509250929050565b600060208284031215610a4b57600080fd5b5035919050565b60208082526026908201527f5061796d656e7453706c69747465723a206163636f756e7420686173206e6f2060408201526573686172657360d01b606082015260800190565b6020808252602b908201527f5061796d656e7453706c69747465723a206163636f756e74206973206e6f742060408201526a191d59481c185e5b595b9d60aa1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115610b0c57610b0c610ae3565b500190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610b3957600080fd5b5051919050565b6000816000190483118215151615610b5a57610b5a610ae3565b500290565b600082610b7c57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015610b9357610b93610ae3565b500390565b600060208284031215610baa57600080fd5b8151801515811461055957600080fd5b60005b83811015610bd5578181015183820152602001610bbd565b83811115610be4576000848401525b50505050565b60008251610bfc818460208701610bba565b9190910192915050565b6020815260008251806020840152610c25816040850160208701610bba565b601f01601f1916919091016040019291505056fea2646970667358221220cf59afca0f8e649fbe17743ba4f9050bac27a9e528709aca4fc303dd4caafd6164736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/finance/VestingWallet":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"VestingWallet","sourceName":"contracts/finance/VestingWallet.sol","abi":[{"inputs":[{"internalType":"address","name":"beneficiaryAddress","type":"address"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"},{"internalType":"uint64","name":"durationSeconds","type":"uint64"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ERC20Released","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EtherReleased","type":"event"},{"inputs":[],"name":"beneficiary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"duration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"start","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"timestamp","type":"uint64"}],"name":"vestedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint64","name":"timestamp","type":"uint64"}],"name":"vestedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x60e060405234801561001057600080fd5b50604051610c80380380610c8083398101604081905261002f916100dd565b6001600160a01b03831661009c5760405162461bcd60e51b815260206004820152602a60248201527f56657374696e6757616c6c65743a2062656e6566696369617279206973207a65604482015269726f206164647265737360b01b606482015260840160405180910390fd5b6001600160a01b039092166080526001600160401b0390811660a0521660c05261012e565b80516001600160401b03811681146100d857600080fd5b919050565b6000806000606084860312156100f257600080fd5b83516001600160a01b038116811461010957600080fd5b9250610117602085016100c1565b9150610125604085016100c1565b90509250925092565b60805160a05160c051610b086101786000396000818160d80152818161047801526104cd01526000610430015260008181610142015281816102c801526103fd0152610b086000f3fe60806040526004361061008a5760003560e01c8063810ec23b11610059578063810ec23b1461016c57806386d1a69f1461018c57806396132521146101a15780639852595c146101b6578063be9a6555146101ec57600080fd5b80630a17b06b146100965780630fb5a6b4146100c9578063191655871461010657806338af3eed1461012857600080fd5b3661009157005b600080fd5b3480156100a257600080fd5b506100b66100b1366004610912565b610201565b6040519081526020015b60405180910390f35b3480156100d557600080fd5b507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166100b6565b34801561011257600080fd5b50610126610121366004610944565b610225565b005b34801561013457600080fd5b506040516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681526020016100c0565b34801561017857600080fd5b506100b661018736600461095f565b6102f1565b34801561019857600080fd5b50610126610396565b3480156101ad57600080fd5b506000546100b6565b3480156101c257600080fd5b506100b66101d1366004610944565b6001600160a01b031660009081526001602052604090205490565b3480156101f857600080fd5b506100b6610425565b600061021f61020f60005490565b61021990476109a8565b83610453565b92915050565b6001600160a01b03811660009081526001602052604081205461024883426102f1565b61025291906109c0565b6001600160a01b03831660009081526001602052604081208054929350839290919061027f9084906109a8565b90915550506040518181526001600160a01b038316907fc0e523490dd523c33b1878c9eb14ff46991e3f5b2cd33710918618f2a39cba1b9060200160405180910390a26102ed827f00000000000000000000000000000000000000000000000000000000000000008361052d565b5050565b6001600160a01b03821660009081526001602052604081205461038f906040516370a0823160e01b81523060048201526001600160a01b038616906370a082319060240160206040518083038186803b15801561034d57600080fd5b505afa158015610361573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038591906109d7565b61021991906109a8565b9392505050565b600080546103a342610201565b6103ad91906109c0565b9050806000808282546103c091906109a8565b90915550506040518181527fda9d4e5f101b8b9b1c5b76d0c5a9f7923571acfc02376aa076b75a8c080c956b9060200160405180910390a16104227f000000000000000000000000000000000000000000000000000000000000000082610584565b50565b67ffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690565b600061045d610425565b8267ffffffffffffffff1610156104765750600061021f565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166104a9610425565b6104b391906109a8565b8267ffffffffffffffff1611156104cb57508161021f565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166104fe610425565b6105129067ffffffffffffffff85166109c0565b61051c90856109f0565b6105269190610a0f565b905061021f565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261057f9084906106a2565b505050565b804710156105d95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064015b60405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610626576040519150601f19603f3d011682016040523d82523d6000602084013e61062b565b606091505b505090508061057f5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016105d0565b60006106f7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166107749092919063ffffffff16565b80519091501561057f57808060200190518101906107159190610a31565b61057f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105d0565b6060610783848460008561078b565b949350505050565b6060824710156107ec5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105d0565b6001600160a01b0385163b6108435760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105d0565b600080866001600160a01b0316858760405161085f9190610a83565b60006040518083038185875af1925050503d806000811461089c576040519150601f19603f3d011682016040523d82523d6000602084013e6108a1565b606091505b50915091506108b18282866108bc565b979650505050505050565b606083156108cb57508161038f565b8251156108db5782518084602001fd5b8160405162461bcd60e51b81526004016105d09190610a9f565b803567ffffffffffffffff8116811461090d57600080fd5b919050565b60006020828403121561092457600080fd5b61038f826108f5565b80356001600160a01b038116811461090d57600080fd5b60006020828403121561095657600080fd5b61038f8261092d565b6000806040838503121561097257600080fd5b61097b8361092d565b9150610989602084016108f5565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600082198211156109bb576109bb610992565b500190565b6000828210156109d2576109d2610992565b500390565b6000602082840312156109e957600080fd5b5051919050565b6000816000190483118215151615610a0a57610a0a610992565b500290565b600082610a2c57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215610a4357600080fd5b8151801515811461038f57600080fd5b60005b83811015610a6e578181015183820152602001610a56565b83811115610a7d576000848401525b50505050565b60008251610a95818460208701610a53565b9190910192915050565b6020815260008251806020840152610abe816040850160208701610a53565b601f01601f1916919091016040019291505056fea26469706673582212207e34db421ed46cfdfe338874d49b916829ef192db0d987f18967ebdc0494b3c964736f6c63430008090033","deployedBytecode":"0x60806040526004361061008a5760003560e01c8063810ec23b11610059578063810ec23b1461016c57806386d1a69f1461018c57806396132521146101a15780639852595c146101b6578063be9a6555146101ec57600080fd5b80630a17b06b146100965780630fb5a6b4146100c9578063191655871461010657806338af3eed1461012857600080fd5b3661009157005b600080fd5b3480156100a257600080fd5b506100b66100b1366004610912565b610201565b6040519081526020015b60405180910390f35b3480156100d557600080fd5b507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166100b6565b34801561011257600080fd5b50610126610121366004610944565b610225565b005b34801561013457600080fd5b506040516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681526020016100c0565b34801561017857600080fd5b506100b661018736600461095f565b6102f1565b34801561019857600080fd5b50610126610396565b3480156101ad57600080fd5b506000546100b6565b3480156101c257600080fd5b506100b66101d1366004610944565b6001600160a01b031660009081526001602052604090205490565b3480156101f857600080fd5b506100b6610425565b600061021f61020f60005490565b61021990476109a8565b83610453565b92915050565b6001600160a01b03811660009081526001602052604081205461024883426102f1565b61025291906109c0565b6001600160a01b03831660009081526001602052604081208054929350839290919061027f9084906109a8565b90915550506040518181526001600160a01b038316907fc0e523490dd523c33b1878c9eb14ff46991e3f5b2cd33710918618f2a39cba1b9060200160405180910390a26102ed827f00000000000000000000000000000000000000000000000000000000000000008361052d565b5050565b6001600160a01b03821660009081526001602052604081205461038f906040516370a0823160e01b81523060048201526001600160a01b038616906370a082319060240160206040518083038186803b15801561034d57600080fd5b505afa158015610361573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038591906109d7565b61021991906109a8565b9392505050565b600080546103a342610201565b6103ad91906109c0565b9050806000808282546103c091906109a8565b90915550506040518181527fda9d4e5f101b8b9b1c5b76d0c5a9f7923571acfc02376aa076b75a8c080c956b9060200160405180910390a16104227f000000000000000000000000000000000000000000000000000000000000000082610584565b50565b67ffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690565b600061045d610425565b8267ffffffffffffffff1610156104765750600061021f565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166104a9610425565b6104b391906109a8565b8267ffffffffffffffff1611156104cb57508161021f565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166104fe610425565b6105129067ffffffffffffffff85166109c0565b61051c90856109f0565b6105269190610a0f565b905061021f565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261057f9084906106a2565b505050565b804710156105d95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064015b60405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610626576040519150601f19603f3d011682016040523d82523d6000602084013e61062b565b606091505b505090508061057f5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016105d0565b60006106f7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166107749092919063ffffffff16565b80519091501561057f57808060200190518101906107159190610a31565b61057f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105d0565b6060610783848460008561078b565b949350505050565b6060824710156107ec5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105d0565b6001600160a01b0385163b6108435760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105d0565b600080866001600160a01b0316858760405161085f9190610a83565b60006040518083038185875af1925050503d806000811461089c576040519150601f19603f3d011682016040523d82523d6000602084013e6108a1565b606091505b50915091506108b18282866108bc565b979650505050505050565b606083156108cb57508161038f565b8251156108db5782518084602001fd5b8160405162461bcd60e51b81526004016105d09190610a9f565b803567ffffffffffffffff8116811461090d57600080fd5b919050565b60006020828403121561092457600080fd5b61038f826108f5565b80356001600160a01b038116811461090d57600080fd5b60006020828403121561095657600080fd5b61038f8261092d565b6000806040838503121561097257600080fd5b61097b8361092d565b9150610989602084016108f5565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600082198211156109bb576109bb610992565b500190565b6000828210156109d2576109d2610992565b500390565b6000602082840312156109e957600080fd5b5051919050565b6000816000190483118215151615610a0a57610a0a610992565b500290565b600082610a2c57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215610a4357600080fd5b8151801515811461038f57600080fd5b60005b83811015610a6e578181015183820152602001610a56565b83811115610a7d576000848401525b50505050565b60008251610a95818460208701610a53565b9190910192915050565b6020815260008251806020840152610abe816040850160208701610a53565b601f01601f1916919091016040019291505056fea26469706673582212207e34db421ed46cfdfe338874d49b916829ef192db0d987f18967ebdc0494b3c964736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/compatibility/GovernorCompatibilityBravo":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorCompatibilityBravo","sourceName":"contracts/governance/compatibility/GovernorCompatibilityBravo.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ProposalQueued","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"getActions","outputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"voter","type":"address"}],"name":"getReceipt","outputs":[{"components":[{"internalType":"bool","name":"hasVoted","type":"bool"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint96","name":"votes","type":"uint96"}],"internalType":"struct IGovernorCompatibilityBravo.Receipt","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalEta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint256","name":"eta","type":"uint256"},{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"uint256","name":"endBlock","type":"uint256"},{"internalType":"uint256","name":"forVotes","type":"uint256"},{"internalType":"uint256","name":"againstVotes","type":"uint256"},{"internalType":"uint256","name":"abstainVotes","type":"uint256"},{"internalType":"bool","name":"canceled","type":"bool"},{"internalType":"bool","name":"executed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"queue","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"queue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quorumVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"timelock","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/compatibility/IGovernorCompatibilityBravo":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IGovernorCompatibilityBravo","sourceName":"contracts/governance/compatibility/IGovernorCompatibilityBravo.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"getActions","outputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"voter","type":"address"}],"name":"getReceipt","outputs":[{"components":[{"internalType":"bool","name":"hasVoted","type":"bool"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint96","name":"votes","type":"uint96"}],"internalType":"struct IGovernorCompatibilityBravo.Receipt","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint256","name":"eta","type":"uint256"},{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"uint256","name":"endBlock","type":"uint256"},{"internalType":"uint256","name":"forVotes","type":"uint256"},{"internalType":"uint256","name":"againstVotes","type":"uint256"},{"internalType":"uint256","name":"abstainVotes","type":"uint256"},{"internalType":"bool","name":"canceled","type":"bool"},{"internalType":"bool","name":"executed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"queue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quorumVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorCountingSimple":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorCountingSimple","sourceName":"contracts/governance/extensions/GovernorCountingSimple.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalVotes","outputs":[{"internalType":"uint256","name":"againstVotes","type":"uint256"},{"internalType":"uint256","name":"forVotes","type":"uint256"},{"internalType":"uint256","name":"abstainVotes","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorPreventLateQuorum":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorPreventLateQuorum","sourceName":"contracts/governance/extensions/GovernorPreventLateQuorum.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"oldVoteExtension","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"newVoteExtension","type":"uint64"}],"name":"LateQuorumVoteExtensionSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint64","name":"extendedDeadline","type":"uint64"}],"name":"ProposalExtended","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"lateQuorumVoteExtension","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newVoteExtension","type":"uint64"}],"name":"setLateQuorumVoteExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorProposalThreshold":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorProposalThreshold","sourceName":"contracts/governance/extensions/GovernorProposalThreshold.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorSettings":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorSettings","sourceName":"contracts/governance/extensions/GovernorSettings.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldProposalThreshold","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newProposalThreshold","type":"uint256"}],"name":"ProposalThresholdSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldVotingDelay","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newVotingDelay","type":"uint256"}],"name":"VotingDelaySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldVotingPeriod","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newVotingPeriod","type":"uint256"}],"name":"VotingPeriodSet","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newProposalThreshold","type":"uint256"}],"name":"setProposalThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVotingDelay","type":"uint256"}],"name":"setVotingDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVotingPeriod","type":"uint256"}],"name":"setVotingPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorTimelockCompound":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorTimelockCompound","sourceName":"contracts/governance/extensions/GovernorTimelockCompound.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ProposalQueued","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldTimelock","type":"address"},{"indexed":false,"internalType":"address","name":"newTimelock","type":"address"}],"name":"TimelockChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"__acceptAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalEta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"queue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"timelock","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ICompoundTimelock","name":"newTimelock","type":"address"}],"name":"updateTimelock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorTimelockControl":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorTimelockControl","sourceName":"contracts/governance/extensions/GovernorTimelockControl.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ProposalQueued","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldTimelock","type":"address"},{"indexed":false,"internalType":"address","name":"newTimelock","type":"address"}],"name":"TimelockChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalEta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"queue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"timelock","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract TimelockController","name":"newTimelock","type":"address"}],"name":"updateTimelock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorVotes":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorVotes","sourceName":"contracts/governance/extensions/GovernorVotes.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"token","outputs":[{"internalType":"contract IVotes","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorVotesComp":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorVotesComp","sourceName":"contracts/governance/extensions/GovernorVotesComp.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"token","outputs":[{"internalType":"contract ERC20VotesComp","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/GovernorVotesQuorumFraction":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"GovernorVotesQuorumFraction","sourceName":"contracts/governance/extensions/GovernorVotesQuorumFraction.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldQuorumNumerator","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newQuorumNumerator","type":"uint256"}],"name":"QuorumNumeratorUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quorumDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorumNumerator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quorumNumerator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"token","outputs":[{"internalType":"contract IVotes","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newQuorumNumerator","type":"uint256"}],"name":"updateQuorumNumerator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/extensions/IGovernorTimelock":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IGovernorTimelock","sourceName":"contracts/governance/extensions/IGovernorTimelock.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ProposalQueued","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalEta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"queue","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"timelock","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/Governor":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Governor","sourceName":"contracts/governance/Governor.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"EXTENDED_BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"relay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/IGovernor":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IGovernor","sourceName":"contracts/governance/IGovernor.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"},{"indexed":false,"internalType":"bytes","name":"params","type":"bytes"}],"name":"VoteCastWithParams","type":"event"},{"inputs":[],"name":"COUNTING_MODE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"}],"name":"castVote","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"}],"name":"castVoteWithReason","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"castVoteWithReasonAndParams","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint8","name":"support","type":"uint8"},{"internalType":"string","name":"reason","type":"string"},{"internalType":"bytes","name":"params","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteWithReasonAndParamsBySig","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"execute","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"getVotesWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"}],"name":"hashProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"proposalSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum IGovernor.ProposalState","name":"","type":"uint8"}],"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":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/TimelockController":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"TimelockController","sourceName":"contracts/governance/TimelockController.sol","abi":[{"inputs":[{"internalType":"uint256","name":"minDelay","type":"uint256"},{"internalType":"address[]","name":"proposers","type":"address[]"},{"internalType":"address[]","name":"executors","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"CallExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"delay","type":"uint256"}],"name":"CallScheduled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"Cancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldDuration","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newDuration","type":"uint256"}],"name":"MinDelayChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"CANCELLER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EXECUTOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROPOSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TIMELOCK_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"payloads","type":"bytes[]"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"executeBatch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getMinDelay","outputs":[{"internalType":"uint256","name":"duration","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"getTimestamp","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"hashOperation","outputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"payloads","type":"bytes[]"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"hashOperationBatch","outputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"isOperation","outputs":[{"internalType":"bool","name":"registered","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"isOperationDone","outputs":[{"internalType":"bool","name":"done","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"isOperationPending","outputs":[{"internalType":"bool","name":"pending","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"isOperationReady","outputs":[{"internalType":"bool","name":"ready","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"delay","type":"uint256"}],"name":"schedule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"payloads","type":"bytes[]"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"delay","type":"uint256"}],"name":"scheduleBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newDelay","type":"uint256"}],"name":"updateDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x60806040523480156200001157600080fd5b50604051620022fb380380620022fb8339810160408190526200003491620003f7565b6200004f6000805160206200227b833981519152806200021c565b620000796000805160206200229b8339815191526000805160206200227b8339815191526200021c565b620000a3600080516020620022bb8339815191526000805160206200227b8339815191526200021c565b620000cd600080516020620022db8339815191526000805160206200227b8339815191526200021c565b620000e86000805160206200227b8339815191523362000267565b620001036000805160206200227b8339815191523062000267565b60005b825181101562000189576200014d6000805160206200229b8339815191528483815181106200013957620001396200046b565b60200260200101516200026760201b60201c565b62000176600080516020620022db8339815191528483815181106200013957620001396200046b565b620001818162000481565b905062000106565b5060005b8151811015620001d357620001c0600080516020620022bb8339815191528383815181106200013957620001396200046b565b620001cb8162000481565b90506200018d565b5060028390556040805160008152602081018590527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1505050620004ab565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b62000273828262000277565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000273576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620002d33390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200034557600080fd5b919050565b600082601f8301126200035c57600080fd5b815160206001600160401b03808311156200037b576200037b62000317565b8260051b604051601f19603f83011681018181108482111715620003a357620003a362000317565b604052938452858101830193838101925087851115620003c257600080fd5b83870191505b84821015620003ec57620003dc826200032d565b83529183019190830190620003c8565b979650505050505050565b6000806000606084860312156200040d57600080fd5b835160208501519093506001600160401b03808211156200042d57600080fd5b6200043b878388016200034a565b935060408601519150808211156200045257600080fd5b5062000461868287016200034a565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b6000600019821415620004a457634e487b7160e01b600052601160045260246000fd5b5060010190565b611dc080620004bb6000396000f3fe6080604052600436106101bb5760003560e01c80638065657f116100ec578063bc197c811161008a578063d547741f11610064578063d547741f14610582578063e38335e5146105a2578063f23a6e61146105b5578063f27a0c92146105e157600080fd5b8063bc197c8114610509578063c4d252f514610535578063d45c44351461055557600080fd5b806391d14854116100c657806391d1485414610480578063a217fddf146104a0578063b08e51c0146104b5578063b1c5f427146104e957600080fd5b80638065657f1461040c5780638f2a0bb01461042c5780638f61f4f51461044c57600080fd5b8063248a9ca31161015957806331d507501161013357806331d507501461038c57806336568abe146103ac578063584b153e146103cc57806364d62353146103ec57600080fd5b8063248a9ca31461030b5780632ab0f5291461033b5780632f2ff15d1461036c57600080fd5b80630d3cf6fc116101955780630d3cf6fc14610260578063134008d31461029457806313bc9f20146102a7578063150b7a02146102c757600080fd5b806301d5062a146101c757806301ffc9a7146101e957806307bd02651461021e57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101e76101e23660046113b9565b6105f6565b005b3480156101f557600080fd5b5061020961020436600461142d565b61068b565b60405190151581526020015b60405180910390f35b34801561022a57600080fd5b506102527fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610215565b34801561026c57600080fd5b506102527f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b6101e76102a2366004611457565b6106b6565b3480156102b357600080fd5b506102096102c23660046114c2565b61076b565b3480156102d357600080fd5b506102f26102e2366004611590565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610215565b34801561031757600080fd5b506102526103263660046114c2565b60009081526020819052604090206001015490565b34801561034757600080fd5b506102096103563660046114c2565b6000908152600160208190526040909120541490565b34801561037857600080fd5b506101e76103873660046115f7565b610791565b34801561039857600080fd5b506102096103a73660046114c2565b6107bb565b3480156103b857600080fd5b506101e76103c73660046115f7565b6107d4565b3480156103d857600080fd5b506102096103e73660046114c2565b610857565b3480156103f857600080fd5b506101e76104073660046114c2565b61086d565b34801561041857600080fd5b50610252610427366004611457565b610911565b34801561043857600080fd5b506101e7610447366004611667565b610950565b34801561045857600080fd5b506102527fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b34801561048c57600080fd5b5061020961049b3660046115f7565b610aa2565b3480156104ac57600080fd5b50610252600081565b3480156104c157600080fd5b506102527ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104f557600080fd5b50610252610504366004611718565b610acb565b34801561051557600080fd5b506102f261052436600461183f565b63bc197c8160e01b95945050505050565b34801561054157600080fd5b506101e76105503660046114c2565b610b10565b34801561056157600080fd5b506102526105703660046114c2565b60009081526001602052604090205490565b34801561058e57600080fd5b506101e761059d3660046115f7565b610be5565b6101e76105b0366004611718565b610c0a565b3480156105c157600080fd5b506102f26105d03660046118e8565b63f23a6e6160e01b95945050505050565b3480156105ed57600080fd5b50600254610252565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161062081610d94565b6000610630898989898989610911565b905061063c8184610da1565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a60405161067896959493929190611975565b60405180910390a3505050505050505050565b60006001600160e01b03198216630271189760e51b14806106b057506106b082610e90565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636106e2816000610aa2565b6106f0576106f08133610ec5565b6000610700888888888888610911565b905061070c8185610f29565b61071888888888610fc5565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161075094939291906119b2565b60405180910390a361076181611098565b5050505050505050565b60008181526001602052604081205460018111801561078a5750428111155b9392505050565b6000828152602081905260409020600101546107ac81610d94565b6107b683836110d1565b505050565b60008181526001602052604081205481905b1192915050565b6001600160a01b03811633146108495760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6108538282611155565b5050565b60008181526001602081905260408220546107cd565b3330146108d05760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b6064820152608401610840565b60025460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1600255565b600086868686868660405160200161092e96959493929190611975565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161097a81610d94565b8887146109995760405162461bcd60e51b8152600401610840906119e4565b8885146109b85760405162461bcd60e51b8152600401610840906119e4565b60006109ca8b8b8b8b8b8b8b8b610acb565b90506109d68184610da1565b60005b8a811015610a945780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a1657610a16611a27565b9050602002016020810190610a2b9190611a3d565b8d8d86818110610a3d57610a3d611a27565b905060200201358c8c87818110610a5657610a56611a27565b9050602002810190610a689190611a58565b8c8b604051610a7c96959493929190611975565b60405180910390a3610a8d81611ab4565b90506109d9565b505050505050505050505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60008888888888888888604051602001610aec989796959493929190611b5f565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610b3a81610d94565b610b4382610857565b610ba95760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b6064820152608401610840565b6000828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260208190526040902060010154610c0081610d94565b6107b68383611155565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610c36816000610aa2565b610c4457610c448133610ec5565b878614610c635760405162461bcd60e51b8152600401610840906119e4565b878414610c825760405162461bcd60e51b8152600401610840906119e4565b6000610c948a8a8a8a8a8a8a8a610acb565b9050610ca08185610f29565b60005b89811015610d7e5760008b8b83818110610cbf57610cbf611a27565b9050602002016020810190610cd49190611a3d565b905060008a8a84818110610cea57610cea611a27565b9050602002013590503660008a8a86818110610d0857610d08611a27565b9050602002810190610d1a9190611a58565b91509150610d2a84848484610fc5565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610d6194939291906119b2565b60405180910390a35050505080610d7790611ab4565b9050610ca3565b50610d8881611098565b50505050505050505050565b610d9e8133610ec5565b50565b610daa826107bb565b15610e0f5760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b6064820152608401610840565b600254811015610e705760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b6064820152608401610840565b610e7a8142611c0a565b6000928352600160205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b14806106b057506301ffc9a760e01b6001600160e01b03198316146106b0565b610ecf8282610aa2565b61085357610ee7816001600160a01b031660146111ba565b610ef28360206111ba565b604051602001610f03929190611c52565b60408051601f198184030181529082905262461bcd60e51b825261084091600401611cc7565b610f328261076b565b610f4e5760405162461bcd60e51b815260040161084090611cfa565b801580610f6a5750600081815260016020819052604090912054145b6108535760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b6064820152608401610840565b6000846001600160a01b0316848484604051610fe2929190611d44565b60006040518083038185875af1925050503d806000811461101f576040519150601f19603f3d011682016040523d82523d6000602084013e611024565b606091505b50509050806110915760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b6064820152608401610840565b5050505050565b6110a18161076b565b6110bd5760405162461bcd60e51b815260040161084090611cfa565b600090815260016020819052604090912055565b6110db8282610aa2565b610853576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556111113390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61115f8282610aa2565b15610853576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b606060006111c9836002611d54565b6111d4906002611c0a565b6001600160401b038111156111eb576111eb6114db565b6040519080825280601f01601f191660200182016040528015611215576020820181803683370190505b509050600360fc1b8160008151811061123057611230611a27565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061125f5761125f611a27565b60200101906001600160f81b031916908160001a9053506000611283846002611d54565b61128e906001611c0a565b90505b6001811115611306576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106112c2576112c2611a27565b1a60f81b8282815181106112d8576112d8611a27565b60200101906001600160f81b031916908160001a90535060049490941c936112ff81611d73565b9050611291565b50831561078a5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610840565b80356001600160a01b038116811461136c57600080fd5b919050565b60008083601f84011261138357600080fd5b5081356001600160401b0381111561139a57600080fd5b6020830191508360208285010111156113b257600080fd5b9250929050565b600080600080600080600060c0888a0312156113d457600080fd5b6113dd88611355565b96506020880135955060408801356001600160401b038111156113ff57600080fd5b61140b8a828b01611371565b989b979a50986060810135976080820135975060a09091013595509350505050565b60006020828403121561143f57600080fd5b81356001600160e01b03198116811461078a57600080fd5b60008060008060008060a0878903121561147057600080fd5b61147987611355565b95506020870135945060408701356001600160401b0381111561149b57600080fd5b6114a789828a01611371565b979a9699509760608101359660809091013595509350505050565b6000602082840312156114d457600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611519576115196114db565b604052919050565b600082601f83011261153257600080fd5b81356001600160401b0381111561154b5761154b6114db565b61155e601f8201601f19166020016114f1565b81815284602083860101111561157357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156115a657600080fd5b6115af85611355565b93506115bd60208601611355565b92506040850135915060608501356001600160401b038111156115df57600080fd5b6115eb87828801611521565b91505092959194509250565b6000806040838503121561160a57600080fd5b8235915061161a60208401611355565b90509250929050565b60008083601f84011261163557600080fd5b5081356001600160401b0381111561164c57600080fd5b6020830191508360208260051b85010111156113b257600080fd5b600080600080600080600080600060c08a8c03121561168557600080fd5b89356001600160401b038082111561169c57600080fd5b6116a88d838e01611623565b909b50995060208c01359150808211156116c157600080fd5b6116cd8d838e01611623565b909950975060408c01359150808211156116e657600080fd5b506116f38c828d01611623565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060008060008060a0898b03121561173457600080fd5b88356001600160401b038082111561174b57600080fd5b6117578c838d01611623565b909a50985060208b013591508082111561177057600080fd5b61177c8c838d01611623565b909850965060408b013591508082111561179557600080fd5b506117a28b828c01611623565b999c989b509699959896976060870135966080013595509350505050565b600082601f8301126117d157600080fd5b813560206001600160401b038211156117ec576117ec6114db565b8160051b6117fb8282016114f1565b928352848101820192828101908785111561181557600080fd5b83870192505b848310156118345782358252918301919083019061181b565b979650505050505050565b600080600080600060a0868803121561185757600080fd5b61186086611355565b945061186e60208701611355565b935060408601356001600160401b038082111561188a57600080fd5b61189689838a016117c0565b945060608801359150808211156118ac57600080fd5b6118b889838a016117c0565b935060808801359150808211156118ce57600080fd5b506118db88828901611521565b9150509295509295909350565b600080600080600060a0868803121561190057600080fd5b61190986611355565b945061191760208701611355565b9350604086013592506060860135915060808601356001600160401b0381111561194057600080fd5b6118db88828901611521565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a06040820152600061199d60a08301868861194c565b60608301949094525060800152949350505050565b60018060a01b03851681528360208201526060604082015260006119da60608301848661194c565b9695505050505050565b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a4f57600080fd5b61078a82611355565b6000808335601e19843603018112611a6f57600080fd5b8301803591506001600160401b03821115611a8957600080fd5b6020019150368190038213156113b257600080fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611ac857611ac8611a9e565b5060010190565b81835260006020808501808196508560051b810191508460005b87811015611b525782840389528135601e19883603018112611b0a57600080fd5b870180356001600160401b03811115611b2257600080fd5b803603891315611b3157600080fd5b611b3e868289850161194c565b9a87019a9550505090840190600101611ae9565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b811015611ba0576001600160a01b03611b8b84611355565b16825260209283019290910190600101611b72565b5083810360208501528881526001600160fb1b03891115611bc057600080fd5b8860051b9150818a602083013781810191505060208101600081526020848303016040850152611bf181888a611acf565b6060850196909652505050608001529695505050505050565b60008219821115611c1d57611c1d611a9e565b500190565b60005b83811015611c3d578181015183820152602001611c25565b83811115611c4c576000848401525b50505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611c8a816017850160208801611c22565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611cbb816028840160208801611c22565b01602801949350505050565b6020815260008251806020840152611ce6816040850160208701611c22565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b6000816000190483118215151615611d6e57611d6e611a9e565b500290565b600081611d8257611d82611a9e565b50600019019056fea264697066735822122023b625a84dcb4b4c5ff2a17e50ba1c1d3d259599aad6471dfd37918d4800174364736f6c634300080900335f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5b09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63fd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783","deployedBytecode":"0x6080604052600436106101bb5760003560e01c80638065657f116100ec578063bc197c811161008a578063d547741f11610064578063d547741f14610582578063e38335e5146105a2578063f23a6e61146105b5578063f27a0c92146105e157600080fd5b8063bc197c8114610509578063c4d252f514610535578063d45c44351461055557600080fd5b806391d14854116100c657806391d1485414610480578063a217fddf146104a0578063b08e51c0146104b5578063b1c5f427146104e957600080fd5b80638065657f1461040c5780638f2a0bb01461042c5780638f61f4f51461044c57600080fd5b8063248a9ca31161015957806331d507501161013357806331d507501461038c57806336568abe146103ac578063584b153e146103cc57806364d62353146103ec57600080fd5b8063248a9ca31461030b5780632ab0f5291461033b5780632f2ff15d1461036c57600080fd5b80630d3cf6fc116101955780630d3cf6fc14610260578063134008d31461029457806313bc9f20146102a7578063150b7a02146102c757600080fd5b806301d5062a146101c757806301ffc9a7146101e957806307bd02651461021e57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101e76101e23660046113b9565b6105f6565b005b3480156101f557600080fd5b5061020961020436600461142d565b61068b565b60405190151581526020015b60405180910390f35b34801561022a57600080fd5b506102527fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610215565b34801561026c57600080fd5b506102527f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b6101e76102a2366004611457565b6106b6565b3480156102b357600080fd5b506102096102c23660046114c2565b61076b565b3480156102d357600080fd5b506102f26102e2366004611590565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610215565b34801561031757600080fd5b506102526103263660046114c2565b60009081526020819052604090206001015490565b34801561034757600080fd5b506102096103563660046114c2565b6000908152600160208190526040909120541490565b34801561037857600080fd5b506101e76103873660046115f7565b610791565b34801561039857600080fd5b506102096103a73660046114c2565b6107bb565b3480156103b857600080fd5b506101e76103c73660046115f7565b6107d4565b3480156103d857600080fd5b506102096103e73660046114c2565b610857565b3480156103f857600080fd5b506101e76104073660046114c2565b61086d565b34801561041857600080fd5b50610252610427366004611457565b610911565b34801561043857600080fd5b506101e7610447366004611667565b610950565b34801561045857600080fd5b506102527fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b34801561048c57600080fd5b5061020961049b3660046115f7565b610aa2565b3480156104ac57600080fd5b50610252600081565b3480156104c157600080fd5b506102527ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104f557600080fd5b50610252610504366004611718565b610acb565b34801561051557600080fd5b506102f261052436600461183f565b63bc197c8160e01b95945050505050565b34801561054157600080fd5b506101e76105503660046114c2565b610b10565b34801561056157600080fd5b506102526105703660046114c2565b60009081526001602052604090205490565b34801561058e57600080fd5b506101e761059d3660046115f7565b610be5565b6101e76105b0366004611718565b610c0a565b3480156105c157600080fd5b506102f26105d03660046118e8565b63f23a6e6160e01b95945050505050565b3480156105ed57600080fd5b50600254610252565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161062081610d94565b6000610630898989898989610911565b905061063c8184610da1565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a60405161067896959493929190611975565b60405180910390a3505050505050505050565b60006001600160e01b03198216630271189760e51b14806106b057506106b082610e90565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636106e2816000610aa2565b6106f0576106f08133610ec5565b6000610700888888888888610911565b905061070c8185610f29565b61071888888888610fc5565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161075094939291906119b2565b60405180910390a361076181611098565b5050505050505050565b60008181526001602052604081205460018111801561078a5750428111155b9392505050565b6000828152602081905260409020600101546107ac81610d94565b6107b683836110d1565b505050565b60008181526001602052604081205481905b1192915050565b6001600160a01b03811633146108495760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6108538282611155565b5050565b60008181526001602081905260408220546107cd565b3330146108d05760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b6064820152608401610840565b60025460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1600255565b600086868686868660405160200161092e96959493929190611975565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161097a81610d94565b8887146109995760405162461bcd60e51b8152600401610840906119e4565b8885146109b85760405162461bcd60e51b8152600401610840906119e4565b60006109ca8b8b8b8b8b8b8b8b610acb565b90506109d68184610da1565b60005b8a811015610a945780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a1657610a16611a27565b9050602002016020810190610a2b9190611a3d565b8d8d86818110610a3d57610a3d611a27565b905060200201358c8c87818110610a5657610a56611a27565b9050602002810190610a689190611a58565b8c8b604051610a7c96959493929190611975565b60405180910390a3610a8d81611ab4565b90506109d9565b505050505050505050505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60008888888888888888604051602001610aec989796959493929190611b5f565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610b3a81610d94565b610b4382610857565b610ba95760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b6064820152608401610840565b6000828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260208190526040902060010154610c0081610d94565b6107b68383611155565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610c36816000610aa2565b610c4457610c448133610ec5565b878614610c635760405162461bcd60e51b8152600401610840906119e4565b878414610c825760405162461bcd60e51b8152600401610840906119e4565b6000610c948a8a8a8a8a8a8a8a610acb565b9050610ca08185610f29565b60005b89811015610d7e5760008b8b83818110610cbf57610cbf611a27565b9050602002016020810190610cd49190611a3d565b905060008a8a84818110610cea57610cea611a27565b9050602002013590503660008a8a86818110610d0857610d08611a27565b9050602002810190610d1a9190611a58565b91509150610d2a84848484610fc5565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610d6194939291906119b2565b60405180910390a35050505080610d7790611ab4565b9050610ca3565b50610d8881611098565b50505050505050505050565b610d9e8133610ec5565b50565b610daa826107bb565b15610e0f5760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b6064820152608401610840565b600254811015610e705760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b6064820152608401610840565b610e7a8142611c0a565b6000928352600160205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b14806106b057506301ffc9a760e01b6001600160e01b03198316146106b0565b610ecf8282610aa2565b61085357610ee7816001600160a01b031660146111ba565b610ef28360206111ba565b604051602001610f03929190611c52565b60408051601f198184030181529082905262461bcd60e51b825261084091600401611cc7565b610f328261076b565b610f4e5760405162461bcd60e51b815260040161084090611cfa565b801580610f6a5750600081815260016020819052604090912054145b6108535760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b6064820152608401610840565b6000846001600160a01b0316848484604051610fe2929190611d44565b60006040518083038185875af1925050503d806000811461101f576040519150601f19603f3d011682016040523d82523d6000602084013e611024565b606091505b50509050806110915760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b6064820152608401610840565b5050505050565b6110a18161076b565b6110bd5760405162461bcd60e51b815260040161084090611cfa565b600090815260016020819052604090912055565b6110db8282610aa2565b610853576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556111113390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61115f8282610aa2565b15610853576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b606060006111c9836002611d54565b6111d4906002611c0a565b6001600160401b038111156111eb576111eb6114db565b6040519080825280601f01601f191660200182016040528015611215576020820181803683370190505b509050600360fc1b8160008151811061123057611230611a27565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061125f5761125f611a27565b60200101906001600160f81b031916908160001a9053506000611283846002611d54565b61128e906001611c0a565b90505b6001811115611306576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106112c2576112c2611a27565b1a60f81b8282815181106112d8576112d8611a27565b60200101906001600160f81b031916908160001a90535060049490941c936112ff81611d73565b9050611291565b50831561078a5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610840565b80356001600160a01b038116811461136c57600080fd5b919050565b60008083601f84011261138357600080fd5b5081356001600160401b0381111561139a57600080fd5b6020830191508360208285010111156113b257600080fd5b9250929050565b600080600080600080600060c0888a0312156113d457600080fd5b6113dd88611355565b96506020880135955060408801356001600160401b038111156113ff57600080fd5b61140b8a828b01611371565b989b979a50986060810135976080820135975060a09091013595509350505050565b60006020828403121561143f57600080fd5b81356001600160e01b03198116811461078a57600080fd5b60008060008060008060a0878903121561147057600080fd5b61147987611355565b95506020870135945060408701356001600160401b0381111561149b57600080fd5b6114a789828a01611371565b979a9699509760608101359660809091013595509350505050565b6000602082840312156114d457600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611519576115196114db565b604052919050565b600082601f83011261153257600080fd5b81356001600160401b0381111561154b5761154b6114db565b61155e601f8201601f19166020016114f1565b81815284602083860101111561157357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156115a657600080fd5b6115af85611355565b93506115bd60208601611355565b92506040850135915060608501356001600160401b038111156115df57600080fd5b6115eb87828801611521565b91505092959194509250565b6000806040838503121561160a57600080fd5b8235915061161a60208401611355565b90509250929050565b60008083601f84011261163557600080fd5b5081356001600160401b0381111561164c57600080fd5b6020830191508360208260051b85010111156113b257600080fd5b600080600080600080600080600060c08a8c03121561168557600080fd5b89356001600160401b038082111561169c57600080fd5b6116a88d838e01611623565b909b50995060208c01359150808211156116c157600080fd5b6116cd8d838e01611623565b909950975060408c01359150808211156116e657600080fd5b506116f38c828d01611623565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060008060008060a0898b03121561173457600080fd5b88356001600160401b038082111561174b57600080fd5b6117578c838d01611623565b909a50985060208b013591508082111561177057600080fd5b61177c8c838d01611623565b909850965060408b013591508082111561179557600080fd5b506117a28b828c01611623565b999c989b509699959896976060870135966080013595509350505050565b600082601f8301126117d157600080fd5b813560206001600160401b038211156117ec576117ec6114db565b8160051b6117fb8282016114f1565b928352848101820192828101908785111561181557600080fd5b83870192505b848310156118345782358252918301919083019061181b565b979650505050505050565b600080600080600060a0868803121561185757600080fd5b61186086611355565b945061186e60208701611355565b935060408601356001600160401b038082111561188a57600080fd5b61189689838a016117c0565b945060608801359150808211156118ac57600080fd5b6118b889838a016117c0565b935060808801359150808211156118ce57600080fd5b506118db88828901611521565b9150509295509295909350565b600080600080600060a0868803121561190057600080fd5b61190986611355565b945061191760208701611355565b9350604086013592506060860135915060808601356001600160401b0381111561194057600080fd5b6118db88828901611521565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a06040820152600061199d60a08301868861194c565b60608301949094525060800152949350505050565b60018060a01b03851681528360208201526060604082015260006119da60608301848661194c565b9695505050505050565b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a4f57600080fd5b61078a82611355565b6000808335601e19843603018112611a6f57600080fd5b8301803591506001600160401b03821115611a8957600080fd5b6020019150368190038213156113b257600080fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611ac857611ac8611a9e565b5060010190565b81835260006020808501808196508560051b810191508460005b87811015611b525782840389528135601e19883603018112611b0a57600080fd5b870180356001600160401b03811115611b2257600080fd5b803603891315611b3157600080fd5b611b3e868289850161194c565b9a87019a9550505090840190600101611ae9565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b811015611ba0576001600160a01b03611b8b84611355565b16825260209283019290910190600101611b72565b5083810360208501528881526001600160fb1b03891115611bc057600080fd5b8860051b9150818a602083013781810191505060208101600081526020848303016040850152611bf181888a611acf565b6060850196909652505050608001529695505050505050565b60008219821115611c1d57611c1d611a9e565b500190565b60005b83811015611c3d578181015183820152602001611c25565b83811115611c4c576000848401525b50505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611c8a816017850160208801611c22565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611cbb816028840160208801611c22565b01602801949350505050565b6020815260008251806020840152611ce6816040850160208701611c22565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b6000816000190483118215151615611d6e57611d6e611a9e565b500290565b600081611d8257611d82611a9e565b50600019019056fea264697066735822122023b625a84dcb4b4c5ff2a17e50ba1c1d3d259599aad6471dfd37918d4800174364736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/utils/IVotes":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IVotes","sourceName":"contracts/governance/utils/IVotes.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/governance/utils/Votes":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Votes","sourceName":"contracts/governance/utils/Votes.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC1822Proxiable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1822Proxiable","sourceName":"contracts/interfaces/draft-IERC1822.sol","abi":[{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC2612":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC2612","sourceName":"contracts/interfaces/draft-IERC2612.sol","abi":[{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC1271":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1271","sourceName":"contracts/interfaces/IERC1271.sol","abi":[{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"magicValue","type":"bytes4"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC1363":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1363","sourceName":"contracts/interfaces/IERC1363.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transferFromAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFromAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC1363Receiver":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1363Receiver","sourceName":"contracts/interfaces/IERC1363Receiver.sol","abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onTransferReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC1363Spender":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1363Spender","sourceName":"contracts/interfaces/IERC1363Spender.sol","abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onApprovalReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC2981":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC2981","sourceName":"contracts/interfaces/IERC2981.sol","abi":[{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC3156FlashBorrower":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC3156FlashBorrower","sourceName":"contracts/interfaces/IERC3156FlashBorrower.sol","abi":[{"inputs":[{"internalType":"address","name":"initiator","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onFlashLoan","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC3156FlashLender":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC3156FlashLender","sourceName":"contracts/interfaces/IERC3156FlashLender.sol","abi":[{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"flashFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"flashLoan","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"maxFlashLoan","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/interfaces/IERC4626":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC4626","sourceName":"contracts/interfaces/IERC4626.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"assetTokenAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"convertToShares","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"maxAssets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"maxMint","outputs":[{"internalType":"uint256","name":"maxShares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxRedeem","outputs":[{"internalType":"uint256","name":"maxShares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"maxAssets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewDeposit","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewMint","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewRedeem","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"totalManagedAssets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/metatx/ERC2771Context":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC2771Context","sourceName":"contracts/metatx/ERC2771Context.sol","abi":[{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/metatx/MinimalForwarder":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"MinimalForwarder","sourceName":"contracts/metatx/MinimalForwarder.sol","abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct MinimalForwarder.ForwardRequest","name":"req","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"execute","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"}],"name":"getNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct MinimalForwarder.ForwardRequest","name":"req","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"verify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x61014060405234801561001157600080fd5b50604080518082018252601081526f26b4b734b6b0b62337b93bb0b93232b960811b602080830191825283518085019094526005845264302e302e3160d81b908401528151902060e08190527fae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc1991638118856101008190524660a0529192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6100fb8184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c052610120525061011092505050565b60805160a05160c05160e0516101005161012051610ae261015f60003960006104ec0152600061053b015260006105160152600061046f01526000610499015260006104c30152610ae26000f3fe6080604052600436106100345760003560e01c80632d0335ab1461003957806347153f8214610082578063bf5d3bdb146100a3575b600080fd5b34801561004557600080fd5b5061006f61005436600461087a565b6001600160a01b031660009081526020819052604090205490565b6040519081526020015b60405180910390f35b6100956100903660046108aa565b6100d3565b604051610079929190610979565b3480156100af57600080fd5b506100c36100be3660046108aa565b61026c565b6040519015158152602001610079565b600060606100e285858561026c565b61014e5760405162461bcd60e51b815260206004820152603260248201527f4d696e696d616c466f727761726465723a207369676e617475726520646f6573604482015271081b9bdd081b585d18da081c995c5d595cdd60721b60648201526084015b60405180910390fd5b61015d608086013560016109b5565b60008061016d602089018961087a565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000808660200160208101906101a7919061087a565b6001600160a01b0316606088013560408901356101c760a08b018b6109db565b6101d460208d018d61087a565b6040516020016101e693929190610a22565b60408051601f198184030181529082905261020091610a48565b600060405180830381858888f193505050503d806000811461023e576040519150601f19603f3d011682016040523d82523d6000602084013e610243565b606091505b509092509050610258603f6060890135610a64565b5a1161026057fe5b90969095509350505050565b60008061037f84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061037992507fdd8f4b70b0f4393e889bd39128a30628a78b61816a9eb8199759e7a349657e4891506102dc905060208a018a61087a565b6102ec60408b0160208c0161087a565b60408b013560608c013560808d013561030860a08f018f6109db565b604051610316929190610a86565b6040805191829003822060208301989098526001600160a01b0396871690820152949093166060850152608084019190915260a083015260c082015260e081019190915261010001604051602081830303815290604052805190602001206103ea565b9061043e565b90506080850135600080610396602089018961087a565b6001600160a01b03166001600160a01b03168152602001908152602001600020541480156103e157506103cc602086018661087a565b6001600160a01b0316816001600160a01b0316145b95945050505050565b60006104386103f7610462565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b92915050565b600080600061044d8585610589565b9150915061045a816105cf565b509392505050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156104bb57507f000000000000000000000000000000000000000000000000000000000000000046145b156104e557507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b6000808251604114156105c05760208301516040840151606085015160001a6105b48782858561078d565b945094505050506105c8565b506000905060025b9250929050565b60008160048111156105e3576105e3610a96565b14156105ec5750565b600181600481111561060057610600610a96565b141561064e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610145565b600281600481111561066257610662610a96565b14156106b05760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610145565b60038160048111156106c4576106c4610a96565b141561071d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610145565b600481600481111561073157610731610a96565b141561078a5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610145565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156107c45750600090506003610871565b8460ff16601b141580156107dc57508460ff16601c14155b156107ed5750600090506004610871565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610841573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661086a57600060019250925050610871565b9150600090505b94509492505050565b60006020828403121561088c57600080fd5b81356001600160a01b03811681146108a357600080fd5b9392505050565b6000806000604084860312156108bf57600080fd5b833567ffffffffffffffff808211156108d757600080fd5b9085019060c082880312156108eb57600080fd5b9093506020850135908082111561090157600080fd5b818601915086601f83011261091557600080fd5b81358181111561092457600080fd5b87602082850101111561093657600080fd5b6020830194508093505050509250925092565b60005b8381101561096457818101518382015260200161094c565b83811115610973576000848401525b50505050565b821515815260406020820152600082518060408401526109a0816060850160208701610949565b601f01601f1916919091016060019392505050565b600082198211156109d657634e487b7160e01b600052601160045260246000fd5b500190565b6000808335601e198436030181126109f257600080fd5b83018035915067ffffffffffffffff821115610a0d57600080fd5b6020019150368190038213156105c857600080fd5b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b60008251610a5a818460208701610949565b9190910192915050565b600082610a8157634e487b7160e01b600052601260045260246000fd5b500490565b8183823760009101908152919050565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220c096d335dd8ff531b965b5440323db8da2634e5b6dabf89bdbc9ecaaef95384164736f6c63430008090033","deployedBytecode":"0x6080604052600436106100345760003560e01c80632d0335ab1461003957806347153f8214610082578063bf5d3bdb146100a3575b600080fd5b34801561004557600080fd5b5061006f61005436600461087a565b6001600160a01b031660009081526020819052604090205490565b6040519081526020015b60405180910390f35b6100956100903660046108aa565b6100d3565b604051610079929190610979565b3480156100af57600080fd5b506100c36100be3660046108aa565b61026c565b6040519015158152602001610079565b600060606100e285858561026c565b61014e5760405162461bcd60e51b815260206004820152603260248201527f4d696e696d616c466f727761726465723a207369676e617475726520646f6573604482015271081b9bdd081b585d18da081c995c5d595cdd60721b60648201526084015b60405180910390fd5b61015d608086013560016109b5565b60008061016d602089018961087a565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000808660200160208101906101a7919061087a565b6001600160a01b0316606088013560408901356101c760a08b018b6109db565b6101d460208d018d61087a565b6040516020016101e693929190610a22565b60408051601f198184030181529082905261020091610a48565b600060405180830381858888f193505050503d806000811461023e576040519150601f19603f3d011682016040523d82523d6000602084013e610243565b606091505b509092509050610258603f6060890135610a64565b5a1161026057fe5b90969095509350505050565b60008061037f84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061037992507fdd8f4b70b0f4393e889bd39128a30628a78b61816a9eb8199759e7a349657e4891506102dc905060208a018a61087a565b6102ec60408b0160208c0161087a565b60408b013560608c013560808d013561030860a08f018f6109db565b604051610316929190610a86565b6040805191829003822060208301989098526001600160a01b0396871690820152949093166060850152608084019190915260a083015260c082015260e081019190915261010001604051602081830303815290604052805190602001206103ea565b9061043e565b90506080850135600080610396602089018961087a565b6001600160a01b03166001600160a01b03168152602001908152602001600020541480156103e157506103cc602086018661087a565b6001600160a01b0316816001600160a01b0316145b95945050505050565b60006104386103f7610462565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b92915050565b600080600061044d8585610589565b9150915061045a816105cf565b509392505050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156104bb57507f000000000000000000000000000000000000000000000000000000000000000046145b156104e557507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b6000808251604114156105c05760208301516040840151606085015160001a6105b48782858561078d565b945094505050506105c8565b506000905060025b9250929050565b60008160048111156105e3576105e3610a96565b14156105ec5750565b600181600481111561060057610600610a96565b141561064e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610145565b600281600481111561066257610662610a96565b14156106b05760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610145565b60038160048111156106c4576106c4610a96565b141561071d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610145565b600481600481111561073157610731610a96565b141561078a5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610145565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156107c45750600090506003610871565b8460ff16601b141580156107dc57508460ff16601c14155b156107ed5750600090506004610871565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610841573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661086a57600060019250925050610871565b9150600090505b94509492505050565b60006020828403121561088c57600080fd5b81356001600160a01b03811681146108a357600080fd5b9392505050565b6000806000604084860312156108bf57600080fd5b833567ffffffffffffffff808211156108d757600080fd5b9085019060c082880312156108eb57600080fd5b9093506020850135908082111561090157600080fd5b818601915086601f83011261091557600080fd5b81358181111561092457600080fd5b87602082850101111561093657600080fd5b6020830194508093505050509250925092565b60005b8381101561096457818101518382015260200161094c565b83811115610973576000848401525b50505050565b821515815260406020820152600082518060408401526109a0816060850160208701610949565b601f01601f1916919091016060019392505050565b600082198211156109d657634e487b7160e01b600052601160045260246000fd5b500190565b6000808335601e198436030181126109f257600080fd5b83018035915067ffffffffffffffff821115610a0d57600080fd5b6020019150368190038213156105c857600080fd5b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b60008251610a5a818460208701610949565b9190910192915050565b600082610a8157634e487b7160e01b600052601260045260246000fd5b500490565b8183823760009101908152919050565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220c096d335dd8ff531b965b5440323db8da2634e5b6dabf89bdbc9ecaaef95384164736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/beacon/BeaconProxy":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"BeaconProxy","sourceName":"contracts/proxy/beacon/BeaconProxy.sol","abi":[{"inputs":[{"internalType":"address","name":"beacon","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x608060405260405161092738038061092783398101604081905261002291610474565b61002e82826000610035565b505061059e565b61003e8361010f565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b1561010a57610108836001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100c057600080fd5b505afa1580156100d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100f89190610534565b836102c160201b6100291760201c565b505b505050565b610122816102ed60201b6100551760201c565b6101815760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b610204816001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101bd57600080fd5b505afa1580156101d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f59190610534565b6102ed60201b6100551760201c565b6102695760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610178565b806102a07fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102fc60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102e68383604051806060016040528060278152602001610900602791396102ff565b9392505050565b6001600160a01b03163b151590565b90565b60606001600160a01b0384163b6103675760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610178565b600080856001600160a01b031685604051610382919061054f565b600060405180830381855af49150503d80600081146103bd576040519150601f19603f3d011682016040523d82523d6000602084013e6103c2565b606091505b5090925090506103d38282866103dd565b9695505050505050565b606083156103ec5750816102e6565b8251156103fc5782518084602001fd5b8160405162461bcd60e51b8152600401610178919061056b565b80516001600160a01b038116811461042d57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561046357818101518382015260200161044b565b838111156101085750506000910152565b6000806040838503121561048757600080fd5b61049083610416565b60208401519092506001600160401b03808211156104ad57600080fd5b818501915085601f8301126104c157600080fd5b8151818111156104d3576104d3610432565b604051601f8201601f19908116603f011681019083821181831017156104fb576104fb610432565b8160405282815288602084870101111561051457600080fd5b610525836020830160208801610448565b80955050505050509250929050565b60006020828403121561054657600080fd5b6102e682610416565b60008251610561818460208701610448565b9190910192915050565b602081526000825180602084015261058a816040850160208701610448565b601f01601f19169190910160400192915050565b610353806105ad6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61010f565b565b606061004e83836040518060600160405280602781526020016102f760279139610133565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100d257600080fd5b505afa1580156100e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010a919061024e565b905090565b3660008037600080366000845af43d6000803e80801561012e573d6000f35b3d6000fd5b60606001600160a01b0384163b6101a05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101bb91906102a7565b600060405180830381855af49150503d80600081146101f6576040519150601f19603f3d011682016040523d82523d6000602084013e6101fb565b606091505b509150915061020b828286610215565b9695505050505050565b6060831561022457508161004e565b8251156102345782518084602001fd5b8160405162461bcd60e51b815260040161019791906102c3565b60006020828403121561026057600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561029257818101518382015260200161027a565b838111156102a1576000848401525b50505050565b600082516102b9818460208701610277565b9190910192915050565b60208152600082518060208401526102e2816040850160208701610277565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c2849c0a15380ad6927f162f733548aad2e7c63763af5c25bea6e78da74d417964736f6c63430008090033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","deployedBytecode":"0x60806040523661001357610011610017565b005b6100115b610027610022610067565b61010f565b565b606061004e83836040518060600160405280602781526020016102f760279139610133565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100d257600080fd5b505afa1580156100e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010a919061024e565b905090565b3660008037600080366000845af43d6000803e80801561012e573d6000f35b3d6000fd5b60606001600160a01b0384163b6101a05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101bb91906102a7565b600060405180830381855af49150503d80600081146101f6576040519150601f19603f3d011682016040523d82523d6000602084013e6101fb565b606091505b509150915061020b828286610215565b9695505050505050565b6060831561022457508161004e565b8251156102345782518084602001fd5b8160405162461bcd60e51b815260040161019791906102c3565b60006020828403121561026057600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561029257818101518382015260200161027a565b838111156102a1576000848401525b50505050565b600082516102b9818460208701610277565b9190910192915050565b60208152600082518060208401526102e2816040850160208701610277565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c2849c0a15380ad6927f162f733548aad2e7c63763af5c25bea6e78da74d417964736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/beacon/IBeacon":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IBeacon","sourceName":"contracts/proxy/beacon/IBeacon.sol","abi":[{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/beacon/UpgradeableBeacon":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"UpgradeableBeacon","sourceName":"contracts/proxy/beacon/UpgradeableBeacon.sol","abi":[{"inputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506040516104e43803806104e483398101604081905261002f91610151565b61003833610047565b61004181610097565b50610181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100aa8161014260201b6101a01760201c565b6101205760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03163b151590565b60006020828403121561016357600080fd5b81516001600160a01b038116811461017a57600080fd5b9392505050565b610354806101906000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea26469706673582212203f0b62c86ff1acd57383d66937ec1fb6326b68807bfa75a94858ba00c9ff5ceb64736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea26469706673582212203f0b62c86ff1acd57383d66937ec1fb6326b68807bfa75a94858ba00c9ff5ceb64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/Clones":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Clones","sourceName":"contracts/proxy/Clones.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f2026685656e32cd413455db3e805c9b637ba010f3369d29ae06cf1df87608c264736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f2026685656e32cd413455db3e805c9b637ba010f3369d29ae06cf1df87608c264736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/ERC1967/ERC1967Proxy":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1967Proxy","sourceName":"contracts/proxy/ERC1967/ERC1967Proxy.sol","abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x608060405260405161072138038061072183398101604081905261002291610314565b61002e82826000610035565b5050610431565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106fa602791396101a9565b9392505050565b6100ea8161028760201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61029660201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606001600160a01b0384163b6102115760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610148565b600080856001600160a01b03168560405161022c91906103e2565b600060405180830381855af49150503d8060008114610267576040519150601f19603f3d011682016040523d82523d6000602084013e61026c565b606091505b50909250905061027d828286610299565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a85750816100d0565b8251156102b85782518084602001fd5b8160405162461bcd60e51b815260040161014891906103fe565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103035781810151838201526020016102eb565b838111156100645750506000910152565b6000806040838503121561032757600080fd5b82516001600160a01b038116811461033e57600080fd5b60208401519092506001600160401b038082111561035b57600080fd5b818501915085601f83011261036f57600080fd5b815181811115610381576103816102d2565b604051601f8201601f19908116603f011681019083821181831017156103a9576103a96102d2565b816040528281528860208487010111156103c257600080fd5b6103d38360208301602088016102e8565b80955050505050509250929050565b600082516103f48184602087016102e8565b9190910192915050565b602081526000825180602084015261041d8160408501602087016102e8565b601f01601f19169190910160400192915050565b6102ba806104406000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025e602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b60606001600160a01b0384163b6101305760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161014b919061020e565b600060405180830381855af49150503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b509150915061019b8282866101a5565b9695505050505050565b606083156101b457508161004e565b8251156101c45782518084602001fd5b8160405162461bcd60e51b8152600401610127919061022a565b60005b838110156101f95781810151838201526020016101e1565b83811115610208576000848401525b50505050565b600082516102208184602087016101de565b9190910192915050565b60208152600082518060208401526102498160408501602087016101de565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220012b2e6d3c22a9b90d918e56e90f5d0dc9562c086b68567310b49392b9105b8964736f6c63430008090033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","deployedBytecode":"0x60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025e602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b60606001600160a01b0384163b6101305760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161014b919061020e565b600060405180830381855af49150503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b509150915061019b8282866101a5565b9695505050505050565b606083156101b457508161004e565b8251156101c45782518084602001fd5b8160405162461bcd60e51b8152600401610127919061022a565b60005b838110156101f95781810151838201526020016101e1565b83811115610208576000848401525b50505050565b600082516102208184602087016101de565b9190910192915050565b60208152600082518060208401526102498160408501602087016101de565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220012b2e6d3c22a9b90d918e56e90f5d0dc9562c086b68567310b49392b9105b8964736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/ERC1967/ERC1967Upgrade":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1967Upgrade","sourceName":"contracts/proxy/ERC1967/ERC1967Upgrade.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/Proxy":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Proxy","sourceName":"contracts/proxy/Proxy.sol","abi":[{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/transparent/ProxyAdmin":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ProxyAdmin","sourceName":"contracts/proxy/transparent/ProxyAdmin.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeProxyAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"}],"name":"getProxyAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"}],"name":"getProxyImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"implementation","type":"address"}],"name":"upgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract TransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea2646970667358221220e9f4825daef94fe498441dad7e269b25b227f53e068d121189fc347571f57cee64736f6c63430008090033","deployedBytecode":"0x60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea2646970667358221220e9f4825daef94fe498441dad7e269b25b227f53e068d121189fc347571f57cee64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/transparent/TransparentUpgradeableProxy":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"TransparentUpgradeableProxy","sourceName":"contracts/proxy/transparent/TransparentUpgradeableProxy.sol","abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x608060405260405162000e8138038062000e81833981016040819052620000269162000490565b828162000036828260006200004d565b50620000449050826200008a565b505050620005c3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e5a60279139620002f8565b9392505050565b60006200018060008051602062000e3a83398151915260001b620003de60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e3a83398151915260001b620003de60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200028c1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620002081760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000570565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f191906200058e565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b83811115620000835750506000910152565b600080600060608486031215620004a657600080fd5b620004b1846200042e565b9250620004c1602085016200042e565b60408501519092506001600160401b0380821115620004df57600080fd5b818601915086601f830112620004f457600080fd5b8151818111156200050957620005096200044b565b604051601f8201601f19908116603f011681019083821181831017156200053457620005346200044b565b816040528281528960208487010111156200054e57600080fd5b6200056183602083016020880162000461565b80955050505050509250925092565b600082516200058481846020870162000461565b9190910192915050565b6020815260008251806020840152620005af81604085016020870162000461565b601f01601f19169190910160400192915050565b61086780620005d36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220cfb0cf0bbe115abbb9bf3be4bc00d10d9ef33dfafdf3dbe5eb87a81104ff498d64736f6c63430008090033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","deployedBytecode":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220cfb0cf0bbe115abbb9bf3be4bc00d10d9ef33dfafdf3dbe5eb87a81104ff498d64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/utils/Initializable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Initializable","sourceName":"contracts/proxy/utils/Initializable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/proxy/utils/UUPSUpgradeable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"UUPSUpgradeable","sourceName":"contracts/proxy/utils/UUPSUpgradeable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/security/Pausable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Pausable","sourceName":"contracts/security/Pausable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/security/PullPayment":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"PullPayment","sourceName":"contracts/security/PullPayment.sol","abi":[{"inputs":[{"internalType":"address","name":"dest","type":"address"}],"name":"payments","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"payee","type":"address"}],"name":"withdrawPayments","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/security/ReentrancyGuard":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ReentrancyGuard","sourceName":"contracts/security/ReentrancyGuard.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/common/ERC2981":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC2981","sourceName":"contracts/token/common/ERC2981.sol","abi":[{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/ERC1155":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155","sourceName":"contracts/token/ERC1155/ERC1155.sol","abi":[{"inputs":[{"internalType":"string","name":"uri_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b50604051620015f0380380620015f083398101604081905262000034916200011b565b6200003f8162000046565b5062000234565b80516200005b9060029060208401906200005f565b5050565b8280546200006d90620001f7565b90600052602060002090601f016020900481019282620000915760008555620000dc565b82601f10620000ac57805160ff1916838001178555620000dc565b82800160010185558215620000dc579182015b82811115620000dc578251825591602001919060010190620000bf565b50620000ea929150620000ee565b5090565b5b80821115620000ea5760008155600101620000ef565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200012f57600080fd5b82516001600160401b03808211156200014757600080fd5b818501915085601f8301126200015c57600080fd5b81518181111562000171576200017162000105565b604051601f8201601f19908116603f011681019083821181831017156200019c576200019c62000105565b816040528281528886848701011115620001b557600080fd5b600093505b82841015620001d95784840186015181850187015292850192620001ba565b82841115620001eb5760008684830101525b98975050505050505050565b600181811c908216806200020c57607f821691505b602082108114156200022e57634e487b7160e01b600052602260045260246000fd5b50919050565b6113ac80620002446000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461010a578063a22cb4651461012a578063e985e9c51461013d578063f242432a1461017957600080fd5b8062fdd58e1461008c57806301ffc9a7146100b25780630e89341c146100d55780632eb2c2d6146100f5575b600080fd5b61009f61009a366004610b5f565b61018c565b6040519081526020015b60405180910390f35b6100c56100c0366004610ba2565b610222565b60405190151581526020016100a9565b6100e86100e3366004610bc6565b610274565b6040516100a99190610c2c565b610108610103366004610d8b565b610308565b005b61011d610118366004610e35565b610354565b6040516100a99190610f3b565b610108610138366004610f4e565b61047e565b6100c561014b366004610f8a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b610108610187366004610fbd565b61048d565b60006001600160a01b0383166101fc5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b03198216636cdb3d1360e11b148061025357506001600160e01b031982166303a24d0760e21b145b8061026e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606002805461028390611022565b80601f01602080910402602001604051908101604052809291908181526020018280546102af90611022565b80156102fc5780601f106102d1576101008083540402835291602001916102fc565b820191906000526020600020905b8154815290600101906020018083116102df57829003601f168201915b50505050509050919050565b6001600160a01b0385163314806103245750610324853361014b565b6103405760405162461bcd60e51b81526004016101f39061105d565b61034d85858585856104d2565b5050505050565b606081518351146103b95760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b60648201526084016101f3565b6000835167ffffffffffffffff8111156103d5576103d5610c3f565b6040519080825280602002602001820160405280156103fe578160200160208202803683370190505b50905060005b845181101561047657610449858281518110610422576104226110ac565b602002602001015185838151811061043c5761043c6110ac565b602002602001015161018c565b82828151811061045b5761045b6110ac565b602090810291909101015261046f816110d8565b9050610404565b509392505050565b6104893383836106af565b5050565b6001600160a01b0385163314806104a957506104a9853361014b565b6104c55760405162461bcd60e51b81526004016101f39061105d565b61034d8585858585610790565b81518351146105345760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084016101f3565b6001600160a01b03841661055a5760405162461bcd60e51b81526004016101f3906110f3565b3360005b845181101561064157600085828151811061057b5761057b6110ac565b602002602001015190506000858381518110610599576105996110ac565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156105e95760405162461bcd60e51b81526004016101f390611138565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610626908490611182565b925050819055505050508061063a906110d8565b905061055e565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161069192919061119a565b60405180910390a46106a78187878787876108ba565b505050505050565b816001600160a01b0316836001600160a01b031614156107235760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b60648201526084016101f3565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166107b65760405162461bcd60e51b81526004016101f3906110f3565b3360006107c285610a2e565b905060006107cf85610a2e565b90506000868152602081815260408083206001600160a01b038c168452909152902054858110156108125760405162461bcd60e51b81526004016101f390611138565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061084f908490611182565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46108af848a8a8a8a8a610a79565b505050505050505050565b6001600160a01b0384163b156106a75760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906108fe90899089908890889088906004016111c8565b602060405180830381600087803b15801561091857600080fd5b505af1925050508015610948575060408051601f3d908101601f1916820190925261094591810190611226565b60015b6109f557610954611243565b806308c379a0141561098e575061096961125f565b806109745750610990565b8060405162461bcd60e51b81526004016101f39190610c2c565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60648201526084016101f3565b6001600160e01b0319811663bc197c8160e01b14610a255760405162461bcd60e51b81526004016101f3906112e9565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610a6857610a686110ac565b602090810291909101015292915050565b6001600160a01b0384163b156106a75760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610abd9089908990889088908890600401611331565b602060405180830381600087803b158015610ad757600080fd5b505af1925050508015610b07575060408051601f3d908101601f19168201909252610b0491810190611226565b60015b610b1357610954611243565b6001600160e01b0319811663f23a6e6160e01b14610a255760405162461bcd60e51b81526004016101f3906112e9565b80356001600160a01b0381168114610b5a57600080fd5b919050565b60008060408385031215610b7257600080fd5b610b7b83610b43565b946020939093013593505050565b6001600160e01b031981168114610b9f57600080fd5b50565b600060208284031215610bb457600080fd5b8135610bbf81610b89565b9392505050565b600060208284031215610bd857600080fd5b5035919050565b6000815180845260005b81811015610c0557602081850181015186830182015201610be9565b81811115610c17576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610bbf6020830184610bdf565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715610c7b57610c7b610c3f565b6040525050565b600067ffffffffffffffff821115610c9c57610c9c610c3f565b5060051b60200190565b600082601f830112610cb757600080fd5b81356020610cc482610c82565b604051610cd18282610c55565b83815260059390931b8501820192828101915086841115610cf157600080fd5b8286015b84811015610d0c5780358352918301918301610cf5565b509695505050505050565b600082601f830112610d2857600080fd5b813567ffffffffffffffff811115610d4257610d42610c3f565b604051610d59601f8301601f191660200182610c55565b818152846020838601011115610d6e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215610da357600080fd5b610dac86610b43565b9450610dba60208701610b43565b9350604086013567ffffffffffffffff80821115610dd757600080fd5b610de389838a01610ca6565b94506060880135915080821115610df957600080fd5b610e0589838a01610ca6565b93506080880135915080821115610e1b57600080fd5b50610e2888828901610d17565b9150509295509295909350565b60008060408385031215610e4857600080fd5b823567ffffffffffffffff80821115610e6057600080fd5b818501915085601f830112610e7457600080fd5b81356020610e8182610c82565b604051610e8e8282610c55565b83815260059390931b8501820192828101915089841115610eae57600080fd5b948201945b83861015610ed357610ec486610b43565b82529482019490820190610eb3565b96505086013592505080821115610ee957600080fd5b50610ef685828601610ca6565b9150509250929050565b600081518084526020808501945080840160005b83811015610f3057815187529582019590820190600101610f14565b509495945050505050565b602081526000610bbf6020830184610f00565b60008060408385031215610f6157600080fd5b610f6a83610b43565b915060208301358015158114610f7f57600080fd5b809150509250929050565b60008060408385031215610f9d57600080fd5b610fa683610b43565b9150610fb460208401610b43565b90509250929050565b600080600080600060a08688031215610fd557600080fd5b610fde86610b43565b9450610fec60208701610b43565b93506040860135925060608601359150608086013567ffffffffffffffff81111561101657600080fd5b610e2888828901610d17565b600181811c9082168061103657607f821691505b6020821081141561105757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602f908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526e195c881b9bdc88185c1c1c9bdd9959608a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156110ec576110ec6110c2565b5060010190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60008219821115611195576111956110c2565b500190565b6040815260006111ad6040830185610f00565b82810360208401526111bf8185610f00565b95945050505050565b6001600160a01b0386811682528516602082015260a0604082018190526000906111f490830186610f00565b82810360608401526112068186610f00565b9050828103608084015261121a8185610bdf565b98975050505050505050565b60006020828403121561123857600080fd5b8151610bbf81610b89565b600060033d111561125c5760046000803e5060005160e01c5b90565b600060443d101561126d5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561129d57505050505090565b82850191508151818111156112b55750505050505090565b843d87010160208285010111156112cf5750505050505090565b6112de60208286010187610c55565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061136b90830184610bdf565b97965050505050505056fea26469706673582212208589f9ade71b111122fe06f6192ba5a1bcba279086f8c117d40c8967db504c6e64736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461010a578063a22cb4651461012a578063e985e9c51461013d578063f242432a1461017957600080fd5b8062fdd58e1461008c57806301ffc9a7146100b25780630e89341c146100d55780632eb2c2d6146100f5575b600080fd5b61009f61009a366004610b5f565b61018c565b6040519081526020015b60405180910390f35b6100c56100c0366004610ba2565b610222565b60405190151581526020016100a9565b6100e86100e3366004610bc6565b610274565b6040516100a99190610c2c565b610108610103366004610d8b565b610308565b005b61011d610118366004610e35565b610354565b6040516100a99190610f3b565b610108610138366004610f4e565b61047e565b6100c561014b366004610f8a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b610108610187366004610fbd565b61048d565b60006001600160a01b0383166101fc5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b03198216636cdb3d1360e11b148061025357506001600160e01b031982166303a24d0760e21b145b8061026e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606002805461028390611022565b80601f01602080910402602001604051908101604052809291908181526020018280546102af90611022565b80156102fc5780601f106102d1576101008083540402835291602001916102fc565b820191906000526020600020905b8154815290600101906020018083116102df57829003601f168201915b50505050509050919050565b6001600160a01b0385163314806103245750610324853361014b565b6103405760405162461bcd60e51b81526004016101f39061105d565b61034d85858585856104d2565b5050505050565b606081518351146103b95760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b60648201526084016101f3565b6000835167ffffffffffffffff8111156103d5576103d5610c3f565b6040519080825280602002602001820160405280156103fe578160200160208202803683370190505b50905060005b845181101561047657610449858281518110610422576104226110ac565b602002602001015185838151811061043c5761043c6110ac565b602002602001015161018c565b82828151811061045b5761045b6110ac565b602090810291909101015261046f816110d8565b9050610404565b509392505050565b6104893383836106af565b5050565b6001600160a01b0385163314806104a957506104a9853361014b565b6104c55760405162461bcd60e51b81526004016101f39061105d565b61034d8585858585610790565b81518351146105345760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084016101f3565b6001600160a01b03841661055a5760405162461bcd60e51b81526004016101f3906110f3565b3360005b845181101561064157600085828151811061057b5761057b6110ac565b602002602001015190506000858381518110610599576105996110ac565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156105e95760405162461bcd60e51b81526004016101f390611138565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610626908490611182565b925050819055505050508061063a906110d8565b905061055e565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161069192919061119a565b60405180910390a46106a78187878787876108ba565b505050505050565b816001600160a01b0316836001600160a01b031614156107235760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b60648201526084016101f3565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166107b65760405162461bcd60e51b81526004016101f3906110f3565b3360006107c285610a2e565b905060006107cf85610a2e565b90506000868152602081815260408083206001600160a01b038c168452909152902054858110156108125760405162461bcd60e51b81526004016101f390611138565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061084f908490611182565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46108af848a8a8a8a8a610a79565b505050505050505050565b6001600160a01b0384163b156106a75760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906108fe90899089908890889088906004016111c8565b602060405180830381600087803b15801561091857600080fd5b505af1925050508015610948575060408051601f3d908101601f1916820190925261094591810190611226565b60015b6109f557610954611243565b806308c379a0141561098e575061096961125f565b806109745750610990565b8060405162461bcd60e51b81526004016101f39190610c2c565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60648201526084016101f3565b6001600160e01b0319811663bc197c8160e01b14610a255760405162461bcd60e51b81526004016101f3906112e9565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610a6857610a686110ac565b602090810291909101015292915050565b6001600160a01b0384163b156106a75760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610abd9089908990889088908890600401611331565b602060405180830381600087803b158015610ad757600080fd5b505af1925050508015610b07575060408051601f3d908101601f19168201909252610b0491810190611226565b60015b610b1357610954611243565b6001600160e01b0319811663f23a6e6160e01b14610a255760405162461bcd60e51b81526004016101f3906112e9565b80356001600160a01b0381168114610b5a57600080fd5b919050565b60008060408385031215610b7257600080fd5b610b7b83610b43565b946020939093013593505050565b6001600160e01b031981168114610b9f57600080fd5b50565b600060208284031215610bb457600080fd5b8135610bbf81610b89565b9392505050565b600060208284031215610bd857600080fd5b5035919050565b6000815180845260005b81811015610c0557602081850181015186830182015201610be9565b81811115610c17576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610bbf6020830184610bdf565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715610c7b57610c7b610c3f565b6040525050565b600067ffffffffffffffff821115610c9c57610c9c610c3f565b5060051b60200190565b600082601f830112610cb757600080fd5b81356020610cc482610c82565b604051610cd18282610c55565b83815260059390931b8501820192828101915086841115610cf157600080fd5b8286015b84811015610d0c5780358352918301918301610cf5565b509695505050505050565b600082601f830112610d2857600080fd5b813567ffffffffffffffff811115610d4257610d42610c3f565b604051610d59601f8301601f191660200182610c55565b818152846020838601011115610d6e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215610da357600080fd5b610dac86610b43565b9450610dba60208701610b43565b9350604086013567ffffffffffffffff80821115610dd757600080fd5b610de389838a01610ca6565b94506060880135915080821115610df957600080fd5b610e0589838a01610ca6565b93506080880135915080821115610e1b57600080fd5b50610e2888828901610d17565b9150509295509295909350565b60008060408385031215610e4857600080fd5b823567ffffffffffffffff80821115610e6057600080fd5b818501915085601f830112610e7457600080fd5b81356020610e8182610c82565b604051610e8e8282610c55565b83815260059390931b8501820192828101915089841115610eae57600080fd5b948201945b83861015610ed357610ec486610b43565b82529482019490820190610eb3565b96505086013592505080821115610ee957600080fd5b50610ef685828601610ca6565b9150509250929050565b600081518084526020808501945080840160005b83811015610f3057815187529582019590820190600101610f14565b509495945050505050565b602081526000610bbf6020830184610f00565b60008060408385031215610f6157600080fd5b610f6a83610b43565b915060208301358015158114610f7f57600080fd5b809150509250929050565b60008060408385031215610f9d57600080fd5b610fa683610b43565b9150610fb460208401610b43565b90509250929050565b600080600080600060a08688031215610fd557600080fd5b610fde86610b43565b9450610fec60208701610b43565b93506040860135925060608601359150608086013567ffffffffffffffff81111561101657600080fd5b610e2888828901610d17565b600181811c9082168061103657607f821691505b6020821081141561105757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602f908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526e195c881b9bdc88185c1c1c9bdd9959608a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156110ec576110ec6110c2565b5060010190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60008219821115611195576111956110c2565b500190565b6040815260006111ad6040830185610f00565b82810360208401526111bf8185610f00565b95945050505050565b6001600160a01b0386811682528516602082015260a0604082018190526000906111f490830186610f00565b82810360608401526112068186610f00565b9050828103608084015261121a8185610bdf565b98975050505050505050565b60006020828403121561123857600080fd5b8151610bbf81610b89565b600060033d111561125c5760046000803e5060005160e01c5b90565b600060443d101561126d5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561129d57505050505090565b82850191508151818111156112b55750505050505090565b843d87010160208285010111156112cf5750505050505090565b6112de60208286010187610c55565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061136b90830184610bdf565b97965050505050505056fea26469706673582212208589f9ade71b111122fe06f6192ba5a1bcba279086f8c117d40c8967db504c6e64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/extensions/ERC1155Burnable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Burnable","sourceName":"contracts/token/ERC1155/extensions/ERC1155Burnable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"burnBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/extensions/ERC1155Pausable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Pausable","sourceName":"contracts/token/ERC1155/extensions/ERC1155Pausable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/extensions/ERC1155Supply":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Supply","sourceName":"contracts/token/ERC1155/extensions/ERC1155Supply.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/extensions/ERC1155URIStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155URIStorage","sourceName":"contracts/token/ERC1155/extensions/ERC1155URIStorage.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/extensions/IERC1155MetadataURI":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155MetadataURI","sourceName":"contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/IERC1155":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155","sourceName":"contracts/token/ERC1155/IERC1155.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/IERC1155Receiver":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155Receiver","sourceName":"contracts/token/ERC1155/IERC1155Receiver.sol","abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/presets/ERC1155PresetMinterPauser":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155PresetMinterPauser","sourceName":"contracts/token/ERC1155/presets/ERC1155PresetMinterPauser.sol","abi":[{"inputs":[{"internalType":"string","name":"uri","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"burnBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mintBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162002d7f38038062002d7f8339810160408190526200003491620002e7565b806200004081620000b7565b506005805460ff1916905562000058600033620000d0565b620000847f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000d0565b620000b07f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620000d0565b5062000400565b8051620000cc9060049060208401906200022b565b5050565b620000cc8282620000ed82826200011960201b62000a871760201c565b60008281526001602090815260409091206200011491839062000b0b620001b9821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000cc576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001753390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001d0836001600160a01b038416620001d9565b90505b92915050565b60008181526001830160205260408120546200022257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620001d3565b506000620001d3565b8280546200023990620003c3565b90600052602060002090601f0160209004810192826200025d5760008555620002a8565b82601f106200027857805160ff1916838001178555620002a8565b82800160010185558215620002a8579182015b82811115620002a85782518255916020019190600101906200028b565b50620002b6929150620002ba565b5090565b5b80821115620002b65760008155600101620002bb565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215620002fb57600080fd5b82516001600160401b03808211156200031357600080fd5b818501915085601f8301126200032857600080fd5b8151818111156200033d576200033d620002d1565b604051601f8201601f19908116603f01168101908382118183101715620003685762000368620002d1565b8160405282815288868487010111156200038157600080fd5b600093505b82841015620003a5578484018601518185018701529285019262000386565b82841115620003b75760008684830101525b98975050505050505050565b600181811c90821680620003d857607f821691505b60208210811415620003fa57634e487b7160e01b600052602260045260246000fd5b50919050565b61296f80620004106000396000f3fe608060405234801561001057600080fd5b50600436106101725760003560e01c8063731133e9116100de578063ca15c87311610097578063e63ab1e911610071578063e63ab1e914610358578063e985e9c51461037f578063f242432a146103bb578063f5298aca146103ce57600080fd5b8063ca15c8731461030b578063d53913931461031e578063d547741f1461034557600080fd5b8063731133e9146102975780638456cb59146102aa5780639010d07c146102b257806391d14854146102dd578063a217fddf146102f0578063a22cb465146102f857600080fd5b80632f2ff15d116101305780632f2ff15d1461022b57806336568abe1461023e5780633f4ba83a146102515780634e1273f4146102595780635c975abb146102795780636b20c4541461028457600080fd5b8062fdd58e1461017757806301ffc9a71461019d5780630e89341c146101c05780631f7fdffa146101e0578063248a9ca3146101f55780632eb2c2d614610218575b600080fd5b61018a610185366004611d02565b6103e1565b6040519081526020015b60405180910390f35b6101b06101ab366004611d42565b61047c565b6040519015158152602001610194565b6101d36101ce366004611d5f565b610487565b6040516101949190611dd0565b6101f36101ee366004611f2f565b61051b565b005b61018a610203366004611d5f565b60009081526020819052604090206001015490565b6101f3610226366004611fc8565b610573565b6101f3610239366004612072565b6105bf565b6101f361024c366004612072565b6105e9565b6101f3610667565b61026c61026736600461209e565b61070d565b60405161019491906121a4565b60055460ff166101b0565b6101f36102923660046121b7565b610837565b6101f36102a536600461222b565b61087a565b6101f36108cc565b6102c56102c0366004612280565b610970565b6040516001600160a01b039091168152602001610194565b6101b06102eb366004612072565b61098f565b61018a600081565b6101f36103063660046122a2565b6109b8565b61018a610319366004611d5f565b6109c3565b61018a7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6101f3610353366004612072565b6109da565b61018a7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6101b061038d3660046122de565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b6101f36103c9366004612308565b6109ff565b6101f36103dc36600461236d565b610a44565b60006001600160a01b0383166104515760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b600061047682610b20565b606060048054610496906123a0565b80601f01602080910402602001604051908101604052809291908181526020018280546104c2906123a0565b801561050f5780601f106104e45761010080835404028352916020019161050f565b820191906000526020600020905b8154815290600101906020018083116104f257829003601f168201915b50505050509050919050565b6105457f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361098f565b6105615760405162461bcd60e51b8152600401610448906123db565b61056d84848484610b60565b50505050565b6001600160a01b03851633148061058f575061058f853361038d565b6105ab5760405162461bcd60e51b815260040161044890612438565b6105b88585858585610cbb565b5050505050565b6000828152602081905260409020600101546105da81610e68565b6105e48383610e75565b505050565b6001600160a01b03811633146106595760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610448565b6106638282610e97565b5050565b6106917f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a3361098f565b6107035760405162461bcd60e51b815260206004820152603b60248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f686176652070617573657220726f6c6520746f20756e706175736500000000006064820152608401610448565b61070b610eb9565b565b606081518351146107725760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610448565b6000835167ffffffffffffffff81111561078e5761078e611de3565b6040519080825280602002602001820160405280156107b7578160200160208202803683370190505b50905060005b845181101561082f576108028582815181106107db576107db612487565b60200260200101518583815181106107f5576107f5612487565b60200260200101516103e1565b82828151811061081457610814612487565b6020908102919091010152610828816124b3565b90506107bd565b509392505050565b6001600160a01b0383163314806108535750610853833361038d565b61086f5760405162461bcd60e51b815260040161044890612438565b6105e4838383610f0b565b6108a47f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361098f565b6108c05760405162461bcd60e51b8152600401610448906123db565b61056d848484846110aa565b6108f67f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a3361098f565b6109685760405162461bcd60e51b815260206004820152603960248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f686176652070617573657220726f6c6520746f207061757365000000000000006064820152608401610448565b61070b611195565b600082815260016020526040812061098890836111d2565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6106633383836111de565b6000818152600160205260408120610476906112bf565b6000828152602081905260409020600101546109f581610e68565b6105e48383610e97565b6001600160a01b038516331480610a1b5750610a1b853361038d565b610a375760405162461bcd60e51b815260040161044890612438565b6105b885858585856112c9565b6001600160a01b038316331480610a605750610a60833361038d565b610a7c5760405162461bcd60e51b815260040161044890612438565b6105e4838383611405565b610a91828261098f565b610663576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610ac73390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610988836001600160a01b038416611521565b60006001600160e01b03198216636cdb3d1360e11b1480610b5157506001600160e01b031982166303a24d0760e21b145b80610476575061047682611570565b6001600160a01b038416610b865760405162461bcd60e51b8152600401610448906124ce565b8151835114610ba75760405162461bcd60e51b81526004016104489061250f565b33610bb781600087878787611595565b60005b8451811015610c5357838181518110610bd557610bd5612487565b602002602001015160026000878481518110610bf357610bf3612487565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254610c3b9190612557565b90915550819050610c4b816124b3565b915050610bba565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610ca492919061256f565b60405180910390a46105b8816000878787876115a3565b8151835114610cdc5760405162461bcd60e51b81526004016104489061250f565b6001600160a01b038416610d025760405162461bcd60e51b81526004016104489061259d565b33610d11818787878787611595565b60005b8451811015610dfa576000858281518110610d3157610d31612487565b602002602001015190506000858381518110610d4f57610d4f612487565b60209081029190910181015160008481526002835260408082206001600160a01b038e168352909352919091205490915081811015610da05760405162461bcd60e51b8152600401610448906125e2565b60008381526002602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610ddf908490612557565b9250508190555050505080610df3906124b3565b9050610d14565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610e4a92919061256f565b60405180910390a4610e608187878787876115a3565b505050505050565b610e72813361170e565b50565b610e7f8282610a87565b60008281526001602052604090206105e49082610b0b565b610ea18282611772565b60008281526001602052604090206105e490826117d7565b610ec16117ec565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038316610f315760405162461bcd60e51b81526004016104489061262c565b8051825114610f525760405162461bcd60e51b81526004016104489061250f565b6000339050610f7581856000868660405180602001604052806000815250611595565b60005b835181101561103d576000848281518110610f9557610f95612487565b602002602001015190506000848381518110610fb357610fb3612487565b60209081029190910181015160008481526002835260408082206001600160a01b038c1683529093529190912054909150818110156110045760405162461bcd60e51b81526004016104489061266f565b60009283526002602090815260408085206001600160a01b038b1686529091529092209103905580611035816124b3565b915050610f78565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb868660405161108e92919061256f565b60405180910390a460408051602081019091526000905261056d565b6001600160a01b0384166110d05760405162461bcd60e51b8152600401610448906124ce565b3360006110dc85611835565b905060006110e985611835565b90506110fa83600089858589611595565b60008681526002602090815260408083206001600160a01b038b1684529091528120805487929061112c908490612557565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461118c83600089898989611880565b50505050505050565b61119d61194a565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610eee3390565b60006109888383611990565b816001600160a01b0316836001600160a01b031614156112525760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610448565b6001600160a01b03838116600081815260036020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6000610476825490565b6001600160a01b0384166112ef5760405162461bcd60e51b81526004016104489061259d565b3360006112fb85611835565b9050600061130885611835565b9050611318838989858589611595565b60008681526002602090815260408083206001600160a01b038c1684529091529020548581101561135b5760405162461bcd60e51b8152600401610448906125e2565b60008781526002602090815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061139a908490612557565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46113fa848a8a8a8a8a611880565b505050505050505050565b6001600160a01b03831661142b5760405162461bcd60e51b81526004016104489061262c565b33600061143784611835565b9050600061144484611835565b905061146483876000858560405180602001604052806000815250611595565b60008581526002602090815260408083206001600160a01b038a168452909152902054848110156114a75760405162461bcd60e51b81526004016104489061266f565b60008681526002602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091526000905261118c565b600081815260018301602052604081205461156857508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610476565b506000610476565b60006001600160e01b03198216635a05180f60e01b14806104765750610476826119ba565b610e608686868686866119ef565b6001600160a01b0384163b15610e605760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906115e790899089908890889088906004016126b3565b602060405180830381600087803b15801561160157600080fd5b505af1925050508015611631575060408051601f3d908101601f1916820190925261162e91810190612711565b60015b6116de5761163d61272e565b806308c379a01415611677575061165261274a565b8061165d5750611679565b8060405162461bcd60e51b81526004016104489190611dd0565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610448565b6001600160e01b0319811663bc197c8160e01b1461118c5760405162461bcd60e51b8152600401610448906127d4565b611718828261098f565b61066357611730816001600160a01b03166014611a57565b61173b836020611a57565b60405160200161174c92919061281c565b60408051601f198184030181529082905262461bcd60e51b825261044891600401611dd0565b61177c828261098f565b15610663576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610988836001600160a01b038416611bf3565b60055460ff1661070b5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610448565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061186f5761186f612487565b602090810291909101015292915050565b6001600160a01b0384163b15610e605760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906118c49089908990889088908890600401612891565b602060405180830381600087803b1580156118de57600080fd5b505af192505050801561190e575060408051601f3d908101601f1916820190925261190b91810190612711565b60015b61191a5761163d61272e565b6001600160e01b0319811663f23a6e6160e01b1461118c5760405162461bcd60e51b8152600401610448906127d4565b60055460ff161561070b5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610448565b60008260000182815481106119a7576119a7612487565b9060005260206000200154905092915050565b60006001600160e01b03198216637965db0b60e01b148061047657506301ffc9a760e01b6001600160e01b0319831614610476565b60055460ff1615610e605760405162461bcd60e51b815260206004820152602c60248201527f455243313135355061757361626c653a20746f6b656e207472616e736665722060448201526b1dda1a5b19481c185d5cd95960a21b6064820152608401610448565b60606000611a668360026128d6565b611a71906002612557565b67ffffffffffffffff811115611a8957611a89611de3565b6040519080825280601f01601f191660200182016040528015611ab3576020820181803683370190505b509050600360fc1b81600081518110611ace57611ace612487565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611afd57611afd612487565b60200101906001600160f81b031916908160001a9053506000611b218460026128d6565b611b2c906001612557565b90505b6001811115611ba4576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611b6057611b60612487565b1a60f81b828281518110611b7657611b76612487565b60200101906001600160f81b031916908160001a90535060049490941c93611b9d816128f5565b9050611b2f565b5083156109885760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610448565b60008181526001830160205260408120548015611cdc576000611c1760018361290c565b8554909150600090611c2b9060019061290c565b9050818114611c90576000866000018281548110611c4b57611c4b612487565b9060005260206000200154905080876000018481548110611c6e57611c6e612487565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611ca157611ca1612923565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610476565b6000915050610476565b80356001600160a01b0381168114611cfd57600080fd5b919050565b60008060408385031215611d1557600080fd5b611d1e83611ce6565b946020939093013593505050565b6001600160e01b031981168114610e7257600080fd5b600060208284031215611d5457600080fd5b813561098881611d2c565b600060208284031215611d7157600080fd5b5035919050565b60005b83811015611d93578181015183820152602001611d7b565b8381111561056d5750506000910152565b60008151808452611dbc816020860160208601611d78565b601f01601f19169290920160200192915050565b6020815260006109886020830184611da4565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715611e1f57611e1f611de3565b6040525050565b600067ffffffffffffffff821115611e4057611e40611de3565b5060051b60200190565b600082601f830112611e5b57600080fd5b81356020611e6882611e26565b604051611e758282611df9565b83815260059390931b8501820192828101915086841115611e9557600080fd5b8286015b84811015611eb05780358352918301918301611e99565b509695505050505050565b600082601f830112611ecc57600080fd5b813567ffffffffffffffff811115611ee657611ee6611de3565b604051611efd601f8301601f191660200182611df9565b818152846020838601011115611f1257600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611f4557600080fd5b611f4e85611ce6565b9350602085013567ffffffffffffffff80821115611f6b57600080fd5b611f7788838901611e4a565b94506040870135915080821115611f8d57600080fd5b611f9988838901611e4a565b93506060870135915080821115611faf57600080fd5b50611fbc87828801611ebb565b91505092959194509250565b600080600080600060a08688031215611fe057600080fd5b611fe986611ce6565b9450611ff760208701611ce6565b9350604086013567ffffffffffffffff8082111561201457600080fd5b61202089838a01611e4a565b9450606088013591508082111561203657600080fd5b61204289838a01611e4a565b9350608088013591508082111561205857600080fd5b5061206588828901611ebb565b9150509295509295909350565b6000806040838503121561208557600080fd5b8235915061209560208401611ce6565b90509250929050565b600080604083850312156120b157600080fd5b823567ffffffffffffffff808211156120c957600080fd5b818501915085601f8301126120dd57600080fd5b813560206120ea82611e26565b6040516120f78282611df9565b83815260059390931b850182019282810191508984111561211757600080fd5b948201945b8386101561213c5761212d86611ce6565b8252948201949082019061211c565b9650508601359250508082111561215257600080fd5b5061215f85828601611e4a565b9150509250929050565b600081518084526020808501945080840160005b838110156121995781518752958201959082019060010161217d565b509495945050505050565b6020815260006109886020830184612169565b6000806000606084860312156121cc57600080fd5b6121d584611ce6565b9250602084013567ffffffffffffffff808211156121f257600080fd5b6121fe87838801611e4a565b9350604086013591508082111561221457600080fd5b5061222186828701611e4a565b9150509250925092565b6000806000806080858703121561224157600080fd5b61224a85611ce6565b93506020850135925060408501359150606085013567ffffffffffffffff81111561227457600080fd5b611fbc87828801611ebb565b6000806040838503121561229357600080fd5b50508035926020909101359150565b600080604083850312156122b557600080fd5b6122be83611ce6565b9150602083013580151581146122d357600080fd5b809150509250929050565b600080604083850312156122f157600080fd5b6122fa83611ce6565b915061209560208401611ce6565b600080600080600060a0868803121561232057600080fd5b61232986611ce6565b945061233760208701611ce6565b93506040860135925060608601359150608086013567ffffffffffffffff81111561236157600080fd5b61206588828901611ebb565b60008060006060848603121561238257600080fd5b61238b84611ce6565b95602085013595506040909401359392505050565b600181811c908216806123b457607f821691505b602082108114156123d557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526038908201527f455243313135355072657365744d696e7465725061757365723a206d7573742060408201527f68617665206d696e74657220726f6c6520746f206d696e740000000000000000606082015260800190565b6020808252602f908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526e195c881b9bdc88185c1c1c9bdd9959608a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156124c7576124c761249d565b5060010190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b6000821982111561256a5761256a61249d565b500190565b6040815260006125826040830185612169565b82810360208401526125948185612169565b95945050505050565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60208082526023908201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526024908201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604082015263616e636560e01b606082015260800190565b6001600160a01b0386811682528516602082015260a0604082018190526000906126df90830186612169565b82810360608401526126f18186612169565b905082810360808401526127058185611da4565b98975050505050505050565b60006020828403121561272357600080fd5b815161098881611d2c565b600060033d11156127475760046000803e5060005160e01c5b90565b600060443d10156127585790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561278857505050505090565b82850191508151818111156127a05750505050505090565b843d87010160208285010111156127ba5750505050505090565b6127c960208286010187611df9565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612854816017850160208801611d78565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612885816028840160208801611d78565b01602801949350505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906128cb90830184611da4565b979650505050505050565b60008160001904831182151516156128f0576128f061249d565b500290565b6000816129045761290461249d565b506000190190565b60008282101561291e5761291e61249d565b500390565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220f23b72c48861ea1d650c5aa7b26b2a1da82c07a3eb091612de6e3befb8b92ecc64736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101725760003560e01c8063731133e9116100de578063ca15c87311610097578063e63ab1e911610071578063e63ab1e914610358578063e985e9c51461037f578063f242432a146103bb578063f5298aca146103ce57600080fd5b8063ca15c8731461030b578063d53913931461031e578063d547741f1461034557600080fd5b8063731133e9146102975780638456cb59146102aa5780639010d07c146102b257806391d14854146102dd578063a217fddf146102f0578063a22cb465146102f857600080fd5b80632f2ff15d116101305780632f2ff15d1461022b57806336568abe1461023e5780633f4ba83a146102515780634e1273f4146102595780635c975abb146102795780636b20c4541461028457600080fd5b8062fdd58e1461017757806301ffc9a71461019d5780630e89341c146101c05780631f7fdffa146101e0578063248a9ca3146101f55780632eb2c2d614610218575b600080fd5b61018a610185366004611d02565b6103e1565b6040519081526020015b60405180910390f35b6101b06101ab366004611d42565b61047c565b6040519015158152602001610194565b6101d36101ce366004611d5f565b610487565b6040516101949190611dd0565b6101f36101ee366004611f2f565b61051b565b005b61018a610203366004611d5f565b60009081526020819052604090206001015490565b6101f3610226366004611fc8565b610573565b6101f3610239366004612072565b6105bf565b6101f361024c366004612072565b6105e9565b6101f3610667565b61026c61026736600461209e565b61070d565b60405161019491906121a4565b60055460ff166101b0565b6101f36102923660046121b7565b610837565b6101f36102a536600461222b565b61087a565b6101f36108cc565b6102c56102c0366004612280565b610970565b6040516001600160a01b039091168152602001610194565b6101b06102eb366004612072565b61098f565b61018a600081565b6101f36103063660046122a2565b6109b8565b61018a610319366004611d5f565b6109c3565b61018a7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6101f3610353366004612072565b6109da565b61018a7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6101b061038d3660046122de565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b6101f36103c9366004612308565b6109ff565b6101f36103dc36600461236d565b610a44565b60006001600160a01b0383166104515760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b600061047682610b20565b606060048054610496906123a0565b80601f01602080910402602001604051908101604052809291908181526020018280546104c2906123a0565b801561050f5780601f106104e45761010080835404028352916020019161050f565b820191906000526020600020905b8154815290600101906020018083116104f257829003601f168201915b50505050509050919050565b6105457f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361098f565b6105615760405162461bcd60e51b8152600401610448906123db565b61056d84848484610b60565b50505050565b6001600160a01b03851633148061058f575061058f853361038d565b6105ab5760405162461bcd60e51b815260040161044890612438565b6105b88585858585610cbb565b5050505050565b6000828152602081905260409020600101546105da81610e68565b6105e48383610e75565b505050565b6001600160a01b03811633146106595760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610448565b6106638282610e97565b5050565b6106917f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a3361098f565b6107035760405162461bcd60e51b815260206004820152603b60248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f686176652070617573657220726f6c6520746f20756e706175736500000000006064820152608401610448565b61070b610eb9565b565b606081518351146107725760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610448565b6000835167ffffffffffffffff81111561078e5761078e611de3565b6040519080825280602002602001820160405280156107b7578160200160208202803683370190505b50905060005b845181101561082f576108028582815181106107db576107db612487565b60200260200101518583815181106107f5576107f5612487565b60200260200101516103e1565b82828151811061081457610814612487565b6020908102919091010152610828816124b3565b90506107bd565b509392505050565b6001600160a01b0383163314806108535750610853833361038d565b61086f5760405162461bcd60e51b815260040161044890612438565b6105e4838383610f0b565b6108a47f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361098f565b6108c05760405162461bcd60e51b8152600401610448906123db565b61056d848484846110aa565b6108f67f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a3361098f565b6109685760405162461bcd60e51b815260206004820152603960248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f686176652070617573657220726f6c6520746f207061757365000000000000006064820152608401610448565b61070b611195565b600082815260016020526040812061098890836111d2565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6106633383836111de565b6000818152600160205260408120610476906112bf565b6000828152602081905260409020600101546109f581610e68565b6105e48383610e97565b6001600160a01b038516331480610a1b5750610a1b853361038d565b610a375760405162461bcd60e51b815260040161044890612438565b6105b885858585856112c9565b6001600160a01b038316331480610a605750610a60833361038d565b610a7c5760405162461bcd60e51b815260040161044890612438565b6105e4838383611405565b610a91828261098f565b610663576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610ac73390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610988836001600160a01b038416611521565b60006001600160e01b03198216636cdb3d1360e11b1480610b5157506001600160e01b031982166303a24d0760e21b145b80610476575061047682611570565b6001600160a01b038416610b865760405162461bcd60e51b8152600401610448906124ce565b8151835114610ba75760405162461bcd60e51b81526004016104489061250f565b33610bb781600087878787611595565b60005b8451811015610c5357838181518110610bd557610bd5612487565b602002602001015160026000878481518110610bf357610bf3612487565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254610c3b9190612557565b90915550819050610c4b816124b3565b915050610bba565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610ca492919061256f565b60405180910390a46105b8816000878787876115a3565b8151835114610cdc5760405162461bcd60e51b81526004016104489061250f565b6001600160a01b038416610d025760405162461bcd60e51b81526004016104489061259d565b33610d11818787878787611595565b60005b8451811015610dfa576000858281518110610d3157610d31612487565b602002602001015190506000858381518110610d4f57610d4f612487565b60209081029190910181015160008481526002835260408082206001600160a01b038e168352909352919091205490915081811015610da05760405162461bcd60e51b8152600401610448906125e2565b60008381526002602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610ddf908490612557565b9250508190555050505080610df3906124b3565b9050610d14565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610e4a92919061256f565b60405180910390a4610e608187878787876115a3565b505050505050565b610e72813361170e565b50565b610e7f8282610a87565b60008281526001602052604090206105e49082610b0b565b610ea18282611772565b60008281526001602052604090206105e490826117d7565b610ec16117ec565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038316610f315760405162461bcd60e51b81526004016104489061262c565b8051825114610f525760405162461bcd60e51b81526004016104489061250f565b6000339050610f7581856000868660405180602001604052806000815250611595565b60005b835181101561103d576000848281518110610f9557610f95612487565b602002602001015190506000848381518110610fb357610fb3612487565b60209081029190910181015160008481526002835260408082206001600160a01b038c1683529093529190912054909150818110156110045760405162461bcd60e51b81526004016104489061266f565b60009283526002602090815260408085206001600160a01b038b1686529091529092209103905580611035816124b3565b915050610f78565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb868660405161108e92919061256f565b60405180910390a460408051602081019091526000905261056d565b6001600160a01b0384166110d05760405162461bcd60e51b8152600401610448906124ce565b3360006110dc85611835565b905060006110e985611835565b90506110fa83600089858589611595565b60008681526002602090815260408083206001600160a01b038b1684529091528120805487929061112c908490612557565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461118c83600089898989611880565b50505050505050565b61119d61194a565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610eee3390565b60006109888383611990565b816001600160a01b0316836001600160a01b031614156112525760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610448565b6001600160a01b03838116600081815260036020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6000610476825490565b6001600160a01b0384166112ef5760405162461bcd60e51b81526004016104489061259d565b3360006112fb85611835565b9050600061130885611835565b9050611318838989858589611595565b60008681526002602090815260408083206001600160a01b038c1684529091529020548581101561135b5760405162461bcd60e51b8152600401610448906125e2565b60008781526002602090815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061139a908490612557565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46113fa848a8a8a8a8a611880565b505050505050505050565b6001600160a01b03831661142b5760405162461bcd60e51b81526004016104489061262c565b33600061143784611835565b9050600061144484611835565b905061146483876000858560405180602001604052806000815250611595565b60008581526002602090815260408083206001600160a01b038a168452909152902054848110156114a75760405162461bcd60e51b81526004016104489061266f565b60008681526002602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091526000905261118c565b600081815260018301602052604081205461156857508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610476565b506000610476565b60006001600160e01b03198216635a05180f60e01b14806104765750610476826119ba565b610e608686868686866119ef565b6001600160a01b0384163b15610e605760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906115e790899089908890889088906004016126b3565b602060405180830381600087803b15801561160157600080fd5b505af1925050508015611631575060408051601f3d908101601f1916820190925261162e91810190612711565b60015b6116de5761163d61272e565b806308c379a01415611677575061165261274a565b8061165d5750611679565b8060405162461bcd60e51b81526004016104489190611dd0565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610448565b6001600160e01b0319811663bc197c8160e01b1461118c5760405162461bcd60e51b8152600401610448906127d4565b611718828261098f565b61066357611730816001600160a01b03166014611a57565b61173b836020611a57565b60405160200161174c92919061281c565b60408051601f198184030181529082905262461bcd60e51b825261044891600401611dd0565b61177c828261098f565b15610663576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610988836001600160a01b038416611bf3565b60055460ff1661070b5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610448565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061186f5761186f612487565b602090810291909101015292915050565b6001600160a01b0384163b15610e605760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906118c49089908990889088908890600401612891565b602060405180830381600087803b1580156118de57600080fd5b505af192505050801561190e575060408051601f3d908101601f1916820190925261190b91810190612711565b60015b61191a5761163d61272e565b6001600160e01b0319811663f23a6e6160e01b1461118c5760405162461bcd60e51b8152600401610448906127d4565b60055460ff161561070b5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610448565b60008260000182815481106119a7576119a7612487565b9060005260206000200154905092915050565b60006001600160e01b03198216637965db0b60e01b148061047657506301ffc9a760e01b6001600160e01b0319831614610476565b60055460ff1615610e605760405162461bcd60e51b815260206004820152602c60248201527f455243313135355061757361626c653a20746f6b656e207472616e736665722060448201526b1dda1a5b19481c185d5cd95960a21b6064820152608401610448565b60606000611a668360026128d6565b611a71906002612557565b67ffffffffffffffff811115611a8957611a89611de3565b6040519080825280601f01601f191660200182016040528015611ab3576020820181803683370190505b509050600360fc1b81600081518110611ace57611ace612487565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611afd57611afd612487565b60200101906001600160f81b031916908160001a9053506000611b218460026128d6565b611b2c906001612557565b90505b6001811115611ba4576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611b6057611b60612487565b1a60f81b828281518110611b7657611b76612487565b60200101906001600160f81b031916908160001a90535060049490941c93611b9d816128f5565b9050611b2f565b5083156109885760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610448565b60008181526001830160205260408120548015611cdc576000611c1760018361290c565b8554909150600090611c2b9060019061290c565b9050818114611c90576000866000018281548110611c4b57611c4b612487565b9060005260206000200154905080876000018481548110611c6e57611c6e612487565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611ca157611ca1612923565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610476565b6000915050610476565b80356001600160a01b0381168114611cfd57600080fd5b919050565b60008060408385031215611d1557600080fd5b611d1e83611ce6565b946020939093013593505050565b6001600160e01b031981168114610e7257600080fd5b600060208284031215611d5457600080fd5b813561098881611d2c565b600060208284031215611d7157600080fd5b5035919050565b60005b83811015611d93578181015183820152602001611d7b565b8381111561056d5750506000910152565b60008151808452611dbc816020860160208601611d78565b601f01601f19169290920160200192915050565b6020815260006109886020830184611da4565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715611e1f57611e1f611de3565b6040525050565b600067ffffffffffffffff821115611e4057611e40611de3565b5060051b60200190565b600082601f830112611e5b57600080fd5b81356020611e6882611e26565b604051611e758282611df9565b83815260059390931b8501820192828101915086841115611e9557600080fd5b8286015b84811015611eb05780358352918301918301611e99565b509695505050505050565b600082601f830112611ecc57600080fd5b813567ffffffffffffffff811115611ee657611ee6611de3565b604051611efd601f8301601f191660200182611df9565b818152846020838601011115611f1257600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611f4557600080fd5b611f4e85611ce6565b9350602085013567ffffffffffffffff80821115611f6b57600080fd5b611f7788838901611e4a565b94506040870135915080821115611f8d57600080fd5b611f9988838901611e4a565b93506060870135915080821115611faf57600080fd5b50611fbc87828801611ebb565b91505092959194509250565b600080600080600060a08688031215611fe057600080fd5b611fe986611ce6565b9450611ff760208701611ce6565b9350604086013567ffffffffffffffff8082111561201457600080fd5b61202089838a01611e4a565b9450606088013591508082111561203657600080fd5b61204289838a01611e4a565b9350608088013591508082111561205857600080fd5b5061206588828901611ebb565b9150509295509295909350565b6000806040838503121561208557600080fd5b8235915061209560208401611ce6565b90509250929050565b600080604083850312156120b157600080fd5b823567ffffffffffffffff808211156120c957600080fd5b818501915085601f8301126120dd57600080fd5b813560206120ea82611e26565b6040516120f78282611df9565b83815260059390931b850182019282810191508984111561211757600080fd5b948201945b8386101561213c5761212d86611ce6565b8252948201949082019061211c565b9650508601359250508082111561215257600080fd5b5061215f85828601611e4a565b9150509250929050565b600081518084526020808501945080840160005b838110156121995781518752958201959082019060010161217d565b509495945050505050565b6020815260006109886020830184612169565b6000806000606084860312156121cc57600080fd5b6121d584611ce6565b9250602084013567ffffffffffffffff808211156121f257600080fd5b6121fe87838801611e4a565b9350604086013591508082111561221457600080fd5b5061222186828701611e4a565b9150509250925092565b6000806000806080858703121561224157600080fd5b61224a85611ce6565b93506020850135925060408501359150606085013567ffffffffffffffff81111561227457600080fd5b611fbc87828801611ebb565b6000806040838503121561229357600080fd5b50508035926020909101359150565b600080604083850312156122b557600080fd5b6122be83611ce6565b9150602083013580151581146122d357600080fd5b809150509250929050565b600080604083850312156122f157600080fd5b6122fa83611ce6565b915061209560208401611ce6565b600080600080600060a0868803121561232057600080fd5b61232986611ce6565b945061233760208701611ce6565b93506040860135925060608601359150608086013567ffffffffffffffff81111561236157600080fd5b61206588828901611ebb565b60008060006060848603121561238257600080fd5b61238b84611ce6565b95602085013595506040909401359392505050565b600181811c908216806123b457607f821691505b602082108114156123d557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526038908201527f455243313135355072657365744d696e7465725061757365723a206d7573742060408201527f68617665206d696e74657220726f6c6520746f206d696e740000000000000000606082015260800190565b6020808252602f908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526e195c881b9bdc88185c1c1c9bdd9959608a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156124c7576124c761249d565b5060010190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b6000821982111561256a5761256a61249d565b500190565b6040815260006125826040830185612169565b82810360208401526125948185612169565b95945050505050565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60208082526023908201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526024908201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604082015263616e636560e01b606082015260800190565b6001600160a01b0386811682528516602082015260a0604082018190526000906126df90830186612169565b82810360608401526126f18186612169565b905082810360808401526127058185611da4565b98975050505050505050565b60006020828403121561272357600080fd5b815161098881611d2c565b600060033d11156127475760046000803e5060005160e01c5b90565b600060443d10156127585790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561278857505050505090565b82850191508151818111156127a05750505050505090565b843d87010160208285010111156127ba5750505050505090565b6127c960208286010187611df9565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612854816017850160208801611d78565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612885816028840160208801611d78565b01602801949350505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906128cb90830184611da4565b979650505050505050565b60008160001904831182151516156128f0576128f061249d565b500290565b6000816129045761290461249d565b506000190190565b60008282101561291e5761291e61249d565b500390565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220f23b72c48861ea1d650c5aa7b26b2a1da82c07a3eb091612de6e3befb8b92ecc64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/utils/ERC1155Holder":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Holder","sourceName":"contracts/token/ERC1155/utils/ERC1155Holder.sol","abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506103c5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a714610046578063bc197c811461006e578063f23a6e61146100a6575b600080fd5b6100596100543660046100fc565b6100c5565b60405190151581526020015b60405180910390f35b61008d61007c366004610280565b63bc197c8160e01b95945050505050565b6040516001600160e01b03199091168152602001610065565b61008d6100b436600461032a565b63f23a6e6160e01b95945050505050565b60006001600160e01b03198216630271189760e51b14806100f657506301ffc9a760e01b6001600160e01b03198316145b92915050565b60006020828403121561010e57600080fd5b81356001600160e01b03198116811461012657600080fd5b9392505050565b80356001600160a01b038116811461014457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561018857610188610149565b604052919050565b600082601f8301126101a157600080fd5b8135602067ffffffffffffffff8211156101bd576101bd610149565b8160051b6101cc82820161015f565b92835284810182019282810190878511156101e657600080fd5b83870192505b84831015610205578235825291830191908301906101ec565b979650505050505050565b600082601f83011261022157600080fd5b813567ffffffffffffffff81111561023b5761023b610149565b61024e601f8201601f191660200161015f565b81815284602083860101111561026357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561029857600080fd5b6102a18661012d565b94506102af6020870161012d565b9350604086013567ffffffffffffffff808211156102cc57600080fd5b6102d889838a01610190565b945060608801359150808211156102ee57600080fd5b6102fa89838a01610190565b9350608088013591508082111561031057600080fd5b5061031d88828901610210565b9150509295509295909350565b600080600080600060a0868803121561034257600080fd5b61034b8661012d565b94506103596020870161012d565b93506040860135925060608601359150608086013567ffffffffffffffff81111561038357600080fd5b61031d8882890161021056fea2646970667358221220017f716b93360c6547823d1a00353560c3ee01dab8ebc26c9d45dc0fef87f03364736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a714610046578063bc197c811461006e578063f23a6e61146100a6575b600080fd5b6100596100543660046100fc565b6100c5565b60405190151581526020015b60405180910390f35b61008d61007c366004610280565b63bc197c8160e01b95945050505050565b6040516001600160e01b03199091168152602001610065565b61008d6100b436600461032a565b63f23a6e6160e01b95945050505050565b60006001600160e01b03198216630271189760e51b14806100f657506301ffc9a760e01b6001600160e01b03198316145b92915050565b60006020828403121561010e57600080fd5b81356001600160e01b03198116811461012657600080fd5b9392505050565b80356001600160a01b038116811461014457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561018857610188610149565b604052919050565b600082601f8301126101a157600080fd5b8135602067ffffffffffffffff8211156101bd576101bd610149565b8160051b6101cc82820161015f565b92835284810182019282810190878511156101e657600080fd5b83870192505b84831015610205578235825291830191908301906101ec565b979650505050505050565b600082601f83011261022157600080fd5b813567ffffffffffffffff81111561023b5761023b610149565b61024e601f8201601f191660200161015f565b81815284602083860101111561026357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561029857600080fd5b6102a18661012d565b94506102af6020870161012d565b9350604086013567ffffffffffffffff808211156102cc57600080fd5b6102d889838a01610190565b945060608801359150808211156102ee57600080fd5b6102fa89838a01610190565b9350608088013591508082111561031057600080fd5b5061031d88828901610210565b9150509295509295909350565b600080600080600060a0868803121561034257600080fd5b61034b8661012d565b94506103596020870161012d565b93506040860135925060608601359150608086013567ffffffffffffffff81111561038357600080fd5b61031d8882890161021056fea2646970667358221220017f716b93360c6547823d1a00353560c3ee01dab8ebc26c9d45dc0fef87f03364736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC1155/utils/ERC1155Receiver":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Receiver","sourceName":"contracts/token/ERC1155/utils/ERC1155Receiver.sol","abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/ERC20":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20","sourceName":"contracts/token/ERC20/ERC20.sol","abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162000b1938038062000b198339810160408190526200003491620001db565b81516200004990600390602085019062000068565b5080516200005f90600490602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b61088780620002926000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c391906106c4565b60405180910390f35b6100df6100da366004610735565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f36600461075f565b61024a565b604051601281526020016100c3565b6100df610131366004610735565b61026e565b6100f361014436600461079b565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df610175366004610735565b61029f565b6100df610188366004610735565b61031f565b6100f361019b3660046107bd565b61032d565b6060600380546101af906107f0565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107f0565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b919061082b565b610358565b6060600480546101af906107f0565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061066b90849061082b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106b791815260200190565b60405180910390a36104f0565b600060208083528351808285015260005b818110156106f1578581018301518582016040015282016106d5565b81811115610703576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461073057600080fd5b919050565b6000806040838503121561074857600080fd5b61075183610719565b946020939093013593505050565b60008060006060848603121561077457600080fd5b61077d84610719565b925061078b60208501610719565b9150604084013590509250925092565b6000602082840312156107ad57600080fd5b6107b682610719565b9392505050565b600080604083850312156107d057600080fd5b6107d983610719565b91506107e760208401610719565b90509250929050565b600181811c9082168061080457607f821691505b6020821081141561082557634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561084c57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220701d02b02100b16cb72e770d2f394f3d0fad6d2f51381cf7f917c7cf674e18b364736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c391906106c4565b60405180910390f35b6100df6100da366004610735565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f36600461075f565b61024a565b604051601281526020016100c3565b6100df610131366004610735565b61026e565b6100f361014436600461079b565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df610175366004610735565b61029f565b6100df610188366004610735565b61031f565b6100f361019b3660046107bd565b61032d565b6060600380546101af906107f0565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107f0565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b919061082b565b610358565b6060600480546101af906107f0565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061066b90849061082b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106b791815260200190565b60405180910390a36104f0565b600060208083528351808285015260005b818110156106f1578581018301518582016040015282016106d5565b81811115610703576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461073057600080fd5b919050565b6000806040838503121561074857600080fd5b61075183610719565b946020939093013593505050565b60008060006060848603121561077457600080fd5b61077d84610719565b925061078b60208501610719565b9150604084013590509250925092565b6000602082840312156107ad57600080fd5b6107b682610719565b9392505050565b600080604083850312156107d057600080fd5b6107d983610719565b91506107e760208401610719565b90509250929050565b600181811c9082168061080457607f821691505b6020821081141561082557634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561084c57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220701d02b02100b16cb72e770d2f394f3d0fad6d2f51381cf7f917c7cf674e18b364736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20Permit":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20Permit","sourceName":"contracts/token/ERC20/extensions/draft-ERC20Permit.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/IERC20Permit":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC20Permit","sourceName":"contracts/token/ERC20/extensions/draft-IERC20Permit.sol","abi":[{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20Burnable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20Burnable","sourceName":"contracts/token/ERC20/extensions/ERC20Burnable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20Capped":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20Capped","sourceName":"contracts/token/ERC20/extensions/ERC20Capped.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20FlashMint":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20FlashMint","sourceName":"contracts/token/ERC20/extensions/ERC20FlashMint.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"flashFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"flashLoan","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"maxFlashLoan","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20Pausable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20Pausable","sourceName":"contracts/token/ERC20/extensions/ERC20Pausable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20Snapshot":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20Snapshot","sourceName":"contracts/token/ERC20/extensions/ERC20Snapshot.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Snapshot","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"name":"balanceOfAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"name":"totalSupplyAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20Votes":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20Votes","sourceName":"contracts/token/ERC20/extensions/ERC20Votes.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint32","name":"pos","type":"uint32"}],"name":"checkpoints","outputs":[{"components":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint224","name":"votes","type":"uint224"}],"internalType":"struct ERC20Votes.Checkpoint","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20VotesComp":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20VotesComp","sourceName":"contracts/token/ERC20/extensions/ERC20VotesComp.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint32","name":"pos","type":"uint32"}],"name":"checkpoints","outputs":[{"components":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint224","name":"votes","type":"uint224"}],"internalType":"struct ERC20Votes.Checkpoint","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC20Wrapper":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20Wrapper","sourceName":"contracts/token/ERC20/extensions/ERC20Wrapper.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/ERC4626":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC4626","sourceName":"contracts/token/ERC20/extensions/ERC4626.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"convertToShares","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/extensions/IERC20Metadata":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC20Metadata","sourceName":"contracts/token/ERC20/extensions/IERC20Metadata.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/IERC20":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC20","sourceName":"contracts/token/ERC20/IERC20.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/presets/ERC20PresetFixedSupply":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20PresetFixedSupply","sourceName":"contracts/token/ERC20/presets/ERC20PresetFixedSupply.sol","abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162000e6038038062000e608339810160408190526200003491620002dd565b8351849084906200004d9060039060208501906200016a565b508051620000639060049060208401906200016a565b5050506200007881836200008260201b60201c565b50505050620003d6565b6001600160a01b038216620000dd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000f1919062000372565b90915550506001600160a01b038216600090815260208190526040812080548392906200012090849062000372565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001789062000399565b90600052602060002090601f0160209004810192826200019c5760008555620001e7565b82601f10620001b757805160ff1916838001178555620001e7565b82800160010185558215620001e7579182015b82811115620001e7578251825591602001919060010190620001ca565b50620001f5929150620001f9565b5090565b5b80821115620001f55760008155600101620001fa565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200023857600080fd5b81516001600160401b038082111562000255576200025562000210565b604051601f8301601f19908116603f0116810190828211818310171562000280576200028062000210565b816040528381526020925086838588010111156200029d57600080fd5b600091505b83821015620002c15785820183015181830184015290820190620002a2565b83821115620002d35760008385830101525b9695505050505050565b60008060008060808587031215620002f457600080fd5b84516001600160401b03808211156200030c57600080fd5b6200031a8883890162000226565b955060208701519150808211156200033157600080fd5b50620003408782880162000226565b60408701516060880151919550935090506001600160a01b03811681146200036757600080fd5b939692955090935050565b600082198211156200039457634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620003ae57607f821691505b60208210811415620003d057634e487b7160e01b600052602260045260246000fd5b50919050565b610a7a80620003e66000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101ad578063a457c2d7146101b5578063a9059cbb146101c8578063dd62ed3e146101db57600080fd5b806342966c681461015c57806370a082311461017157806379cc67901461019a57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a5780633950935114610149575b600080fd5b6100dc6101ee565b6040516100e9919061087f565b60405180910390f35b6101056101003660046108f0565b610280565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b61010561013536600461091a565b610298565b604051601281526020016100e9565b6101056101573660046108f0565b6102bc565b61016f61016a366004610956565b6102de565b005b61011961017f36600461096f565b6001600160a01b031660009081526020819052604090205490565b61016f6101a83660046108f0565b6102eb565b6100dc610304565b6101056101c33660046108f0565b610313565b6101056101d63660046108f0565b610393565b6101196101e9366004610991565b6103a1565b6060600380546101fd906109c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610229906109c4565b80156102765780601f1061024b57610100808354040283529160200191610276565b820191906000526020600020905b81548152906001019060200180831161025957829003601f168201915b5050505050905090565b60003361028e8185856103cc565b5060019392505050565b6000336102a68582856104f1565b6102b185858561056b565b506001949350505050565b60003361028e8185856102cf83836103a1565b6102d99190610a15565b6103cc565b6102e83382610739565b50565b6102f68233836104f1565b6103008282610739565b5050565b6060600480546101fd906109c4565b6000338161032182866103a1565b9050838110156103865760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102b182868684036103cc565b60003361028e81858561056b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661042e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161037d565b6001600160a01b03821661048f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161037d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104fd84846103a1565b9050600019811461056557818110156105585760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161037d565b61056584848484036103cc565b50505050565b6001600160a01b0383166105cf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161037d565b6001600160a01b0382166106315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161037d565b6001600160a01b038316600090815260208190526040902054818110156106a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161037d565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106e0908490610a15565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161072c91815260200190565b60405180910390a3610565565b6001600160a01b0382166107995760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161037d565b6001600160a01b0382166000908152602081905260409020548181101561080d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161037d565b6001600160a01b038316600090815260208190526040812083830390556002805484929061083c908490610a2d565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016104e4565b600060208083528351808285015260005b818110156108ac57858101830151858201604001528201610890565b818111156108be576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146108eb57600080fd5b919050565b6000806040838503121561090357600080fd5b61090c836108d4565b946020939093013593505050565b60008060006060848603121561092f57600080fd5b610938846108d4565b9250610946602085016108d4565b9150604084013590509250925092565b60006020828403121561096857600080fd5b5035919050565b60006020828403121561098157600080fd5b61098a826108d4565b9392505050565b600080604083850312156109a457600080fd5b6109ad836108d4565b91506109bb602084016108d4565b90509250929050565b600181811c908216806109d857607f821691505b602082108114156109f957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610a2857610a286109ff565b500190565b600082821015610a3f57610a3f6109ff565b50039056fea2646970667358221220dc132e0f3aa42d082859bdc07e1b4889eb86baeb5b4f060715848c54b723ece964736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101ad578063a457c2d7146101b5578063a9059cbb146101c8578063dd62ed3e146101db57600080fd5b806342966c681461015c57806370a082311461017157806379cc67901461019a57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a5780633950935114610149575b600080fd5b6100dc6101ee565b6040516100e9919061087f565b60405180910390f35b6101056101003660046108f0565b610280565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b61010561013536600461091a565b610298565b604051601281526020016100e9565b6101056101573660046108f0565b6102bc565b61016f61016a366004610956565b6102de565b005b61011961017f36600461096f565b6001600160a01b031660009081526020819052604090205490565b61016f6101a83660046108f0565b6102eb565b6100dc610304565b6101056101c33660046108f0565b610313565b6101056101d63660046108f0565b610393565b6101196101e9366004610991565b6103a1565b6060600380546101fd906109c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610229906109c4565b80156102765780601f1061024b57610100808354040283529160200191610276565b820191906000526020600020905b81548152906001019060200180831161025957829003601f168201915b5050505050905090565b60003361028e8185856103cc565b5060019392505050565b6000336102a68582856104f1565b6102b185858561056b565b506001949350505050565b60003361028e8185856102cf83836103a1565b6102d99190610a15565b6103cc565b6102e83382610739565b50565b6102f68233836104f1565b6103008282610739565b5050565b6060600480546101fd906109c4565b6000338161032182866103a1565b9050838110156103865760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102b182868684036103cc565b60003361028e81858561056b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661042e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161037d565b6001600160a01b03821661048f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161037d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104fd84846103a1565b9050600019811461056557818110156105585760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161037d565b61056584848484036103cc565b50505050565b6001600160a01b0383166105cf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161037d565b6001600160a01b0382166106315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161037d565b6001600160a01b038316600090815260208190526040902054818110156106a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161037d565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106e0908490610a15565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161072c91815260200190565b60405180910390a3610565565b6001600160a01b0382166107995760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161037d565b6001600160a01b0382166000908152602081905260409020548181101561080d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161037d565b6001600160a01b038316600090815260208190526040812083830390556002805484929061083c908490610a2d565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016104e4565b600060208083528351808285015260005b818110156108ac57858101830151858201604001528201610890565b818111156108be576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146108eb57600080fd5b919050565b6000806040838503121561090357600080fd5b61090c836108d4565b946020939093013593505050565b60008060006060848603121561092f57600080fd5b610938846108d4565b9250610946602085016108d4565b9150604084013590509250925092565b60006020828403121561096857600080fd5b5035919050565b60006020828403121561098157600080fd5b61098a826108d4565b9392505050565b600080604083850312156109a457600080fd5b6109ad836108d4565b91506109bb602084016108d4565b90509250929050565b600181811c908216806109d857607f821691505b602082108114156109f957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610a2857610a286109ff565b500190565b600082821015610a3f57610a3f6109ff565b50039056fea2646970667358221220dc132e0f3aa42d082859bdc07e1b4889eb86baeb5b4f060715848c54b723ece964736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/presets/ERC20PresetMinterPauser":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC20PresetMinterPauser","sourceName":"contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol","abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162001d6638038062001d668339810160408190526200003491620003b5565b8151829082906200004d90600590602085019062000242565b5080516200006390600690602084019062000242565b50506007805460ff19169055506200007d600033620000dd565b620000a97f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000dd565b620000d57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620000dd565b50506200045c565b620000e98282620000ed565b5050565b6200010482826200013060201b6200093d1760201c565b60008281526001602090815260409091206200012b918390620009c1620001d0821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000e9576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556200018c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001e7836001600160a01b038416620001f0565b90505b92915050565b60008181526001830160205260408120546200023957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620001ea565b506000620001ea565b82805462000250906200041f565b90600052602060002090601f016020900481019282620002745760008555620002bf565b82601f106200028f57805160ff1916838001178555620002bf565b82800160010185558215620002bf579182015b82811115620002bf578251825591602001919060010190620002a2565b50620002cd929150620002d1565b5090565b5b80821115620002cd5760008155600101620002d2565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200031057600080fd5b81516001600160401b03808211156200032d576200032d620002e8565b604051601f8301601f19908116603f01168101908282118183101715620003585762000358620002e8565b816040528381526020925086838588010111156200037557600080fd5b600091505b838210156200039957858201830151818301840152908201906200037a565b83821115620003ab5760008385830101525b9695505050505050565b60008060408385031215620003c957600080fd5b82516001600160401b0380821115620003e157600080fd5b620003ef86838701620002fe565b935060208501519150808211156200040657600080fd5b506200041585828601620002fe565b9150509250929050565b600181811c908216806200043457607f821691505b602082108114156200045657634e487b7160e01b600052602260045260246000fd5b50919050565b6118fa806200046c6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063a457c2d711610097578063d539139311610071578063d5391393146103af578063d547741f146103d6578063dd62ed3e146103e9578063e63ab1e9146103fc57600080fd5b8063a457c2d714610376578063a9059cbb14610389578063ca15c8731461039c57600080fd5b80639010d07c116100d35780639010d07c1461032857806391d148541461035357806395d89b4114610366578063a217fddf1461036e57600080fd5b806370a08231146102e457806379cc67901461030d5780638456cb591461032057600080fd5b8063313ce567116101665780633f4ba83a116101405780633f4ba83a146102ab57806340c10f19146102b357806342966c68146102c65780635c975abb146102d957600080fd5b8063313ce5671461027657806336568abe14610285578063395093511461029857600080fd5b806318160ddd116101a257806318160ddd1461021957806323b872dd1461022b578063248a9ca31461023e5780632f2ff15d1461026157600080fd5b806301ffc9a7146101c957806306fdde03146101f1578063095ea7b314610206575b600080fd5b6101dc6101d73660046115a0565b610423565b60405190151581526020015b60405180910390f35b6101f961044e565b6040516101e891906115f6565b6101dc610214366004611645565b6104e0565b6004545b6040519081526020016101e8565b6101dc61023936600461166f565b6104f8565b61021d61024c3660046116ab565b60009081526020819052604090206001015490565b61027461026f3660046116c4565b61051c565b005b604051601281526020016101e8565b6102746102933660046116c4565b610546565b6101dc6102a6366004611645565b6105c9565b6102746105eb565b6102746102c1366004611645565b610691565b6102746102d43660046116ab565b610730565b60075460ff166101dc565b61021d6102f23660046116f0565b6001600160a01b031660009081526002602052604090205490565b61027461031b366004611645565b61073d565b610274610752565b61033b61033636600461170b565b6107f6565b6040516001600160a01b0390911681526020016101e8565b6101dc6103613660046116c4565b610815565b6101f961083e565b61021d600081565b6101dc610384366004611645565b61084d565b6101dc610397366004611645565b6108c8565b61021d6103aa3660046116ab565b6108d6565b61021d7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102746103e43660046116c4565b6108ed565b61021d6103f736600461172d565b610912565b61021d7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60006001600160e01b03198216635a05180f60e01b14806104485750610448826109d6565b92915050565b60606005805461045d90611757565b80601f016020809104026020016040519081016040528092919081815260200182805461048990611757565b80156104d65780601f106104ab576101008083540402835291602001916104d6565b820191906000526020600020905b8154815290600101906020018083116104b957829003601f168201915b5050505050905090565b6000336104ee818585610a0b565b5060019392505050565b600033610506858285610b2f565b610511858585610ba9565b506001949350505050565b60008281526020819052604090206001015461053781610d82565b6105418383610d8c565b505050565b6001600160a01b03811633146105bb5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105c58282610dae565b5050565b6000336104ee8185856105dc8383610912565b6105e691906117a8565b610a0b565b6106157f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610815565b6106875760405162461bcd60e51b815260206004820152603960248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20756e70617573650000000000000060648201526084016105b2565b61068f610dd0565b565b6106bb7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610815565b6107265760405162461bcd60e51b815260206004820152603660248201527f45524332305072657365744d696e7465725061757365723a206d7573742068616044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b60648201526084016105b2565b6105c58282610e22565b61073a3382610f0d565b50565b610748823383610b2f565b6105c58282610f0d565b61077c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610815565b6107ee5760405162461bcd60e51b815260206004820152603760248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20706175736500000000000000000060648201526084016105b2565b61068f611067565b600082815260016020526040812061080e90836110a4565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60606006805461045d90611757565b6000338161085b8286610912565b9050838110156108bb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105b2565b6105118286868403610a0b565b6000336104ee818585610ba9565b6000818152600160205260408120610448906110b0565b60008281526020819052604090206001015461090881610d82565b6105418383610dae565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6109478282610815565b6105c5576000828152602081815260408083206001600160a01b03851684529091529020805460ff1916600117905561097d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600061080e836001600160a01b0384166110ba565b60006001600160e01b03198216637965db0b60e01b148061044857506301ffc9a760e01b6001600160e01b0319831614610448565b6001600160a01b038316610a6d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105b2565b6001600160a01b038216610ace5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105b2565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610b3b8484610912565b90506000198114610ba35781811015610b965760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105b2565b610ba38484848403610a0b565b50505050565b6001600160a01b038316610c0d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105b2565b6001600160a01b038216610c6f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105b2565b610c7a838383611109565b6001600160a01b03831660009081526002602052604090205481811015610cf25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105b2565b6001600160a01b03808516600090815260026020526040808220858503905591851681529081208054849290610d299084906117a8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d7591815260200190565b60405180910390a3610ba3565b61073a8133611114565b610d96828261093d565b600082815260016020526040902061054190826109c1565b610db88282611178565b600082815260016020526040902061054190826111dd565b610dd86111f2565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610e785760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105b2565b610e8460008383611109565b8060046000828254610e9691906117a8565b90915550506001600160a01b03821660009081526002602052604081208054839290610ec39084906117a8565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216610f6d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105b2565b610f7982600083611109565b6001600160a01b03821660009081526002602052604090205481811015610fed5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105b2565b6001600160a01b038316600090815260026020526040812083830390556004805484929061101c9084906117c0565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b61106f61123b565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610e053390565b600061080e8383611281565b6000610448825490565b600081815260018301602052604081205461110157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610448565b506000610448565b6105418383836112ab565b61111e8282610815565b6105c557611136816001600160a01b03166014611311565b611141836020611311565b6040516020016111529291906117d7565b60408051601f198184030181529082905262461bcd60e51b82526105b2916004016115f6565b6111828282610815565b156105c5576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600061080e836001600160a01b0384166114ad565b60075460ff1661068f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105b2565b60075460ff161561068f5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105b2565b60008260000182815481106112985761129861184c565b9060005260206000200154905092915050565b60075460ff16156105415760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b60648201526084016105b2565b60606000611320836002611862565b61132b9060026117a8565b67ffffffffffffffff81111561134357611343611881565b6040519080825280601f01601f19166020018201604052801561136d576020820181803683370190505b509050600360fc1b816000815181106113885761138861184c565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106113b7576113b761184c565b60200101906001600160f81b031916908160001a90535060006113db846002611862565b6113e69060016117a8565b90505b600181111561145e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061141a5761141a61184c565b1a60f81b8282815181106114305761143061184c565b60200101906001600160f81b031916908160001a90535060049490941c9361145781611897565b90506113e9565b50831561080e5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105b2565b600081815260018301602052604081205480156115965760006114d16001836117c0565b85549091506000906114e5906001906117c0565b905081811461154a5760008660000182815481106115055761150561184c565b90600052602060002001549050808760000184815481106115285761152861184c565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061155b5761155b6118ae565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610448565b6000915050610448565b6000602082840312156115b257600080fd5b81356001600160e01b03198116811461080e57600080fd5b60005b838110156115e55781810151838201526020016115cd565b83811115610ba35750506000910152565b60208152600082518060208401526116158160408501602087016115ca565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461164057600080fd5b919050565b6000806040838503121561165857600080fd5b61166183611629565b946020939093013593505050565b60008060006060848603121561168457600080fd5b61168d84611629565b925061169b60208501611629565b9150604084013590509250925092565b6000602082840312156116bd57600080fd5b5035919050565b600080604083850312156116d757600080fd5b823591506116e760208401611629565b90509250929050565b60006020828403121561170257600080fd5b61080e82611629565b6000806040838503121561171e57600080fd5b50508035926020909101359150565b6000806040838503121561174057600080fd5b61174983611629565b91506116e760208401611629565b600181811c9082168061176b57607f821691505b6020821081141561178c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156117bb576117bb611792565b500190565b6000828210156117d2576117d2611792565b500390565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161180f8160178501602088016115ca565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516118408160288401602088016115ca565b01602801949350505050565b634e487b7160e01b600052603260045260246000fd5b600081600019048311821515161561187c5761187c611792565b500290565b634e487b7160e01b600052604160045260246000fd5b6000816118a6576118a6611792565b506000190190565b634e487b7160e01b600052603160045260246000fdfea264697066735822122048c66a7206666f4e204e67398e5f8308e3aacac953e70d07d306c4815a38f61464736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063a457c2d711610097578063d539139311610071578063d5391393146103af578063d547741f146103d6578063dd62ed3e146103e9578063e63ab1e9146103fc57600080fd5b8063a457c2d714610376578063a9059cbb14610389578063ca15c8731461039c57600080fd5b80639010d07c116100d35780639010d07c1461032857806391d148541461035357806395d89b4114610366578063a217fddf1461036e57600080fd5b806370a08231146102e457806379cc67901461030d5780638456cb591461032057600080fd5b8063313ce567116101665780633f4ba83a116101405780633f4ba83a146102ab57806340c10f19146102b357806342966c68146102c65780635c975abb146102d957600080fd5b8063313ce5671461027657806336568abe14610285578063395093511461029857600080fd5b806318160ddd116101a257806318160ddd1461021957806323b872dd1461022b578063248a9ca31461023e5780632f2ff15d1461026157600080fd5b806301ffc9a7146101c957806306fdde03146101f1578063095ea7b314610206575b600080fd5b6101dc6101d73660046115a0565b610423565b60405190151581526020015b60405180910390f35b6101f961044e565b6040516101e891906115f6565b6101dc610214366004611645565b6104e0565b6004545b6040519081526020016101e8565b6101dc61023936600461166f565b6104f8565b61021d61024c3660046116ab565b60009081526020819052604090206001015490565b61027461026f3660046116c4565b61051c565b005b604051601281526020016101e8565b6102746102933660046116c4565b610546565b6101dc6102a6366004611645565b6105c9565b6102746105eb565b6102746102c1366004611645565b610691565b6102746102d43660046116ab565b610730565b60075460ff166101dc565b61021d6102f23660046116f0565b6001600160a01b031660009081526002602052604090205490565b61027461031b366004611645565b61073d565b610274610752565b61033b61033636600461170b565b6107f6565b6040516001600160a01b0390911681526020016101e8565b6101dc6103613660046116c4565b610815565b6101f961083e565b61021d600081565b6101dc610384366004611645565b61084d565b6101dc610397366004611645565b6108c8565b61021d6103aa3660046116ab565b6108d6565b61021d7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102746103e43660046116c4565b6108ed565b61021d6103f736600461172d565b610912565b61021d7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60006001600160e01b03198216635a05180f60e01b14806104485750610448826109d6565b92915050565b60606005805461045d90611757565b80601f016020809104026020016040519081016040528092919081815260200182805461048990611757565b80156104d65780601f106104ab576101008083540402835291602001916104d6565b820191906000526020600020905b8154815290600101906020018083116104b957829003601f168201915b5050505050905090565b6000336104ee818585610a0b565b5060019392505050565b600033610506858285610b2f565b610511858585610ba9565b506001949350505050565b60008281526020819052604090206001015461053781610d82565b6105418383610d8c565b505050565b6001600160a01b03811633146105bb5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105c58282610dae565b5050565b6000336104ee8185856105dc8383610912565b6105e691906117a8565b610a0b565b6106157f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610815565b6106875760405162461bcd60e51b815260206004820152603960248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20756e70617573650000000000000060648201526084016105b2565b61068f610dd0565b565b6106bb7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610815565b6107265760405162461bcd60e51b815260206004820152603660248201527f45524332305072657365744d696e7465725061757365723a206d7573742068616044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b60648201526084016105b2565b6105c58282610e22565b61073a3382610f0d565b50565b610748823383610b2f565b6105c58282610f0d565b61077c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610815565b6107ee5760405162461bcd60e51b815260206004820152603760248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20706175736500000000000000000060648201526084016105b2565b61068f611067565b600082815260016020526040812061080e90836110a4565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60606006805461045d90611757565b6000338161085b8286610912565b9050838110156108bb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105b2565b6105118286868403610a0b565b6000336104ee818585610ba9565b6000818152600160205260408120610448906110b0565b60008281526020819052604090206001015461090881610d82565b6105418383610dae565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6109478282610815565b6105c5576000828152602081815260408083206001600160a01b03851684529091529020805460ff1916600117905561097d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600061080e836001600160a01b0384166110ba565b60006001600160e01b03198216637965db0b60e01b148061044857506301ffc9a760e01b6001600160e01b0319831614610448565b6001600160a01b038316610a6d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105b2565b6001600160a01b038216610ace5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105b2565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610b3b8484610912565b90506000198114610ba35781811015610b965760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105b2565b610ba38484848403610a0b565b50505050565b6001600160a01b038316610c0d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105b2565b6001600160a01b038216610c6f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105b2565b610c7a838383611109565b6001600160a01b03831660009081526002602052604090205481811015610cf25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105b2565b6001600160a01b03808516600090815260026020526040808220858503905591851681529081208054849290610d299084906117a8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d7591815260200190565b60405180910390a3610ba3565b61073a8133611114565b610d96828261093d565b600082815260016020526040902061054190826109c1565b610db88282611178565b600082815260016020526040902061054190826111dd565b610dd86111f2565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610e785760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105b2565b610e8460008383611109565b8060046000828254610e9691906117a8565b90915550506001600160a01b03821660009081526002602052604081208054839290610ec39084906117a8565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216610f6d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105b2565b610f7982600083611109565b6001600160a01b03821660009081526002602052604090205481811015610fed5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105b2565b6001600160a01b038316600090815260026020526040812083830390556004805484929061101c9084906117c0565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b61106f61123b565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610e053390565b600061080e8383611281565b6000610448825490565b600081815260018301602052604081205461110157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610448565b506000610448565b6105418383836112ab565b61111e8282610815565b6105c557611136816001600160a01b03166014611311565b611141836020611311565b6040516020016111529291906117d7565b60408051601f198184030181529082905262461bcd60e51b82526105b2916004016115f6565b6111828282610815565b156105c5576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600061080e836001600160a01b0384166114ad565b60075460ff1661068f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105b2565b60075460ff161561068f5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105b2565b60008260000182815481106112985761129861184c565b9060005260206000200154905092915050565b60075460ff16156105415760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b60648201526084016105b2565b60606000611320836002611862565b61132b9060026117a8565b67ffffffffffffffff81111561134357611343611881565b6040519080825280601f01601f19166020018201604052801561136d576020820181803683370190505b509050600360fc1b816000815181106113885761138861184c565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106113b7576113b761184c565b60200101906001600160f81b031916908160001a90535060006113db846002611862565b6113e69060016117a8565b90505b600181111561145e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061141a5761141a61184c565b1a60f81b8282815181106114305761143061184c565b60200101906001600160f81b031916908160001a90535060049490941c9361145781611897565b90506113e9565b50831561080e5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105b2565b600081815260018301602052604081205480156115965760006114d16001836117c0565b85549091506000906114e5906001906117c0565b905081811461154a5760008660000182815481106115055761150561184c565b90600052602060002001549050808760000184815481106115285761152861184c565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061155b5761155b6118ae565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610448565b6000915050610448565b6000602082840312156115b257600080fd5b81356001600160e01b03198116811461080e57600080fd5b60005b838110156115e55781810151838201526020016115cd565b83811115610ba35750506000910152565b60208152600082518060208401526116158160408501602087016115ca565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461164057600080fd5b919050565b6000806040838503121561165857600080fd5b61166183611629565b946020939093013593505050565b60008060006060848603121561168457600080fd5b61168d84611629565b925061169b60208501611629565b9150604084013590509250925092565b6000602082840312156116bd57600080fd5b5035919050565b600080604083850312156116d757600080fd5b823591506116e760208401611629565b90509250929050565b60006020828403121561170257600080fd5b61080e82611629565b6000806040838503121561171e57600080fd5b50508035926020909101359150565b6000806040838503121561174057600080fd5b61174983611629565b91506116e760208401611629565b600181811c9082168061176b57607f821691505b6020821081141561178c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156117bb576117bb611792565b500190565b6000828210156117d2576117d2611792565b500390565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161180f8160178501602088016115ca565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516118408160288401602088016115ca565b01602801949350505050565b634e487b7160e01b600052603260045260246000fd5b600081600019048311821515161561187c5761187c611792565b500290565b634e487b7160e01b600052604160045260246000fd5b6000816118a6576118a6611792565b506000190190565b634e487b7160e01b600052603160045260246000fdfea264697066735822122048c66a7206666f4e204e67398e5f8308e3aacac953e70d07d306c4815a38f61464736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/utils/SafeERC20":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"SafeERC20","sourceName":"contracts/token/ERC20/utils/SafeERC20.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204f774261ac5ce5eeb19b4ffd5970485c04b17a812de3732dd193699a8a25c44664736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204f774261ac5ce5eeb19b4ffd5970485c04b17a812de3732dd193699a8a25c44664736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC20/utils/TokenTimelock":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"TokenTimelock","sourceName":"contracts/token/ERC20/utils/TokenTimelock.sol","abi":[{"inputs":[{"internalType":"contract IERC20","name":"token_","type":"address"},{"internalType":"address","name":"beneficiary_","type":"address"},{"internalType":"uint256","name":"releaseTime_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"beneficiary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"releaseTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60e060405234801561001057600080fd5b506040516107c53803806107c583398101604081905261002f916100d0565b42811161009d5760405162461bcd60e51b815260206004820152603260248201527f546f6b656e54696d656c6f636b3a2072656c656173652074696d65206973206260448201527165666f72652063757272656e742074696d6560701b606482015260840160405180910390fd5b6001600160a01b03928316608052911660a05260c052610113565b6001600160a01b03811681146100cd57600080fd5b50565b6000806000606084860312156100e557600080fd5b83516100f0816100b8565b6020850151909350610101816100b8565b80925050604084015190509250925092565b60805160a05160c05161066b61015a60003960008181609f015260f0015260008181605301526102a701526000818160ca015281816101820152610285015261066b6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806338af3eed1461005157806386d1a69f14610090578063b91d40011461009a578063fc0c546a146100c8575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100986100ee565b005b6040517f00000000000000000000000000000000000000000000000000000000000000008152602001610087565b7f0000000000000000000000000000000000000000000000000000000000000000610073565b7f000000000000000000000000000000000000000000000000000000000000000042101561017e5760405162461bcd60e51b815260206004820152603260248201527f546f6b656e54696d656c6f636b3a2063757272656e742074696d65206973206260448201527165666f72652072656c656173652074696d6560701b60648201526084015b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000006040516370a0823160e01b81523060048201526001600160a01b0391909116906370a082319060240160206040518083038186803b1580156101e257600080fd5b505afa1580156101f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021a919061057b565b9050600081116102785760405162461bcd60e51b815260206004820152602360248201527f546f6b656e54696d656c6f636b3a206e6f20746f6b656e7320746f2072656c6560448201526261736560e81b6064820152608401610175565b6102cc6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836102cf565b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610321908490610326565b505050565b600061037b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166103f89092919063ffffffff16565b80519091501561032157808060200190518101906103999190610594565b6103215760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610175565b60606104078484600085610411565b90505b9392505050565b6060824710156104725760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610175565b6001600160a01b0385163b6104c95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610175565b600080866001600160a01b031685876040516104e591906105e6565b60006040518083038185875af1925050503d8060008114610522576040519150601f19603f3d011682016040523d82523d6000602084013e610527565b606091505b5091509150610537828286610542565b979650505050505050565b6060831561055157508161040a565b8251156105615782518084602001fd5b8160405162461bcd60e51b81526004016101759190610602565b60006020828403121561058d57600080fd5b5051919050565b6000602082840312156105a657600080fd5b8151801515811461040a57600080fd5b60005b838110156105d15781810151838201526020016105b9565b838111156105e0576000848401525b50505050565b600082516105f88184602087016105b6565b9190910192915050565b60208152600082518060208401526106218160408501602087016105b6565b601f01601f1916919091016040019291505056fea2646970667358221220d18aa9183c5f8c1ed5a5a53fb7572ed848fe028d77bcbedbde6a747ec3a4f42664736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806338af3eed1461005157806386d1a69f14610090578063b91d40011461009a578063fc0c546a146100c8575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100986100ee565b005b6040517f00000000000000000000000000000000000000000000000000000000000000008152602001610087565b7f0000000000000000000000000000000000000000000000000000000000000000610073565b7f000000000000000000000000000000000000000000000000000000000000000042101561017e5760405162461bcd60e51b815260206004820152603260248201527f546f6b656e54696d656c6f636b3a2063757272656e742074696d65206973206260448201527165666f72652072656c656173652074696d6560701b60648201526084015b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000006040516370a0823160e01b81523060048201526001600160a01b0391909116906370a082319060240160206040518083038186803b1580156101e257600080fd5b505afa1580156101f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021a919061057b565b9050600081116102785760405162461bcd60e51b815260206004820152602360248201527f546f6b656e54696d656c6f636b3a206e6f20746f6b656e7320746f2072656c6560448201526261736560e81b6064820152608401610175565b6102cc6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836102cf565b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610321908490610326565b505050565b600061037b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166103f89092919063ffffffff16565b80519091501561032157808060200190518101906103999190610594565b6103215760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610175565b60606104078484600085610411565b90505b9392505050565b6060824710156104725760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610175565b6001600160a01b0385163b6104c95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610175565b600080866001600160a01b031685876040516104e591906105e6565b60006040518083038185875af1925050503d8060008114610522576040519150601f19603f3d011682016040523d82523d6000602084013e610527565b606091505b5091509150610537828286610542565b979650505050505050565b6060831561055157508161040a565b8251156105615782518084602001fd5b8160405162461bcd60e51b81526004016101759190610602565b60006020828403121561058d57600080fd5b5051919050565b6000602082840312156105a657600080fd5b8151801515811461040a57600080fd5b60005b838110156105d15781810151838201526020016105b9565b838111156105e0576000848401525b50505050565b600082516105f88184602087016105b6565b9190910192915050565b60208152600082518060208401526106218160408501602087016105b6565b601f01601f1916919091016040019291505056fea2646970667358221220d18aa9183c5f8c1ed5a5a53fb7572ed848fe028d77bcbedbde6a747ec3a4f42664736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/ERC721":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721","sourceName":"contracts/token/ERC721/ERC721.sol","abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"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":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"},{"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":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"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":"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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"}],"bytecode":"0x60806040523480156200001157600080fd5b50604051620013d7380380620013d78339810160408190526200003491620001db565b81516200004990600090602085019062000068565b5080516200005f90600190602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b61114580620002926000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610c58565b610228565b60405190151581526020015b60405180910390f35b61010461027a565b6040516100f39190610ccd565b61012461011f366004610ce0565b61030c565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610d15565b610333565b005b61014f61015f366004610d3f565b61044e565b61014f610172366004610d3f565b61047f565b610124610185366004610ce0565b61049a565b61019d610198366004610d7b565b6104fa565b6040519081526020016100f3565b610104610580565b61014f6101c1366004610d96565b61058f565b61014f6101d4366004610de8565b61059e565b6101046101e7366004610ce0565b6105d6565b6100e76101fa366004610ec4565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061025957506001600160e01b03198216635b5e139f60e01b145b8061027457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461028990610ef7565b80601f01602080910402602001604051908101604052809291908181526020018280546102b590610ef7565b80156103025780601f106102d757610100808354040283529160200191610302565b820191906000526020600020905b8154815290600101906020018083116102e557829003601f168201915b5050505050905090565b60006103178261064a565b506000908152600460205260409020546001600160a01b031690565b600061033e8261049a565b9050806001600160a01b0316836001600160a01b031614156103b15760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103cd57506103cd81336101fa565b61043f5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016103a8565b61044983836106ac565b505050565b610458338261071a565b6104745760405162461bcd60e51b81526004016103a890610f32565b610449838383610799565b6104498383836040518060200160405280600081525061059e565b6000818152600260205260408120546001600160a01b0316806102745760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a8565b60006001600160a01b0382166105645760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103a8565b506001600160a01b031660009081526003602052604090205490565b60606001805461028990610ef7565b61059a338383610935565b5050565b6105a8338361071a565b6105c45760405162461bcd60e51b81526004016103a890610f32565b6105d084848484610a04565b50505050565b60606105e18261064a565b60006105f860408051602081019091526000815290565b905060008151116106185760405180602001604052806000815250610643565b8061062284610a37565b604051602001610633929190610f80565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166106a95760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a8565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e18261049a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806107268361049a565b9050806001600160a01b0316846001600160a01b0316148061076d57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806107915750836001600160a01b03166107868461030c565b6001600160a01b0316145b949350505050565b826001600160a01b03166107ac8261049a565b6001600160a01b0316146108105760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103a8565b6001600160a01b0382166108725760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103a8565b61087d6000826106ac565b6001600160a01b03831660009081526003602052604081208054600192906108a6908490610fc5565b90915550506001600160a01b03821660009081526003602052604081208054600192906108d4908490610fdc565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b031614156109975760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103a8565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610a0f848484610799565b610a1b84848484610b35565b6105d05760405162461bcd60e51b81526004016103a890610ff4565b606081610a5b5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610a855780610a6f81611046565b9150610a7e9050600a83611077565b9150610a5f565b60008167ffffffffffffffff811115610aa057610aa0610dd2565b6040519080825280601f01601f191660200182016040528015610aca576020820181803683370190505b5090505b841561079157610adf600183610fc5565b9150610aec600a8661108b565b610af7906030610fdc565b60f81b818381518110610b0c57610b0c61109f565b60200101906001600160f81b031916908160001a905350610b2e600a86611077565b9450610ace565b60006001600160a01b0384163b15610c3757604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610b799033908990889088906004016110b5565b602060405180830381600087803b158015610b9357600080fd5b505af1925050508015610bc3575060408051601f3d908101601f19168201909252610bc0918101906110f2565b60015b610c1d573d808015610bf1576040519150601f19603f3d011682016040523d82523d6000602084013e610bf6565b606091505b508051610c155760405162461bcd60e51b81526004016103a890610ff4565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610791565b506001949350505050565b6001600160e01b0319811681146106a957600080fd5b600060208284031215610c6a57600080fd5b813561064381610c42565b60005b83811015610c90578181015183820152602001610c78565b838111156105d05750506000910152565b60008151808452610cb9816020860160208601610c75565b601f01601f19169290920160200192915050565b6020815260006106436020830184610ca1565b600060208284031215610cf257600080fd5b5035919050565b80356001600160a01b0381168114610d1057600080fd5b919050565b60008060408385031215610d2857600080fd5b610d3183610cf9565b946020939093013593505050565b600080600060608486031215610d5457600080fd5b610d5d84610cf9565b9250610d6b60208501610cf9565b9150604084013590509250925092565b600060208284031215610d8d57600080fd5b61064382610cf9565b60008060408385031215610da957600080fd5b610db283610cf9565b915060208301358015158114610dc757600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610dfe57600080fd5b610e0785610cf9565b9350610e1560208601610cf9565b925060408501359150606085013567ffffffffffffffff80821115610e3957600080fd5b818701915087601f830112610e4d57600080fd5b813581811115610e5f57610e5f610dd2565b604051601f8201601f19908116603f01168101908382118183101715610e8757610e87610dd2565b816040528281528a6020848701011115610ea057600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ed757600080fd5b610ee083610cf9565b9150610eee60208401610cf9565b90509250929050565b600181811c90821680610f0b57607f821691505b60208210811415610f2c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b60008351610f92818460208801610c75565b835190830190610fa6818360208801610c75565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b600082821015610fd757610fd7610faf565b500390565b60008219821115610fef57610fef610faf565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600060001982141561105a5761105a610faf565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261108657611086611061565b500490565b60008261109a5761109a611061565b500690565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110e890830184610ca1565b9695505050505050565b60006020828403121561110457600080fd5b815161064381610c4256fea2646970667358221220dbaf7531c6ab6358f8bfc6705e38c89d81c50d229dd1bf325d98b7120ec9a03164736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610c58565b610228565b60405190151581526020015b60405180910390f35b61010461027a565b6040516100f39190610ccd565b61012461011f366004610ce0565b61030c565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610d15565b610333565b005b61014f61015f366004610d3f565b61044e565b61014f610172366004610d3f565b61047f565b610124610185366004610ce0565b61049a565b61019d610198366004610d7b565b6104fa565b6040519081526020016100f3565b610104610580565b61014f6101c1366004610d96565b61058f565b61014f6101d4366004610de8565b61059e565b6101046101e7366004610ce0565b6105d6565b6100e76101fa366004610ec4565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061025957506001600160e01b03198216635b5e139f60e01b145b8061027457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461028990610ef7565b80601f01602080910402602001604051908101604052809291908181526020018280546102b590610ef7565b80156103025780601f106102d757610100808354040283529160200191610302565b820191906000526020600020905b8154815290600101906020018083116102e557829003601f168201915b5050505050905090565b60006103178261064a565b506000908152600460205260409020546001600160a01b031690565b600061033e8261049a565b9050806001600160a01b0316836001600160a01b031614156103b15760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103cd57506103cd81336101fa565b61043f5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016103a8565b61044983836106ac565b505050565b610458338261071a565b6104745760405162461bcd60e51b81526004016103a890610f32565b610449838383610799565b6104498383836040518060200160405280600081525061059e565b6000818152600260205260408120546001600160a01b0316806102745760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a8565b60006001600160a01b0382166105645760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103a8565b506001600160a01b031660009081526003602052604090205490565b60606001805461028990610ef7565b61059a338383610935565b5050565b6105a8338361071a565b6105c45760405162461bcd60e51b81526004016103a890610f32565b6105d084848484610a04565b50505050565b60606105e18261064a565b60006105f860408051602081019091526000815290565b905060008151116106185760405180602001604052806000815250610643565b8061062284610a37565b604051602001610633929190610f80565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166106a95760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a8565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e18261049a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806107268361049a565b9050806001600160a01b0316846001600160a01b0316148061076d57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806107915750836001600160a01b03166107868461030c565b6001600160a01b0316145b949350505050565b826001600160a01b03166107ac8261049a565b6001600160a01b0316146108105760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103a8565b6001600160a01b0382166108725760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103a8565b61087d6000826106ac565b6001600160a01b03831660009081526003602052604081208054600192906108a6908490610fc5565b90915550506001600160a01b03821660009081526003602052604081208054600192906108d4908490610fdc565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b031614156109975760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103a8565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610a0f848484610799565b610a1b84848484610b35565b6105d05760405162461bcd60e51b81526004016103a890610ff4565b606081610a5b5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610a855780610a6f81611046565b9150610a7e9050600a83611077565b9150610a5f565b60008167ffffffffffffffff811115610aa057610aa0610dd2565b6040519080825280601f01601f191660200182016040528015610aca576020820181803683370190505b5090505b841561079157610adf600183610fc5565b9150610aec600a8661108b565b610af7906030610fdc565b60f81b818381518110610b0c57610b0c61109f565b60200101906001600160f81b031916908160001a905350610b2e600a86611077565b9450610ace565b60006001600160a01b0384163b15610c3757604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610b799033908990889088906004016110b5565b602060405180830381600087803b158015610b9357600080fd5b505af1925050508015610bc3575060408051601f3d908101601f19168201909252610bc0918101906110f2565b60015b610c1d573d808015610bf1576040519150601f19603f3d011682016040523d82523d6000602084013e610bf6565b606091505b508051610c155760405162461bcd60e51b81526004016103a890610ff4565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610791565b506001949350505050565b6001600160e01b0319811681146106a957600080fd5b600060208284031215610c6a57600080fd5b813561064381610c42565b60005b83811015610c90578181015183820152602001610c78565b838111156105d05750506000910152565b60008151808452610cb9816020860160208601610c75565b601f01601f19169290920160200192915050565b6020815260006106436020830184610ca1565b600060208284031215610cf257600080fd5b5035919050565b80356001600160a01b0381168114610d1057600080fd5b919050565b60008060408385031215610d2857600080fd5b610d3183610cf9565b946020939093013593505050565b600080600060608486031215610d5457600080fd5b610d5d84610cf9565b9250610d6b60208501610cf9565b9150604084013590509250925092565b600060208284031215610d8d57600080fd5b61064382610cf9565b60008060408385031215610da957600080fd5b610db283610cf9565b915060208301358015158114610dc757600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610dfe57600080fd5b610e0785610cf9565b9350610e1560208601610cf9565b925060408501359150606085013567ffffffffffffffff80821115610e3957600080fd5b818701915087601f830112610e4d57600080fd5b813581811115610e5f57610e5f610dd2565b604051601f8201601f19908116603f01168101908382118183101715610e8757610e87610dd2565b816040528281528a6020848701011115610ea057600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ed757600080fd5b610ee083610cf9565b9150610eee60208401610cf9565b90509250929050565b600181811c90821680610f0b57607f821691505b60208210811415610f2c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b60008351610f92818460208801610c75565b835190830190610fa6818360208801610c75565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b600082821015610fd757610fd7610faf565b500390565b60008219821115610fef57610fef610faf565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600060001982141561105a5761105a610faf565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261108657611086611061565b500490565b60008261109a5761109a611061565b500690565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110e890830184610ca1565b9695505050505050565b60006020828403121561110457600080fd5b815161064381610c4256fea2646970667358221220dbaf7531c6ab6358f8bfc6705e38c89d81c50d229dd1bf325d98b7120ec9a03164736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/ERC721Votes":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721Votes","sourceName":"contracts/token/ERC721/extensions/draft-ERC721Votes.sol","abi":[{"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":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","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"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","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":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"blockNumber","type":"uint256"}],"name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"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":"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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/ERC721Burnable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721Burnable","sourceName":"contracts/token/ERC721/extensions/ERC721Burnable.sol","abi":[{"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":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"},{"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":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"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":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"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":"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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/ERC721Enumerable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721Enumerable","sourceName":"contracts/token/ERC721/extensions/ERC721Enumerable.sol","abi":[{"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":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"},{"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":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"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":"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":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/ERC721Pausable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721Pausable","sourceName":"contracts/token/ERC721/extensions/ERC721Pausable.sol","abi":[{"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":"address","name":"account","type":"address"}],"name":"Paused","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":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"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":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/ERC721Royalty":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721Royalty","sourceName":"contracts/token/ERC721/extensions/ERC721Royalty.sol","abi":[{"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":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"},{"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":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/ERC721URIStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721URIStorage","sourceName":"contracts/token/ERC721/extensions/ERC721URIStorage.sol","abi":[{"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":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"},{"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":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"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":"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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/IERC721Enumerable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721Enumerable","sourceName":"contracts/token/ERC721/extensions/IERC721Enumerable.sol","abi":[{"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":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"},{"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":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"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":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/extensions/IERC721Metadata":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721Metadata","sourceName":"contracts/token/ERC721/extensions/IERC721Metadata.sol","abi":[{"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":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"},{"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":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","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":"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":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/IERC721":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721","sourceName":"contracts/token/ERC721/IERC721.sol","abi":[{"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":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"},{"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":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"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":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/IERC721Receiver":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC721Receiver","sourceName":"contracts/token/ERC721/IERC721Receiver.sol","abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/presets/ERC721PresetMinterPauserAutoId":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721PresetMinterPauserAutoId","sourceName":"contracts/token/ERC721/presets/ERC721PresetMinterPauserAutoId.sol","abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"baseTokenURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","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":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"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":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"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":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162002929380380620029298339810160408190526200003491620003cc565b8251839083906200004d90600290602085019062000259565b5080516200006390600390602084019062000259565b5050600c805460ff191690555080516200008590600e90602084019062000259565b5062000093600033620000f4565b620000bf7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000f4565b620000eb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620000f4565b5050506200049a565b62000100828262000104565b5050565b6200011b82826200014760201b62000ced1760201c565b60008281526001602090815260409091206200014291839062000d71620001e7821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000100576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001a33390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001fe836001600160a01b03841662000207565b90505b92915050565b6000818152600183016020526040812054620002505750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000201565b50600062000201565b82805462000267906200045d565b90600052602060002090601f0160209004810192826200028b5760008555620002d6565b82601f10620002a657805160ff1916838001178555620002d6565b82800160010185558215620002d6579182015b82811115620002d6578251825591602001919060010190620002b9565b50620002e4929150620002e8565b5090565b5b80821115620002e45760008155600101620002e9565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200032757600080fd5b81516001600160401b0380821115620003445762000344620002ff565b604051601f8301601f19908116603f011681019082821181831017156200036f576200036f620002ff565b816040528381526020925086838588010111156200038c57600080fd5b600091505b83821015620003b0578582018301518183018401529082019062000391565b83821115620003c25760008385830101525b9695505050505050565b600080600060608486031215620003e257600080fd5b83516001600160401b0380821115620003fa57600080fd5b620004088783880162000315565b945060208601519150808211156200041f57600080fd5b6200042d8783880162000315565b935060408601519150808211156200044457600080fd5b50620004538682870162000315565b9150509250925092565b600181811c908216806200047257607f821691505b602082108114156200049457634e487b7160e01b600052602260045260246000fd5b50919050565b61247f80620004aa6000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80636352211e1161010f578063a22cb465116100a2578063d539139311610071578063d5391393146103f7578063d547741f1461041e578063e63ab1e914610431578063e985e9c51461045857600080fd5b8063a22cb465146103ab578063b88d4fde146103be578063c87b56dd146103d1578063ca15c873146103e457600080fd5b80639010d07c116100de5780639010d07c1461037557806391d148541461038857806395d89b411461039b578063a217fddf146103a357600080fd5b80636352211e146103345780636a6278421461034757806370a082311461035a5780638456cb591461036d57600080fd5b80632f2ff15d1161018757806342842e0e1161015657806342842e0e146102f057806342966c68146103035780634f6ccce7146103165780635c975abb1461032957600080fd5b80632f2ff15d146102af5780632f745c59146102c257806336568abe146102d55780633f4ba83a146102e857600080fd5b8063095ea7b3116101c3578063095ea7b31461025257806318160ddd1461026757806323b872dd14610279578063248a9ca31461028c57600080fd5b806301ffc9a7146101ea57806306fdde0314610212578063081812fc14610227575b600080fd5b6101fd6101f8366004611e8c565b610494565b60405190151581526020015b60405180910390f35b61021a6104a5565b6040516102099190611f01565b61023a610235366004611f14565b610537565b6040516001600160a01b039091168152602001610209565b610265610260366004611f49565b61055e565b005b600a545b604051908152602001610209565b610265610287366004611f73565b610679565b61026b61029a366004611f14565b60009081526020819052604090206001015490565b6102656102bd366004611faf565b6106ab565b61026b6102d0366004611f49565b6106d0565b6102656102e3366004611faf565b610766565b6102656107e4565b6102656102fe366004611f73565b61088c565b610265610311366004611f14565b6108a7565b61026b610324366004611f14565b6108d8565b600c5460ff166101fd565b61023a610342366004611f14565b61096b565b610265610355366004611fdb565b6109cb565b61026b610368366004611fdb565b610a87565b610265610b0d565b61023a610383366004611ff6565b610bb1565b6101fd610396366004611faf565b610bd0565b61021a610bf9565b61026b600081565b6102656103b9366004612018565b610c08565b6102656103cc36600461206a565b610c13565b61021a6103df366004611f14565b610c4b565b61026b6103f2366004611f14565b610cb1565b61026b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61026561042c366004611faf565b610cc8565b61026b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6101fd610466366004612146565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b600061049f82610d86565b92915050565b6060600280546104b490612170565b80601f01602080910402602001604051908101604052809291908181526020018280546104e090612170565b801561052d5780601f106105025761010080835404028352916020019161052d565b820191906000526020600020905b81548152906001019060200180831161051057829003601f168201915b5050505050905090565b600061054282610dab565b506000908152600660205260409020546001600160a01b031690565b60006105698261096b565b9050806001600160a01b0316836001600160a01b031614156105dc5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806105f857506105f88133610466565b61066a5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016105d3565b6106748383610e0a565b505050565b610684335b82610e78565b6106a05760405162461bcd60e51b81526004016105d3906121ab565b610674838383610ef7565b6000828152602081905260409020600101546106c68161109e565b61067483836110a8565b60006106db83610a87565b821061073d5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016105d3565b506001600160a01b03919091166000908152600860209081526040808320938352929052205490565b6001600160a01b03811633146107d65760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016105d3565b6107e082826110ca565b5050565b61080e7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610bd0565b610882576040805162461bcd60e51b81526020600482015260248101919091527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f20756e706175736560648201526084016105d3565b61088a6110ec565b565b61067483838360405180602001604052806000815250610c13565b6108b03361067e565b6108cc5760405162461bcd60e51b81526004016105d3906121ab565b6108d58161113e565b50565b60006108e3600a5490565b82106109465760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016105d3565b600a8281548110610959576109596121f9565b90600052602060002001549050919050565b6000818152600460205260408120546001600160a01b03168061049f5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016105d3565b6109f57f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610bd0565b610a675760405162461bcd60e51b815260206004820152603d60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d7573742068617665206d696e74657220726f6c6520746f206d696e7400000060648201526084016105d3565b610a7981610a74600d5490565b6111e5565b6108d5600d80546001019055565b60006001600160a01b038216610af15760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016105d3565b506001600160a01b031660009081526005602052604090205490565b610b377f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610bd0565b610ba95760405162461bcd60e51b815260206004820152603e60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f207061757365000060648201526084016105d3565b61088a611333565b6000828152600160205260408120610bc99083611370565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600380546104b490612170565b6107e033838361137c565b610c1d3383610e78565b610c395760405162461bcd60e51b81526004016105d3906121ab565b610c458484848461144b565b50505050565b6060610c5682610dab565b6000610c6061147e565b90506000815111610c805760405180602001604052806000815250610bc9565b80610c8a8461148d565b604051602001610c9b92919061220f565b6040516020818303038152906040529392505050565b600081815260016020526040812061049f9061158b565b600082815260208190526040902060010154610ce38161109e565b61067483836110ca565b610cf78282610bd0565b6107e0576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610d2d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610bc9836001600160a01b038416611595565b60006001600160e01b0319821663780e9d6360e01b148061049f575061049f826115e4565b6000818152600460205260409020546001600160a01b03166108d55760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016105d3565b600081815260066020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610e3f8261096b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610e848361096b565b9050806001600160a01b0316846001600160a01b03161480610ecb57506001600160a01b0380821660009081526007602090815260408083209388168352929052205460ff165b80610eef5750836001600160a01b0316610ee484610537565b6001600160a01b0316145b949350505050565b826001600160a01b0316610f0a8261096b565b6001600160a01b031614610f6e5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016105d3565b6001600160a01b038216610fd05760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016105d3565b610fdb838383611624565b610fe6600082610e0a565b6001600160a01b038316600090815260056020526040812080546001929061100f908490612254565b90915550506001600160a01b038216600090815260056020526040812080546001929061103d90849061226b565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108d5813361162f565b6110b28282610ced565b60008281526001602052604090206106749082610d71565b6110d48282611693565b600082815260016020526040902061067490826116f8565b6110f461170d565b600c805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60006111498261096b565b905061115781600084611624565b611162600083610e0a565b6001600160a01b038116600090815260056020526040812080546001929061118b908490612254565b909155505060008281526004602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6001600160a01b03821661123b5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016105d3565b6000818152600460205260409020546001600160a01b0316156112a05760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105d3565b6112ac60008383611624565b6001600160a01b03821660009081526005602052604081208054600192906112d590849061226b565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b61133b611756565b600c805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586111213390565b6000610bc9838361179c565b816001600160a01b0316836001600160a01b031614156113de5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016105d3565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611456848484610ef7565b611462848484846117c6565b610c455760405162461bcd60e51b81526004016105d390612283565b6060600e80546104b490612170565b6060816114b15750506040805180820190915260018152600360fc1b602082015290565b8160005b81156114db57806114c5816122d5565b91506114d49050600a83612306565b91506114b5565b60008167ffffffffffffffff8111156114f6576114f6612054565b6040519080825280601f01601f191660200182016040528015611520576020820181803683370190505b5090505b8415610eef57611535600183612254565b9150611542600a8661231a565b61154d90603061226b565b60f81b818381518110611562576115626121f9565b60200101906001600160f81b031916908160001a905350611584600a86612306565b9450611524565b600061049f825490565b60008181526001830160205260408120546115dc5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561049f565b50600061049f565b60006001600160e01b031982166380ac58cd60e01b148061161557506001600160e01b03198216635b5e139f60e01b145b8061049f575061049f826118d3565b6106748383836118f8565b6116398282610bd0565b6107e057611651816001600160a01b0316601461196a565b61165c83602061196a565b60405160200161166d92919061232e565b60408051601f198184030181529082905262461bcd60e51b82526105d391600401611f01565b61169d8282610bd0565b156107e0576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610bc9836001600160a01b038416611b06565b600c5460ff1661088a5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105d3565b600c5460ff161561088a5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105d3565b60008260000182815481106117b3576117b36121f9565b9060005260206000200154905092915050565b60006001600160a01b0384163b156118c857604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061180a9033908990889088906004016123a3565b602060405180830381600087803b15801561182457600080fd5b505af1925050508015611854575060408051601f3d908101601f19168201909252611851918101906123e0565b60015b6118ae573d808015611882576040519150601f19603f3d011682016040523d82523d6000602084013e611887565b606091505b5080516118a65760405162461bcd60e51b81526004016105d390612283565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610eef565b506001949350505050565b60006001600160e01b03198216635a05180f60e01b148061049f575061049f82611bf9565b611903838383611c2e565b600c5460ff16156106745760405162461bcd60e51b815260206004820152602b60248201527f4552433732315061757361626c653a20746f6b656e207472616e73666572207760448201526a1a1a5b19481c185d5cd95960aa1b60648201526084016105d3565b606060006119798360026123fd565b61198490600261226b565b67ffffffffffffffff81111561199c5761199c612054565b6040519080825280601f01601f1916602001820160405280156119c6576020820181803683370190505b509050600360fc1b816000815181106119e1576119e16121f9565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611a1057611a106121f9565b60200101906001600160f81b031916908160001a9053506000611a348460026123fd565b611a3f90600161226b565b90505b6001811115611ab7576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611a7357611a736121f9565b1a60f81b828281518110611a8957611a896121f9565b60200101906001600160f81b031916908160001a90535060049490941c93611ab08161241c565b9050611a42565b508315610bc95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105d3565b60008181526001830160205260408120548015611bef576000611b2a600183612254565b8554909150600090611b3e90600190612254565b9050818114611ba3576000866000018281548110611b5e57611b5e6121f9565b9060005260206000200154905080876000018481548110611b8157611b816121f9565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611bb457611bb4612433565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061049f565b600091505061049f565b60006001600160e01b03198216637965db0b60e01b148061049f57506301ffc9a760e01b6001600160e01b031983161461049f565b6001600160a01b038316611c8957611c8481600a80546000838152600b60205260408120829055600182018355919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80155565b611cac565b816001600160a01b0316836001600160a01b031614611cac57611cac8382611ce6565b6001600160a01b038216611cc35761067481611d83565b826001600160a01b0316826001600160a01b031614610674576106748282611e32565b60006001611cf384610a87565b611cfd9190612254565b600083815260096020526040902054909150808214611d50576001600160a01b03841660009081526008602090815260408083208584528252808320548484528184208190558352600990915290208190555b5060009182526009602090815260408084208490556001600160a01b039094168352600881528383209183525290812055565b600a54600090611d9590600190612254565b6000838152600b6020526040812054600a8054939450909284908110611dbd57611dbd6121f9565b9060005260206000200154905080600a8381548110611dde57611dde6121f9565b6000918252602080832090910192909255828152600b9091526040808220849055858252812055600a805480611e1657611e16612433565b6001900381819060005260206000200160009055905550505050565b6000611e3d83610a87565b6001600160a01b039093166000908152600860209081526040808320868452825280832085905593825260099052919091209190915550565b6001600160e01b0319811681146108d557600080fd5b600060208284031215611e9e57600080fd5b8135610bc981611e76565b60005b83811015611ec4578181015183820152602001611eac565b83811115610c455750506000910152565b60008151808452611eed816020860160208601611ea9565b601f01601f19169290920160200192915050565b602081526000610bc96020830184611ed5565b600060208284031215611f2657600080fd5b5035919050565b80356001600160a01b0381168114611f4457600080fd5b919050565b60008060408385031215611f5c57600080fd5b611f6583611f2d565b946020939093013593505050565b600080600060608486031215611f8857600080fd5b611f9184611f2d565b9250611f9f60208501611f2d565b9150604084013590509250925092565b60008060408385031215611fc257600080fd5b82359150611fd260208401611f2d565b90509250929050565b600060208284031215611fed57600080fd5b610bc982611f2d565b6000806040838503121561200957600080fd5b50508035926020909101359150565b6000806040838503121561202b57600080fd5b61203483611f2d565b91506020830135801515811461204957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561208057600080fd5b61208985611f2d565b935061209760208601611f2d565b925060408501359150606085013567ffffffffffffffff808211156120bb57600080fd5b818701915087601f8301126120cf57600080fd5b8135818111156120e1576120e1612054565b604051601f8201601f19908116603f0116810190838211818310171561210957612109612054565b816040528281528a602084870101111561212257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561215957600080fd5b61216283611f2d565b9150611fd260208401611f2d565b600181811c9082168061218457607f821691505b602082108114156121a557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008351612221818460208801611ea9565b835190830190612235818360208801611ea9565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b6000828210156122665761226661223e565b500390565b6000821982111561227e5761227e61223e565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60006000198214156122e9576122e961223e565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082612315576123156122f0565b500490565b600082612329576123296122f0565b500690565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612366816017850160208801611ea9565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612397816028840160208801611ea9565b01602801949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906123d690830184611ed5565b9695505050505050565b6000602082840312156123f257600080fd5b8151610bc981611e76565b60008160001904831182151516156124175761241761223e565b500290565b60008161242b5761242b61223e565b506000190190565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220904fdcec717bb77b92b7a0770155545f37faf7149eef4539d04876c24632417764736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80636352211e1161010f578063a22cb465116100a2578063d539139311610071578063d5391393146103f7578063d547741f1461041e578063e63ab1e914610431578063e985e9c51461045857600080fd5b8063a22cb465146103ab578063b88d4fde146103be578063c87b56dd146103d1578063ca15c873146103e457600080fd5b80639010d07c116100de5780639010d07c1461037557806391d148541461038857806395d89b411461039b578063a217fddf146103a357600080fd5b80636352211e146103345780636a6278421461034757806370a082311461035a5780638456cb591461036d57600080fd5b80632f2ff15d1161018757806342842e0e1161015657806342842e0e146102f057806342966c68146103035780634f6ccce7146103165780635c975abb1461032957600080fd5b80632f2ff15d146102af5780632f745c59146102c257806336568abe146102d55780633f4ba83a146102e857600080fd5b8063095ea7b3116101c3578063095ea7b31461025257806318160ddd1461026757806323b872dd14610279578063248a9ca31461028c57600080fd5b806301ffc9a7146101ea57806306fdde0314610212578063081812fc14610227575b600080fd5b6101fd6101f8366004611e8c565b610494565b60405190151581526020015b60405180910390f35b61021a6104a5565b6040516102099190611f01565b61023a610235366004611f14565b610537565b6040516001600160a01b039091168152602001610209565b610265610260366004611f49565b61055e565b005b600a545b604051908152602001610209565b610265610287366004611f73565b610679565b61026b61029a366004611f14565b60009081526020819052604090206001015490565b6102656102bd366004611faf565b6106ab565b61026b6102d0366004611f49565b6106d0565b6102656102e3366004611faf565b610766565b6102656107e4565b6102656102fe366004611f73565b61088c565b610265610311366004611f14565b6108a7565b61026b610324366004611f14565b6108d8565b600c5460ff166101fd565b61023a610342366004611f14565b61096b565b610265610355366004611fdb565b6109cb565b61026b610368366004611fdb565b610a87565b610265610b0d565b61023a610383366004611ff6565b610bb1565b6101fd610396366004611faf565b610bd0565b61021a610bf9565b61026b600081565b6102656103b9366004612018565b610c08565b6102656103cc36600461206a565b610c13565b61021a6103df366004611f14565b610c4b565b61026b6103f2366004611f14565b610cb1565b61026b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61026561042c366004611faf565b610cc8565b61026b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6101fd610466366004612146565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b600061049f82610d86565b92915050565b6060600280546104b490612170565b80601f01602080910402602001604051908101604052809291908181526020018280546104e090612170565b801561052d5780601f106105025761010080835404028352916020019161052d565b820191906000526020600020905b81548152906001019060200180831161051057829003601f168201915b5050505050905090565b600061054282610dab565b506000908152600660205260409020546001600160a01b031690565b60006105698261096b565b9050806001600160a01b0316836001600160a01b031614156105dc5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806105f857506105f88133610466565b61066a5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016105d3565b6106748383610e0a565b505050565b610684335b82610e78565b6106a05760405162461bcd60e51b81526004016105d3906121ab565b610674838383610ef7565b6000828152602081905260409020600101546106c68161109e565b61067483836110a8565b60006106db83610a87565b821061073d5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016105d3565b506001600160a01b03919091166000908152600860209081526040808320938352929052205490565b6001600160a01b03811633146107d65760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016105d3565b6107e082826110ca565b5050565b61080e7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610bd0565b610882576040805162461bcd60e51b81526020600482015260248101919091527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f20756e706175736560648201526084016105d3565b61088a6110ec565b565b61067483838360405180602001604052806000815250610c13565b6108b03361067e565b6108cc5760405162461bcd60e51b81526004016105d3906121ab565b6108d58161113e565b50565b60006108e3600a5490565b82106109465760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016105d3565b600a8281548110610959576109596121f9565b90600052602060002001549050919050565b6000818152600460205260408120546001600160a01b03168061049f5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016105d3565b6109f57f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610bd0565b610a675760405162461bcd60e51b815260206004820152603d60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d7573742068617665206d696e74657220726f6c6520746f206d696e7400000060648201526084016105d3565b610a7981610a74600d5490565b6111e5565b6108d5600d80546001019055565b60006001600160a01b038216610af15760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016105d3565b506001600160a01b031660009081526005602052604090205490565b610b377f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610bd0565b610ba95760405162461bcd60e51b815260206004820152603e60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f207061757365000060648201526084016105d3565b61088a611333565b6000828152600160205260408120610bc99083611370565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600380546104b490612170565b6107e033838361137c565b610c1d3383610e78565b610c395760405162461bcd60e51b81526004016105d3906121ab565b610c458484848461144b565b50505050565b6060610c5682610dab565b6000610c6061147e565b90506000815111610c805760405180602001604052806000815250610bc9565b80610c8a8461148d565b604051602001610c9b92919061220f565b6040516020818303038152906040529392505050565b600081815260016020526040812061049f9061158b565b600082815260208190526040902060010154610ce38161109e565b61067483836110ca565b610cf78282610bd0565b6107e0576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610d2d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610bc9836001600160a01b038416611595565b60006001600160e01b0319821663780e9d6360e01b148061049f575061049f826115e4565b6000818152600460205260409020546001600160a01b03166108d55760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016105d3565b600081815260066020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610e3f8261096b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610e848361096b565b9050806001600160a01b0316846001600160a01b03161480610ecb57506001600160a01b0380821660009081526007602090815260408083209388168352929052205460ff165b80610eef5750836001600160a01b0316610ee484610537565b6001600160a01b0316145b949350505050565b826001600160a01b0316610f0a8261096b565b6001600160a01b031614610f6e5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016105d3565b6001600160a01b038216610fd05760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016105d3565b610fdb838383611624565b610fe6600082610e0a565b6001600160a01b038316600090815260056020526040812080546001929061100f908490612254565b90915550506001600160a01b038216600090815260056020526040812080546001929061103d90849061226b565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108d5813361162f565b6110b28282610ced565b60008281526001602052604090206106749082610d71565b6110d48282611693565b600082815260016020526040902061067490826116f8565b6110f461170d565b600c805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60006111498261096b565b905061115781600084611624565b611162600083610e0a565b6001600160a01b038116600090815260056020526040812080546001929061118b908490612254565b909155505060008281526004602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6001600160a01b03821661123b5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016105d3565b6000818152600460205260409020546001600160a01b0316156112a05760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105d3565b6112ac60008383611624565b6001600160a01b03821660009081526005602052604081208054600192906112d590849061226b565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b61133b611756565b600c805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586111213390565b6000610bc9838361179c565b816001600160a01b0316836001600160a01b031614156113de5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016105d3565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611456848484610ef7565b611462848484846117c6565b610c455760405162461bcd60e51b81526004016105d390612283565b6060600e80546104b490612170565b6060816114b15750506040805180820190915260018152600360fc1b602082015290565b8160005b81156114db57806114c5816122d5565b91506114d49050600a83612306565b91506114b5565b60008167ffffffffffffffff8111156114f6576114f6612054565b6040519080825280601f01601f191660200182016040528015611520576020820181803683370190505b5090505b8415610eef57611535600183612254565b9150611542600a8661231a565b61154d90603061226b565b60f81b818381518110611562576115626121f9565b60200101906001600160f81b031916908160001a905350611584600a86612306565b9450611524565b600061049f825490565b60008181526001830160205260408120546115dc5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561049f565b50600061049f565b60006001600160e01b031982166380ac58cd60e01b148061161557506001600160e01b03198216635b5e139f60e01b145b8061049f575061049f826118d3565b6106748383836118f8565b6116398282610bd0565b6107e057611651816001600160a01b0316601461196a565b61165c83602061196a565b60405160200161166d92919061232e565b60408051601f198184030181529082905262461bcd60e51b82526105d391600401611f01565b61169d8282610bd0565b156107e0576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610bc9836001600160a01b038416611b06565b600c5460ff1661088a5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105d3565b600c5460ff161561088a5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105d3565b60008260000182815481106117b3576117b36121f9565b9060005260206000200154905092915050565b60006001600160a01b0384163b156118c857604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061180a9033908990889088906004016123a3565b602060405180830381600087803b15801561182457600080fd5b505af1925050508015611854575060408051601f3d908101601f19168201909252611851918101906123e0565b60015b6118ae573d808015611882576040519150601f19603f3d011682016040523d82523d6000602084013e611887565b606091505b5080516118a65760405162461bcd60e51b81526004016105d390612283565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610eef565b506001949350505050565b60006001600160e01b03198216635a05180f60e01b148061049f575061049f82611bf9565b611903838383611c2e565b600c5460ff16156106745760405162461bcd60e51b815260206004820152602b60248201527f4552433732315061757361626c653a20746f6b656e207472616e73666572207760448201526a1a1a5b19481c185d5cd95960aa1b60648201526084016105d3565b606060006119798360026123fd565b61198490600261226b565b67ffffffffffffffff81111561199c5761199c612054565b6040519080825280601f01601f1916602001820160405280156119c6576020820181803683370190505b509050600360fc1b816000815181106119e1576119e16121f9565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611a1057611a106121f9565b60200101906001600160f81b031916908160001a9053506000611a348460026123fd565b611a3f90600161226b565b90505b6001811115611ab7576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611a7357611a736121f9565b1a60f81b828281518110611a8957611a896121f9565b60200101906001600160f81b031916908160001a90535060049490941c93611ab08161241c565b9050611a42565b508315610bc95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105d3565b60008181526001830160205260408120548015611bef576000611b2a600183612254565b8554909150600090611b3e90600190612254565b9050818114611ba3576000866000018281548110611b5e57611b5e6121f9565b9060005260206000200154905080876000018481548110611b8157611b816121f9565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611bb457611bb4612433565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061049f565b600091505061049f565b60006001600160e01b03198216637965db0b60e01b148061049f57506301ffc9a760e01b6001600160e01b031983161461049f565b6001600160a01b038316611c8957611c8481600a80546000838152600b60205260408120829055600182018355919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80155565b611cac565b816001600160a01b0316836001600160a01b031614611cac57611cac8382611ce6565b6001600160a01b038216611cc35761067481611d83565b826001600160a01b0316826001600160a01b031614610674576106748282611e32565b60006001611cf384610a87565b611cfd9190612254565b600083815260096020526040902054909150808214611d50576001600160a01b03841660009081526008602090815260408083208584528252808320548484528184208190558352600990915290208190555b5060009182526009602090815260408084208490556001600160a01b039094168352600881528383209183525290812055565b600a54600090611d9590600190612254565b6000838152600b6020526040812054600a8054939450909284908110611dbd57611dbd6121f9565b9060005260206000200154905080600a8381548110611dde57611dde6121f9565b6000918252602080832090910192909255828152600b9091526040808220849055858252812055600a805480611e1657611e16612433565b6001900381819060005260206000200160009055905550505050565b6000611e3d83610a87565b6001600160a01b039093166000908152600860209081526040808320868452825280832085905593825260099052919091209190915550565b6001600160e01b0319811681146108d557600080fd5b600060208284031215611e9e57600080fd5b8135610bc981611e76565b60005b83811015611ec4578181015183820152602001611eac565b83811115610c455750506000910152565b60008151808452611eed816020860160208601611ea9565b601f01601f19169290920160200192915050565b602081526000610bc96020830184611ed5565b600060208284031215611f2657600080fd5b5035919050565b80356001600160a01b0381168114611f4457600080fd5b919050565b60008060408385031215611f5c57600080fd5b611f6583611f2d565b946020939093013593505050565b600080600060608486031215611f8857600080fd5b611f9184611f2d565b9250611f9f60208501611f2d565b9150604084013590509250925092565b60008060408385031215611fc257600080fd5b82359150611fd260208401611f2d565b90509250929050565b600060208284031215611fed57600080fd5b610bc982611f2d565b6000806040838503121561200957600080fd5b50508035926020909101359150565b6000806040838503121561202b57600080fd5b61203483611f2d565b91506020830135801515811461204957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561208057600080fd5b61208985611f2d565b935061209760208601611f2d565b925060408501359150606085013567ffffffffffffffff808211156120bb57600080fd5b818701915087601f8301126120cf57600080fd5b8135818111156120e1576120e1612054565b604051601f8201601f19908116603f0116810190838211818310171561210957612109612054565b816040528281528a602084870101111561212257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561215957600080fd5b61216283611f2d565b9150611fd260208401611f2d565b600181811c9082168061218457607f821691505b602082108114156121a557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008351612221818460208801611ea9565b835190830190612235818360208801611ea9565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b6000828210156122665761226661223e565b500390565b6000821982111561227e5761227e61223e565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60006000198214156122e9576122e961223e565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082612315576123156122f0565b500490565b600082612329576123296122f0565b500690565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612366816017850160208801611ea9565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612397816028840160208801611ea9565b01602801949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906123d690830184611ed5565b9695505050505050565b6000602082840312156123f257600080fd5b8151610bc981611e76565b60008160001904831182151516156124175761241761223e565b500290565b60008161242b5761242b61223e565b506000190190565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220904fdcec717bb77b92b7a0770155545f37faf7149eef4539d04876c24632417764736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC721/utils/ERC721Holder":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC721Holder","sourceName":"contracts/token/ERC721/utils/ERC721Holder.sol","abi":[{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506101af806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063150b7a0214610030575b600080fd5b61004e61003e36600461009d565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200160405180910390f35b80356001600160a01b038116811461008257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156100b357600080fd5b6100bc8561006b565b93506100ca6020860161006b565b925060408501359150606085013567ffffffffffffffff808211156100ee57600080fd5b818701915087601f83011261010257600080fd5b81358181111561011457610114610087565b604051601f8201601f19908116603f0116810190838211818310171561013c5761013c610087565b816040528281528a602084870101111561015557600080fd5b8260208601602083013760006020848301015280955050505050509295919450925056fea26469706673582212203b949b10ab655f3f3682634067da84891aca6edbd1a8a99ca0ec1a31004e97b964736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063150b7a0214610030575b600080fd5b61004e61003e36600461009d565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200160405180910390f35b80356001600160a01b038116811461008257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156100b357600080fd5b6100bc8561006b565b93506100ca6020860161006b565b925060408501359150606085013567ffffffffffffffff808211156100ee57600080fd5b818701915087601f83011261010257600080fd5b81358181111561011457610114610087565b604051601f8201601f19908116603f0116810190838211818310171561013c5761013c610087565b816040528281528a602084870101111561015557600080fd5b8260208601602083013760006020848301015280955050505050509295919450925056fea26469706673582212203b949b10ab655f3f3682634067da84891aca6edbd1a8a99ca0ec1a31004e97b964736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC777/ERC777":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC777","sourceName":"contracts/token/ERC777/ERC777.sol","abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"address[]","name":"defaultOperators_","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"AuthorizedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"RevokedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Sent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"authorizeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenHolder","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"defaultOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"granularity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"tokenHolder","type":"address"}],"name":"isOperatorFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"revokeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"send","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b5060405162001bcf38038062001bcf8339810160408190526200003491620003f1565b82516200004990600290602086019062000215565b5081516200005f90600390602085019062000215565b50805162000075906004906020840190620002a4565b5060005b8151811015620000e5576001600560008484815181106200009e576200009e62000508565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580620000dc816200051e565b91505062000079565b506040516329965a1d60e01b815230600482018190527fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce217705460248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad24906329965a1d90606401600060405180830381600087803b1580156200016057600080fd5b505af115801562000175573d6000803e3d6000fd5b50506040516329965a1d60e01b815230600482018190527faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a60248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad2492506329965a1d9150606401600060405180830381600087803b158015620001f357600080fd5b505af115801562000208573d6000803e3d6000fd5b5050505050505062000585565b828054620002239062000548565b90600052602060002090601f01602090048101928262000247576000855562000292565b82601f106200026257805160ff191683800117855562000292565b8280016001018555821562000292579182015b828111156200029257825182559160200191906001019062000275565b50620002a0929150620002fc565b5090565b82805482825590600052602060002090810192821562000292579160200282015b828111156200029257825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620002c5565b5b80821115620002a05760008155600101620002fd565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562000354576200035462000313565b604052919050565b600082601f8301126200036e57600080fd5b81516001600160401b038111156200038a576200038a62000313565b6020620003a0601f8301601f1916820162000329565b8281528582848701011115620003b557600080fd5b60005b83811015620003d5578581018301518282018401528201620003b8565b83811115620003e75760008385840101525b5095945050505050565b6000806000606084860312156200040757600080fd5b83516001600160401b03808211156200041f57600080fd5b6200042d878388016200035c565b94506020915081860151818111156200044557600080fd5b62000453888289016200035c565b9450506040860151818111156200046957600080fd5b8601601f810188136200047b57600080fd5b80518281111562000490576200049062000313565b8060051b9250620004a384840162000329565b818152928201840192848101908a851115620004be57600080fd5b928501925b84841015620004f857835192506001600160a01b0383168314620004e75760008081fd5b8282529285019290850190620004c3565b8096505050505050509250925092565b634e487b7160e01b600052603260045260246000fd5b60006000198214156200054157634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c908216806200055d57607f821691505b602082108114156200057f57634e487b7160e01b600052602260045260246000fd5b50919050565b61163a80620005956000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063959b8c3f116100a2578063d95b637111610071578063d95b63711461022b578063dd62ed3e1461023e578063fad8b32a14610277578063fc673c4f1461028a578063fe9d93031461029d57600080fd5b8063959b8c3f146101ea57806395d89b41146101fd5780639bd9bbc614610205578063a9059cbb1461021857600080fd5b806323b872dd116100e957806323b872dd14610183578063313ce56714610196578063556f0dc7146101a557806362ad1b83146101ac57806370a08231146101c157600080fd5b806306e485381461011b57806306fdde0314610139578063095ea7b31461014e57806318160ddd14610171575b600080fd5b6101236102b0565b60405161013091906110ae565b60405180910390f35b610141610312565b6040516101309190611148565b61016161015c366004611173565b61039b565b6040519015158152602001610130565b6001545b604051908152602001610130565b61016161019136600461119f565b6103b3565b60405160128152602001610130565b6001610175565b6101bf6101ba366004611283565b6103f9565b005b6101756101cf366004611316565b6001600160a01b031660009081526020819052604090205490565b6101bf6101f8366004611316565b61043e565b61014161055c565b6101bf610213366004611333565b61056b565b610161610226366004611173565b61058e565b61016161023936600461138c565b6105c6565b61017561024c36600461138c565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6101bf610285366004611316565b610668565b6101bf6102983660046113c5565b610784565b6101bf6102ab366004611445565b6107bc565b6060600480548060200260200160405190810160405280929190818152602001828054801561030857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102ea575b5050505050905090565b6060600280546103219061148c565b80601f016020809104026020016040519081016040528092919081815260200182805461034d9061148c565b80156103085780601f1061036f57610100808354040283529160200191610308565b820191906000526020600020905b81548152906001019060200180831161037d57509395945050505050565b6000336103a98185856107db565b5060019392505050565b6000336103c1858285610902565b6103ee8585856040518060200160405280600081525060405180602001604052806000815250600061098e565b506001949350505050565b61040333866105c6565b6104285760405162461bcd60e51b815260040161041f906114c7565b60405180910390fd5b6104378585858585600161098e565b5050505050565b336001600160a01b03821614156104a35760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff16156104f4573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19169055610523565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b6060600380546103219061148c565b6105893384848460405180602001604052806000815250600161098e565b505050565b60006105bd3384846040518060200160405280600081525060405180602001604052806000815250600061098e565b50600192915050565b6000816001600160a01b0316836001600160a01b0316148061063157506001600160a01b03831660009081526005602052604090205460ff16801561063157506001600160a01b0380831660009081526007602090815260408083209387168352929052205460ff16155b8061066157506001600160a01b0380831660009081526006602090815260408083209387168352929052205460ff165b9392505050565b6001600160a01b0381163314156106cb5760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff161561071f573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561074b565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b61078e33856105c6565b6107aa5760405162461bcd60e51b815260040161041f906114c7565b6107b684848484610a8a565b50505050565b6107d733838360405180602001604052806000815250610a8a565b5050565b6001600160a01b03831661083f5760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161041f565b6001600160a01b0382166108a15760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b606482015260840161041f565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526008602090815260408083209386168352929052205460001981146107b657818110156109815760405162461bcd60e51b815260206004820152601e60248201527f4552433737373a20696e73756666696369656e7420616c6c6f77616e63650000604482015260640161041f565b6107b684848484036107db565b6001600160a01b0386166109f35760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b606482015260840161041f565b6001600160a01b038516610a555760405162461bcd60e51b8152602060048201526024808201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161041f565b33610a64818888888888610c3e565b610a72818888888888610d74565b610a8181888888888888610eda565b50505050505050565b6001600160a01b038416610aeb5760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b606482015260840161041f565b33610afb81866000878787610c3e565b6001600160a01b03851660009081526020819052604090205484811015610b705760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b606482015260840161041f565b6001600160a01b0386166000908152602081905260408120868303905560018054879290610b9f908490611529565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098878787604051610bed93929190611540565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610cba57600080fd5b505afa158015610cce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf29190611575565b90506001600160a01b03811615610a8157604051633ad5cbc160e11b81526001600160a01b038216906375ab978290610d39908a908a908a908a908a908a90600401611592565b600060405180830381600087803b158015610d5357600080fd5b505af1158015610d67573d6000803e3d6000fd5b5050505050505050505050565b6001600160a01b03851660009081526020819052604090205483811015610ded5760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b606482015260840161041f565b6001600160a01b03808716600090815260208190526040808220878503905591871681529081208054869290610e249084906115ec565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051610e7c93929190611540565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610ec991815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610f5657600080fd5b505afa158015610f6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8e9190611575565b90506001600160a01b0381161561100a576040516223de2960e01b81526001600160a01b038216906223de2990610fd3908b908b908b908b908b908b90600401611592565b600060405180830381600087803b158015610fed57600080fd5b505af1158015611001573d6000803e3d6000fd5b505050506110a4565b81156110a4576001600160a01b0386163b156110a45760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a40161041f565b5050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156110ef5783516001600160a01b0316835292840192918401916001016110ca565b50909695505050505050565b6000815180845260005b8181101561112157602081850181015186830182015201611105565b81811115611133576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061066160208301846110fb565b6001600160a01b038116811461117057600080fd5b50565b6000806040838503121561118657600080fd5b82356111918161115b565b946020939093013593505050565b6000806000606084860312156111b457600080fd5b83356111bf8161115b565b925060208401356111cf8161115b565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261120757600080fd5b813567ffffffffffffffff80821115611222576112226111e0565b604051601f8301601f19908116603f0116810190828211818310171561124a5761124a6111e0565b8160405283815286602085880101111561126357600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a0868803121561129b57600080fd5b85356112a68161115b565b945060208601356112b68161115b565b935060408601359250606086013567ffffffffffffffff808211156112da57600080fd5b6112e689838a016111f6565b935060808801359150808211156112fc57600080fd5b50611309888289016111f6565b9150509295509295909350565b60006020828403121561132857600080fd5b81356106618161115b565b60008060006060848603121561134857600080fd5b83356113538161115b565b925060208401359150604084013567ffffffffffffffff81111561137657600080fd5b611382868287016111f6565b9150509250925092565b6000806040838503121561139f57600080fd5b82356113aa8161115b565b915060208301356113ba8161115b565b809150509250929050565b600080600080608085870312156113db57600080fd5b84356113e68161115b565b935060208501359250604085013567ffffffffffffffff8082111561140a57600080fd5b611416888389016111f6565b9350606087013591508082111561142c57600080fd5b50611439878288016111f6565b91505092959194509250565b6000806040838503121561145857600080fd5b82359150602083013567ffffffffffffffff81111561147657600080fd5b611482858286016111f6565b9150509250929050565b600181811c908216806114a057607f821691505b602082108114156114c157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008282101561153b5761153b611513565b500390565b83815260606020820152600061155960608301856110fb565b828103604084015261156b81856110fb565b9695505050505050565b60006020828403121561158757600080fd5b81516106618161115b565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c0608082018190526000906115cd908301856110fb565b82810360a08401526115df81856110fb565b9998505050505050505050565b600082198211156115ff576115ff611513565b50019056fea2646970667358221220dec8b87b9af6219ef84a946a07b0afce572fce594cc7b8b387590cb21c422daf64736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063959b8c3f116100a2578063d95b637111610071578063d95b63711461022b578063dd62ed3e1461023e578063fad8b32a14610277578063fc673c4f1461028a578063fe9d93031461029d57600080fd5b8063959b8c3f146101ea57806395d89b41146101fd5780639bd9bbc614610205578063a9059cbb1461021857600080fd5b806323b872dd116100e957806323b872dd14610183578063313ce56714610196578063556f0dc7146101a557806362ad1b83146101ac57806370a08231146101c157600080fd5b806306e485381461011b57806306fdde0314610139578063095ea7b31461014e57806318160ddd14610171575b600080fd5b6101236102b0565b60405161013091906110ae565b60405180910390f35b610141610312565b6040516101309190611148565b61016161015c366004611173565b61039b565b6040519015158152602001610130565b6001545b604051908152602001610130565b61016161019136600461119f565b6103b3565b60405160128152602001610130565b6001610175565b6101bf6101ba366004611283565b6103f9565b005b6101756101cf366004611316565b6001600160a01b031660009081526020819052604090205490565b6101bf6101f8366004611316565b61043e565b61014161055c565b6101bf610213366004611333565b61056b565b610161610226366004611173565b61058e565b61016161023936600461138c565b6105c6565b61017561024c36600461138c565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6101bf610285366004611316565b610668565b6101bf6102983660046113c5565b610784565b6101bf6102ab366004611445565b6107bc565b6060600480548060200260200160405190810160405280929190818152602001828054801561030857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102ea575b5050505050905090565b6060600280546103219061148c565b80601f016020809104026020016040519081016040528092919081815260200182805461034d9061148c565b80156103085780601f1061036f57610100808354040283529160200191610308565b820191906000526020600020905b81548152906001019060200180831161037d57509395945050505050565b6000336103a98185856107db565b5060019392505050565b6000336103c1858285610902565b6103ee8585856040518060200160405280600081525060405180602001604052806000815250600061098e565b506001949350505050565b61040333866105c6565b6104285760405162461bcd60e51b815260040161041f906114c7565b60405180910390fd5b6104378585858585600161098e565b5050505050565b336001600160a01b03821614156104a35760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff16156104f4573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19169055610523565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b6060600380546103219061148c565b6105893384848460405180602001604052806000815250600161098e565b505050565b60006105bd3384846040518060200160405280600081525060405180602001604052806000815250600061098e565b50600192915050565b6000816001600160a01b0316836001600160a01b0316148061063157506001600160a01b03831660009081526005602052604090205460ff16801561063157506001600160a01b0380831660009081526007602090815260408083209387168352929052205460ff16155b8061066157506001600160a01b0380831660009081526006602090815260408083209387168352929052205460ff165b9392505050565b6001600160a01b0381163314156106cb5760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff161561071f573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561074b565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b61078e33856105c6565b6107aa5760405162461bcd60e51b815260040161041f906114c7565b6107b684848484610a8a565b50505050565b6107d733838360405180602001604052806000815250610a8a565b5050565b6001600160a01b03831661083f5760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161041f565b6001600160a01b0382166108a15760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b606482015260840161041f565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526008602090815260408083209386168352929052205460001981146107b657818110156109815760405162461bcd60e51b815260206004820152601e60248201527f4552433737373a20696e73756666696369656e7420616c6c6f77616e63650000604482015260640161041f565b6107b684848484036107db565b6001600160a01b0386166109f35760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b606482015260840161041f565b6001600160a01b038516610a555760405162461bcd60e51b8152602060048201526024808201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161041f565b33610a64818888888888610c3e565b610a72818888888888610d74565b610a8181888888888888610eda565b50505050505050565b6001600160a01b038416610aeb5760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b606482015260840161041f565b33610afb81866000878787610c3e565b6001600160a01b03851660009081526020819052604090205484811015610b705760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b606482015260840161041f565b6001600160a01b0386166000908152602081905260408120868303905560018054879290610b9f908490611529565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098878787604051610bed93929190611540565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610cba57600080fd5b505afa158015610cce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf29190611575565b90506001600160a01b03811615610a8157604051633ad5cbc160e11b81526001600160a01b038216906375ab978290610d39908a908a908a908a908a908a90600401611592565b600060405180830381600087803b158015610d5357600080fd5b505af1158015610d67573d6000803e3d6000fd5b5050505050505050505050565b6001600160a01b03851660009081526020819052604090205483811015610ded5760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b606482015260840161041f565b6001600160a01b03808716600090815260208190526040808220878503905591871681529081208054869290610e249084906115ec565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051610e7c93929190611540565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610ec991815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610f5657600080fd5b505afa158015610f6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8e9190611575565b90506001600160a01b0381161561100a576040516223de2960e01b81526001600160a01b038216906223de2990610fd3908b908b908b908b908b908b90600401611592565b600060405180830381600087803b158015610fed57600080fd5b505af1158015611001573d6000803e3d6000fd5b505050506110a4565b81156110a4576001600160a01b0386163b156110a45760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a40161041f565b5050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156110ef5783516001600160a01b0316835292840192918401916001016110ca565b50909695505050505050565b6000815180845260005b8181101561112157602081850181015186830182015201611105565b81811115611133576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061066160208301846110fb565b6001600160a01b038116811461117057600080fd5b50565b6000806040838503121561118657600080fd5b82356111918161115b565b946020939093013593505050565b6000806000606084860312156111b457600080fd5b83356111bf8161115b565b925060208401356111cf8161115b565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261120757600080fd5b813567ffffffffffffffff80821115611222576112226111e0565b604051601f8301601f19908116603f0116810190828211818310171561124a5761124a6111e0565b8160405283815286602085880101111561126357600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a0868803121561129b57600080fd5b85356112a68161115b565b945060208601356112b68161115b565b935060408601359250606086013567ffffffffffffffff808211156112da57600080fd5b6112e689838a016111f6565b935060808801359150808211156112fc57600080fd5b50611309888289016111f6565b9150509295509295909350565b60006020828403121561132857600080fd5b81356106618161115b565b60008060006060848603121561134857600080fd5b83356113538161115b565b925060208401359150604084013567ffffffffffffffff81111561137657600080fd5b611382868287016111f6565b9150509250925092565b6000806040838503121561139f57600080fd5b82356113aa8161115b565b915060208301356113ba8161115b565b809150509250929050565b600080600080608085870312156113db57600080fd5b84356113e68161115b565b935060208501359250604085013567ffffffffffffffff8082111561140a57600080fd5b611416888389016111f6565b9350606087013591508082111561142c57600080fd5b50611439878288016111f6565b91505092959194509250565b6000806040838503121561145857600080fd5b82359150602083013567ffffffffffffffff81111561147657600080fd5b611482858286016111f6565b9150509250929050565b600181811c908216806114a057607f821691505b602082108114156114c157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008282101561153b5761153b611513565b500390565b83815260606020820152600061155960608301856110fb565b828103604084015261156b81856110fb565b9695505050505050565b60006020828403121561158757600080fd5b81516106618161115b565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c0608082018190526000906115cd908301856110fb565b82810360a08401526115df81856110fb565b9998505050505050505050565b600082198211156115ff576115ff611513565b50019056fea2646970667358221220dec8b87b9af6219ef84a946a07b0afce572fce594cc7b8b387590cb21c422daf64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC777/IERC777":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC777","sourceName":"contracts/token/ERC777/IERC777.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"AuthorizedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"RevokedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Sent","type":"event"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"authorizeOperator","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":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"defaultOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"granularity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"tokenHolder","type":"address"}],"name":"isOperatorFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"revokeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"send","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC777/IERC777Recipient":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC777Recipient","sourceName":"contracts/token/ERC777/IERC777Recipient.sol","abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"tokensReceived","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC777/IERC777Sender":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC777Sender","sourceName":"contracts/token/ERC777/IERC777Sender.sol","abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"tokensToSend","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/token/ERC777/presets/ERC777PresetFixedSupply":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC777PresetFixedSupply","sourceName":"contracts/token/ERC777/presets/ERC777PresetFixedSupply.sol","abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"address[]","name":"defaultOperators","type":"address[]"},{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"AuthorizedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"RevokedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Sent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"authorizeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenHolder","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"defaultOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"granularity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"tokenHolder","type":"address"}],"name":"isOperatorFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"revokeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"send","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x60806040523480156200001157600080fd5b50604051620020d1380380620020d18339810160408190526200003491620007c9565b84848482600290805190602001906200004f929190620005c2565b50815162000065906003906020850190620005c2565b5080516200007b90600490602084019062000651565b5060005b8151811015620000eb57600160056000848481518110620000a457620000a4620008ec565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580620000e28162000918565b9150506200007f565b506040516329965a1d60e01b815230600482018190527fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce217705460248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad24906329965a1d90606401600060405180830381600087803b1580156200016657600080fd5b505af11580156200017b573d6000803e3d6000fd5b50506040516329965a1d60e01b815230600482018190527faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a60248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad2492506329965a1d9150606401600060405180830381600087803b158015620001f957600080fd5b505af11580156200020e573d6000803e3d6000fd5b5050505050505062000247818360405180602001604052806000815250604051806020016040528060008152506200025260201b60201c565b505050505062000a78565b6200026284848484600162000268565b50505050565b6001600160a01b038516620002c45760405162461bcd60e51b815260206004820181905260248201527f4552433737373a206d696e7420746f20746865207a65726f206164647265737360448201526064015b60405180910390fd5b60003390508460016000828254620002dd919062000936565b90915550506001600160a01b038616600090815260208190526040812080548792906200030c90849062000936565b909155506200032490508160008888888888620003be565b856001600160a01b0316816001600160a01b03167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d8787876040516200036d939291906200097f565b60405180910390a36040518581526001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b1580156200043b57600080fd5b505afa15801562000450573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004769190620009b8565b90506001600160a01b03811615620004f8576040516223de2960e01b81526001600160a01b038216906223de2990620004be908b908b908b908b908b908b90600401620009dd565b600060405180830381600087803b158015620004d957600080fd5b505af1158015620004ee573d6000803e3d6000fd5b50505050620005a9565b8115620005a9576200051e866001600160a01b0316620005b360201b620007db1760201c565b15620005a95760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a401620002bb565b5050505050505050565b6001600160a01b03163b151590565b828054620005d09062000a3b565b90600052602060002090601f016020900481019282620005f457600085556200063f565b82601f106200060f57805160ff19168380011785556200063f565b828001600101855582156200063f579182015b828111156200063f57825182559160200191906001019062000622565b506200064d929150620006a9565b5090565b8280548282559060005260206000209081019282156200063f579160200282015b828111156200063f57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000672565b5b808211156200064d5760008155600101620006aa565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620007015762000701620006c0565b604052919050565b60005b83811015620007265781810151838201526020016200070c565b83811115620002625750506000910152565b600082601f8301126200074a57600080fd5b81516001600160401b03811115620007665762000766620006c0565b6200077b601f8201601f1916602001620006d6565b8181528460208386010111156200079157600080fd5b620007a482602083016020870162000709565b949350505050565b80516001600160a01b0381168114620007c457600080fd5b919050565b600080600080600060a08688031215620007e257600080fd5b85516001600160401b0380821115620007fa57600080fd5b6200080889838a0162000738565b96506020915081880151818111156200082057600080fd5b6200082e8a828b0162000738565b9650506040880151818111156200084457600080fd5b8801601f81018a136200085657600080fd5b8051828111156200086b576200086b620006c0565b8060051b92506200087e848401620006d6565b818152928201840192848101908c8511156200089957600080fd5b928501925b84841015620008c257620008b284620007ac565b825292850192908501906200089e565b80985050505050505060608601519150620008e060808701620007ac565b90509295509295909350565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156200092f576200092f62000902565b5060010190565b600082198211156200094c576200094c62000902565b500190565b600081518084526200096b81602086016020860162000709565b601f01601f19169290920160200192915050565b8381526060602082015260006200099a606083018562000951565b8281036040840152620009ae818562000951565b9695505050505050565b600060208284031215620009cb57600080fd5b620009d682620007ac565b9392505050565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c06080820181905260009062000a1a9083018562000951565b82810360a084015262000a2e818562000951565b9998505050505050505050565b600181811c9082168062000a5057607f821691505b6020821081141562000a7257634e487b7160e01b600052602260045260246000fd5b50919050565b6116498062000a886000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063959b8c3f116100a2578063d95b637111610071578063d95b63711461022b578063dd62ed3e1461023e578063fad8b32a14610277578063fc673c4f1461028a578063fe9d93031461029d57600080fd5b8063959b8c3f146101ea57806395d89b41146101fd5780639bd9bbc614610205578063a9059cbb1461021857600080fd5b806323b872dd116100e957806323b872dd14610183578063313ce56714610196578063556f0dc7146101a557806362ad1b83146101ac57806370a08231146101c157600080fd5b806306e485381461011b57806306fdde0314610139578063095ea7b31461014e57806318160ddd14610171575b600080fd5b6101236102b0565b60405161013091906110bd565b60405180910390f35b610141610312565b6040516101309190611157565b61016161015c366004611182565b61039b565b6040519015158152602001610130565b6001545b604051908152602001610130565b6101616101913660046111ae565b6103b3565b60405160128152602001610130565b6001610175565b6101bf6101ba366004611292565b6103f9565b005b6101756101cf366004611325565b6001600160a01b031660009081526020819052604090205490565b6101bf6101f8366004611325565b61043e565b61014161055c565b6101bf610213366004611342565b61056b565b610161610226366004611182565b61058e565b61016161023936600461139b565b6105c6565b61017561024c36600461139b565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6101bf610285366004611325565b610668565b6101bf6102983660046113d4565b610784565b6101bf6102ab366004611454565b6107bc565b6060600480548060200260200160405190810160405280929190818152602001828054801561030857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102ea575b5050505050905090565b6060600280546103219061149b565b80601f016020809104026020016040519081016040528092919081815260200182805461034d9061149b565b80156103085780601f1061036f57610100808354040283529160200191610308565b820191906000526020600020905b81548152906001019060200180831161037d57509395945050505050565b6000336103a98185856107ea565b5060019392505050565b6000336103c1858285610911565b6103ee8585856040518060200160405280600081525060405180602001604052806000815250600061099d565b506001949350505050565b61040333866105c6565b6104285760405162461bcd60e51b815260040161041f906114d6565b60405180910390fd5b6104378585858585600161099d565b5050505050565b336001600160a01b03821614156104a35760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff16156104f4573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19169055610523565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b6060600380546103219061149b565b6105893384848460405180602001604052806000815250600161099d565b505050565b60006105bd3384846040518060200160405280600081525060405180602001604052806000815250600061099d565b50600192915050565b6000816001600160a01b0316836001600160a01b0316148061063157506001600160a01b03831660009081526005602052604090205460ff16801561063157506001600160a01b0380831660009081526007602090815260408083209387168352929052205460ff16155b8061066157506001600160a01b0380831660009081526006602090815260408083209387168352929052205460ff165b9392505050565b6001600160a01b0381163314156106cb5760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff161561071f573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561074b565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b61078e33856105c6565b6107aa5760405162461bcd60e51b815260040161041f906114d6565b6107b684848484610a99565b50505050565b6107d733838360405180602001604052806000815250610a99565b5050565b6001600160a01b03163b151590565b6001600160a01b03831661084e5760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161041f565b6001600160a01b0382166108b05760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b606482015260840161041f565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526008602090815260408083209386168352929052205460001981146107b657818110156109905760405162461bcd60e51b815260206004820152601e60248201527f4552433737373a20696e73756666696369656e7420616c6c6f77616e63650000604482015260640161041f565b6107b684848484036107ea565b6001600160a01b038616610a025760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b606482015260840161041f565b6001600160a01b038516610a645760405162461bcd60e51b8152602060048201526024808201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161041f565b33610a73818888888888610c4d565b610a81818888888888610d83565b610a9081888888888888610ee9565b50505050505050565b6001600160a01b038416610afa5760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b606482015260840161041f565b33610b0a81866000878787610c4d565b6001600160a01b03851660009081526020819052604090205484811015610b7f5760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b606482015260840161041f565b6001600160a01b0386166000908152602081905260408120868303905560018054879290610bae908490611538565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098878787604051610bfc9392919061154f565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610cc957600080fd5b505afa158015610cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d019190611584565b90506001600160a01b03811615610a9057604051633ad5cbc160e11b81526001600160a01b038216906375ab978290610d48908a908a908a908a908a908a906004016115a1565b600060405180830381600087803b158015610d6257600080fd5b505af1158015610d76573d6000803e3d6000fd5b5050505050505050505050565b6001600160a01b03851660009081526020819052604090205483811015610dfc5760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b606482015260840161041f565b6001600160a01b03808716600090815260208190526040808220878503905591871681529081208054869290610e339084906115fb565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051610e8b9392919061154f565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610ed891815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610f6557600080fd5b505afa158015610f79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9d9190611584565b90506001600160a01b03811615611019576040516223de2960e01b81526001600160a01b038216906223de2990610fe2908b908b908b908b908b908b906004016115a1565b600060405180830381600087803b158015610ffc57600080fd5b505af1158015611010573d6000803e3d6000fd5b505050506110b3565b81156110b3576001600160a01b0386163b156110b35760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a40161041f565b5050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156110fe5783516001600160a01b0316835292840192918401916001016110d9565b50909695505050505050565b6000815180845260005b8181101561113057602081850181015186830182015201611114565b81811115611142576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610661602083018461110a565b6001600160a01b038116811461117f57600080fd5b50565b6000806040838503121561119557600080fd5b82356111a08161116a565b946020939093013593505050565b6000806000606084860312156111c357600080fd5b83356111ce8161116a565b925060208401356111de8161116a565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261121657600080fd5b813567ffffffffffffffff80821115611231576112316111ef565b604051601f8301601f19908116603f01168101908282118183101715611259576112596111ef565b8160405283815286602085880101111561127257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156112aa57600080fd5b85356112b58161116a565b945060208601356112c58161116a565b935060408601359250606086013567ffffffffffffffff808211156112e957600080fd5b6112f589838a01611205565b9350608088013591508082111561130b57600080fd5b5061131888828901611205565b9150509295509295909350565b60006020828403121561133757600080fd5b81356106618161116a565b60008060006060848603121561135757600080fd5b83356113628161116a565b925060208401359150604084013567ffffffffffffffff81111561138557600080fd5b61139186828701611205565b9150509250925092565b600080604083850312156113ae57600080fd5b82356113b98161116a565b915060208301356113c98161116a565b809150509250929050565b600080600080608085870312156113ea57600080fd5b84356113f58161116a565b935060208501359250604085013567ffffffffffffffff8082111561141957600080fd5b61142588838901611205565b9350606087013591508082111561143b57600080fd5b5061144887828801611205565b91505092959194509250565b6000806040838503121561146757600080fd5b82359150602083013567ffffffffffffffff81111561148557600080fd5b61149185828601611205565b9150509250929050565b600181811c908216806114af57607f821691505b602082108114156114d057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008282101561154a5761154a611522565b500390565b838152606060208201526000611568606083018561110a565b828103604084015261157a818561110a565b9695505050505050565b60006020828403121561159657600080fd5b81516106618161116a565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c0608082018190526000906115dc9083018561110a565b82810360a08401526115ee818561110a565b9998505050505050505050565b6000821982111561160e5761160e611522565b50019056fea2646970667358221220c35887fab1a87d1b8867924b2ee66f5a7e6813cecffe415f10c449675c0cd5a964736f6c63430008090033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063959b8c3f116100a2578063d95b637111610071578063d95b63711461022b578063dd62ed3e1461023e578063fad8b32a14610277578063fc673c4f1461028a578063fe9d93031461029d57600080fd5b8063959b8c3f146101ea57806395d89b41146101fd5780639bd9bbc614610205578063a9059cbb1461021857600080fd5b806323b872dd116100e957806323b872dd14610183578063313ce56714610196578063556f0dc7146101a557806362ad1b83146101ac57806370a08231146101c157600080fd5b806306e485381461011b57806306fdde0314610139578063095ea7b31461014e57806318160ddd14610171575b600080fd5b6101236102b0565b60405161013091906110bd565b60405180910390f35b610141610312565b6040516101309190611157565b61016161015c366004611182565b61039b565b6040519015158152602001610130565b6001545b604051908152602001610130565b6101616101913660046111ae565b6103b3565b60405160128152602001610130565b6001610175565b6101bf6101ba366004611292565b6103f9565b005b6101756101cf366004611325565b6001600160a01b031660009081526020819052604090205490565b6101bf6101f8366004611325565b61043e565b61014161055c565b6101bf610213366004611342565b61056b565b610161610226366004611182565b61058e565b61016161023936600461139b565b6105c6565b61017561024c36600461139b565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6101bf610285366004611325565b610668565b6101bf6102983660046113d4565b610784565b6101bf6102ab366004611454565b6107bc565b6060600480548060200260200160405190810160405280929190818152602001828054801561030857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102ea575b5050505050905090565b6060600280546103219061149b565b80601f016020809104026020016040519081016040528092919081815260200182805461034d9061149b565b80156103085780601f1061036f57610100808354040283529160200191610308565b820191906000526020600020905b81548152906001019060200180831161037d57509395945050505050565b6000336103a98185856107ea565b5060019392505050565b6000336103c1858285610911565b6103ee8585856040518060200160405280600081525060405180602001604052806000815250600061099d565b506001949350505050565b61040333866105c6565b6104285760405162461bcd60e51b815260040161041f906114d6565b60405180910390fd5b6104378585858585600161099d565b5050505050565b336001600160a01b03821614156104a35760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff16156104f4573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19169055610523565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b6060600380546103219061149b565b6105893384848460405180602001604052806000815250600161099d565b505050565b60006105bd3384846040518060200160405280600081525060405180602001604052806000815250600061099d565b50600192915050565b6000816001600160a01b0316836001600160a01b0316148061063157506001600160a01b03831660009081526005602052604090205460ff16801561063157506001600160a01b0380831660009081526007602090815260408083209387168352929052205460ff16155b8061066157506001600160a01b0380831660009081526006602090815260408083209387168352929052205460ff165b9392505050565b6001600160a01b0381163314156106cb5760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff161561071f573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561074b565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b61078e33856105c6565b6107aa5760405162461bcd60e51b815260040161041f906114d6565b6107b684848484610a99565b50505050565b6107d733838360405180602001604052806000815250610a99565b5050565b6001600160a01b03163b151590565b6001600160a01b03831661084e5760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161041f565b6001600160a01b0382166108b05760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b606482015260840161041f565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526008602090815260408083209386168352929052205460001981146107b657818110156109905760405162461bcd60e51b815260206004820152601e60248201527f4552433737373a20696e73756666696369656e7420616c6c6f77616e63650000604482015260640161041f565b6107b684848484036107ea565b6001600160a01b038616610a025760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b606482015260840161041f565b6001600160a01b038516610a645760405162461bcd60e51b8152602060048201526024808201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161041f565b33610a73818888888888610c4d565b610a81818888888888610d83565b610a9081888888888888610ee9565b50505050505050565b6001600160a01b038416610afa5760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b606482015260840161041f565b33610b0a81866000878787610c4d565b6001600160a01b03851660009081526020819052604090205484811015610b7f5760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b606482015260840161041f565b6001600160a01b0386166000908152602081905260408120868303905560018054879290610bae908490611538565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098878787604051610bfc9392919061154f565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610cc957600080fd5b505afa158015610cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d019190611584565b90506001600160a01b03811615610a9057604051633ad5cbc160e11b81526001600160a01b038216906375ab978290610d48908a908a908a908a908a908a906004016115a1565b600060405180830381600087803b158015610d6257600080fd5b505af1158015610d76573d6000803e3d6000fd5b5050505050505050505050565b6001600160a01b03851660009081526020819052604090205483811015610dfc5760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b606482015260840161041f565b6001600160a01b03808716600090815260208190526040808220878503905591871681529081208054869290610e339084906115fb565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051610e8b9392919061154f565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610ed891815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610f6557600080fd5b505afa158015610f79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9d9190611584565b90506001600160a01b03811615611019576040516223de2960e01b81526001600160a01b038216906223de2990610fe2908b908b908b908b908b908b906004016115a1565b600060405180830381600087803b158015610ffc57600080fd5b505af1158015611010573d6000803e3d6000fd5b505050506110b3565b81156110b3576001600160a01b0386163b156110b35760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a40161041f565b5050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156110fe5783516001600160a01b0316835292840192918401916001016110d9565b50909695505050505050565b6000815180845260005b8181101561113057602081850181015186830182015201611114565b81811115611142576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610661602083018461110a565b6001600160a01b038116811461117f57600080fd5b50565b6000806040838503121561119557600080fd5b82356111a08161116a565b946020939093013593505050565b6000806000606084860312156111c357600080fd5b83356111ce8161116a565b925060208401356111de8161116a565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261121657600080fd5b813567ffffffffffffffff80821115611231576112316111ef565b604051601f8301601f19908116603f01168101908282118183101715611259576112596111ef565b8160405283815286602085880101111561127257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156112aa57600080fd5b85356112b58161116a565b945060208601356112c58161116a565b935060408601359250606086013567ffffffffffffffff808211156112e957600080fd5b6112f589838a01611205565b9350608088013591508082111561130b57600080fd5b5061131888828901611205565b9150509295509295909350565b60006020828403121561133757600080fd5b81356106618161116a565b60008060006060848603121561135757600080fd5b83356113628161116a565b925060208401359150604084013567ffffffffffffffff81111561138557600080fd5b61139186828701611205565b9150509250925092565b600080604083850312156113ae57600080fd5b82356113b98161116a565b915060208301356113c98161116a565b809150509250929050565b600080600080608085870312156113ea57600080fd5b84356113f58161116a565b935060208501359250604085013567ffffffffffffffff8082111561141957600080fd5b61142588838901611205565b9350606087013591508082111561143b57600080fd5b5061144887828801611205565b91505092959194509250565b6000806040838503121561146757600080fd5b82359150602083013567ffffffffffffffff81111561148557600080fd5b61149185828601611205565b9150509250929050565b600181811c908216806114af57607f821691505b602082108114156114d057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008282101561154a5761154a611522565b500390565b838152606060208201526000611568606083018561110a565b828103604084015261157a818561110a565b9695505050505050565b60006020828403121561159657600080fd5b81516106618161116a565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c0608082018190526000906115dc9083018561110a565b82810360a08401526115ee818561110a565b9998505050505050505050565b6000821982111561160e5761160e611522565b50019056fea2646970667358221220c35887fab1a87d1b8867924b2ee66f5a7e6813cecffe415f10c449675c0cd5a964736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Address":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Address","sourceName":"contracts/utils/Address.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220606d7d087d9537598f178a0e24bbca9265c44e5d57806c9d1487d791c2014e6d64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220606d7d087d9537598f178a0e24bbca9265c44e5d57806c9d1487d791c2014e6d64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Arrays":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Arrays","sourceName":"contracts/utils/Arrays.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220655ca9dd21119229980dc932da7b27559291a855eeef99bfff98cd076fd5895c64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220655ca9dd21119229980dc932da7b27559291a855eeef99bfff98cd076fd5895c64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Base64":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Base64","sourceName":"contracts/utils/Base64.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122011638abb6e3586d7f6ccaa6dd9fb1274cbb9c8730c14061f650735e65642a99964736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122011638abb6e3586d7f6ccaa6dd9fb1274cbb9c8730c14061f650735e65642a99964736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Checkpoints":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Checkpoints","sourceName":"contracts/utils/Checkpoints.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122052b0c69fec6bee636076dd6f90ff9c1a517975fe60ef11a3192d0049d34e9c0c64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122052b0c69fec6bee636076dd6f90ff9c1a517975fe60ef11a3192d0049d34e9c0c64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Context":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Context","sourceName":"contracts/utils/Context.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Counters":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Counters","sourceName":"contracts/utils/Counters.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207e9744ee0d57c3c7ee555c3db47df50e361acf4e3c082e5de7aefa7b14d96ce264736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207e9744ee0d57c3c7ee555c3db47df50e361acf4e3c082e5de7aefa7b14d96ce264736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Create2":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Create2","sourceName":"contracts/utils/Create2.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663fd34c338df3acc96e8be8f5ab984b23259d2ddb6dd435519240eb376fd9b064736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220663fd34c338df3acc96e8be8f5ab984b23259d2ddb6dd435519240eb376fd9b064736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/cryptography/EIP712":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"EIP712","sourceName":"contracts/utils/cryptography/draft-EIP712.sol","abi":[],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/cryptography/ECDSA":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ECDSA","sourceName":"contracts/utils/cryptography/ECDSA.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220914ddf8c54b121fc32a2c250c5713169e8ee9e5bdf72d13b12f1137e3ca30e2464736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220914ddf8c54b121fc32a2c250c5713169e8ee9e5bdf72d13b12f1137e3ca30e2464736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/cryptography/MerkleProof":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"MerkleProof","sourceName":"contracts/utils/cryptography/MerkleProof.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209d381f7e6729bdfbea34798b2f92550cb12e1699fa50dc80557b2ee144c8e2e664736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209d381f7e6729bdfbea34798b2f92550cb12e1699fa50dc80557b2ee144c8e2e664736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/cryptography/SignatureChecker":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"SignatureChecker","sourceName":"contracts/utils/cryptography/SignatureChecker.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209842b391c06c2db43bee88f2053a845447fe59228a99b55b5c6323f1b1d6a51364736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209842b391c06c2db43bee88f2053a845447fe59228a99b55b5c6323f1b1d6a51364736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/escrow/ConditionalEscrow":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ConditionalEscrow","sourceName":"contracts/utils/escrow/ConditionalEscrow.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":false,"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":false,"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"address","name":"payee","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"payee","type":"address"}],"name":"depositsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"payee","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"payee","type":"address"}],"name":"withdrawalAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/escrow/Escrow":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Escrow","sourceName":"contracts/utils/escrow/Escrow.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":false,"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":false,"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"address","name":"payee","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"payee","type":"address"}],"name":"depositsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"payee","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61050d8061007e6000396000f3fe6080604052600436106100555760003560e01c806351cff8d91461005a578063715018a61461007c5780638da5cb5b14610091578063e3a9db1a146100be578063f2fde38b14610102578063f340fa0114610122575b600080fd5b34801561006657600080fd5b5061007a61007536600461048d565b610135565b005b34801561008857600080fd5b5061007a6101ac565b34801561009d57600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b3480156100ca57600080fd5b506100f46100d936600461048d565b6001600160a01b031660009081526001602052604090205490565b6040519081526020016100b5565b34801561010e57600080fd5b5061007a61011d36600461048d565b6101c0565b61007a61013036600461048d565b61023e565b61013d6102b0565b6001600160a01b0381166000818152600160205260408120805491905590610165908261030a565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516101a091815260200190565b60405180910390a25050565b6101b46102b0565b6101be6000610428565b565b6101c86102b0565b6001600160a01b0381166102325760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61023b81610428565b50565b6102466102b0565b6001600160a01b0381166000908152600160205260408120805434928392916102709084906104b1565b90915550506040518181526001600160a01b038316907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020016101a0565b6000546001600160a01b031633146101be5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610229565b8047101561035a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610229565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146103a7576040519150601f19603f3d011682016040523d82523d6000602084013e6103ac565b606091505b50509050806104235760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610229565b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461023b57600080fd5b60006020828403121561049f57600080fd5b81356104aa81610478565b9392505050565b600082198211156104d257634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220f0e4e0868b7beb65355490f66dcb5e786874e97e41891698970cad2925921cfe64736f6c63430008090033","deployedBytecode":"0x6080604052600436106100555760003560e01c806351cff8d91461005a578063715018a61461007c5780638da5cb5b14610091578063e3a9db1a146100be578063f2fde38b14610102578063f340fa0114610122575b600080fd5b34801561006657600080fd5b5061007a61007536600461048d565b610135565b005b34801561008857600080fd5b5061007a6101ac565b34801561009d57600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b3480156100ca57600080fd5b506100f46100d936600461048d565b6001600160a01b031660009081526001602052604090205490565b6040519081526020016100b5565b34801561010e57600080fd5b5061007a61011d36600461048d565b6101c0565b61007a61013036600461048d565b61023e565b61013d6102b0565b6001600160a01b0381166000818152600160205260408120805491905590610165908261030a565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516101a091815260200190565b60405180910390a25050565b6101b46102b0565b6101be6000610428565b565b6101c86102b0565b6001600160a01b0381166102325760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61023b81610428565b50565b6102466102b0565b6001600160a01b0381166000908152600160205260408120805434928392916102709084906104b1565b90915550506040518181526001600160a01b038316907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020016101a0565b6000546001600160a01b031633146101be5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610229565b8047101561035a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610229565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146103a7576040519150601f19603f3d011682016040523d82523d6000602084013e6103ac565b606091505b50509050806104235760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610229565b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461023b57600080fd5b60006020828403121561049f57600080fd5b81356104aa81610478565b9392505050565b600082198211156104d257634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220f0e4e0868b7beb65355490f66dcb5e786874e97e41891698970cad2925921cfe64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/escrow/RefundEscrow":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"RefundEscrow","sourceName":"contracts/utils/escrow/RefundEscrow.sol","abi":[{"inputs":[{"internalType":"address payable","name":"beneficiary_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":false,"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RefundsClosed","type":"event"},{"anonymous":false,"inputs":[],"name":"RefundsEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":false,"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"beneficiary","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beneficiaryWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"close","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"refundee","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"payee","type":"address"}],"name":"depositsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableRefunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"state","outputs":[{"internalType":"enum RefundEscrow.State","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"payee","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"withdrawalAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60a060405234801561001057600080fd5b50604051610b22380380610b2283398101604081905261002f91610113565b610038336100c3565b6001600160a01b0381166100a85760405162461bcd60e51b815260206004820152602d60248201527f526566756e64457363726f773a2062656e65666963696172792069732074686560448201526c207a65726f206164647265737360981b606482015260840160405180910390fd5b6001600160a01b03166080526002805460ff19169055610143565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561012557600080fd5b81516001600160a01b038116811461013c57600080fd5b9392505050565b6080516109be6101646000396000818160bb015261051b01526109be6000f3fe6080604052600436106100a75760003560e01c80638da5cb5b116100645780638da5cb5b146101895780639af6549a146101a7578063c19d93fb146101bc578063e3a9db1a146101dc578063f2fde38b14610220578063f340fa011461024057600080fd5b806338af3eed146100ac57806343d726d6146100f857806351cff8d91461010f578063685ca1941461012f578063715018a61461015f5780638c52dc4114610174575b600080fd5b3480156100b857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b34801561010457600080fd5b5061010d610253565b005b34801561011b57600080fd5b5061010d61012a366004610900565b61030f565b34801561013b57600080fd5b5061014f61014a366004610900565b61038c565b60405190151581526020016100ef565b34801561016b57600080fd5b5061010d6103ae565b34801561018057600080fd5b5061010d6103c2565b34801561019557600080fd5b506000546001600160a01b03166100db565b3480156101b357600080fd5b5061010d610483565b3480156101c857600080fd5b5060025460ff166040516100ef919061093a565b3480156101e857600080fd5b506102126101f7366004610900565b6001600160a01b031660009081526001602052604090205490565b6040519081526020016100ef565b34801561022c57600080fd5b5061010d61023b366004610900565b610541565b61010d61024e366004610900565b6105b7565b61025b61063a565b600060025460ff16600281111561027457610274610924565b146102d85760405162461bcd60e51b815260206004820152602960248201527f526566756e64457363726f773a2063616e206f6e6c7920636c6f7365207768696044820152686c652061637469766560b81b60648201526084015b60405180910390fd5b6002805460ff1916811790556040517f088672c3a6e342f7cd94a65ba63b79df24a8973927b4d05d803c44bbf787d12f90600090a1565b6103188161038c565b6103805760405162461bcd60e51b815260206004820152603360248201527f436f6e646974696f6e616c457363726f773a207061796565206973206e6f7420604482015272616c6c6f77656420746f20776974686472617760681b60648201526084016102cf565b61038981610694565b50565b6000600160025460ff1660028111156103a7576103a7610924565b1492915050565b6103b661063a565b6103c0600061070b565b565b6103ca61063a565b600060025460ff1660028111156103e3576103e3610924565b1461044b5760405162461bcd60e51b815260206004820152603260248201527f526566756e64457363726f773a2063616e206f6e6c7920656e61626c6520726560448201527166756e6473207768696c652061637469766560701b60648201526084016102cf565b6002805460ff191660011790556040517f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8990600090a1565b6002805460ff16600281111561049b5761049b610924565b1461050e5760405162461bcd60e51b815260206004820152603860248201527f526566756e64457363726f773a2062656e65666963696172792063616e206f6e60448201527f6c79207769746864726177207768696c6520636c6f736564000000000000000060648201526084016102cf565b6103c06001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000164761075b565b61054961063a565b6001600160a01b0381166105ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102cf565b6103898161070b565b600060025460ff1660028111156105d0576105d0610924565b146106315760405162461bcd60e51b815260206004820152602b60248201527f526566756e64457363726f773a2063616e206f6e6c79206465706f736974207760448201526a68696c652061637469766560a81b60648201526084016102cf565b61038981610879565b6000546001600160a01b031633146103c05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102cf565b61069c61063a565b6001600160a01b03811660008181526001602052604081208054919055906106c4908261075b565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516106ff91815260200190565b60405180910390a25050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b804710156107ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016102cf565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146107f8576040519150601f19603f3d011682016040523d82523d6000602084013e6107fd565b606091505b50509050806108745760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016102cf565b505050565b61088161063a565b6001600160a01b0381166000908152600160205260408120805434928392916108ab908490610962565b90915550506040518181526001600160a01b038316907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020016106ff565b6001600160a01b038116811461038957600080fd5b60006020828403121561091257600080fd5b813561091d816108eb565b9392505050565b634e487b7160e01b600052602160045260246000fd5b602081016003831061095c57634e487b7160e01b600052602160045260246000fd5b91905290565b6000821982111561098357634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220d99790e641c40ef87f3b35b232f63f0df03ce3576454bb1cd00ad1fa9fc1f9c564736f6c63430008090033","deployedBytecode":"0x6080604052600436106100a75760003560e01c80638da5cb5b116100645780638da5cb5b146101895780639af6549a146101a7578063c19d93fb146101bc578063e3a9db1a146101dc578063f2fde38b14610220578063f340fa011461024057600080fd5b806338af3eed146100ac57806343d726d6146100f857806351cff8d91461010f578063685ca1941461012f578063715018a61461015f5780638c52dc4114610174575b600080fd5b3480156100b857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b34801561010457600080fd5b5061010d610253565b005b34801561011b57600080fd5b5061010d61012a366004610900565b61030f565b34801561013b57600080fd5b5061014f61014a366004610900565b61038c565b60405190151581526020016100ef565b34801561016b57600080fd5b5061010d6103ae565b34801561018057600080fd5b5061010d6103c2565b34801561019557600080fd5b506000546001600160a01b03166100db565b3480156101b357600080fd5b5061010d610483565b3480156101c857600080fd5b5060025460ff166040516100ef919061093a565b3480156101e857600080fd5b506102126101f7366004610900565b6001600160a01b031660009081526001602052604090205490565b6040519081526020016100ef565b34801561022c57600080fd5b5061010d61023b366004610900565b610541565b61010d61024e366004610900565b6105b7565b61025b61063a565b600060025460ff16600281111561027457610274610924565b146102d85760405162461bcd60e51b815260206004820152602960248201527f526566756e64457363726f773a2063616e206f6e6c7920636c6f7365207768696044820152686c652061637469766560b81b60648201526084015b60405180910390fd5b6002805460ff1916811790556040517f088672c3a6e342f7cd94a65ba63b79df24a8973927b4d05d803c44bbf787d12f90600090a1565b6103188161038c565b6103805760405162461bcd60e51b815260206004820152603360248201527f436f6e646974696f6e616c457363726f773a207061796565206973206e6f7420604482015272616c6c6f77656420746f20776974686472617760681b60648201526084016102cf565b61038981610694565b50565b6000600160025460ff1660028111156103a7576103a7610924565b1492915050565b6103b661063a565b6103c0600061070b565b565b6103ca61063a565b600060025460ff1660028111156103e3576103e3610924565b1461044b5760405162461bcd60e51b815260206004820152603260248201527f526566756e64457363726f773a2063616e206f6e6c7920656e61626c6520726560448201527166756e6473207768696c652061637469766560701b60648201526084016102cf565b6002805460ff191660011790556040517f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8990600090a1565b6002805460ff16600281111561049b5761049b610924565b1461050e5760405162461bcd60e51b815260206004820152603860248201527f526566756e64457363726f773a2062656e65666963696172792063616e206f6e60448201527f6c79207769746864726177207768696c6520636c6f736564000000000000000060648201526084016102cf565b6103c06001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000164761075b565b61054961063a565b6001600160a01b0381166105ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102cf565b6103898161070b565b600060025460ff1660028111156105d0576105d0610924565b146106315760405162461bcd60e51b815260206004820152602b60248201527f526566756e64457363726f773a2063616e206f6e6c79206465706f736974207760448201526a68696c652061637469766560a81b60648201526084016102cf565b61038981610879565b6000546001600160a01b031633146103c05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102cf565b61069c61063a565b6001600160a01b03811660008181526001602052604081208054919055906106c4908261075b565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516106ff91815260200190565b60405180910390a25050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b804710156107ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016102cf565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146107f8576040519150601f19603f3d011682016040523d82523d6000602084013e6107fd565b606091505b50509050806108745760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016102cf565b505050565b61088161063a565b6001600160a01b0381166000908152600160205260408120805434928392916108ab908490610962565b90915550506040518181526001600160a01b038316907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020016106ff565b6001600160a01b038116811461038957600080fd5b60006020828403121561091257600080fd5b813561091d816108eb565b9392505050565b634e487b7160e01b600052602160045260246000fd5b602081016003831061095c57634e487b7160e01b600052602160045260246000fd5b91905290565b6000821982111561098357634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220d99790e641c40ef87f3b35b232f63f0df03ce3576454bb1cd00ad1fa9fc1f9c564736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/introspection/ERC165":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC165","sourceName":"contracts/utils/introspection/ERC165.sol","abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/introspection/ERC165Checker":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC165Checker","sourceName":"contracts/utils/introspection/ERC165Checker.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220117d4739ea209855873e3a69cf4dc77f5649a6e5c941d771dcc0f36cfd51d3a564736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220117d4739ea209855873e3a69cf4dc77f5649a6e5c941d771dcc0f36cfd51d3a564736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/introspection/ERC165Storage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC165Storage","sourceName":"contracts/utils/introspection/ERC165Storage.sol","abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/introspection/ERC1820Implementer":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1820Implementer","sourceName":"contracts/utils/introspection/ERC1820Implementer.sol","abi":[{"inputs":[{"internalType":"bytes32","name":"interfaceHash","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"canImplementInterfaceForAddress","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b50610114806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063249cb3fa14602d575b600080fd5b603c603836600460a4565b604e565b60405190815260200160405180910390f35b6000828152602081815260408083206001600160a01b038516845290915281205460ff16607b576000609d565b7fa2ef4600d742022d532d4747cb3547474667d6f13804902513b2ec01c848f4b45b9392505050565b6000806040838503121560b657600080fd5b8235915060208301356001600160a01b038116811460d357600080fd5b80915050925092905056fea2646970667358221220af9541137737bcae4ca91010bdc12e6ce157547dd38d2d5785066de00fad9b3e64736f6c63430008090033","deployedBytecode":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063249cb3fa14602d575b600080fd5b603c603836600460a4565b604e565b60405190815260200160405180910390f35b6000828152602081815260408083206001600160a01b038516845290915281205460ff16607b576000609d565b7fa2ef4600d742022d532d4747cb3547474667d6f13804902513b2ec01c848f4b45b9392505050565b6000806040838503121560b657600080fd5b8235915060208301356001600160a01b038116811460d357600080fd5b80915050925092905056fea2646970667358221220af9541137737bcae4ca91010bdc12e6ce157547dd38d2d5785066de00fad9b3e64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/introspection/IERC165":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC165","sourceName":"contracts/utils/introspection/IERC165.sol","abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/introspection/IERC1820Implementer":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1820Implementer","sourceName":"contracts/utils/introspection/IERC1820Implementer.sol","abi":[{"inputs":[{"internalType":"bytes32","name":"interfaceHash","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"canImplementInterfaceForAddress","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/introspection/IERC1820Registry":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1820Registry","sourceName":"contracts/utils/introspection/IERC1820Registry.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bytes32","name":"interfaceHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"implementer","type":"address"}],"name":"InterfaceImplementerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"newManager","type":"address"}],"name":"ManagerChanged","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"_interfaceHash","type":"bytes32"}],"name":"getInterfaceImplementer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"implementsERC165Interface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"implementsERC165InterfaceNoCache","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"interfaceName","type":"string"}],"name":"interfaceHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"_interfaceHash","type":"bytes32"},{"internalType":"address","name":"implementer","type":"address"}],"name":"setInterfaceImplementer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"newManager","type":"address"}],"name":"setManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"updateERC165Cache","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/math/Math":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Math","sourceName":"contracts/utils/math/Math.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204a14f751b3f38a82303bdf89fdc12542c5fa1609e4895c7add5c67d1ca79b9c464736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204a14f751b3f38a82303bdf89fdc12542c5fa1609e4895c7add5c67d1ca79b9c464736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/math/SafeCast":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"SafeCast","sourceName":"contracts/utils/math/SafeCast.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a62378d355b38fa0abfa1c077e9c835782285fbd860732d27f2ee38b441a84d464736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a62378d355b38fa0abfa1c077e9c835782285fbd860732d27f2ee38b441a84d464736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/math/SafeMath":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"SafeMath","sourceName":"contracts/utils/math/SafeMath.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209738fa06839ad9c993fda222cd8796d9f4af8ec87c42dc83ad5376e21b184f6764736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209738fa06839ad9c993fda222cd8796d9f4af8ec87c42dc83ad5376e21b184f6764736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/math/SignedMath":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"SignedMath","sourceName":"contracts/utils/math/SignedMath.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206b958077e79d8c0218ea38180129587ea2f5f32e6ccbf5cada96c61f1cda30ae64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206b958077e79d8c0218ea38180129587ea2f5f32e6ccbf5cada96c61f1cda30ae64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/math/SignedSafeMath":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"SignedSafeMath","sourceName":"contracts/utils/math/SignedSafeMath.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220eac28e590fd923710978b0b42c5e6f8cc69e1a2b14089db10aa3a4fa30ae29e564736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220eac28e590fd923710978b0b42c5e6f8cc69e1a2b14089db10aa3a4fa30ae29e564736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Multicall":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Multicall","sourceName":"contracts/utils/Multicall.sol","abi":[{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/StorageSlot":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"StorageSlot","sourceName":"contracts/utils/StorageSlot.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209be81e3312f310746e52a8aef980c20007b986e39ffe78d4a990363c1a83cd2864736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209be81e3312f310746e52a8aef980c20007b986e39ffe78d4a990363c1a83cd2864736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Strings":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Strings","sourceName":"contracts/utils/Strings.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b096dc6b0e37ea9c827520996e336d2f126d85adfc64e5ab59d5969bae525c9864736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b096dc6b0e37ea9c827520996e336d2f126d85adfc64e5ab59d5969bae525c9864736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/structs/BitMaps":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"BitMaps","sourceName":"contracts/utils/structs/BitMaps.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c5ac034d38686d0b67fda2eec38f26b45891cd22ae31d0df027016e4b65cf13a64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c5ac034d38686d0b67fda2eec38f26b45891cd22ae31d0df027016e4b65cf13a64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/structs/DoubleEndedQueue":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"DoubleEndedQueue","sourceName":"contracts/utils/structs/DoubleEndedQueue.sol","abi":[{"inputs":[],"name":"Empty","type":"error"},{"inputs":[],"name":"OutOfBounds","type":"error"}],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a1f883749a60323cd05a4f6a4b0582f16eb5d58287457ceb8942b07688a344f264736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a1f883749a60323cd05a4f6a4b0582f16eb5d58287457ceb8942b07688a344f264736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/structs/EnumerableMap":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"EnumerableMap","sourceName":"contracts/utils/structs/EnumerableMap.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201e95925852ea21fb1440ea745a714cf6128faf5aeadb3e2298ed42fc376ba86e64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201e95925852ea21fb1440ea745a714cf6128faf5aeadb3e2298ed42fc376ba86e64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/structs/EnumerableSet":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"EnumerableSet","sourceName":"contracts/utils/structs/EnumerableSet.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202a8392941a7271bf335ac2e9721c0be783ed6532ec5fd4db2e0d57622a97964e64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202a8392941a7271bf335ac2e9721c0be783ed6532ec5fd4db2e0d57622a97964e64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/utils/Timers":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"Timers","sourceName":"contracts/utils/Timers.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122071cad4555d45eedf68405aec2cee18b6803a8196b147c8bde0315e331f76f7da64736f6c63430008090033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122071cad4555d45eedf68405aec2cee18b6803a8196b147c8bde0315e331f76f7da64736f6c63430008090033","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/amb/IAMB":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IAMB","sourceName":"contracts/vendor/amb/IAMB.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"executor","type":"address"},{"indexed":true,"internalType":"bytes32","name":"messageId","type":"bytes32"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"AffirmationCompleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"executor","type":"address"},{"indexed":true,"internalType":"bytes32","name":"messageId","type":"bytes32"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"RelayedMessage","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"messageId","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"encodedData","type":"bytes"}],"name":"UserRequestForAffirmation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"messageId","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"encodedData","type":"bytes"}],"name":"UserRequestForSignature","type":"event"},{"inputs":[],"name":"destinationChainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_messageId","type":"bytes32"}],"name":"failedMessageDataHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_messageId","type":"bytes32"}],"name":"failedMessageReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_messageId","type":"bytes32"}],"name":"failedMessageSender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxGasPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_messageId","type":"bytes32"}],"name":"messageCallStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"messageId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"messageSender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"messageSourceChainId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"uint256","name":"_gas","type":"uint256"}],"name":"requireToConfirmMessage","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"uint256","name":"_gas","type":"uint256"}],"name":"requireToPassMessage","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sourceChainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transactionHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/arbitrum/IArbSys":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IArbSys","sourceName":"contracts/vendor/arbitrum/IArbSys.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"destination","type":"address"},{"indexed":true,"internalType":"uint256","name":"uniqueId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"batchNumber","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"indexInBatch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"arbBlockNum","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethBlockNum","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"callvalue","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"L2ToL1Transaction","type":"event"},{"inputs":[],"name":"arbBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"arbChainID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"arbOSVersion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getStorageAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStorageGasAvailable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getTransactionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTopLevelCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"dest","type":"address"}],"name":"mapL1SenderContractAddressToL2Alias","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"myCallersAddressWithoutAliasing","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"calldataForL1","type":"bytes"}],"name":"sendTxToL1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"wasMyCallersAddressAliased","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"destination","type":"address"}],"name":"withdrawEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/arbitrum/IBridge":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IBridge","sourceName":"contracts/vendor/arbitrum/IBridge.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"outbox","type":"address"},{"indexed":true,"internalType":"address","name":"destAddr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"BridgeCallTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"inbox","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"InboxToggle","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"messageIndex","type":"uint256"},{"indexed":true,"internalType":"bytes32","name":"beforeInboxAcc","type":"bytes32"},{"indexed":false,"internalType":"address","name":"inbox","type":"address"},{"indexed":false,"internalType":"uint8","name":"kind","type":"uint8"},{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"bytes32","name":"messageDataHash","type":"bytes32"}],"name":"MessageDelivered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"outbox","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"OutboxToggle","type":"event"},{"inputs":[],"name":"activeOutbox","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"inbox","type":"address"}],"name":"allowedInboxes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"outbox","type":"address"}],"name":"allowedOutboxes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes32","name":"messageDataHash","type":"bytes32"}],"name":"deliverMessageToInbox","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"destAddr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"executeCall","outputs":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"inboxAccs","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"messageCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"inbox","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setInbox","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"inbox","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setOutbox","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/arbitrum/IInbox":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IInbox","sourceName":"contracts/vendor/arbitrum/IInbox.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"messageNum","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"InboxMessageDelivered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"messageNum","type":"uint256"}],"name":"InboxMessageDeliveredFromOrigin","type":"event"},{"inputs":[],"name":"bridge","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"destAddr","type":"address"},{"internalType":"uint256","name":"arbTxCallValue","type":"uint256"},{"internalType":"uint256","name":"maxSubmissionCost","type":"uint256"},{"internalType":"address","name":"submissionRefundAddress","type":"address"},{"internalType":"address","name":"valueRefundAddress","type":"address"},{"internalType":"uint256","name":"maxGas","type":"uint256"},{"internalType":"uint256","name":"gasPriceBid","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"createRetryableTicket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"destAddr","type":"address"},{"internalType":"uint256","name":"arbTxCallValue","type":"uint256"},{"internalType":"uint256","name":"maxSubmissionCost","type":"uint256"},{"internalType":"address","name":"submissionRefundAddress","type":"address"},{"internalType":"address","name":"valueRefundAddress","type":"address"},{"internalType":"uint256","name":"maxGas","type":"uint256"},{"internalType":"uint256","name":"gasPriceBid","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"createRetryableTicketNoRefundAliasRewrite","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxSubmissionCost","type":"uint256"}],"name":"depositEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"pauseCreateRetryables","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxGas","type":"uint256"},{"internalType":"uint256","name":"gasPriceBid","type":"uint256"},{"internalType":"address","name":"destAddr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"sendContractTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxGas","type":"uint256"},{"internalType":"uint256","name":"gasPriceBid","type":"uint256"},{"internalType":"address","name":"destAddr","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"sendL1FundedContractTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxGas","type":"uint256"},{"internalType":"uint256","name":"gasPriceBid","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"address","name":"destAddr","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"sendL1FundedUnsignedTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"messageData","type":"bytes"}],"name":"sendL2Message","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxGas","type":"uint256"},{"internalType":"uint256","name":"gasPriceBid","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"address","name":"destAddr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"sendUnsignedTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startRewriteAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopRewriteAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpauseCreateRetryables","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/arbitrum/IMessageProvider":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IMessageProvider","sourceName":"contracts/vendor/arbitrum/IMessageProvider.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"messageNum","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"InboxMessageDelivered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"messageNum","type":"uint256"}],"name":"InboxMessageDeliveredFromOrigin","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/arbitrum/IOutbox":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IOutbox","sourceName":"contracts/vendor/arbitrum/IOutbox.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"destAddr","type":"address"},{"indexed":true,"internalType":"address","name":"l2Sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"outboxEntryIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"transactionIndex","type":"uint256"}],"name":"OutBoxTransactionExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"batchNum","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"outboxEntryIndex","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"outputRoot","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"numInBatch","type":"uint256"}],"name":"OutboxEntryCreated","type":"event"},{"inputs":[],"name":"l2ToL1BatchNum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l2ToL1Block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l2ToL1EthBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l2ToL1OutputId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l2ToL1Sender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l2ToL1Timestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"batchNum","type":"uint256"}],"name":"outboxEntryExists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"sendsData","type":"bytes"},{"internalType":"uint256[]","name":"sendLengths","type":"uint256[]"}],"name":"processOutgoingMessages","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/compound/ICompoundTimelock":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ICompoundTimelock","sourceName":"contracts/vendor/compound/ICompoundTimelock.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"CancelTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ExecuteTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"}],"name":"NewAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newDelay","type":"uint256"}],"name":"NewDelay","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"NewPendingAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"QueueTransaction","type":"event"},{"inputs":[],"name":"GRACE_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAXIMUM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"cancelTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"delay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"executeTransaction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"queueTransaction","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"queuedTransactions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"setDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"setPendingAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/optimism/ICrossDomainMessenger":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ICrossDomainMessenger","sourceName":"contracts/vendor/optimism/ICrossDomainMessenger.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"msgHash","type":"bytes32"}],"name":"FailedRelayedMessage","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"msgHash","type":"bytes32"}],"name":"RelayedMessage","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"bytes","name":"message","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"messageNonce","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"gasLimit","type":"uint256"}],"name":"SentMessage","type":"event"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"uint32","name":"_gasLimit","type":"uint32"}],"name":"sendMessage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"xDomainMessageSender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"openzeppelin/vendor/polygon/IFxMessageProcessor":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IFxMessageProcessor","sourceName":"contracts/vendor/polygon/IFxMessageProcessor.sol","abi":[{"inputs":[{"internalType":"uint256","name":"stateId","type":"uint256"},{"internalType":"address","name":"rootMessageSender","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"processMessageFromRoot","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/base/ERC1155Base":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Base","sourceName":"src/token/ERC1155/base/ERC1155Base.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"status","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b5061159f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100715760003560e01c8063a22cb46511610050578063a22cb465146100d1578063e985e9c5146100e4578063f242432a1461014f57600080fd5b8062fdd58e146100765780632eb2c2d61461009c5780634e1273f4146100b1575b600080fd5b610089610084366004610f09565b610162565b6040519081526020015b60405180910390f35b6100af6100aa36600461107f565b610175565b005b6100c46100bf366004611129565b61025e565b604051610093919061122f565b6100af6100df366004611242565b610485565b61013f6100f236600461127e565b6001600160a01b0391821660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a86020908152604080832093909416825291909152205460ff1690565b6040519015158152602001610093565b6100af61015d3660046112b1565b610591565b600061016e838361066d565b9392505050565b336001600160a01b0386168114806101d157506001600160a01b0380871660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a8602090815260408083209385168352929052205460ff165b6102485760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f766564000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610256818787878787610732565b505050505050565b606081518351146102d75760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d617463680000000000000000000000000000000000000000000000606482015260840161023f565b82517ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a79060009067ffffffffffffffff81111561031657610316610f33565b60405190808252806020026020018201604052801561033f578160200160208202803683370190505b50905060005b855181101561047c5760006001600160a01b031686828151811061036b5761036b611316565b60200260200101516001600160a01b0316036103ef5760405162461bcd60e51b815260206004820152603160248201527f455243313135353a2062617463682062616c616e636520717565727920666f7260448201527f20746865207a65726f2061646472657373000000000000000000000000000000606482015260840161023f565b82600086838151811061040457610404611316565b60200260200101518152602001908152602001600020600087838151811061042e5761042e611316565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205482828151811061046957610469611316565b6020908102919091010152600101610345565b50949350505050565b336001600160a01b03831681036105045760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c660000000000000000000000000000000000000000000000606482015260840161023f565b6001600160a01b0381811660008181527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a86020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b336001600160a01b0386168114806105ed57506001600160a01b0380871660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a8602090815260408083209385168352929052205460ff165b61065f5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f7665640000000000000000000000000000000000000000000000606482015260840161023f565b61025681878787878761074e565b60006001600160a01b0383166106eb5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f2061646472657373000000000000000000000000000000000000000000606482015260840161023f565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a76000928352602090815260408084206001600160a01b0395909516845293905250205490565b61074086868686868661076a565b6102568686868686866109fe565b61075c868686868686610bc4565b610256868686868686610d8e565b6001600160a01b0384166107ce5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b606482015260840161023f565b81518351146108455760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d61746368000000000000000000000000000000000000000000000000606482015260840161023f565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a760005b845181101561099d57600085828151811061088657610886611316565b6020026020010151905060008583815181106108a4576108a4611316565b602090810291909101810151600084815286835260408082206001600160a01b038e16835290935291909120549091508181101561094a5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a20696e73756666696369656e742062616c616e636573206660448201527f6f72207472616e73666572000000000000000000000000000000000000000000606482015260840161023f565b6000838152602086815260408083206001600160a01b038e811685529252808320938590039093558a16815290812080546001959095019483929061099090849061132c565b9091555061086992505050565b50846001600160a01b0316866001600160a01b0316886001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516109ed929190611352565b60405180910390a450505050505050565b6001600160a01b0384163b156102565760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190610a4290899089908890889088906004016113cd565b6020604051808303816000875af1925050508015610a7d575060408051601f3d908101601f19168201909252610a7a9181019061142b565b60015b610b3257610a8961146d565b806308c379a003610ac25750610a9d611489565b80610aa85750610ac4565b8060405162461bcd60e51b815260040161023f9190611513565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e746572000000000000000000000000606482015260840161023f565b7fffffffff00000000000000000000000000000000000000000000000000000000811663bc197c8160e01b14610bbb5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b606482015260840161023f565b50505050505050565b6001600160a01b038416610c285760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b606482015260840161023f565b610c47868686610c3787610ea2565b610c4087610ea2565b5050505050565b60008381527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a7602081815260408084206001600160a01b038a1685529091529091205483811015610d005760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a20696e73756666696369656e742062616c616e636573206660448201527f6f72207472616e73666572000000000000000000000000000000000000000000606482015260840161023f565b6000858152602083815260408083206001600160a01b038b81168552925280832093879003909355871681529081208054859290610d3f90849061132c565b909155505060408051858152602081018590526001600160a01b038088169289821692918b16917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6291016109ed565b6001600160a01b0384163b156102565760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610dd29089908990889088908890600401611526565b6020604051808303816000875af1925050508015610e0d575060408051601f3d908101601f19168201909252610e0a9181019061142b565b60015b610e1957610a8961146d565b7fffffffff00000000000000000000000000000000000000000000000000000000811663f23a6e6160e01b14610bbb5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b606482015260840161023f565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610edc57610edc611316565b602090810291909101015292915050565b80356001600160a01b0381168114610f0457600080fd5b919050565b60008060408385031215610f1c57600080fd5b610f2583610eed565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715610f6f57610f6f610f33565b6040525050565b600067ffffffffffffffff821115610f9057610f90610f33565b5060051b60200190565b600082601f830112610fab57600080fd5b81356020610fb882610f76565b604051610fc58282610f49565b83815260059390931b8501820192828101915086841115610fe557600080fd5b8286015b848110156110005780358352918301918301610fe9565b509695505050505050565b600082601f83011261101c57600080fd5b813567ffffffffffffffff81111561103657611036610f33565b60405161104d601f8301601f191660200182610f49565b81815284602083860101111561106257600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561109757600080fd5b6110a086610eed565b94506110ae60208701610eed565b9350604086013567ffffffffffffffff808211156110cb57600080fd5b6110d789838a01610f9a565b945060608801359150808211156110ed57600080fd5b6110f989838a01610f9a565b9350608088013591508082111561110f57600080fd5b5061111c8882890161100b565b9150509295509295909350565b6000806040838503121561113c57600080fd5b823567ffffffffffffffff8082111561115457600080fd5b818501915085601f83011261116857600080fd5b8135602061117582610f76565b6040516111828282610f49565b83815260059390931b85018201928281019150898411156111a257600080fd5b948201945b838610156111c7576111b886610eed565b825294820194908201906111a7565b965050860135925050808211156111dd57600080fd5b506111ea85828601610f9a565b9150509250929050565b600081518084526020808501945080840160005b8381101561122457815187529582019590820190600101611208565b509495945050505050565b60208152600061016e60208301846111f4565b6000806040838503121561125557600080fd5b61125e83610eed565b91506020830135801515811461127357600080fd5b809150509250929050565b6000806040838503121561129157600080fd5b61129a83610eed565b91506112a860208401610eed565b90509250929050565b600080600080600060a086880312156112c957600080fd5b6112d286610eed565b94506112e060208701610eed565b93506040860135925060608601359150608086013567ffffffffffffffff81111561130a57600080fd5b61111c8882890161100b565b634e487b7160e01b600052603260045260246000fd5b6000821982111561134d57634e487b7160e01b600052601160045260246000fd5b500190565b60408152600061136560408301856111f4565b828103602084015261137781856111f4565b95945050505050565b6000815180845260005b818110156113a65760208185018101518683018201520161138a565b818111156113b8576000602083870101525b50601f01601f19169290920160200192915050565b60006001600160a01b03808816835280871660208401525060a060408301526113f960a08301866111f4565b828103606084015261140b81866111f4565b9050828103608084015261141f8185611380565b98975050505050505050565b60006020828403121561143d57600080fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811461016e57600080fd5b600060033d11156114865760046000803e5060005160e01c5b90565b600060443d10156114975790565b6040516003193d81016004833e81513d67ffffffffffffffff81602484011181841117156114c757505050505090565b82850191508151818111156114df5750505050505090565b843d87010160208285010111156114f95750505050505090565b61150860208286010187610f49565b509095945050505050565b60208152600061016e6020830184611380565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261155e60a0830184611380565b97965050505050505056fea2646970667358221220cc571873fdfa4a7c2b5407e3b7c3befb00e00894fbf16c2dd0e022863f05454464736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100715760003560e01c8063a22cb46511610050578063a22cb465146100d1578063e985e9c5146100e4578063f242432a1461014f57600080fd5b8062fdd58e146100765780632eb2c2d61461009c5780634e1273f4146100b1575b600080fd5b610089610084366004610f09565b610162565b6040519081526020015b60405180910390f35b6100af6100aa36600461107f565b610175565b005b6100c46100bf366004611129565b61025e565b604051610093919061122f565b6100af6100df366004611242565b610485565b61013f6100f236600461127e565b6001600160a01b0391821660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a86020908152604080832093909416825291909152205460ff1690565b6040519015158152602001610093565b6100af61015d3660046112b1565b610591565b600061016e838361066d565b9392505050565b336001600160a01b0386168114806101d157506001600160a01b0380871660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a8602090815260408083209385168352929052205460ff165b6102485760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f766564000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610256818787878787610732565b505050505050565b606081518351146102d75760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d617463680000000000000000000000000000000000000000000000606482015260840161023f565b82517ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a79060009067ffffffffffffffff81111561031657610316610f33565b60405190808252806020026020018201604052801561033f578160200160208202803683370190505b50905060005b855181101561047c5760006001600160a01b031686828151811061036b5761036b611316565b60200260200101516001600160a01b0316036103ef5760405162461bcd60e51b815260206004820152603160248201527f455243313135353a2062617463682062616c616e636520717565727920666f7260448201527f20746865207a65726f2061646472657373000000000000000000000000000000606482015260840161023f565b82600086838151811061040457610404611316565b60200260200101518152602001908152602001600020600087838151811061042e5761042e611316565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205482828151811061046957610469611316565b6020908102919091010152600101610345565b50949350505050565b336001600160a01b03831681036105045760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c660000000000000000000000000000000000000000000000606482015260840161023f565b6001600160a01b0381811660008181527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a86020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b336001600160a01b0386168114806105ed57506001600160a01b0380871660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a8602090815260408083209385168352929052205460ff165b61065f5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f7665640000000000000000000000000000000000000000000000606482015260840161023f565b61025681878787878761074e565b60006001600160a01b0383166106eb5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f2061646472657373000000000000000000000000000000000000000000606482015260840161023f565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a76000928352602090815260408084206001600160a01b0395909516845293905250205490565b61074086868686868661076a565b6102568686868686866109fe565b61075c868686868686610bc4565b610256868686868686610d8e565b6001600160a01b0384166107ce5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b606482015260840161023f565b81518351146108455760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d61746368000000000000000000000000000000000000000000000000606482015260840161023f565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a760005b845181101561099d57600085828151811061088657610886611316565b6020026020010151905060008583815181106108a4576108a4611316565b602090810291909101810151600084815286835260408082206001600160a01b038e16835290935291909120549091508181101561094a5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a20696e73756666696369656e742062616c616e636573206660448201527f6f72207472616e73666572000000000000000000000000000000000000000000606482015260840161023f565b6000838152602086815260408083206001600160a01b038e811685529252808320938590039093558a16815290812080546001959095019483929061099090849061132c565b9091555061086992505050565b50846001600160a01b0316866001600160a01b0316886001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516109ed929190611352565b60405180910390a450505050505050565b6001600160a01b0384163b156102565760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190610a4290899089908890889088906004016113cd565b6020604051808303816000875af1925050508015610a7d575060408051601f3d908101601f19168201909252610a7a9181019061142b565b60015b610b3257610a8961146d565b806308c379a003610ac25750610a9d611489565b80610aa85750610ac4565b8060405162461bcd60e51b815260040161023f9190611513565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e746572000000000000000000000000606482015260840161023f565b7fffffffff00000000000000000000000000000000000000000000000000000000811663bc197c8160e01b14610bbb5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b606482015260840161023f565b50505050505050565b6001600160a01b038416610c285760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b606482015260840161023f565b610c47868686610c3787610ea2565b610c4087610ea2565b5050505050565b60008381527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a7602081815260408084206001600160a01b038a1685529091529091205483811015610d005760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a20696e73756666696369656e742062616c616e636573206660448201527f6f72207472616e73666572000000000000000000000000000000000000000000606482015260840161023f565b6000858152602083815260408083206001600160a01b038b81168552925280832093879003909355871681529081208054859290610d3f90849061132c565b909155505060408051858152602081018590526001600160a01b038088169289821692918b16917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6291016109ed565b6001600160a01b0384163b156102565760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610dd29089908990889088908890600401611526565b6020604051808303816000875af1925050508015610e0d575060408051601f3d908101601f19168201909252610e0a9181019061142b565b60015b610e1957610a8961146d565b7fffffffff00000000000000000000000000000000000000000000000000000000811663f23a6e6160e01b14610bbb5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b606482015260840161023f565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610edc57610edc611316565b602090810291909101015292915050565b80356001600160a01b0381168114610f0457600080fd5b919050565b60008060408385031215610f1c57600080fd5b610f2583610eed565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715610f6f57610f6f610f33565b6040525050565b600067ffffffffffffffff821115610f9057610f90610f33565b5060051b60200190565b600082601f830112610fab57600080fd5b81356020610fb882610f76565b604051610fc58282610f49565b83815260059390931b8501820192828101915086841115610fe557600080fd5b8286015b848110156110005780358352918301918301610fe9565b509695505050505050565b600082601f83011261101c57600080fd5b813567ffffffffffffffff81111561103657611036610f33565b60405161104d601f8301601f191660200182610f49565b81815284602083860101111561106257600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561109757600080fd5b6110a086610eed565b94506110ae60208701610eed565b9350604086013567ffffffffffffffff808211156110cb57600080fd5b6110d789838a01610f9a565b945060608801359150808211156110ed57600080fd5b6110f989838a01610f9a565b9350608088013591508082111561110f57600080fd5b5061111c8882890161100b565b9150509295509295909350565b6000806040838503121561113c57600080fd5b823567ffffffffffffffff8082111561115457600080fd5b818501915085601f83011261116857600080fd5b8135602061117582610f76565b6040516111828282610f49565b83815260059390931b85018201928281019150898411156111a257600080fd5b948201945b838610156111c7576111b886610eed565b825294820194908201906111a7565b965050860135925050808211156111dd57600080fd5b506111ea85828601610f9a565b9150509250929050565b600081518084526020808501945080840160005b8381101561122457815187529582019590820190600101611208565b509495945050505050565b60208152600061016e60208301846111f4565b6000806040838503121561125557600080fd5b61125e83610eed565b91506020830135801515811461127357600080fd5b809150509250929050565b6000806040838503121561129157600080fd5b61129a83610eed565b91506112a860208401610eed565b90509250929050565b600080600080600060a086880312156112c957600080fd5b6112d286610eed565b94506112e060208701610eed565b93506040860135925060608601359150608086013567ffffffffffffffff81111561130a57600080fd5b61111c8882890161100b565b634e487b7160e01b600052603260045260246000fd5b6000821982111561134d57634e487b7160e01b600052601160045260246000fd5b500190565b60408152600061136560408301856111f4565b828103602084015261137781856111f4565b95945050505050565b6000815180845260005b818110156113a65760208185018101518683018201520161138a565b818111156113b8576000602083870101525b50601f01601f19169290920160200192915050565b60006001600160a01b03808816835280871660208401525060a060408301526113f960a08301866111f4565b828103606084015261140b81866111f4565b9050828103608084015261141f8185611380565b98975050505050505050565b60006020828403121561143d57600080fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811461016e57600080fd5b600060033d11156114865760046000803e5060005160e01c5b90565b600060443d10156114975790565b6040516003193d81016004833e81513d67ffffffffffffffff81602484011181841117156114c757505050505090565b82850191508151818111156114df5750505050505090565b843d87010160208285010111156114f95750505050505090565b61150860208286010187610f49565b509095945050505050565b60208152600061016e6020830184611380565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261155e60a0830184611380565b97965050505050505056fea2646970667358221220cc571873fdfa4a7c2b5407e3b7c3befb00e00894fbf16c2dd0e022863f05454464736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/base/ERC1155BaseERC2771":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155BaseERC2771","sourceName":"src/token/ERC1155/base/ERC1155BaseERC2771.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"status","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/base/ERC1155BaseInternal":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155BaseInternal","sourceName":"src/token/ERC1155/base/ERC1155BaseInternal.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/base/ERC1155BaseStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155BaseStorage","sourceName":"src/token/ERC1155/base/ERC1155BaseStorage.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b7938f76d33a3b85f4b5e1ddb1214c9d0b4968182155794a13d2efaf5d10b77d64736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b7938f76d33a3b85f4b5e1ddb1214c9d0b4968182155794a13d2efaf5d10b77d64736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/ERC1155":{"address":{"3":"0x1FAaCD621bd3B14F3494Be13c7Cf85334EC3F492","4":"0x724C344e5a9e01997D542F99ef0D2f7B419819de","rinkeby":"0x724C344e5a9e01997D542F99ef0D2f7B419819de","ropsten":"0x1FAaCD621bd3B14F3494Be13c7Cf85334EC3F492"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155","sourceName":"src/token/ERC1155/ERC1155.sol","abi":[{"inputs":[],"name":"SenderIsNotSelf","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"burnBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"burnBatchByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnablePausedUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"lockByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"locked","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"locked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mintByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"status","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unlockByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b5061284a806100206000396000f3fe608060405234801561001057600080fd5b50600436106101505760003560e01c8063869f7594116100cd578063bd85b03911610081578063e985e9c511610066578063e985e9c5146102cb578063f242432a14610326578063f5298aca1461033957600080fd5b8063bd85b039146102a5578063bf7bab73146102b857600080fd5b8063a22cb465116100b2578063a22cb4651461026c578063a91a988a1461027f578063b164884b1461029257600080fd5b8063869f759414610246578063983da1561461025957600080fd5b806348f2f536116101245780634f558e79116101095780634f558e79146101fd5780636708a990146102205780636b20c4541461023357600080fd5b806348f2f536146101ca5780634e1273f4146101dd57600080fd5b8062fdd58e146101555780630ad2bbac1461017b57806314e35aa4146101905780632eb2c2d6146101b7575b600080fd5b610168610163366004611fc4565b61034c565b6040519081526020015b60405180910390f35b61018e6101893660046120c6565b61035f565b005b7f20cb9ad5a22f74f90c7fecbece6b6ab3beb2a63812efb8693c5ff39f2b73ee0f54610168565b61018e6101c53660046121ae565b61038f565b61018e6101d8366004612258565b610464565b6101f06101eb36600461228b565b61048f565b6040516101729190612391565b61021061020b3660046123a4565b6106b6565b6040519015158152602001610172565b61018e61022e366004612258565b6106ed565b61018e6102413660046120c6565b610718565b6101686102543660046123a4565b6107ff565b61018e610267366004612258565b610832565b61018e61027a3660046123ce565b61085d565b6101f061028d366004612405565b610969565b61018e6102a036600461248b565b610a50565b6101686102b33660046123a4565b610a82565b6101686102c6366004611fc4565b610ab5565b6102106102d93660046124ec565b6001600160a01b0391821660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a86020908152604080832093909416825291909152205460ff1690565b61018e61033436600461251f565b610afd565b61018e610347366004612258565b610bc5565b60006103588383610cac565b9392505050565b30331461037f576040516328be0e2160e21b815260040160405180910390fd5b61038a838383610d71565b505050565b336001600160a01b0386168114806103eb57506001600160a01b0380871660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a8602090815260408083209385168352929052205460ff165b61044e5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b60648201526084015b60405180910390fd5b61045c818787878787610fe8565b505050505050565b303314610484576040516328be0e2160e21b815260040160405180910390fd5b61038a838383611004565b606081518351146105085760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610445565b82517ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a79060009067ffffffffffffffff81111561054757610547611fee565b604051908082528060200260200182016040528015610570578160200160208202803683370190505b50905060005b85518110156106ad5760006001600160a01b031686828151811061059c5761059c612584565b60200260200101516001600160a01b0316036106205760405162461bcd60e51b815260206004820152603160248201527f455243313135353a2062617463682062616c616e636520717565727920666f7260448201527f20746865207a65726f20616464726573730000000000000000000000000000006064820152608401610445565b82600086838151811061063557610635612584565b60200260200101518152602001908152602001600020600087838151811061065f5761065f612584565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205482828151811061069a5761069a612584565b6020908102919091010152600101610576565b50949350505050565b60008181527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea5602052604081205415155b92915050565b30331461070d576040516328be0e2160e21b815260040160405180910390fd5b61038a83838361118d565b6001600160a01b0383163314806107a157503063e985e9c584336040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561077d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a1919061259a565b61037f5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610445565b60008181527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea660205260408120546106e7565b303314610852576040516328be0e2160e21b815260040160405180910390fd5b61038a83838361124a565b336001600160a01b03831681036108dc5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610445565b6001600160a01b0381811660008181527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a86020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b606060008267ffffffffffffffff81111561098657610986611fee565b6040519080825280602002602001820160405280156109af578160200160208202803683370190505b50905060005b838110156106ad57610a21868686848181106109d3576109d3612584565b905060200201356001600160a01b039190911660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b28752782060209081526040808320938352929052205490565b828281518110610a3357610a33612584565b602090810291909101015280610a48816125cd565b9150506109b5565b303314610a70576040516328be0e2160e21b815260040160405180910390fd5b610a7c84848484611311565b50505050565b60008181527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea560205260408120546106e7565b6001600160a01b03821660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b28752782060209081526040808320848452909152812054610358565b336001600160a01b038616811480610b5957506001600160a01b0380871660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a8602090815260408083209385168352929052205460ff165b610bb75760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610445565b61045c81878787878761144c565b6001600160a01b038316331480610c4e57503063e985e9c584336040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061259a565b6104845760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610445565b60006001600160a01b038316610d2a5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f20616464726573730000000000000000000000000000000000000000006064820152608401610445565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a76000928352602090815260408084206001600160a01b0395909516845293905250205490565b6001600160a01b038316610dd35760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610445565b8051825114610e355760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610445565b6000339050610e5881856000868660405180602001604052806000815250611468565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a760005b8451811015610f88576000858281518110610e9957610e99612584565b60200260200101519050848281518110610eb557610eb5612584565b602090810291909101810151600083815285835260408082206001600160a01b038c16835290935291909120541015610f3c5760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610445565b848281518110610f4e57610f4e612584565b602090810291909101810151600092835284825260408084206001600160a01b038b16855290925291208054919091039055600101610e7c565b5060006001600160a01b0316856001600160a01b0316836001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610fd99291906125e6565b60405180910390a45050505050565b610ff6868686868686611476565b61045c868686868686611703565b6001600160a01b0383166110665760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610445565b3361109581856000611077876118b1565b611080876118b1565b60405180602001604052806000815250611468565b60008381527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a7602090815260408083206001600160a01b038816845291829052909120548311156111345760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610445565b6001600160a01b0385811660008181526020848152604080832080548990039055805189815291820188905291938616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629101610fd9565b6001600160a01b03831660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b2875278206020908152604080832085845291829052909120548211156112215760405162461bcd60e51b815260206004820152601160248201527f4e4f545f454e4f5547485f4c4f434b45440000000000000000000000000000006044820152606401610445565b6000838152602082905260408120805484929061123f908490612614565b909155505050505050565b6001600160a01b03831660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b287527820602090815260408083208584529182905290912054829061129b8686610cac565b6112a59190612614565b10156112f35760405162461bcd60e51b815260206004820152601260248201527f4e4f545f454e4f5547485f42414c414e434500000000000000000000000000006044820152606401610445565b6000838152602082905260408120805484929061123f90849061262b565b336001600160a01b03851661138e5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610445565b6113ad8160008761139e886118b1565b6113a7886118b1565b87611468565b60008481527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a7602090815260408083206001600160a01b0389168452909152812080548592906113fe90849061262b565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629101610fd9565b61145a8686868686866118fc565b61045c868686868686611ac5565b61045c868686868686611bc1565b6001600160a01b0384166114da5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610445565b815183511461153c5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610445565b61154a868686868686611468565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a760005b84518110156116a257600085828151811061158b5761158b612584565b6020026020010151905060008583815181106115a9576115a9612584565b602090810291909101810151600084815286835260408082206001600160a01b038e16835290935291909120549091508181101561164f5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a20696e73756666696369656e742062616c616e636573206660448201527f6f72207472616e736665720000000000000000000000000000000000000000006064820152608401610445565b6000838152602086815260408083206001600160a01b038e811685529252808320938590039093558a16815290812080546001959095019483929061169590849061262b565b9091555061156e92505050565b50846001600160a01b0316866001600160a01b0316886001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516116f29291906125e6565b60405180910390a450505050505050565b6001600160a01b0384163b1561045c5760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906117479089908990889088908890600401612690565b6020604051808303816000875af1925050508015611782575060408051601f3d908101601f1916820190925261177f918101906126ee565b60015b6118375761178e612718565b806308c379a0036117c757506117a2612734565b806117ad57506117c9565b8060405162461bcd60e51b815260040161044591906127be565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610445565b6001600160e01b0319811663bc197c8160e01b146118a85760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610445565b50505050505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106118eb576118eb612584565b602090810291909101015292915050565b6001600160a01b0384166119605760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610445565b61197e86868661196f876118b1565b611978876118b1565b86611468565b60008381527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a7602081815260408084206001600160a01b038a1685529091529091205483811015611a375760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a20696e73756666696369656e742062616c616e636573206660448201527f6f72207472616e736665720000000000000000000000000000000000000000006064820152608401610445565b6000858152602083815260408083206001600160a01b038b81168552925280832093879003909355871681529081208054859290611a7690849061262b565b909155505060408051858152602081018590526001600160a01b038088169289821692918b16917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6291016116f2565b6001600160a01b0384163b1561045c5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611b0990899089908890889088906004016127d1565b6020604051808303816000875af1925050508015611b44575060408051601f3d908101601f19168201909252611b41918101906126ee565b60015b611b505761178e612718565b6001600160e01b0319811663f23a6e6160e01b146118a85760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610445565b6001600160a01b03851615611cfd5760005b8351811015611cfb57828181518110611bee57611bee612584565b6020026020010151611c1d7f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b28752782090565b6000016000886001600160a01b03166001600160a01b031681526020019081526020016000206000868481518110611c5757611c57612584565b6020026020010151815260200190815260200160002054611c9188878581518110611c8457611c84612584565b6020026020010151610cac565b611c9b9190612614565b1015611ce95760405162461bcd60e51b815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610445565b80611cf3816125cd565b915050611bd3565b505b61045c8686868686866001600160a01b038516611e77577f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea57f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea660005b8551811015611e7357848181518110611d7457611d74612584565b6020026020010151836000888481518110611d9157611d91612584565b602002602001015181526020019081526020016000206000828254611db6919061262b565b92505081905550816000878381518110611dd257611dd2612584565b6020026020010151815260200190815260200160002054836000888481518110611dfe57611dfe612584565b60200260200101518152602001908152602001600020541115611e635760405162461bcd60e51b815260206004820152601160248201527f535550504c595f4558434545445f4d41580000000000000000000000000000006044820152606401610445565b611e6c816125cd565b9050611d59565b5050505b6001600160a01b03841661045c577f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea560005b8451811015611f9e576000858281518110611ec657611ec6612584565b602002602001015190506000858381518110611ee457611ee4612584565b60200260200101519050600084600084815260200190815260200160002054905081811015611f7b5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a206275726e20616d6f756e74206578636565647320746f7460448201527f616c537570706c790000000000000000000000000000000000000000000000006064820152608401610445565b60009283526020859052604090922091039055611f97816125cd565b9050611ea9565b5050505050505050565b80356001600160a01b0381168114611fbf57600080fd5b919050565b60008060408385031215611fd757600080fd5b611fe083611fa8565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff8111828210171561202a5761202a611fee565b6040525050565b600067ffffffffffffffff82111561204b5761204b611fee565b5060051b60200190565b600082601f83011261206657600080fd5b8135602061207382612031565b6040516120808282612004565b83815260059390931b85018201928281019150868411156120a057600080fd5b8286015b848110156120bb57803583529183019183016120a4565b509695505050505050565b6000806000606084860312156120db57600080fd5b6120e484611fa8565b9250602084013567ffffffffffffffff8082111561210157600080fd5b61210d87838801612055565b9350604086013591508082111561212357600080fd5b5061213086828701612055565b9150509250925092565b600082601f83011261214b57600080fd5b813567ffffffffffffffff81111561216557612165611fee565b60405161217c601f8301601f191660200182612004565b81815284602083860101111561219157600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156121c657600080fd5b6121cf86611fa8565b94506121dd60208701611fa8565b9350604086013567ffffffffffffffff808211156121fa57600080fd5b61220689838a01612055565b9450606088013591508082111561221c57600080fd5b61222889838a01612055565b9350608088013591508082111561223e57600080fd5b5061224b8882890161213a565b9150509295509295909350565b60008060006060848603121561226d57600080fd5b61227684611fa8565b95602085013595506040909401359392505050565b6000806040838503121561229e57600080fd5b823567ffffffffffffffff808211156122b657600080fd5b818501915085601f8301126122ca57600080fd5b813560206122d782612031565b6040516122e48282612004565b83815260059390931b850182019282810191508984111561230457600080fd5b948201945b838610156123295761231a86611fa8565b82529482019490820190612309565b9650508601359250508082111561233f57600080fd5b5061234c85828601612055565b9150509250929050565b600081518084526020808501945080840160005b838110156123865781518752958201959082019060010161236a565b509495945050505050565b6020815260006103586020830184612356565b6000602082840312156123b657600080fd5b5035919050565b80151581146123cb57600080fd5b50565b600080604083850312156123e157600080fd5b6123ea83611fa8565b915060208301356123fa816123bd565b809150509250929050565b60008060006040848603121561241a57600080fd5b61242384611fa8565b9250602084013567ffffffffffffffff8082111561244057600080fd5b818601915086601f83011261245457600080fd5b81358181111561246357600080fd5b8760208260051b850101111561247857600080fd5b6020830194508093505050509250925092565b600080600080608085870312156124a157600080fd5b6124aa85611fa8565b93506020850135925060408501359150606085013567ffffffffffffffff8111156124d457600080fd5b6124e08782880161213a565b91505092959194509250565b600080604083850312156124ff57600080fd5b61250883611fa8565b915061251660208401611fa8565b90509250929050565b600080600080600060a0868803121561253757600080fd5b61254086611fa8565b945061254e60208701611fa8565b93506040860135925060608601359150608086013567ffffffffffffffff81111561257857600080fd5b61224b8882890161213a565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156125ac57600080fd5b8151610358816123bd565b634e487b7160e01b600052601160045260246000fd5b6000600182016125df576125df6125b7565b5060010190565b6040815260006125f96040830185612356565b828103602084015261260b8185612356565b95945050505050565b600082821015612626576126266125b7565b500390565b6000821982111561263e5761263e6125b7565b500190565b6000815180845260005b818110156126695760208185018101518683018201520161264d565b8181111561267b576000602083870101525b50601f01601f19169290920160200192915050565b60006001600160a01b03808816835280871660208401525060a060408301526126bc60a0830186612356565b82810360608401526126ce8186612356565b905082810360808401526126e28185612643565b98975050505050505050565b60006020828403121561270057600080fd5b81516001600160e01b03198116811461035857600080fd5b600060033d11156127315760046000803e5060005160e01c5b90565b600060443d10156127425790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561277257505050505090565b828501915081518181111561278a5750505050505090565b843d87010160208285010111156127a45750505050505090565b6127b360208286010187612004565b509095945050505050565b6020815260006103586020830184612643565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261280960a0830184612643565b97965050505050505056fea26469706673582212207983b28828c0e1640ce0b6bb49d9ac007fa3d4e53a9e2336dc6287fe55a2dddb64736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101505760003560e01c8063869f7594116100cd578063bd85b03911610081578063e985e9c511610066578063e985e9c5146102cb578063f242432a14610326578063f5298aca1461033957600080fd5b8063bd85b039146102a5578063bf7bab73146102b857600080fd5b8063a22cb465116100b2578063a22cb4651461026c578063a91a988a1461027f578063b164884b1461029257600080fd5b8063869f759414610246578063983da1561461025957600080fd5b806348f2f536116101245780634f558e79116101095780634f558e79146101fd5780636708a990146102205780636b20c4541461023357600080fd5b806348f2f536146101ca5780634e1273f4146101dd57600080fd5b8062fdd58e146101555780630ad2bbac1461017b57806314e35aa4146101905780632eb2c2d6146101b7575b600080fd5b610168610163366004611fc4565b61034c565b6040519081526020015b60405180910390f35b61018e6101893660046120c6565b61035f565b005b7f20cb9ad5a22f74f90c7fecbece6b6ab3beb2a63812efb8693c5ff39f2b73ee0f54610168565b61018e6101c53660046121ae565b61038f565b61018e6101d8366004612258565b610464565b6101f06101eb36600461228b565b61048f565b6040516101729190612391565b61021061020b3660046123a4565b6106b6565b6040519015158152602001610172565b61018e61022e366004612258565b6106ed565b61018e6102413660046120c6565b610718565b6101686102543660046123a4565b6107ff565b61018e610267366004612258565b610832565b61018e61027a3660046123ce565b61085d565b6101f061028d366004612405565b610969565b61018e6102a036600461248b565b610a50565b6101686102b33660046123a4565b610a82565b6101686102c6366004611fc4565b610ab5565b6102106102d93660046124ec565b6001600160a01b0391821660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a86020908152604080832093909416825291909152205460ff1690565b61018e61033436600461251f565b610afd565b61018e610347366004612258565b610bc5565b60006103588383610cac565b9392505050565b30331461037f576040516328be0e2160e21b815260040160405180910390fd5b61038a838383610d71565b505050565b336001600160a01b0386168114806103eb57506001600160a01b0380871660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a8602090815260408083209385168352929052205460ff165b61044e5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b60648201526084015b60405180910390fd5b61045c818787878787610fe8565b505050505050565b303314610484576040516328be0e2160e21b815260040160405180910390fd5b61038a838383611004565b606081518351146105085760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610445565b82517ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a79060009067ffffffffffffffff81111561054757610547611fee565b604051908082528060200260200182016040528015610570578160200160208202803683370190505b50905060005b85518110156106ad5760006001600160a01b031686828151811061059c5761059c612584565b60200260200101516001600160a01b0316036106205760405162461bcd60e51b815260206004820152603160248201527f455243313135353a2062617463682062616c616e636520717565727920666f7260448201527f20746865207a65726f20616464726573730000000000000000000000000000006064820152608401610445565b82600086838151811061063557610635612584565b60200260200101518152602001908152602001600020600087838151811061065f5761065f612584565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205482828151811061069a5761069a612584565b6020908102919091010152600101610576565b50949350505050565b60008181527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea5602052604081205415155b92915050565b30331461070d576040516328be0e2160e21b815260040160405180910390fd5b61038a83838361118d565b6001600160a01b0383163314806107a157503063e985e9c584336040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561077d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a1919061259a565b61037f5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610445565b60008181527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea660205260408120546106e7565b303314610852576040516328be0e2160e21b815260040160405180910390fd5b61038a83838361124a565b336001600160a01b03831681036108dc5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610445565b6001600160a01b0381811660008181527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a86020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b606060008267ffffffffffffffff81111561098657610986611fee565b6040519080825280602002602001820160405280156109af578160200160208202803683370190505b50905060005b838110156106ad57610a21868686848181106109d3576109d3612584565b905060200201356001600160a01b039190911660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b28752782060209081526040808320938352929052205490565b828281518110610a3357610a33612584565b602090810291909101015280610a48816125cd565b9150506109b5565b303314610a70576040516328be0e2160e21b815260040160405180910390fd5b610a7c84848484611311565b50505050565b60008181527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea560205260408120546106e7565b6001600160a01b03821660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b28752782060209081526040808320848452909152812054610358565b336001600160a01b038616811480610b5957506001600160a01b0380871660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a8602090815260408083209385168352929052205460ff165b610bb75760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610445565b61045c81878787878761144c565b6001600160a01b038316331480610c4e57503063e985e9c584336040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061259a565b6104845760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610445565b60006001600160a01b038316610d2a5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f20616464726573730000000000000000000000000000000000000000006064820152608401610445565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a76000928352602090815260408084206001600160a01b0395909516845293905250205490565b6001600160a01b038316610dd35760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610445565b8051825114610e355760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610445565b6000339050610e5881856000868660405180602001604052806000815250611468565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a760005b8451811015610f88576000858281518110610e9957610e99612584565b60200260200101519050848281518110610eb557610eb5612584565b602090810291909101810151600083815285835260408082206001600160a01b038c16835290935291909120541015610f3c5760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610445565b848281518110610f4e57610f4e612584565b602090810291909101810151600092835284825260408084206001600160a01b038b16855290925291208054919091039055600101610e7c565b5060006001600160a01b0316856001600160a01b0316836001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610fd99291906125e6565b60405180910390a45050505050565b610ff6868686868686611476565b61045c868686868686611703565b6001600160a01b0383166110665760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610445565b3361109581856000611077876118b1565b611080876118b1565b60405180602001604052806000815250611468565b60008381527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a7602090815260408083206001600160a01b038816845291829052909120548311156111345760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610445565b6001600160a01b0385811660008181526020848152604080832080548990039055805189815291820188905291938616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629101610fd9565b6001600160a01b03831660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b2875278206020908152604080832085845291829052909120548211156112215760405162461bcd60e51b815260206004820152601160248201527f4e4f545f454e4f5547485f4c4f434b45440000000000000000000000000000006044820152606401610445565b6000838152602082905260408120805484929061123f908490612614565b909155505050505050565b6001600160a01b03831660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b287527820602090815260408083208584529182905290912054829061129b8686610cac565b6112a59190612614565b10156112f35760405162461bcd60e51b815260206004820152601260248201527f4e4f545f454e4f5547485f42414c414e434500000000000000000000000000006044820152606401610445565b6000838152602082905260408120805484929061123f90849061262b565b336001600160a01b03851661138e5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610445565b6113ad8160008761139e886118b1565b6113a7886118b1565b87611468565b60008481527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a7602090815260408083206001600160a01b0389168452909152812080548592906113fe90849061262b565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629101610fd9565b61145a8686868686866118fc565b61045c868686868686611ac5565b61045c868686868686611bc1565b6001600160a01b0384166114da5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610445565b815183511461153c5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610445565b61154a868686868686611468565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a760005b84518110156116a257600085828151811061158b5761158b612584565b6020026020010151905060008583815181106115a9576115a9612584565b602090810291909101810151600084815286835260408082206001600160a01b038e16835290935291909120549091508181101561164f5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a20696e73756666696369656e742062616c616e636573206660448201527f6f72207472616e736665720000000000000000000000000000000000000000006064820152608401610445565b6000838152602086815260408083206001600160a01b038e811685529252808320938590039093558a16815290812080546001959095019483929061169590849061262b565b9091555061156e92505050565b50846001600160a01b0316866001600160a01b0316886001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516116f29291906125e6565b60405180910390a450505050505050565b6001600160a01b0384163b1561045c5760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906117479089908990889088908890600401612690565b6020604051808303816000875af1925050508015611782575060408051601f3d908101601f1916820190925261177f918101906126ee565b60015b6118375761178e612718565b806308c379a0036117c757506117a2612734565b806117ad57506117c9565b8060405162461bcd60e51b815260040161044591906127be565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610445565b6001600160e01b0319811663bc197c8160e01b146118a85760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610445565b50505050505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106118eb576118eb612584565b602090810291909101015292915050565b6001600160a01b0384166119605760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610445565b61197e86868661196f876118b1565b611978876118b1565b86611468565b60008381527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a7602081815260408084206001600160a01b038a1685529091529091205483811015611a375760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a20696e73756666696369656e742062616c616e636573206660448201527f6f72207472616e736665720000000000000000000000000000000000000000006064820152608401610445565b6000858152602083815260408083206001600160a01b038b81168552925280832093879003909355871681529081208054859290611a7690849061262b565b909155505060408051858152602081018590526001600160a01b038088169289821692918b16917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6291016116f2565b6001600160a01b0384163b1561045c5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611b0990899089908890889088906004016127d1565b6020604051808303816000875af1925050508015611b44575060408051601f3d908101601f19168201909252611b41918101906126ee565b60015b611b505761178e612718565b6001600160e01b0319811663f23a6e6160e01b146118a85760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610445565b6001600160a01b03851615611cfd5760005b8351811015611cfb57828181518110611bee57611bee612584565b6020026020010151611c1d7f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b28752782090565b6000016000886001600160a01b03166001600160a01b031681526020019081526020016000206000868481518110611c5757611c57612584565b6020026020010151815260200190815260200160002054611c9188878581518110611c8457611c84612584565b6020026020010151610cac565b611c9b9190612614565b1015611ce95760405162461bcd60e51b815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610445565b80611cf3816125cd565b915050611bd3565b505b61045c8686868686866001600160a01b038516611e77577f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea57f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea660005b8551811015611e7357848181518110611d7457611d74612584565b6020026020010151836000888481518110611d9157611d91612584565b602002602001015181526020019081526020016000206000828254611db6919061262b565b92505081905550816000878381518110611dd257611dd2612584565b6020026020010151815260200190815260200160002054836000888481518110611dfe57611dfe612584565b60200260200101518152602001908152602001600020541115611e635760405162461bcd60e51b815260206004820152601160248201527f535550504c595f4558434545445f4d41580000000000000000000000000000006044820152606401610445565b611e6c816125cd565b9050611d59565b5050505b6001600160a01b03841661045c577f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea560005b8451811015611f9e576000858281518110611ec657611ec6612584565b602002602001015190506000858381518110611ee457611ee4612584565b60200260200101519050600084600084815260200190815260200160002054905081811015611f7b5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a206275726e20616d6f756e74206578636565647320746f7460448201527f616c537570706c790000000000000000000000000000000000000000000000006064820152608401610445565b60009283526020859052604090922091039055611f97816125cd565b9050611ea9565b5050505050505050565b80356001600160a01b0381168114611fbf57600080fd5b919050565b60008060408385031215611fd757600080fd5b611fe083611fa8565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff8111828210171561202a5761202a611fee565b6040525050565b600067ffffffffffffffff82111561204b5761204b611fee565b5060051b60200190565b600082601f83011261206657600080fd5b8135602061207382612031565b6040516120808282612004565b83815260059390931b85018201928281019150868411156120a057600080fd5b8286015b848110156120bb57803583529183019183016120a4565b509695505050505050565b6000806000606084860312156120db57600080fd5b6120e484611fa8565b9250602084013567ffffffffffffffff8082111561210157600080fd5b61210d87838801612055565b9350604086013591508082111561212357600080fd5b5061213086828701612055565b9150509250925092565b600082601f83011261214b57600080fd5b813567ffffffffffffffff81111561216557612165611fee565b60405161217c601f8301601f191660200182612004565b81815284602083860101111561219157600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156121c657600080fd5b6121cf86611fa8565b94506121dd60208701611fa8565b9350604086013567ffffffffffffffff808211156121fa57600080fd5b61220689838a01612055565b9450606088013591508082111561221c57600080fd5b61222889838a01612055565b9350608088013591508082111561223e57600080fd5b5061224b8882890161213a565b9150509295509295909350565b60008060006060848603121561226d57600080fd5b61227684611fa8565b95602085013595506040909401359392505050565b6000806040838503121561229e57600080fd5b823567ffffffffffffffff808211156122b657600080fd5b818501915085601f8301126122ca57600080fd5b813560206122d782612031565b6040516122e48282612004565b83815260059390931b850182019282810191508984111561230457600080fd5b948201945b838610156123295761231a86611fa8565b82529482019490820190612309565b9650508601359250508082111561233f57600080fd5b5061234c85828601612055565b9150509250929050565b600081518084526020808501945080840160005b838110156123865781518752958201959082019060010161236a565b509495945050505050565b6020815260006103586020830184612356565b6000602082840312156123b657600080fd5b5035919050565b80151581146123cb57600080fd5b50565b600080604083850312156123e157600080fd5b6123ea83611fa8565b915060208301356123fa816123bd565b809150509250929050565b60008060006040848603121561241a57600080fd5b61242384611fa8565b9250602084013567ffffffffffffffff8082111561244057600080fd5b818601915086601f83011261245457600080fd5b81358181111561246357600080fd5b8760208260051b850101111561247857600080fd5b6020830194508093505050509250925092565b600080600080608085870312156124a157600080fd5b6124aa85611fa8565b93506020850135925060408501359150606085013567ffffffffffffffff8111156124d457600080fd5b6124e08782880161213a565b91505092959194509250565b600080604083850312156124ff57600080fd5b61250883611fa8565b915061251660208401611fa8565b90509250929050565b600080600080600060a0868803121561253757600080fd5b61254086611fa8565b945061254e60208701611fa8565b93506040860135925060608601359150608086013567ffffffffffffffff81111561257857600080fd5b61224b8882890161213a565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156125ac57600080fd5b8151610358816123bd565b634e487b7160e01b600052601160045260246000fd5b6000600182016125df576125df6125b7565b5060010190565b6040815260006125f96040830185612356565b828103602084015261260b8185612356565b95945050505050565b600082821015612626576126266125b7565b500390565b6000821982111561263e5761263e6125b7565b500190565b6000815180845260005b818110156126695760208185018101518683018201520161264d565b8181111561267b576000602083870101525b50601f01601f19169290920160200192915050565b60006001600160a01b03808816835280871660208401525060a060408301526126bc60a0830186612356565b82810360608401526126ce8186612356565b905082810360808401526126e28185612643565b98975050505050505050565b60006020828403121561270057600080fd5b81516001600160e01b03198116811461035857600080fd5b600060033d11156127315760046000803e5060005160e01c5b90565b600060443d10156127425790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561277257505050505090565b828501915081518181111561278a5750505050505090565b843d87010160208285010111156127a45750505050505090565b6127b360208286010187612004565b509095945050505050565b6020815260006103586020830184612643565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261280960a0830184612643565b97965050505050505056fea26469706673582212207983b28828c0e1640ce0b6bb49d9ac007fa3d4e53a9e2336dc6287fe55a2dddb64736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/ERC1155WithERC2771":{"address":{"3":"0xD781b8126F857A2073D5d0DD3D2903253DAA46bD","4":"0x25077bcB7F56Be3cB05CD364863Adae0217f3c07","rinkeby":"0x25077bcB7F56Be3cB05CD364863Adae0217f3c07","ropsten":"0xD781b8126F857A2073D5d0DD3D2903253DAA46bD"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155WithERC2771","sourceName":"src/token/ERC1155/ERC1155WithERC2771.sol","abi":[{"inputs":[],"name":"SenderIsNotSelf","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"burnBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"burnBatchByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnablePausedUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"lockByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"locked","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"locked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mintByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"status","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unlockByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b50612542806100206000396000f3fe608060405234801561001057600080fd5b50600436106101505760003560e01c8063869f7594116100cd578063bd85b03911610081578063e985e9c511610066578063e985e9c5146102cb578063f242432a14610326578063f5298aca1461033957600080fd5b8063bd85b039146102a5578063bf7bab73146102b857600080fd5b8063a22cb465116100b2578063a22cb4651461026c578063a91a988a1461027f578063b164884b1461029257600080fd5b8063869f759414610246578063983da1561461025957600080fd5b806348f2f536116101245780634f558e79116101095780634f558e79146101fd5780636708a990146102205780636b20c4541461023357600080fd5b806348f2f536146101ca5780634e1273f4146101dd57600080fd5b8062fdd58e146101555780630ad2bbac1461017b57806314e35aa4146101905780632eb2c2d6146101b7575b600080fd5b610168610163366004611cbd565b61034c565b6040519081526020015b60405180910390f35b61018e610189366004611dbf565b61035f565b005b7f20cb9ad5a22f74f90c7fecbece6b6ab3beb2a63812efb8693c5ff39f2b73ee0f54610168565b61018e6101c5366004611ea7565b61038f565b61018e6101d8366004611f51565b610478565b6101f06101eb366004611f84565b6104a3565b604051610172919061208a565b61021061020b36600461209d565b6106ca565b6040519015158152602001610172565b61018e61022e366004611f51565b610701565b61018e610241366004611dbf565b61072c565b61016861025436600461209d565b61082a565b61018e610267366004611f51565b61085d565b61018e61027a3660046120c7565b610888565b6101f061028d3660046120fe565b6109a8565b61018e6102a0366004612184565b610a8f565b6101686102b336600461209d565b610ac1565b6101686102c6366004611cbd565b610af4565b6102106102d93660046121e5565b6001600160a01b0391821660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a86020908152604080832093909416825291909152205460ff1690565b61018e610334366004612218565b610b3c565b61018e610347366004611f51565b610c18565b60006103588383610d16565b9392505050565b30331461037f576040516328be0e2160e21b815260040160405180910390fd5b61038a838383610ddb565b505050565b6000610399611059565b9050806001600160a01b0316866001600160a01b031614806103ff57506001600160a01b0380871660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a8602090815260408083209385168352929052205460ff165b6104625760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b60648201526084015b60405180910390fd5b610470818787878787611068565b505050505050565b303314610498576040516328be0e2160e21b815260040160405180910390fd5b61038a838383611084565b6060815183511461051c5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610459565b82517ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a79060009067ffffffffffffffff81111561055b5761055b611ce7565b604051908082528060200260200182016040528015610584578160200160208202803683370190505b50905060005b85518110156106c15760006001600160a01b03168682815181106105b0576105b061227d565b60200260200101516001600160a01b0316036106345760405162461bcd60e51b815260206004820152603160248201527f455243313135353a2062617463682062616c616e636520717565727920666f7260448201527f20746865207a65726f20616464726573730000000000000000000000000000006064820152608401610459565b8260008683815181106106495761064961227d565b6020026020010151815260200190815260200160002060008783815181106106735761067361227d565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020548282815181106106ae576106ae61227d565b602090810291909101015260010161058a565b50949350505050565b60008181527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea5602052604081205415155b92915050565b303314610721576040516328be0e2160e21b815260040160405180910390fd5b61038a838383611218565b610734611059565b6001600160a01b0316836001600160a01b031614806107cc57503063e985e9c58461075d611059565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156107a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107cc9190612293565b61037f5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610459565b60008181527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea660205260408120546106fb565b30331461087d576040516328be0e2160e21b815260040160405180910390fd5b61038a8383836112d5565b6000610892611059565b9050826001600160a01b0316816001600160a01b03160361091b5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610459565b6001600160a01b0381811660008181527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a86020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b606060008267ffffffffffffffff8111156109c5576109c5611ce7565b6040519080825280602002602001820160405280156109ee578160200160208202803683370190505b50905060005b838110156106c157610a6086868684818110610a1257610a1261227d565b905060200201356001600160a01b039190911660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b28752782060209081526040808320938352929052205490565b828281518110610a7257610a7261227d565b602090810291909101015280610a87816122c6565b9150506109f4565b303314610aaf576040516328be0e2160e21b815260040160405180910390fd5b610abb8484848461139c565b50505050565b60008181527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea560205260408120546106fb565b6001600160a01b03821660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b28752782060209081526040808320848452909152812054610358565b6000610b46611059565b9050806001600160a01b0316866001600160a01b03161480610bac57506001600160a01b0380871660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a8602090815260408083209385168352929052205460ff165b610c0a5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610459565b6104708187878787876114e2565b610c20611059565b6001600160a01b0316836001600160a01b03161480610cb857503063e985e9c584610c49611059565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610c94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb89190612293565b6104985760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610459565b60006001600160a01b038316610d945760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f20616464726573730000000000000000000000000000000000000000006064820152608401610459565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a76000928352602090815260408084206001600160a01b0395909516845293905250205490565b6001600160a01b038316610e3d5760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610459565b8051825114610e9f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610459565b6000610ea9611059565b9050610ec9818560008686604051806020016040528060008152506114fe565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a760005b8451811015610ff9576000858281518110610f0a57610f0a61227d565b60200260200101519050848281518110610f2657610f2661227d565b602090810291909101810151600083815285835260408082206001600160a01b038c16835290935291909120541015610fad5760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610459565b848281518110610fbf57610fbf61227d565b602090810291909101810151600092835284825260408084206001600160a01b038b16855290925291208054919091039055600101610eed565b5060006001600160a01b0316856001600160a01b0316836001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161104a9291906122df565b60405180910390a45050505050565b6000611063611503565b905090565b61107686868686868661150d565b61047086868686868661179a565b6001600160a01b0383166110e65760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610459565b60006110f0611059565b90506111208185600061110287611948565b61110b87611948565b604051806020016040528060008152506114fe565b60008381527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a7602090815260408083206001600160a01b038816845291829052909120548311156111bf5760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610459565b6001600160a01b0385811660008181526020848152604080832080548990039055805189815291820188905291938616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910161104a565b6001600160a01b03831660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b2875278206020908152604080832085845291829052909120548211156112ac5760405162461bcd60e51b815260206004820152601160248201527f4e4f545f454e4f5547485f4c4f434b45440000000000000000000000000000006044820152606401610459565b600083815260208290526040812080548492906112ca90849061230d565b909155505050505050565b6001600160a01b03831660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b28752782060209081526040808320858452918290529091205482906113268686610d16565b611330919061230d565b101561137e5760405162461bcd60e51b815260206004820152601260248201527f4e4f545f454e4f5547485f42414c414e434500000000000000000000000000006044820152606401610459565b600083815260208290526040812080548492906112ca908490612324565b60006113a6611059565b90506001600160a01b0385166114245760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610459565b6114438160008761143488611948565b61143d88611948565b876114fe565b60008481527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a7602090815260408083206001600160a01b038916845290915281208054859290611494908490612324565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910161104a565b6114f0868686868686611993565b610470868686868686611b5c565b610470565b6000611063611c58565b6001600160a01b0384166115715760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610459565b81518351146115d35760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610459565b6115e18686868686866114fe565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a760005b84518110156117395760008582815181106116225761162261227d565b6020026020010151905060008583815181106116405761164061227d565b602090810291909101810151600084815286835260408082206001600160a01b038e1683529093529190912054909150818110156116e65760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a20696e73756666696369656e742062616c616e636573206660448201527f6f72207472616e736665720000000000000000000000000000000000000000006064820152608401610459565b6000838152602086815260408083206001600160a01b038e811685529252808320938590039093558a16815290812080546001959095019483929061172c908490612324565b9091555061160592505050565b50846001600160a01b0316866001600160a01b0316886001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516117899291906122df565b60405180910390a450505050505050565b6001600160a01b0384163b156104705760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906117de9089908990889088908890600401612389565b6020604051808303816000875af1925050508015611819575060408051601f3d908101601f19168201909252611816918101906123e7565b60015b6118ce57611825612411565b806308c379a00361185e575061183961242c565b806118445750611860565b8060405162461bcd60e51b815260040161045991906124b6565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610459565b6001600160e01b0319811663bc197c8160e01b1461193f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610459565b50505050505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106119825761198261227d565b602090810291909101015292915050565b6001600160a01b0384166119f75760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610459565b611a15868686611a0687611948565b611a0f87611948565b866114fe565b60008381527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a7602081815260408084206001600160a01b038a1685529091529091205483811015611ace5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a20696e73756666696369656e742062616c616e636573206660448201527f6f72207472616e736665720000000000000000000000000000000000000000006064820152608401610459565b6000858152602083815260408083206001600160a01b038b81168552925280832093879003909355871681529081208054859290611b0d908490612324565b909155505060408051858152602081018590526001600160a01b038088169289821692918b16917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629101611789565b6001600160a01b0384163b156104705760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611ba090899089908890889088906004016124c9565b6020604051808303816000875af1925050508015611bdb575060408051601f3d908101601f19168201909252611bd8918101906123e7565b60015b611be757611825612411565b6001600160e01b0319811663f23a6e6160e01b1461193f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610459565b7fdb1d5e345c4903e9a32b6674ecc8b1deaddbbb2551474fb34c9d34becbe7f420546000906001600160a01b03163303611c99575060131936013560601c90565b503390565b90565b80356001600160a01b0381168114611cb857600080fd5b919050565b60008060408385031215611cd057600080fd5b611cd983611ca1565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715611d2357611d23611ce7565b6040525050565b600067ffffffffffffffff821115611d4457611d44611ce7565b5060051b60200190565b600082601f830112611d5f57600080fd5b81356020611d6c82611d2a565b604051611d798282611cfd565b83815260059390931b8501820192828101915086841115611d9957600080fd5b8286015b84811015611db45780358352918301918301611d9d565b509695505050505050565b600080600060608486031215611dd457600080fd5b611ddd84611ca1565b9250602084013567ffffffffffffffff80821115611dfa57600080fd5b611e0687838801611d4e565b93506040860135915080821115611e1c57600080fd5b50611e2986828701611d4e565b9150509250925092565b600082601f830112611e4457600080fd5b813567ffffffffffffffff811115611e5e57611e5e611ce7565b604051611e75601f8301601f191660200182611cfd565b818152846020838601011115611e8a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215611ebf57600080fd5b611ec886611ca1565b9450611ed660208701611ca1565b9350604086013567ffffffffffffffff80821115611ef357600080fd5b611eff89838a01611d4e565b94506060880135915080821115611f1557600080fd5b611f2189838a01611d4e565b93506080880135915080821115611f3757600080fd5b50611f4488828901611e33565b9150509295509295909350565b600080600060608486031215611f6657600080fd5b611f6f84611ca1565b95602085013595506040909401359392505050565b60008060408385031215611f9757600080fd5b823567ffffffffffffffff80821115611faf57600080fd5b818501915085601f830112611fc357600080fd5b81356020611fd082611d2a565b604051611fdd8282611cfd565b83815260059390931b8501820192828101915089841115611ffd57600080fd5b948201945b838610156120225761201386611ca1565b82529482019490820190612002565b9650508601359250508082111561203857600080fd5b5061204585828601611d4e565b9150509250929050565b600081518084526020808501945080840160005b8381101561207f57815187529582019590820190600101612063565b509495945050505050565b602081526000610358602083018461204f565b6000602082840312156120af57600080fd5b5035919050565b80151581146120c457600080fd5b50565b600080604083850312156120da57600080fd5b6120e383611ca1565b915060208301356120f3816120b6565b809150509250929050565b60008060006040848603121561211357600080fd5b61211c84611ca1565b9250602084013567ffffffffffffffff8082111561213957600080fd5b818601915086601f83011261214d57600080fd5b81358181111561215c57600080fd5b8760208260051b850101111561217157600080fd5b6020830194508093505050509250925092565b6000806000806080858703121561219a57600080fd5b6121a385611ca1565b93506020850135925060408501359150606085013567ffffffffffffffff8111156121cd57600080fd5b6121d987828801611e33565b91505092959194509250565b600080604083850312156121f857600080fd5b61220183611ca1565b915061220f60208401611ca1565b90509250929050565b600080600080600060a0868803121561223057600080fd5b61223986611ca1565b945061224760208701611ca1565b93506040860135925060608601359150608086013567ffffffffffffffff81111561227157600080fd5b611f4488828901611e33565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156122a557600080fd5b8151610358816120b6565b634e487b7160e01b600052601160045260246000fd5b6000600182016122d8576122d86122b0565b5060010190565b6040815260006122f2604083018561204f565b8281036020840152612304818561204f565b95945050505050565b60008282101561231f5761231f6122b0565b500390565b60008219821115612337576123376122b0565b500190565b6000815180845260005b8181101561236257602081850181015186830182015201612346565b81811115612374576000602083870101525b50601f01601f19169290920160200192915050565b60006001600160a01b03808816835280871660208401525060a060408301526123b560a083018661204f565b82810360608401526123c7818661204f565b905082810360808401526123db818561233c565b98975050505050505050565b6000602082840312156123f957600080fd5b81516001600160e01b03198116811461035857600080fd5b600060033d1115611c9e5760046000803e5060005160e01c90565b600060443d101561243a5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561246a57505050505090565b82850191508151818111156124825750505050505090565b843d870101602082850101111561249c5750505050505090565b6124ab60208286010187611cfd565b509095945050505050565b602081526000610358602083018461233c565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261250160a083018461233c565b97965050505050505056fea26469706673582212204f5cd4da44035af8b160964c564e469d695befca0a318d79d75c007bbdb73c9864736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101505760003560e01c8063869f7594116100cd578063bd85b03911610081578063e985e9c511610066578063e985e9c5146102cb578063f242432a14610326578063f5298aca1461033957600080fd5b8063bd85b039146102a5578063bf7bab73146102b857600080fd5b8063a22cb465116100b2578063a22cb4651461026c578063a91a988a1461027f578063b164884b1461029257600080fd5b8063869f759414610246578063983da1561461025957600080fd5b806348f2f536116101245780634f558e79116101095780634f558e79146101fd5780636708a990146102205780636b20c4541461023357600080fd5b806348f2f536146101ca5780634e1273f4146101dd57600080fd5b8062fdd58e146101555780630ad2bbac1461017b57806314e35aa4146101905780632eb2c2d6146101b7575b600080fd5b610168610163366004611cbd565b61034c565b6040519081526020015b60405180910390f35b61018e610189366004611dbf565b61035f565b005b7f20cb9ad5a22f74f90c7fecbece6b6ab3beb2a63812efb8693c5ff39f2b73ee0f54610168565b61018e6101c5366004611ea7565b61038f565b61018e6101d8366004611f51565b610478565b6101f06101eb366004611f84565b6104a3565b604051610172919061208a565b61021061020b36600461209d565b6106ca565b6040519015158152602001610172565b61018e61022e366004611f51565b610701565b61018e610241366004611dbf565b61072c565b61016861025436600461209d565b61082a565b61018e610267366004611f51565b61085d565b61018e61027a3660046120c7565b610888565b6101f061028d3660046120fe565b6109a8565b61018e6102a0366004612184565b610a8f565b6101686102b336600461209d565b610ac1565b6101686102c6366004611cbd565b610af4565b6102106102d93660046121e5565b6001600160a01b0391821660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a86020908152604080832093909416825291909152205460ff1690565b61018e610334366004612218565b610b3c565b61018e610347366004611f51565b610c18565b60006103588383610d16565b9392505050565b30331461037f576040516328be0e2160e21b815260040160405180910390fd5b61038a838383610ddb565b505050565b6000610399611059565b9050806001600160a01b0316866001600160a01b031614806103ff57506001600160a01b0380871660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a8602090815260408083209385168352929052205460ff165b6104625760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b60648201526084015b60405180910390fd5b610470818787878787611068565b505050505050565b303314610498576040516328be0e2160e21b815260040160405180910390fd5b61038a838383611084565b6060815183511461051c5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610459565b82517ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a79060009067ffffffffffffffff81111561055b5761055b611ce7565b604051908082528060200260200182016040528015610584578160200160208202803683370190505b50905060005b85518110156106c15760006001600160a01b03168682815181106105b0576105b061227d565b60200260200101516001600160a01b0316036106345760405162461bcd60e51b815260206004820152603160248201527f455243313135353a2062617463682062616c616e636520717565727920666f7260448201527f20746865207a65726f20616464726573730000000000000000000000000000006064820152608401610459565b8260008683815181106106495761064961227d565b6020026020010151815260200190815260200160002060008783815181106106735761067361227d565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020548282815181106106ae576106ae61227d565b602090810291909101015260010161058a565b50949350505050565b60008181527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea5602052604081205415155b92915050565b303314610721576040516328be0e2160e21b815260040160405180910390fd5b61038a838383611218565b610734611059565b6001600160a01b0316836001600160a01b031614806107cc57503063e985e9c58461075d611059565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156107a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107cc9190612293565b61037f5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610459565b60008181527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea660205260408120546106fb565b30331461087d576040516328be0e2160e21b815260040160405180910390fd5b61038a8383836112d5565b6000610892611059565b9050826001600160a01b0316816001600160a01b03160361091b5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610459565b6001600160a01b0381811660008181527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a86020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b606060008267ffffffffffffffff8111156109c5576109c5611ce7565b6040519080825280602002602001820160405280156109ee578160200160208202803683370190505b50905060005b838110156106c157610a6086868684818110610a1257610a1261227d565b905060200201356001600160a01b039190911660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b28752782060209081526040808320938352929052205490565b828281518110610a7257610a7261227d565b602090810291909101015280610a87816122c6565b9150506109f4565b303314610aaf576040516328be0e2160e21b815260040160405180910390fd5b610abb8484848461139c565b50505050565b60008181527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea560205260408120546106fb565b6001600160a01b03821660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b28752782060209081526040808320848452909152812054610358565b6000610b46611059565b9050806001600160a01b0316866001600160a01b03161480610bac57506001600160a01b0380871660009081527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a8602090815260408083209385168352929052205460ff165b610c0a5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610459565b6104708187878787876114e2565b610c20611059565b6001600160a01b0316836001600160a01b03161480610cb857503063e985e9c584610c49611059565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610c94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb89190612293565b6104985760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610459565b60006001600160a01b038316610d945760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f20616464726573730000000000000000000000000000000000000000006064820152608401610459565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a76000928352602090815260408084206001600160a01b0395909516845293905250205490565b6001600160a01b038316610e3d5760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610459565b8051825114610e9f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610459565b6000610ea9611059565b9050610ec9818560008686604051806020016040528060008152506114fe565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a760005b8451811015610ff9576000858281518110610f0a57610f0a61227d565b60200260200101519050848281518110610f2657610f2661227d565b602090810291909101810151600083815285835260408082206001600160a01b038c16835290935291909120541015610fad5760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610459565b848281518110610fbf57610fbf61227d565b602090810291909101810151600092835284825260408084206001600160a01b038b16855290925291208054919091039055600101610eed565b5060006001600160a01b0316856001600160a01b0316836001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161104a9291906122df565b60405180910390a45050505050565b6000611063611503565b905090565b61107686868686868661150d565b61047086868686868661179a565b6001600160a01b0383166110e65760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610459565b60006110f0611059565b90506111208185600061110287611948565b61110b87611948565b604051806020016040528060008152506114fe565b60008381527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a7602090815260408083206001600160a01b038816845291829052909120548311156111bf5760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610459565b6001600160a01b0385811660008181526020848152604080832080548990039055805189815291820188905291938616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910161104a565b6001600160a01b03831660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b2875278206020908152604080832085845291829052909120548211156112ac5760405162461bcd60e51b815260206004820152601160248201527f4e4f545f454e4f5547485f4c4f434b45440000000000000000000000000000006044820152606401610459565b600083815260208290526040812080548492906112ca90849061230d565b909155505050505050565b6001600160a01b03831660009081527f349768cb3869818ef8452552d8520ac7355b35c10a0ff9320e2975b28752782060209081526040808320858452918290529091205482906113268686610d16565b611330919061230d565b101561137e5760405162461bcd60e51b815260206004820152601260248201527f4e4f545f454e4f5547485f42414c414e434500000000000000000000000000006044820152606401610459565b600083815260208290526040812080548492906112ca908490612324565b60006113a6611059565b90506001600160a01b0385166114245760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610459565b6114438160008761143488611948565b61143d88611948565b876114fe565b60008481527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a7602090815260408083206001600160a01b038916845290915281208054859290611494908490612324565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910161104a565b6114f0868686868686611993565b610470868686868686611b5c565b610470565b6000611063611c58565b6001600160a01b0384166115715760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610459565b81518351146115d35760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610459565b6115e18686868686866114fe565b7ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a760005b84518110156117395760008582815181106116225761162261227d565b6020026020010151905060008583815181106116405761164061227d565b602090810291909101810151600084815286835260408082206001600160a01b038e1683529093529190912054909150818110156116e65760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a20696e73756666696369656e742062616c616e636573206660448201527f6f72207472616e736665720000000000000000000000000000000000000000006064820152608401610459565b6000838152602086815260408083206001600160a01b038e811685529252808320938590039093558a16815290812080546001959095019483929061172c908490612324565b9091555061160592505050565b50846001600160a01b0316866001600160a01b0316886001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516117899291906122df565b60405180910390a450505050505050565b6001600160a01b0384163b156104705760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906117de9089908990889088908890600401612389565b6020604051808303816000875af1925050508015611819575060408051601f3d908101601f19168201909252611816918101906123e7565b60015b6118ce57611825612411565b806308c379a00361185e575061183961242c565b806118445750611860565b8060405162461bcd60e51b815260040161045991906124b6565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610459565b6001600160e01b0319811663bc197c8160e01b1461193f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610459565b50505050505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106119825761198261227d565b602090810291909101015292915050565b6001600160a01b0384166119f75760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610459565b611a15868686611a0687611948565b611a0f87611948565b866114fe565b60008381527ff9ecf3cb86ac553c70621e3e662b4036163ca34fffb329385fafa0e130cfc1a7602081815260408084206001600160a01b038a1685529091529091205483811015611ace5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a20696e73756666696369656e742062616c616e636573206660448201527f6f72207472616e736665720000000000000000000000000000000000000000006064820152608401610459565b6000858152602083815260408083206001600160a01b038b81168552925280832093879003909355871681529081208054859290611b0d908490612324565b909155505060408051858152602081018590526001600160a01b038088169289821692918b16917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629101611789565b6001600160a01b0384163b156104705760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611ba090899089908890889088906004016124c9565b6020604051808303816000875af1925050508015611bdb575060408051601f3d908101601f19168201909252611bd8918101906123e7565b60015b611be757611825612411565b6001600160e01b0319811663f23a6e6160e01b1461193f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610459565b7fdb1d5e345c4903e9a32b6674ecc8b1deaddbbb2551474fb34c9d34becbe7f420546000906001600160a01b03163303611c99575060131936013560601c90565b503390565b90565b80356001600160a01b0381168114611cb857600080fd5b919050565b60008060408385031215611cd057600080fd5b611cd983611ca1565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715611d2357611d23611ce7565b6040525050565b600067ffffffffffffffff821115611d4457611d44611ce7565b5060051b60200190565b600082601f830112611d5f57600080fd5b81356020611d6c82611d2a565b604051611d798282611cfd565b83815260059390931b8501820192828101915086841115611d9957600080fd5b8286015b84811015611db45780358352918301918301611d9d565b509695505050505050565b600080600060608486031215611dd457600080fd5b611ddd84611ca1565b9250602084013567ffffffffffffffff80821115611dfa57600080fd5b611e0687838801611d4e565b93506040860135915080821115611e1c57600080fd5b50611e2986828701611d4e565b9150509250925092565b600082601f830112611e4457600080fd5b813567ffffffffffffffff811115611e5e57611e5e611ce7565b604051611e75601f8301601f191660200182611cfd565b818152846020838601011115611e8a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215611ebf57600080fd5b611ec886611ca1565b9450611ed660208701611ca1565b9350604086013567ffffffffffffffff80821115611ef357600080fd5b611eff89838a01611d4e565b94506060880135915080821115611f1557600080fd5b611f2189838a01611d4e565b93506080880135915080821115611f3757600080fd5b50611f4488828901611e33565b9150509295509295909350565b600080600060608486031215611f6657600080fd5b611f6f84611ca1565b95602085013595506040909401359392505050565b60008060408385031215611f9757600080fd5b823567ffffffffffffffff80821115611faf57600080fd5b818501915085601f830112611fc357600080fd5b81356020611fd082611d2a565b604051611fdd8282611cfd565b83815260059390931b8501820192828101915089841115611ffd57600080fd5b948201945b838610156120225761201386611ca1565b82529482019490820190612002565b9650508601359250508082111561203857600080fd5b5061204585828601611d4e565b9150509250929050565b600081518084526020808501945080840160005b8381101561207f57815187529582019590820190600101612063565b509495945050505050565b602081526000610358602083018461204f565b6000602082840312156120af57600080fd5b5035919050565b80151581146120c457600080fd5b50565b600080604083850312156120da57600080fd5b6120e383611ca1565b915060208301356120f3816120b6565b809150509250929050565b60008060006040848603121561211357600080fd5b61211c84611ca1565b9250602084013567ffffffffffffffff8082111561213957600080fd5b818601915086601f83011261214d57600080fd5b81358181111561215c57600080fd5b8760208260051b850101111561217157600080fd5b6020830194508093505050509250925092565b6000806000806080858703121561219a57600080fd5b6121a385611ca1565b93506020850135925060408501359150606085013567ffffffffffffffff8111156121cd57600080fd5b6121d987828801611e33565b91505092959194509250565b600080604083850312156121f857600080fd5b61220183611ca1565b915061220f60208401611ca1565b90509250929050565b600080600080600060a0868803121561223057600080fd5b61223986611ca1565b945061224760208701611ca1565b93506040860135925060608601359150608086013567ffffffffffffffff81111561227157600080fd5b611f4488828901611e33565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156122a557600080fd5b8151610358816120b6565b634e487b7160e01b600052601160045260246000fd5b6000600182016122d8576122d86122b0565b5060010190565b6040815260006122f2604083018561204f565b8281036020840152612304818561204f565b95945050505050565b60008282101561231f5761231f6122b0565b500390565b60008219821115612337576123376122b0565b500190565b6000815180845260005b8181101561236257602081850181015186830182015201612346565b81811115612374576000602083870101525b50601f01601f19169290920160200192915050565b60006001600160a01b03808816835280871660208401525060a060408301526123b560a083018661204f565b82810360608401526123c7818661204f565b905082810360808401526123db818561233c565b98975050505050505050565b6000602082840312156123f957600080fd5b81516001600160e01b03198116811461035857600080fd5b600060033d1115611c9e5760046000803e5060005160e01c90565b600060443d101561243a5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561246a57505050505090565b82850191508151818111156124825750505050505090565b843d870101602082850101111561249c5750505050505090565b6124ab60208286010187611cfd565b509095945050505050565b602081526000610358602083018461233c565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261250160a083018461233c565b97965050505050505056fea26469706673582212204f5cd4da44035af8b160964c564e469d695befca0a318d79d75c007bbdb73c9864736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/extensions/burnable/ERC1155Burnable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Burnable","sourceName":"src/token/ERC1155/extensions/burnable/ERC1155Burnable.sol","abi":[{"inputs":[],"name":"SenderIsNotSelf","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"burnBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"burnBatchByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnablePausedUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/extensions/burnable/ERC1155BurnableStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155BurnableStorage","sourceName":"src/token/ERC1155/extensions/burnable/ERC1155BurnableStorage.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bf2c07898dec01698a8cdde82bc79219d9c16c7785a7eabf2746a4fdd1b20aa264736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bf2c07898dec01698a8cdde82bc79219d9c16c7785a7eabf2746a4fdd1b20aa264736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/extensions/burnable/IERC1155Burnable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155Burnable","sourceName":"src/token/ERC1155/extensions/burnable/IERC1155Burnable.sol","abi":[{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"burnBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"burnBatchByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnablePausedUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/extensions/lockable/ERC1155Lockable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Lockable","sourceName":"src/token/ERC1155/extensions/lockable/ERC1155Lockable.sol","abi":[{"inputs":[],"name":"SenderIsNotSelf","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"lockByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ticketTokenIds","type":"uint256[]"}],"name":"locked","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"locked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unlockByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/extensions/lockable/ERC1155LockableInternal":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155LockableInternal","sourceName":"src/token/ERC1155/extensions/lockable/ERC1155LockableInternal.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/extensions/lockable/ERC1155LockableStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155LockableStorage","sourceName":"src/token/ERC1155/extensions/lockable/ERC1155LockableStorage.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e99e09e263c09fb87ca6600069ccf209f120f33ca8d9df4afa01f701eb6a1ef364736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e99e09e263c09fb87ca6600069ccf209f120f33ca8d9df4afa01f701eb6a1ef364736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/extensions/lockable/IERC1155Lockable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155Lockable","sourceName":"src/token/ERC1155/extensions/lockable/IERC1155Lockable.sol","abi":[{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"lockByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unlockByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/extensions/mintable/ERC1155Mintable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Mintable","sourceName":"src/token/ERC1155/extensions/mintable/ERC1155Mintable.sol","abi":[{"inputs":[],"name":"SenderIsNotSelf","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mintByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/extensions/mintable/IERC1155Mintable":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155Mintable","sourceName":"src/token/ERC1155/extensions/mintable/IERC1155Mintable.sol","abi":[{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mintByFacet","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/extensions/supply/ERC1155Supply":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Supply","sourceName":"src/token/ERC1155/extensions/supply/ERC1155Supply.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/extensions/supply/ERC1155SupplyInternal":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155SupplyInternal","sourceName":"src/token/ERC1155/extensions/supply/ERC1155SupplyInternal.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/extensions/supply/ERC1155SupplyStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155SupplyStorage","sourceName":"src/token/ERC1155/extensions/supply/ERC1155SupplyStorage.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e994c8ba17b4f36ff45a3742c3500b3b3729a83dabbe267c46f37714201a8a8764736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e994c8ba17b4f36ff45a3742c3500b3b3729a83dabbe267c46f37714201a8a8764736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/extensions/supply/IERC1155Supply":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155Supply","sourceName":"src/token/ERC1155/extensions/supply/IERC1155Supply.sol","abi":[{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/burnable/ERC1155BurnableOwnable":{"address":{"3":"0x48F9152b91103E158029921C59Ff844d30468288","4":"0x784F5AE3d12E03112564b0318c60653EB84FA4Cf","rinkeby":"0x784F5AE3d12E03112564b0318c60653EB84FA4Cf","ropsten":"0x48F9152b91103E158029921C59Ff844d30468288"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155BurnableOwnable","sourceName":"src/token/ERC1155/facets/burnable/ERC1155BurnableOwnable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"newTimestamp","type":"uint256"}],"name":"setBurnablePausedUntil","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b5061015c806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063710fb57714610030575b600080fd5b61004361003e36600461010d565b610045565b005b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146100e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e6572000000604482015260640160405180910390fd5b7f20cb9ad5a22f74f90c7fecbece6b6ab3beb2a63812efb8693c5ff39f2b73ee0f55565b60006020828403121561011f57600080fd5b503591905056fea26469706673582212206481751c5dc41ee45c4a72583bfe26e5a3e0966c2db927c3a4d20d00d76807aa64736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063710fb57714610030575b600080fd5b61004361003e36600461010d565b610045565b005b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146100e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e6572000000604482015260640160405180910390fd5b7f20cb9ad5a22f74f90c7fecbece6b6ab3beb2a63812efb8693c5ff39f2b73ee0f55565b60006020828403121561011f57600080fd5b503591905056fea26469706673582212206481751c5dc41ee45c4a72583bfe26e5a3e0966c2db927c3a4d20d00d76807aa64736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/burnable/IERC1155BurnableAdmin":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155BurnableAdmin","sourceName":"src/token/ERC1155/facets/burnable/IERC1155BurnableAdmin.sol","abi":[{"inputs":[{"internalType":"uint256","name":"newTimestamp","type":"uint256"}],"name":"setBurnablePausedUntil","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/metadata/ERC1155Metadata":{"address":{"3":"0x9d9Ec7d191a11F38d3941A2A8d656584aF01748e","4":"0x877546CE36fC055d2506aCe87838FD22eED420Be","rinkeby":"0x877546CE36fC055d2506aCe87838FD22eED420Be","ropsten":"0x9d9Ec7d191a11F38d3941A2A8d656584aF01748e"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155Metadata","sourceName":"src/token/ERC1155/facets/metadata/ERC1155Metadata.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURILocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fallbackURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fallbackURILocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLockedTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"uriBatch","outputs":[{"internalType":"string[]","name":"","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uriSuffix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uriSuffixLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b50610a42806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635d148e5c116100765780636c0360eb1161005b5780636c0360eb1461016d57806396d7e22914610175578063c4ef3e051461019557600080fd5b80635d148e5c146101135780636b95c5041461013d57600080fd5b8063067f0848146100a85780630c7d9752146100e35780630e89341c146100f85780635503a0e81461010b575b600080fd5b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceee5460ff165b60405190151581526020015b60405180910390f35b6100eb6101bf565b6040516100da91906106f6565b6100eb610106366004610710565b610273565b6100eb610447565b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceec5460ff166100ce565b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bcef1546040519081526020016100da565b6100eb610478565b610188610183366004610729565b6104a6565b6040516100da919061079e565b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bcef05460ff166100ce565b60607f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceeb60020180546101f090610800565b80601f016020809104026020016040519081016040528092919081815260200182805461021c90610800565b80156102695780601f1061023e57610100808354040283529160200191610269565b820191906000526020600020905b81548152906001019060200180831161024c57829003601f168201915b5050505050905090565b60008181527f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bcef26020526040812080546060927f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceeb9290916102d290610800565b80601f01602080910402602001604051908101604052809291908181526020018280546102fe90610800565b801561034b5780601f106103205761010080835404028352916020019161034b565b820191906000526020600020905b81548152906001019060200180831161032e57829003601f168201915b50505050509050600082600001805461036390610800565b80601f016020809104026020016040519081016040528092919081815260200182805461038f90610800565b80156103dc5780601f106103b1576101008083540402835291602001916103dc565b820191906000526020600020905b8154815290600101906020018083116103bf57829003601f168201915b5050505050905080516000036103f457509392505050565b81511561042757808260405160200161040e929190610856565b6040516020818303038152906040529350505050919050565b80836002016104358761055d565b60405160200161040e93929190610885565b60607f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceeb60040180546101f090610800565b60607f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceeb80546101f090610800565b606060008267ffffffffffffffff8111156104c3576104c3610944565b6040519080825280602002602001820160405280156104f657816020015b60608152602001906001900390816104e15790505b50905060005b83811015610555576105258585838181106105195761051961095a565b90506020020135610273565b8282815181106105375761053761095a565b6020026020010181905250808061054d90610986565b9150506104fc565b509392505050565b6060816000036105a057505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156105ca57806105b481610986565b91506105c39050600a836109b5565b91506105a4565b60008167ffffffffffffffff8111156105e5576105e5610944565b6040519080825280601f01601f19166020018201604052801561060f576020820181803683370190505b5090505b8415610692576106246001836109c9565b9150610631600a866109e0565b61063c9060306109f4565b60f81b8183815181106106515761065161095a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061068b600a866109b5565b9450610613565b949350505050565b60005b838110156106b557818101518382015260200161069d565b838111156106c4576000848401525b50505050565b600081518084526106e281602086016020860161069a565b601f01601f19169290920160200192915050565b60208152600061070960208301846106ca565b9392505050565b60006020828403121561072257600080fd5b5035919050565b6000806020838503121561073c57600080fd5b823567ffffffffffffffff8082111561075457600080fd5b818501915085601f83011261076857600080fd5b81358181111561077757600080fd5b8660208260051b850101111561078c57600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156107f357603f198886030184526107e18583516106ca565b945092850192908501906001016107c5565b5092979650505050505050565b600181811c9082168061081457607f821691505b60208210810361083457634e487b7160e01b600052602260045260246000fd5b50919050565b6000815161084c81856020860161069a565b9290920192915050565b6000835161086881846020880161069a565b83519083019061087c81836020880161069a565b01949350505050565b6000845160206108988285838a0161069a565b855491840191600090600181811c90808316806108b657607f831692505b85831081036108d357634e487b7160e01b85526022600452602485fd5b8080156108e757600181146108fc57610929565b60ff1985168852831515840288019550610929565b60008c81526020902060005b858110156109215781548a820152908401908801610908565b505083880195505b5050505050610938818761083a565b98975050505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161099857610998610970565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826109c4576109c461099f565b500490565b6000828210156109db576109db610970565b500390565b6000826109ef576109ef61099f565b500690565b60008219821115610a0757610a07610970565b50019056fea26469706673582212209bede0178701a3aa471cbadbabfd091f6a15970905a86a04e58b36398c4aa2e064736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100a35760003560e01c80635d148e5c116100765780636c0360eb1161005b5780636c0360eb1461016d57806396d7e22914610175578063c4ef3e051461019557600080fd5b80635d148e5c146101135780636b95c5041461013d57600080fd5b8063067f0848146100a85780630c7d9752146100e35780630e89341c146100f85780635503a0e81461010b575b600080fd5b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceee5460ff165b60405190151581526020015b60405180910390f35b6100eb6101bf565b6040516100da91906106f6565b6100eb610106366004610710565b610273565b6100eb610447565b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceec5460ff166100ce565b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bcef1546040519081526020016100da565b6100eb610478565b610188610183366004610729565b6104a6565b6040516100da919061079e565b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bcef05460ff166100ce565b60607f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceeb60020180546101f090610800565b80601f016020809104026020016040519081016040528092919081815260200182805461021c90610800565b80156102695780601f1061023e57610100808354040283529160200191610269565b820191906000526020600020905b81548152906001019060200180831161024c57829003601f168201915b5050505050905090565b60008181527f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bcef26020526040812080546060927f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceeb9290916102d290610800565b80601f01602080910402602001604051908101604052809291908181526020018280546102fe90610800565b801561034b5780601f106103205761010080835404028352916020019161034b565b820191906000526020600020905b81548152906001019060200180831161032e57829003601f168201915b50505050509050600082600001805461036390610800565b80601f016020809104026020016040519081016040528092919081815260200182805461038f90610800565b80156103dc5780601f106103b1576101008083540402835291602001916103dc565b820191906000526020600020905b8154815290600101906020018083116103bf57829003601f168201915b5050505050905080516000036103f457509392505050565b81511561042757808260405160200161040e929190610856565b6040516020818303038152906040529350505050919050565b80836002016104358761055d565b60405160200161040e93929190610885565b60607f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceeb60040180546101f090610800565b60607f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceeb80546101f090610800565b606060008267ffffffffffffffff8111156104c3576104c3610944565b6040519080825280602002602001820160405280156104f657816020015b60608152602001906001900390816104e15790505b50905060005b83811015610555576105258585838181106105195761051961095a565b90506020020135610273565b8282815181106105375761053761095a565b6020026020010181905250808061054d90610986565b9150506104fc565b509392505050565b6060816000036105a057505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156105ca57806105b481610986565b91506105c39050600a836109b5565b91506105a4565b60008167ffffffffffffffff8111156105e5576105e5610944565b6040519080825280601f01601f19166020018201604052801561060f576020820181803683370190505b5090505b8415610692576106246001836109c9565b9150610631600a866109e0565b61063c9060306109f4565b60f81b8183815181106106515761065161095a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061068b600a866109b5565b9450610613565b949350505050565b60005b838110156106b557818101518382015260200161069d565b838111156106c4576000848401525b50505050565b600081518084526106e281602086016020860161069a565b601f01601f19169290920160200192915050565b60208152600061070960208301846106ca565b9392505050565b60006020828403121561072257600080fd5b5035919050565b6000806020838503121561073c57600080fd5b823567ffffffffffffffff8082111561075457600080fd5b818501915085601f83011261076857600080fd5b81358181111561077757600080fd5b8660208260051b850101111561078c57600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156107f357603f198886030184526107e18583516106ca565b945092850192908501906001016107c5565b5092979650505050505050565b600181811c9082168061081457607f821691505b60208210810361083457634e487b7160e01b600052602260045260246000fd5b50919050565b6000815161084c81856020860161069a565b9290920192915050565b6000835161086881846020880161069a565b83519083019061087c81836020880161069a565b01949350505050565b6000845160206108988285838a0161069a565b855491840191600090600181811c90808316806108b657607f831692505b85831081036108d357634e487b7160e01b85526022600452602485fd5b8080156108e757600181146108fc57610929565b60ff1985168852831515840288019550610929565b60008c81526020902060005b858110156109215781548a820152908401908801610908565b505083880195505b5050505050610938818761083a565b98975050505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161099857610998610970565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826109c4576109c461099f565b500490565b6000828210156109db576109db610970565b500390565b6000826109ef576109ef61099f565b500690565b60008219821115610a0757610a07610970565b50019056fea26469706673582212209bede0178701a3aa471cbadbabfd091f6a15970905a86a04e58b36398c4aa2e064736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/metadata/ERC1155MetadataInternal":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155MetadataInternal","sourceName":"src/token/ERC1155/facets/metadata/ERC1155MetadataInternal.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"URI","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/metadata/ERC1155MetadataOwnable":{"address":{"3":"0xE9fCC8544F378332CAF85A9AbBd1d24872feAd54","4":"0x7b151958c3Fc4261fF3AD87c614163dAB22e7B6B","rinkeby":"0x7b151958c3Fc4261fF3AD87c614163dAB22e7B6B","ropsten":"0xE9fCC8544F378332CAF85A9AbBd1d24872feAd54"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155MetadataOwnable","sourceName":"src/token/ERC1155/facets/metadata/ERC1155MetadataOwnable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[],"name":"lockBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockFallbackURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockURISuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"lockURIUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newFallbackURI","type":"string"}],"name":"setFallbackURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"newTokenURI","type":"string"}],"name":"setURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"string[]","name":"newTokenURIs","type":"string[]"}],"name":"setURIBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newURISuffix","type":"string"}],"name":"setURISuffix","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b50610ec8806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c806355f804b311610076578063862440e21161005b578063862440e214610106578063989143ee14610119578063b3dbdcde1461012c57600080fd5b806355f804b3146100e057806381b3e575146100f357600080fd5b806301b98ea0146100a85780630cf14c40146100bd57806318249af7146100c557806353df5c7c146100d8575b600080fd5b6100bb6100b6366004610b06565b610134565b005b6100bb610250565b6100bb6100d3366004610bb4565b6102fc565b6100bb6103b8565b6100bb6100ee366004610bb4565b610462565b6100bb610101366004610bb4565b61051a565b6100bb610114366004610bf6565b6105d2565b6100bb610127366004610c42565b610690565b6100bb610734565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146101b25760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064015b60405180910390fd5b60005b83811015610249576102378585838181106101d2576101d2610c5b565b905060200201358484848181106101eb576101eb610c5b565b90506020028101906101fd9190610c71565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506107de92505050565b8061024181610cb8565b9150506101b5565b5050505050565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146102c95760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016101a9565b6102fa7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceee805460ff19166001179055565b565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146103755760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016101a9565b6103b482828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506108c292505050565b5050565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146104315760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016101a9565b6102fa7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceec805460ff19166001179055565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146104db5760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016101a9565b6103b482828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061098592505050565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146105935760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016101a9565b6103b482828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109f792505050565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b0316331461064b5760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016101a9565b61068b8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506107de92505050565b505050565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146107095760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016101a9565b610731817f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bcef155565b50565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146107ad5760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016101a9565b6102fa7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bcef0805460ff19166001179055565b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bcef154821161084e5760405162461bcd60e51b815260206004820181905260248201527f455243313135354d657461646174613a20746f6b656e555249206c6f636b656460448201526064016101a9565b60008281527f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bcef2602052604090206108858282610d7d565b50817f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b826040516108b69190610e3d565b60405180910390a25050565b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceee5460ff161561095a5760405162461bcd60e51b815260206004820152602360248201527f455243313135354d657461646174613a2066616c6c6261636b555249206c6f6360448201527f6b6564000000000000000000000000000000000000000000000000000000000060648201526084016101a9565b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceeb6103b48282610d7d565b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceec5460ff161561095a5760405162461bcd60e51b815260206004820152601f60248201527f455243313135354d657461646174613a2062617365555249206c6f636b65640060448201526064016101a9565b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bcef05460ff1615610a8f5760405162461bcd60e51b815260206004820152602160248201527f455243313135354d657461646174613a20757269537566666978206c6f636b6560448201527f640000000000000000000000000000000000000000000000000000000000000060648201526084016101a9565b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceef6103b48282610d7d565b60008083601f840112610acc57600080fd5b50813567ffffffffffffffff811115610ae457600080fd5b6020830191508360208260051b8501011115610aff57600080fd5b9250929050565b60008060008060408587031215610b1c57600080fd5b843567ffffffffffffffff80821115610b3457600080fd5b610b4088838901610aba565b90965094506020870135915080821115610b5957600080fd5b50610b6687828801610aba565b95989497509550505050565b60008083601f840112610b8457600080fd5b50813567ffffffffffffffff811115610b9c57600080fd5b602083019150836020828501011115610aff57600080fd5b60008060208385031215610bc757600080fd5b823567ffffffffffffffff811115610bde57600080fd5b610bea85828601610b72565b90969095509350505050565b600080600060408486031215610c0b57600080fd5b83359250602084013567ffffffffffffffff811115610c2957600080fd5b610c3586828701610b72565b9497909650939450505050565b600060208284031215610c5457600080fd5b5035919050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112610c8857600080fd5b83018035915067ffffffffffffffff821115610ca357600080fd5b602001915036819003821315610aff57600080fd5b600060018201610cd857634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680610d0957607f821691505b602082108103610d2957634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561068b57600081815260208120601f850160051c81016020861015610d565750805b601f850160051c820191505b81811015610d7557828155600101610d62565b505050505050565b815167ffffffffffffffff811115610d9757610d97610cdf565b610dab81610da58454610cf5565b84610d2f565b602080601f831160018114610de05760008415610dc85750858301515b600019600386901b1c1916600185901b178555610d75565b600085815260208120601f198616915b82811015610e0f57888601518255948401946001909101908401610df0565b5085821015610e2d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208083528351808285015260005b81811015610e6a57858101830151858201604001528201610e4e565b81811115610e7c576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220ae020e48cc3c28b4c7875224126fd3550753c52dddbfc9cfc55d84de34493be764736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100a35760003560e01c806355f804b311610076578063862440e21161005b578063862440e214610106578063989143ee14610119578063b3dbdcde1461012c57600080fd5b806355f804b3146100e057806381b3e575146100f357600080fd5b806301b98ea0146100a85780630cf14c40146100bd57806318249af7146100c557806353df5c7c146100d8575b600080fd5b6100bb6100b6366004610b06565b610134565b005b6100bb610250565b6100bb6100d3366004610bb4565b6102fc565b6100bb6103b8565b6100bb6100ee366004610bb4565b610462565b6100bb610101366004610bb4565b61051a565b6100bb610114366004610bf6565b6105d2565b6100bb610127366004610c42565b610690565b6100bb610734565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146101b25760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064015b60405180910390fd5b60005b83811015610249576102378585838181106101d2576101d2610c5b565b905060200201358484848181106101eb576101eb610c5b565b90506020028101906101fd9190610c71565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506107de92505050565b8061024181610cb8565b9150506101b5565b5050505050565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146102c95760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016101a9565b6102fa7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceee805460ff19166001179055565b565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146103755760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016101a9565b6103b482828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506108c292505050565b5050565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146104315760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016101a9565b6102fa7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceec805460ff19166001179055565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146104db5760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016101a9565b6103b482828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061098592505050565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146105935760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016101a9565b6103b482828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109f792505050565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b0316331461064b5760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016101a9565b61068b8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506107de92505050565b505050565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146107095760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016101a9565b610731817f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bcef155565b50565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed4546001600160a01b031633146107ad5760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016101a9565b6102fa7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bcef0805460ff19166001179055565b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bcef154821161084e5760405162461bcd60e51b815260206004820181905260248201527f455243313135354d657461646174613a20746f6b656e555249206c6f636b656460448201526064016101a9565b60008281527f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bcef2602052604090206108858282610d7d565b50817f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b826040516108b69190610e3d565b60405180910390a25050565b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceee5460ff161561095a5760405162461bcd60e51b815260206004820152602360248201527f455243313135354d657461646174613a2066616c6c6261636b555249206c6f6360448201527f6b6564000000000000000000000000000000000000000000000000000000000060648201526084016101a9565b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceeb6103b48282610d7d565b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceec5460ff161561095a5760405162461bcd60e51b815260206004820152601f60248201527f455243313135354d657461646174613a2062617365555249206c6f636b65640060448201526064016101a9565b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bcef05460ff1615610a8f5760405162461bcd60e51b815260206004820152602160248201527f455243313135354d657461646174613a20757269537566666978206c6f636b6560448201527f640000000000000000000000000000000000000000000000000000000000000060648201526084016101a9565b7f7df186493127afbe76aac5b5b4ed702314d47975d114f419dbfeec69750bceef6103b48282610d7d565b60008083601f840112610acc57600080fd5b50813567ffffffffffffffff811115610ae457600080fd5b6020830191508360208260051b8501011115610aff57600080fd5b9250929050565b60008060008060408587031215610b1c57600080fd5b843567ffffffffffffffff80821115610b3457600080fd5b610b4088838901610aba565b90965094506020870135915080821115610b5957600080fd5b50610b6687828801610aba565b95989497509550505050565b60008083601f840112610b8457600080fd5b50813567ffffffffffffffff811115610b9c57600080fd5b602083019150836020828501011115610aff57600080fd5b60008060208385031215610bc757600080fd5b823567ffffffffffffffff811115610bde57600080fd5b610bea85828601610b72565b90969095509350505050565b600080600060408486031215610c0b57600080fd5b83359250602084013567ffffffffffffffff811115610c2957600080fd5b610c3586828701610b72565b9497909650939450505050565b600060208284031215610c5457600080fd5b5035919050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112610c8857600080fd5b83018035915067ffffffffffffffff821115610ca357600080fd5b602001915036819003821315610aff57600080fd5b600060018201610cd857634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680610d0957607f821691505b602082108103610d2957634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561068b57600081815260208120601f850160051c81016020861015610d565750805b601f850160051c820191505b81811015610d7557828155600101610d62565b505050505050565b815167ffffffffffffffff811115610d9757610d97610cdf565b610dab81610da58454610cf5565b84610d2f565b602080601f831160018114610de05760008415610dc85750858301515b600019600386901b1c1916600185901b178555610d75565b600085815260208120601f198616915b82811015610e0f57888601518255948401946001909101908401610df0565b5085821015610e2d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208083528351808285015260005b81811015610e6a57858101830151858201604001528201610e4e565b81811115610e7c576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220ae020e48cc3c28b4c7875224126fd3550753c52dddbfc9cfc55d84de34493be764736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/metadata/ERC1155MetadataStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155MetadataStorage","sourceName":"src/token/ERC1155/facets/metadata/ERC1155MetadataStorage.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122079cffcb41bc14190574bf623533845ad5c09cdf5c4dedda663623454a83b0fce64736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122079cffcb41bc14190574bf623533845ad5c09cdf5c4dedda663623454a83b0fce64736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/metadata/IERC1155Metadata":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155Metadata","sourceName":"src/token/ERC1155/facets/metadata/IERC1155Metadata.sol","abi":[{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/metadata/IERC1155MetadataAdmin":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155MetadataAdmin","sourceName":"src/token/ERC1155/facets/metadata/IERC1155MetadataAdmin.sol","abi":[{"inputs":[],"name":"lockBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockFallbackURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockURISuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"lockURIUntil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newFallbackURI","type":"string"}],"name":"setFallbackURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"newTokenURI","type":"string"}],"name":"setURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"string[]","name":"newTokenURIs","type":"string[]"}],"name":"setURIBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newURIPrefix","type":"string"}],"name":"setURISuffix","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/metadata/IERC1155MetadataEvents":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155MetadataEvents","sourceName":"src/token/ERC1155/facets/metadata/IERC1155MetadataEvents.sol","abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"URI","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/metadata/IERC1155MetadataExtra":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155MetadataExtra","sourceName":"src/token/ERC1155/facets/metadata/IERC1155MetadataExtra.sol","abi":[{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURILocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fallbackURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fallbackURILocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLockedTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"uriBatch","outputs":[{"internalType":"string[]","name":"","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uriSuffix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uriSuffixLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/minting/ERC1155MintByOwner":{"address":{"3":"0x00232A8326af43515C8413A00b49282e25f50017","4":"0x3D8C1631b5666D2E0C9a3D5618d41d4E70DCcb84","rinkeby":"0x3D8C1631b5666D2E0C9a3D5618d41d4E70DCcb84","ropsten":"0x00232A8326af43515C8413A00b49282e25f50017"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155MintByOwner","sourceName":"src/token/ERC1155/facets/minting/ERC1155MintByOwner.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mintByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b50610339806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80635135bec114610030575b600080fd5b61004361003e366004610192565b610045565b005b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146100e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e6572000000604482015260640160405180910390fd5b6040517fb164884b000000000000000000000000000000000000000000000000000000008152309063b164884b9061012b908790879087908790600401610282565b600060405180830381600087803b15801561014557600080fd5b505af1158015610159573d6000803e3d6000fd5b5050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156101a857600080fd5b843573ffffffffffffffffffffffffffffffffffffffff811681146101cc57600080fd5b93506020850135925060408501359150606085013567ffffffffffffffff808211156101f757600080fd5b818701915087601f83011261020b57600080fd5b81358181111561021d5761021d610163565b604051601f8201601f19908116603f0116810190838211818310171561024557610245610163565b816040528281528a602084870101111561025e57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b73ffffffffffffffffffffffffffffffffffffffff8516815260006020858184015284604084015260806060840152835180608085015260005b818110156102d85785810183015185820160a0015282016102bc565b818111156102ea57600060a083870101525b50601f01601f19169290920160a001969550505050505056fea26469706673582212203e7480709fded241f76290028d3a2456f40942830e2cd3f51f94c71f987b0e9164736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80635135bec114610030575b600080fd5b61004361003e366004610192565b610045565b005b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146100e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e6572000000604482015260640160405180910390fd5b6040517fb164884b000000000000000000000000000000000000000000000000000000008152309063b164884b9061012b908790879087908790600401610282565b600060405180830381600087803b15801561014557600080fd5b505af1158015610159573d6000803e3d6000fd5b5050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156101a857600080fd5b843573ffffffffffffffffffffffffffffffffffffffff811681146101cc57600080fd5b93506020850135925060408501359150606085013567ffffffffffffffff808211156101f757600080fd5b818701915087601f83011261020b57600080fd5b81358181111561021d5761021d610163565b604051601f8201601f19908116603f0116810190838211818310171561024557610245610163565b816040528281528a602084870101111561025e57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b73ffffffffffffffffffffffffffffffffffffffff8516815260006020858184015284604084015260806060840152835180608085015260005b818110156102d85785810183015185820160a0015282016102bc565b818111156102ea57600060a083870101525b50601f01601f19169290920160a001969550505050505056fea26469706673582212203e7480709fded241f76290028d3a2456f40942830e2cd3f51f94c71f987b0e9164736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/minting/ERC1155MintByOwnerERC2771":{"address":{"3":"0xBCa9Cd5771322D7BbfabfD4dB816F57195d7B8b1","4":"0xE38322E8201De19c923A0cC16467529a6858174A","rinkeby":"0xE38322E8201De19c923A0cC16467529a6858174A","ropsten":"0xBCa9Cd5771322D7BbfabfD4dB816F57195d7B8b1"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155MintByOwnerERC2771","sourceName":"src/token/ERC1155/facets/minting/ERC1155MintByOwnerERC2771.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mintByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506103b8806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80635135bec114610030575b600080fd5b61004361003e366004610211565b610045565b005b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff16610085610180565b73ffffffffffffffffffffffffffffffffffffffff1614610106576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e6572000000604482015260640160405180910390fd5b6040517fb164884b000000000000000000000000000000000000000000000000000000008152309063b164884b90610148908790879087908790600401610301565b600060405180830381600087803b15801561016257600080fd5b505af1158015610176573d6000803e3d6000fd5b5050505050505050565b600061018a61018f565b905090565b7fdb1d5e345c4903e9a32b6674ecc8b1deaddbbb2551474fb34c9d34becbe7f4205460009073ffffffffffffffffffffffffffffffffffffffff1633036101dd575060131936013560601c90565b503390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806080858703121561022757600080fd5b843573ffffffffffffffffffffffffffffffffffffffff8116811461024b57600080fd5b93506020850135925060408501359150606085013567ffffffffffffffff8082111561027657600080fd5b818701915087601f83011261028a57600080fd5b81358181111561029c5761029c6101e2565b604051601f8201601f19908116603f011681019083821181831017156102c4576102c46101e2565b816040528281528a60208487010111156102dd57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b73ffffffffffffffffffffffffffffffffffffffff8516815260006020858184015284604084015260806060840152835180608085015260005b818110156103575785810183015185820160a00152820161033b565b8181111561036957600060a083870101525b50601f01601f19169290920160a001969550505050505056fea2646970667358221220288de6284c77471571e78fe55ff1f1a66b873d4bb249ae5a897a3a30037eeb0064736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80635135bec114610030575b600080fd5b61004361003e366004610211565b610045565b005b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff16610085610180565b73ffffffffffffffffffffffffffffffffffffffff1614610106576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e6572000000604482015260640160405180910390fd5b6040517fb164884b000000000000000000000000000000000000000000000000000000008152309063b164884b90610148908790879087908790600401610301565b600060405180830381600087803b15801561016257600080fd5b505af1158015610176573d6000803e3d6000fd5b5050505050505050565b600061018a61018f565b905090565b7fdb1d5e345c4903e9a32b6674ecc8b1deaddbbb2551474fb34c9d34becbe7f4205460009073ffffffffffffffffffffffffffffffffffffffff1633036101dd575060131936013560601c90565b503390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806080858703121561022757600080fd5b843573ffffffffffffffffffffffffffffffffffffffff8116811461024b57600080fd5b93506020850135925060408501359150606085013567ffffffffffffffff8082111561027657600080fd5b818701915087601f83011261028a57600080fd5b81358181111561029c5761029c6101e2565b604051601f8201601f19908116603f011681019083821181831017156102c4576102c46101e2565b816040528281528a60208487010111156102dd57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b73ffffffffffffffffffffffffffffffffffffffff8516815260006020858184015284604084015260806060840152835180608085015260005b818110156103575785810183015185820160a00152820161033b565b8181111561036957600060a083870101525b50601f01601f19169290920160a001969550505050505056fea2646970667358221220288de6284c77471571e78fe55ff1f1a66b873d4bb249ae5a897a3a30037eeb0064736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/minting/ERC1155MintByRole":{"address":{"3":"0x3c9BA6fd0b1cd2D3C26a193A760a05E7169e9B5e","4":"0x39bc4AbD6aDD4FE5D0dCcA8778E9fCd8D9a31b76","rinkeby":"0x39bc4AbD6aDD4FE5D0dCcA8778E9fCd8D9a31b76","ropsten":"0x3c9BA6fd0b1cd2D3C26a193A760a05E7169e9B5e"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155MintByRole","sourceName":"src/token/ERC1155/facets/minting/ERC1155MintByRole.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mintByRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b50610740806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806372642f5614610046578063a217fddf1461005b578063d539139314610075575b600080fd5b61005961005436600461046b565b61009c565b005b610063600081565b60405190815260200160405180910390f35b6100637f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66100c681610141565b6040517fb164884b000000000000000000000000000000000000000000000000000000008152309063b164884b906101089088908890889088906004016105b7565b600060405180830381600087803b15801561012257600080fd5b505af1158015610136573d6000803e3d6000fd5b505050505050505050565b61014b813361014e565b50565b60008281527f2e59e4c2e927cdddbb64e181e0668d9a0fa70dd88f94d999cd87d5496a20da626020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166101f8576101ad816101fc565b6101b8836020610225565b6040516020016101c99291906105fc565b60408051601f198184030181529082905262461bcd60e51b82526101ef9160040161067d565b60405180910390fd5b5050565b606061021f73ffffffffffffffffffffffffffffffffffffffff83166014610225565b92915050565b606060006102348360026106a6565b61023f9060026106c5565b67ffffffffffffffff81111561025757610257610455565b6040519080825280601f01601f191660200182016040528015610281576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106102b8576102b86106dd565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061031b5761031b6106dd565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006103578460026106a6565b6103629060016106c5565b90505b60018111156103ff577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106103a3576103a36106dd565b1a60f81b8282815181106103b9576103b96106dd565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936103f8816106f3565b9050610365565b50831561044e5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016101ef565b9392505050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561048157600080fd5b843573ffffffffffffffffffffffffffffffffffffffff811681146104a557600080fd5b93506020850135925060408501359150606085013567ffffffffffffffff808211156104d057600080fd5b818701915087601f8301126104e457600080fd5b8135818111156104f6576104f6610455565b604051601f8201601f19908116603f0116810190838211818310171561051e5761051e610455565b816040528281528a602084870101111561053757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60005b8381101561057657818101518382015260200161055e565b83811115610585576000848401525b50505050565b600081518084526105a381602086016020860161055b565b601f01601f19169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff851681528360208201528260408201526080606082015260006105f2608083018461058b565b9695505050505050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161063481601785016020880161055b565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000601791840191820152835161067181602884016020880161055b565b01602801949350505050565b60208152600061044e602083018461058b565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156106c0576106c0610690565b500290565b600082198211156106d8576106d8610690565b500190565b634e487b7160e01b600052603260045260246000fd5b60008161070257610702610690565b50600019019056fea26469706673582212205192bd73b4ae3f4b62e644ec5a1aa1661738e9639c4b53728ef3ad3add09993564736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100415760003560e01c806372642f5614610046578063a217fddf1461005b578063d539139314610075575b600080fd5b61005961005436600461046b565b61009c565b005b610063600081565b60405190815260200160405180910390f35b6100637f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66100c681610141565b6040517fb164884b000000000000000000000000000000000000000000000000000000008152309063b164884b906101089088908890889088906004016105b7565b600060405180830381600087803b15801561012257600080fd5b505af1158015610136573d6000803e3d6000fd5b505050505050505050565b61014b813361014e565b50565b60008281527f2e59e4c2e927cdddbb64e181e0668d9a0fa70dd88f94d999cd87d5496a20da626020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166101f8576101ad816101fc565b6101b8836020610225565b6040516020016101c99291906105fc565b60408051601f198184030181529082905262461bcd60e51b82526101ef9160040161067d565b60405180910390fd5b5050565b606061021f73ffffffffffffffffffffffffffffffffffffffff83166014610225565b92915050565b606060006102348360026106a6565b61023f9060026106c5565b67ffffffffffffffff81111561025757610257610455565b6040519080825280601f01601f191660200182016040528015610281576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106102b8576102b86106dd565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061031b5761031b6106dd565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006103578460026106a6565b6103629060016106c5565b90505b60018111156103ff577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106103a3576103a36106dd565b1a60f81b8282815181106103b9576103b96106dd565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936103f8816106f3565b9050610365565b50831561044e5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016101ef565b9392505050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561048157600080fd5b843573ffffffffffffffffffffffffffffffffffffffff811681146104a557600080fd5b93506020850135925060408501359150606085013567ffffffffffffffff808211156104d057600080fd5b818701915087601f8301126104e457600080fd5b8135818111156104f6576104f6610455565b604051601f8201601f19908116603f0116810190838211818310171561051e5761051e610455565b816040528281528a602084870101111561053757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60005b8381101561057657818101518382015260200161055e565b83811115610585576000848401525b50505050565b600081518084526105a381602086016020860161055b565b601f01601f19169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff851681528360208201528260408201526080606082015260006105f2608083018461058b565b9695505050505050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161063481601785016020880161055b565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000601791840191820152835161067181602884016020880161055b565b01602801949350505050565b60208152600061044e602083018461058b565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156106c0576106c0610690565b500290565b600082198211156106d8576106d8610690565b500190565b634e487b7160e01b600052603260045260246000fd5b60008161070257610702610690565b50600019019056fea26469706673582212205192bd73b4ae3f4b62e644ec5a1aa1661738e9639c4b53728ef3ad3add09993564736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/minting/ERC1155MintByRoleERC2771":{"address":{"3":"0x6320E3De0548951F6614fF3C1b8F26a1fdAeA208","4":"0x0eD4903a1040Be77dFfD2ae968bC6419e2b4593F","rinkeby":"0x0eD4903a1040Be77dFfD2ae968bC6419e2b4593F","ropsten":"0x6320E3De0548951F6614fF3C1b8F26a1fdAeA208"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155MintByRoleERC2771","sourceName":"src/token/ERC1155/facets/minting/ERC1155MintByRoleERC2771.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mintByRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506107a9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806372642f5614610046578063a217fddf1461005b578063d539139314610075575b600080fd5b6100596100543660046104d4565b61009c565b005b610063600081565b60405190815260200160405180910390f35b6100637f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66100c681610141565b6040517fb164884b000000000000000000000000000000000000000000000000000000008152309063b164884b90610108908890889088908890600401610620565b600060405180830381600087803b15801561012257600080fd5b505af1158015610136573d6000803e3d6000fd5b505050505050505050565b6101528161014d610155565b610164565b50565b600061015f610212565b905090565b60008281527f2e59e4c2e927cdddbb64e181e0668d9a0fa70dd88f94d999cd87d5496a20da626020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661020e576101c381610265565b6101ce83602061028e565b6040516020016101df929190610665565b60408051601f198184030181529082905262461bcd60e51b8252610205916004016106e6565b60405180910390fd5b5050565b7fdb1d5e345c4903e9a32b6674ecc8b1deaddbbb2551474fb34c9d34becbe7f4205460009073ffffffffffffffffffffffffffffffffffffffff163303610260575060131936013560601c90565b503390565b606061028873ffffffffffffffffffffffffffffffffffffffff8316601461028e565b92915050565b6060600061029d83600261070f565b6102a890600261072e565b67ffffffffffffffff8111156102c0576102c06104be565b6040519080825280601f01601f1916602001820160405280156102ea576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061032157610321610746565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061038457610384610746565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006103c084600261070f565b6103cb90600161072e565b90505b6001811115610468577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061040c5761040c610746565b1a60f81b82828151811061042257610422610746565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936104618161075c565b90506103ce565b5083156104b75760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610205565b9392505050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156104ea57600080fd5b843573ffffffffffffffffffffffffffffffffffffffff8116811461050e57600080fd5b93506020850135925060408501359150606085013567ffffffffffffffff8082111561053957600080fd5b818701915087601f83011261054d57600080fd5b81358181111561055f5761055f6104be565b604051601f8201601f19908116603f01168101908382118183101715610587576105876104be565b816040528281528a60208487010111156105a057600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60005b838110156105df5781810151838201526020016105c7565b838111156105ee576000848401525b50505050565b6000815180845261060c8160208601602086016105c4565b601f01601f19169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015282604082015260806060820152600061065b60808301846105f4565b9695505050505050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161069d8160178501602088016105c4565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516106da8160288401602088016105c4565b01602801949350505050565b6020815260006104b760208301846105f4565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615610729576107296106f9565b500290565b60008219821115610741576107416106f9565b500190565b634e487b7160e01b600052603260045260246000fd5b60008161076b5761076b6106f9565b50600019019056fea26469706673582212209bf567503d526d7d91404b1a689812b8d757a746880cf936cca2d446a38b933c64736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100415760003560e01c806372642f5614610046578063a217fddf1461005b578063d539139314610075575b600080fd5b6100596100543660046104d4565b61009c565b005b610063600081565b60405190815260200160405180910390f35b6100637f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66100c681610141565b6040517fb164884b000000000000000000000000000000000000000000000000000000008152309063b164884b90610108908890889088908890600401610620565b600060405180830381600087803b15801561012257600080fd5b505af1158015610136573d6000803e3d6000fd5b505050505050505050565b6101528161014d610155565b610164565b50565b600061015f610212565b905090565b60008281527f2e59e4c2e927cdddbb64e181e0668d9a0fa70dd88f94d999cd87d5496a20da626020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661020e576101c381610265565b6101ce83602061028e565b6040516020016101df929190610665565b60408051601f198184030181529082905262461bcd60e51b8252610205916004016106e6565b60405180910390fd5b5050565b7fdb1d5e345c4903e9a32b6674ecc8b1deaddbbb2551474fb34c9d34becbe7f4205460009073ffffffffffffffffffffffffffffffffffffffff163303610260575060131936013560601c90565b503390565b606061028873ffffffffffffffffffffffffffffffffffffffff8316601461028e565b92915050565b6060600061029d83600261070f565b6102a890600261072e565b67ffffffffffffffff8111156102c0576102c06104be565b6040519080825280601f01601f1916602001820160405280156102ea576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061032157610321610746565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061038457610384610746565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006103c084600261070f565b6103cb90600161072e565b90505b6001811115610468577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061040c5761040c610746565b1a60f81b82828151811061042257610422610746565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936104618161075c565b90506103ce565b5083156104b75760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610205565b9392505050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156104ea57600080fd5b843573ffffffffffffffffffffffffffffffffffffffff8116811461050e57600080fd5b93506020850135925060408501359150606085013567ffffffffffffffff8082111561053957600080fd5b818701915087601f83011261054d57600080fd5b81358181111561055f5761055f6104be565b604051601f8201601f19908116603f01168101908382118183101715610587576105876104be565b816040528281528a60208487010111156105a057600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60005b838110156105df5781810151838201526020016105c7565b838111156105ee576000848401525b50505050565b6000815180845261060c8160208601602086016105c4565b601f01601f19169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015282604082015260806060820152600061065b60808301846105f4565b9695505050505050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161069d8160178501602088016105c4565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516106da8160288401602088016105c4565b01602801949350505050565b6020815260006104b760208301846105f4565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615610729576107296106f9565b500290565b60008219821115610741576107416106f9565b500190565b634e487b7160e01b600052603260045260246000fd5b60008161076b5761076b6106f9565b50600019019056fea26469706673582212209bf567503d526d7d91404b1a689812b8d757a746880cf936cca2d446a38b933c64736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/minting/IERC1155MintByOwner":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155MintByOwner","sourceName":"src/token/ERC1155/facets/minting/IERC1155MintByOwner.sol","abi":[{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mintByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/minting/IERC1155MintByRole":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155MintByRole","sourceName":"src/token/ERC1155/facets/minting/IERC1155MintByRole.sol","abi":[{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mintByRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/sales/ERC1155TieredSales":{"address":{"3":"0x355d2D09CF839D2CBBcdDf29198Fb3460ef0A3F5","4":"0x21c5968a500c87E1116fBf034E131795498d8cBf","rinkeby":"0x21c5968a500c87E1116fBf034E131795498d8cBf","ropsten":"0x355d2D09CF839D2CBBcdDf29198Fb3460ef0A3F5"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155TieredSales","sourceName":"src/token/ERC1155/facets/sales/ERC1155TieredSales.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"eligibleForTier","outputs":[{"internalType":"uint256","name":"maxMintable","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintByTier","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onTierAllowlist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"remainingForTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reservedMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"tierMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"tierToTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tierIds","type":"uint256[]"}],"name":"tierToTokenId","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"tiers","outputs":[{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct ITieredSalesInternal.Tier","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReserved","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"name":"walletMintedByTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b50600160005561133c806100256000396000f3fe6080604052600436106100bc5760003560e01c806353367f081161007457806368c7d37c1161004e57806368c7d37c146102f2578063bd2c18f714610322578063c71b0e1c1461034257600080fd5b806353367f08146102715780635897f878146102bd5780635ea2c91b146102dd57600080fd5b80631123f2ef116100a55780631123f2ef146101ae5780632cb9b2ac1461021057806351607bf41461024457600080fd5b8063039af9eb146100c15780630b81f18014610154575b600080fd5b3480156100cd57600080fd5b506100e16100dc36600461105c565b610376565b60405161014b919060006101008201905082518252602083015160208301526001600160a01b036040840151166040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b60405180910390f35b34801561016057600080fd5b506101a061016f36600461105c565b60009081527f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec67154602052604090205490565b60405190815260200161014b565b3480156101ba57600080fd5b506101a06101c9366004611091565b60009182527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbf602090815260408084206001600160a01b0393909316845291905290205490565b34801561021c57600080fd5b507fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbc546101a0565b34801561025057600080fd5b5061026461025f366004611109565b610460565b60405161014b919061114b565b34801561027d57600080fd5b506101a061028c36600461105c565b60009081527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbe602052604090205490565b3480156102c957600080fd5b506101a06102d836600461105c565b610536565b6102f06102eb36600461118f565b6105ad565b005b3480156102fe57600080fd5b5061031261030d3660046111f0565b6106d7565b604051901515815260200161014b565b34801561032e57600080fd5b506101a061033d3660046111f0565b6106f0565b34801561034e57600080fd5b507fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb546101a0565b6103ca604051806101000160405280600081526020016000815260200160006001600160a01b0316815260200160008152602001600081526020016000801916815260200160008152602001600081525090565b5060009081527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbd60209081526040918290208251610100810184528154815260018201549281019290925260028101546001600160a01b0316928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b606060008267ffffffffffffffff81111561047d5761047d61123b565b6040519080825280602002602001820160405280156104a6578160200160208202803683370190505b50905060005b8381101561052e577f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec6715460008686848181106104e9576104e9611251565b9050602002013581526020019081526020016000205482828151811061051157610511611251565b6020908102919091010152806105268161127d565b9150506104ac565b509392505050565b60007fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb8161056384610723565b60008581526003840160209081526040808320546002870190925282206007015492935090916105939190611296565b9050808210156105a557509392505050565b949350505050565b6002600054036106045760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260005561061685858585856107e2565b60008581527f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec6715460205260408082205481517fb164884b00000000000000000000000000000000000000000000000000000000815233600482015260248101919091526044810187905260806064820152608481018390529051309263b164884b9260a4808201939182900301818387803b1580156106b357600080fd5b505af11580156106c7573d6000803e3d6000fd5b5050600160005550505050505050565b60006106e68686868686610b36565b9695505050505050565b60006106e68686868686610bf2565b7fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb90565b7fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbc547fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb805460009261077491611296565b61077d84610ec4565b6107879190611296565b6000848152600283016020526040902060060154909250156107dc57600083815260038201602090815260408083205460028501909252909120600601546107cf9190611296565b6107d990836112ad565b91505b50919050565b3360006107f28783878787610bf2565b90507fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb818711156108655760405162461bcd60e51b815260206004820152600b60248201527f455843454544535f4d415800000000000000000000000000000000000000000060448201526064016105fb565b61086e88610723565b8711156108bd5760405162461bcd60e51b815260206004820152601260248201527f455843454544535f414c4c4f434154494f4e000000000000000000000000000060448201526064016105fb565b600088815260028201602090815260408083206007015460038501909252909120546108e990896112ad565b11156109375760405162461bcd60e51b815260206004820152601260248201527f455843454544535f414c4c4f434154494f4e000000000000000000000000000060448201526064016105fb565b60008881526002808301602052604090912001546001600160a01b03166109cc57600088815260028201602052604090206003015434906109799089906112c5565b11156109c75760405162461bcd60e51b815260206004820152601360248201527f494e53554646494349454e545f414d4f554e540000000000000000000000000060448201526064016105fb565b610a9b565b600088815260028083016020526040909120908101546003909101546001600160a01b03909116906323b872dd9085903090610a09908c906112c5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015610a75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9991906112e4565b505b600088815260048201602090815260408083206001600160a01b038716845290915281208054899290610acf9084906112ad565b9091555050600088815260038201602052604081208054899290610af49084906112ad565b9091555050600088815260028201602052604090206006015415610b2c5786816001016000828254610b2691906112ad565b90915550505b5050505050505050565b60006106e6838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610b7892506106ff915050565b60008981526002919091016020526040902060050154610bed88886040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b1660208201526034810182905260009060540160405160208183030381529060405280519060200120905092915050565b610fcf565b60008581527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbd60205260408120600401547fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb90610c915760405162461bcd60e51b815260206004820152600a60248201527f4e4f545f4558495354530000000000000000000000000000000000000000000060448201526064016105fb565b6000878152600282016020526040902054421015610cf15760405162461bcd60e51b815260206004820152600b60248201527f4e4f545f5354415254454400000000000000000000000000000000000000000060448201526064016105fb565b6000878152600282016020526040902060010154421115610d545760405162461bcd60e51b815260206004820152600d60248201527f414c52454144595f454e4445440000000000000000000000000000000000000060448201526064016105fb565b60008781526004808301602090815260408084206001600160a01b038b1685528252808420548b8552600286019092529092200154610d939190611296565b600088815260028301602052604090206005015490925015610eba57600087815260048201602090815260408083206001600160a01b038a1684529091529020548511610e225760405162461bcd60e51b815260206004820152600f60248201527f4d415845445f414c4c4f57414e4345000000000000000000000000000000000060448201526064016105fb565b610e2f8787878787610b36565b610e7b5760405162461bcd60e51b815260206004820152600f60248201527f4e4f545f414c4c4f574c4953544544000000000000000000000000000000000060448201526064016105fb565b600087815260048201602090815260408083206001600160a01b038a168452909152812054610eaa9087611296565b905080831115610eb8578092505b505b5095945050505050565b7f744f4bd40000000000000000000000000000000000000000000000000000000060009081527fff923f4a67695a9cdd5da4b8580a5a20edf2183c42aa111dd7fc15dc7bed26406020527f35d3cc196fdbb37c639d9ccf02c0ac54b3a84c388495dbf9ab724144133fc6255460ff16610f405750600019919050565b60008281527f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec6715460209081526040808320548084527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea58352818420547f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea6909352908320549092916105a591611296565b600082610fdc8584610fe5565b14949350505050565b600081815b845181101561052e576110168286838151811061100957611009611251565b602002602001015161102a565b9150806110228161127d565b915050610fea565b6000818310611046576000828152602084905260409020611055565b60008381526020839052604090205b9392505050565b60006020828403121561106e57600080fd5b5035919050565b80356001600160a01b038116811461108c57600080fd5b919050565b600080604083850312156110a457600080fd5b823591506110b460208401611075565b90509250929050565b60008083601f8401126110cf57600080fd5b50813567ffffffffffffffff8111156110e757600080fd5b6020830191508360208260051b850101111561110257600080fd5b9250929050565b6000806020838503121561111c57600080fd5b823567ffffffffffffffff81111561113357600080fd5b61113f858286016110bd565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b8181101561118357835183529284019291840191600101611167565b50909695505050505050565b6000806000806000608086880312156111a757600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff8111156111d357600080fd5b6111df888289016110bd565b969995985093965092949392505050565b60008060008060006080868803121561120857600080fd5b8535945061121860208701611075565b935060408601359250606086013567ffffffffffffffff8111156111d357600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161128f5761128f611267565b5060010190565b6000828210156112a8576112a8611267565b500390565b600082198211156112c0576112c0611267565b500190565b60008160001904831182151516156112df576112df611267565b500290565b6000602082840312156112f657600080fd5b8151801515811461105557600080fdfea2646970667358221220ff18fcae64827d5872da29004e21f4d71f6062827952a1f5e5167e0f17090dc464736f6c634300080f0033","deployedBytecode":"0x6080604052600436106100bc5760003560e01c806353367f081161007457806368c7d37c1161004e57806368c7d37c146102f2578063bd2c18f714610322578063c71b0e1c1461034257600080fd5b806353367f08146102715780635897f878146102bd5780635ea2c91b146102dd57600080fd5b80631123f2ef116100a55780631123f2ef146101ae5780632cb9b2ac1461021057806351607bf41461024457600080fd5b8063039af9eb146100c15780630b81f18014610154575b600080fd5b3480156100cd57600080fd5b506100e16100dc36600461105c565b610376565b60405161014b919060006101008201905082518252602083015160208301526001600160a01b036040840151166040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b60405180910390f35b34801561016057600080fd5b506101a061016f36600461105c565b60009081527f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec67154602052604090205490565b60405190815260200161014b565b3480156101ba57600080fd5b506101a06101c9366004611091565b60009182527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbf602090815260408084206001600160a01b0393909316845291905290205490565b34801561021c57600080fd5b507fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbc546101a0565b34801561025057600080fd5b5061026461025f366004611109565b610460565b60405161014b919061114b565b34801561027d57600080fd5b506101a061028c36600461105c565b60009081527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbe602052604090205490565b3480156102c957600080fd5b506101a06102d836600461105c565b610536565b6102f06102eb36600461118f565b6105ad565b005b3480156102fe57600080fd5b5061031261030d3660046111f0565b6106d7565b604051901515815260200161014b565b34801561032e57600080fd5b506101a061033d3660046111f0565b6106f0565b34801561034e57600080fd5b507fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb546101a0565b6103ca604051806101000160405280600081526020016000815260200160006001600160a01b0316815260200160008152602001600081526020016000801916815260200160008152602001600081525090565b5060009081527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbd60209081526040918290208251610100810184528154815260018201549281019290925260028101546001600160a01b0316928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b606060008267ffffffffffffffff81111561047d5761047d61123b565b6040519080825280602002602001820160405280156104a6578160200160208202803683370190505b50905060005b8381101561052e577f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec6715460008686848181106104e9576104e9611251565b9050602002013581526020019081526020016000205482828151811061051157610511611251565b6020908102919091010152806105268161127d565b9150506104ac565b509392505050565b60007fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb8161056384610723565b60008581526003840160209081526040808320546002870190925282206007015492935090916105939190611296565b9050808210156105a557509392505050565b949350505050565b6002600054036106045760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260005561061685858585856107e2565b60008581527f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec6715460205260408082205481517fb164884b00000000000000000000000000000000000000000000000000000000815233600482015260248101919091526044810187905260806064820152608481018390529051309263b164884b9260a4808201939182900301818387803b1580156106b357600080fd5b505af11580156106c7573d6000803e3d6000fd5b5050600160005550505050505050565b60006106e68686868686610b36565b9695505050505050565b60006106e68686868686610bf2565b7fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb90565b7fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbc547fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb805460009261077491611296565b61077d84610ec4565b6107879190611296565b6000848152600283016020526040902060060154909250156107dc57600083815260038201602090815260408083205460028501909252909120600601546107cf9190611296565b6107d990836112ad565b91505b50919050565b3360006107f28783878787610bf2565b90507fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb818711156108655760405162461bcd60e51b815260206004820152600b60248201527f455843454544535f4d415800000000000000000000000000000000000000000060448201526064016105fb565b61086e88610723565b8711156108bd5760405162461bcd60e51b815260206004820152601260248201527f455843454544535f414c4c4f434154494f4e000000000000000000000000000060448201526064016105fb565b600088815260028201602090815260408083206007015460038501909252909120546108e990896112ad565b11156109375760405162461bcd60e51b815260206004820152601260248201527f455843454544535f414c4c4f434154494f4e000000000000000000000000000060448201526064016105fb565b60008881526002808301602052604090912001546001600160a01b03166109cc57600088815260028201602052604090206003015434906109799089906112c5565b11156109c75760405162461bcd60e51b815260206004820152601360248201527f494e53554646494349454e545f414d4f554e540000000000000000000000000060448201526064016105fb565b610a9b565b600088815260028083016020526040909120908101546003909101546001600160a01b03909116906323b872dd9085903090610a09908c906112c5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015610a75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9991906112e4565b505b600088815260048201602090815260408083206001600160a01b038716845290915281208054899290610acf9084906112ad565b9091555050600088815260038201602052604081208054899290610af49084906112ad565b9091555050600088815260028201602052604090206006015415610b2c5786816001016000828254610b2691906112ad565b90915550505b5050505050505050565b60006106e6838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610b7892506106ff915050565b60008981526002919091016020526040902060050154610bed88886040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b1660208201526034810182905260009060540160405160208183030381529060405280519060200120905092915050565b610fcf565b60008581527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbd60205260408120600401547fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb90610c915760405162461bcd60e51b815260206004820152600a60248201527f4e4f545f4558495354530000000000000000000000000000000000000000000060448201526064016105fb565b6000878152600282016020526040902054421015610cf15760405162461bcd60e51b815260206004820152600b60248201527f4e4f545f5354415254454400000000000000000000000000000000000000000060448201526064016105fb565b6000878152600282016020526040902060010154421115610d545760405162461bcd60e51b815260206004820152600d60248201527f414c52454144595f454e4445440000000000000000000000000000000000000060448201526064016105fb565b60008781526004808301602090815260408084206001600160a01b038b1685528252808420548b8552600286019092529092200154610d939190611296565b600088815260028301602052604090206005015490925015610eba57600087815260048201602090815260408083206001600160a01b038a1684529091529020548511610e225760405162461bcd60e51b815260206004820152600f60248201527f4d415845445f414c4c4f57414e4345000000000000000000000000000000000060448201526064016105fb565b610e2f8787878787610b36565b610e7b5760405162461bcd60e51b815260206004820152600f60248201527f4e4f545f414c4c4f574c4953544544000000000000000000000000000000000060448201526064016105fb565b600087815260048201602090815260408083206001600160a01b038a168452909152812054610eaa9087611296565b905080831115610eb8578092505b505b5095945050505050565b7f744f4bd40000000000000000000000000000000000000000000000000000000060009081527fff923f4a67695a9cdd5da4b8580a5a20edf2183c42aa111dd7fc15dc7bed26406020527f35d3cc196fdbb37c639d9ccf02c0ac54b3a84c388495dbf9ab724144133fc6255460ff16610f405750600019919050565b60008281527f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec6715460209081526040808320548084527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea58352818420547f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea6909352908320549092916105a591611296565b600082610fdc8584610fe5565b14949350505050565b600081815b845181101561052e576110168286838151811061100957611009611251565b602002602001015161102a565b9150806110228161127d565b915050610fea565b6000818310611046576000828152602084905260409020611055565b60008381526020839052604090205b9392505050565b60006020828403121561106e57600080fd5b5035919050565b80356001600160a01b038116811461108c57600080fd5b919050565b600080604083850312156110a457600080fd5b823591506110b460208401611075565b90509250929050565b60008083601f8401126110cf57600080fd5b50813567ffffffffffffffff8111156110e757600080fd5b6020830191508360208260051b850101111561110257600080fd5b9250929050565b6000806020838503121561111c57600080fd5b823567ffffffffffffffff81111561113357600080fd5b61113f858286016110bd565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b8181101561118357835183529284019291840191600101611167565b50909695505050505050565b6000806000806000608086880312156111a757600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff8111156111d357600080fd5b6111df888289016110bd565b969995985093965092949392505050565b60008060008060006080868803121561120857600080fd5b8535945061121860208701611075565b935060408601359250606086013567ffffffffffffffff8111156111d357600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161128f5761128f611267565b5060010190565b6000828210156112a8576112a8611267565b500390565b600082198211156112c0576112c0611267565b500190565b60008160001904831182151516156112df576112df611267565b500290565b6000602082840312156112f657600080fd5b8151801515811461105557600080fdfea2646970667358221220ff18fcae64827d5872da29004e21f4d71f6062827952a1f5e5167e0f17090dc464736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/sales/ERC1155TieredSalesERC2771":{"address":{"3":"0xe9832698308707D18dE429Aaf6260355196CEFB7","4":"0xe492bA2dCb567993f3aE0ea95a5752Ef3Ba2ebb9","rinkeby":"0xe492bA2dCb567993f3aE0ea95a5752Ef3Ba2ebb9","ropsten":"0xe9832698308707D18dE429Aaf6260355196CEFB7"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155TieredSalesERC2771","sourceName":"src/token/ERC1155/facets/sales/ERC1155TieredSalesERC2771.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"eligibleForTier","outputs":[{"internalType":"uint256","name":"maxMintable","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mintByTier","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxAllowance","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"onTierAllowlist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"remainingForTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reservedMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"tierMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"tierToTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tierIds","type":"uint256[]"}],"name":"tierToTokenId","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"tiers","outputs":[{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"maxPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"reserved","type":"uint256"},{"internalType":"uint256","name":"maxAllocation","type":"uint256"}],"internalType":"struct ITieredSalesInternal.Tier","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReserved","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"name":"walletMintedByTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b5060016000556113af806100256000396000f3fe6080604052600436106100bc5760003560e01c806353367f081161007457806368c7d37c1161004e57806368c7d37c146102f2578063bd2c18f714610322578063c71b0e1c1461034257600080fd5b806353367f08146102715780635897f878146102bd5780635ea2c91b146102dd57600080fd5b80631123f2ef116100a55780631123f2ef146101ae5780632cb9b2ac1461021057806351607bf41461024457600080fd5b8063039af9eb146100c15780630b81f18014610154575b600080fd5b3480156100cd57600080fd5b506100e16100dc3660046110cf565b610376565b60405161014b919060006101008201905082518252602083015160208301526001600160a01b036040840151166040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b60405180910390f35b34801561016057600080fd5b506101a061016f3660046110cf565b60009081527f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec67154602052604090205490565b60405190815260200161014b565b3480156101ba57600080fd5b506101a06101c9366004611104565b60009182527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbf602090815260408084206001600160a01b0393909316845291905290205490565b34801561021c57600080fd5b507fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbc546101a0565b34801561025057600080fd5b5061026461025f36600461117c565b610460565b60405161014b91906111be565b34801561027d57600080fd5b506101a061028c3660046110cf565b60009081527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbe602052604090205490565b3480156102c957600080fd5b506101a06102d83660046110cf565b610536565b6102f06102eb366004611202565b6105ad565b005b3480156102fe57600080fd5b5061031261030d366004611263565b6106ea565b604051901515815260200161014b565b34801561032e57600080fd5b506101a061033d366004611263565b610703565b34801561034e57600080fd5b507fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb546101a0565b6103ca604051806101000160405280600081526020016000815260200160006001600160a01b0316815260200160008152602001600081526020016000801916815260200160008152602001600081525090565b5060009081527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbd60209081526040918290208251610100810184528154815260018201549281019290925260028101546001600160a01b0316928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b606060008267ffffffffffffffff81111561047d5761047d6112ae565b6040519080825280602002602001820160405280156104a6578160200160208202803683370190505b50905060005b8381101561052e577f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec6715460008686848181106104e9576104e96112c4565b90506020020135815260200190815260200160002054828281518110610511576105116112c4565b602090810291909101015280610526816112f0565b9150506104ac565b509392505050565b60007fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb8161056384610736565b60008581526003840160209081526040808320546002870190925282206007015492935090916105939190611309565b9050808210156105a557509392505050565b949350505050565b6002600054036106045760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260005561061685858585856107f5565b3063b164884b610624610b54565b7f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec67154600089815260209190915260408082205490517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b03909316600484015260248301526044820188905260806064830152608482015260a401600060405180830381600087803b1580156106c657600080fd5b505af11580156106da573d6000803e3d6000fd5b5050600160005550505050505050565b60006106f98686868686610b63565b9695505050505050565b60006106f98686868686610c1f565b7fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb90565b7fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbc547fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb805460009261078791611309565b61079084610ef1565b61079a9190611309565b6000848152600283016020526040902060060154909250156107ef57600083815260038201602090815260408083205460028501909252909120600601546107e29190611309565b6107ec9083611320565b91505b50919050565b60006107ff610b54565b905060006108108783878787610c1f565b90507fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb818711156108835760405162461bcd60e51b815260206004820152600b60248201527f455843454544535f4d415800000000000000000000000000000000000000000060448201526064016105fb565b61088c88610736565b8711156108db5760405162461bcd60e51b815260206004820152601260248201527f455843454544535f414c4c4f434154494f4e000000000000000000000000000060448201526064016105fb565b600088815260028201602090815260408083206007015460038501909252909120546109079089611320565b11156109555760405162461bcd60e51b815260206004820152601260248201527f455843454544535f414c4c4f434154494f4e000000000000000000000000000060448201526064016105fb565b60008881526002808301602052604090912001546001600160a01b03166109ea5760008881526002820160205260409020600301543490610997908990611338565b11156109e55760405162461bcd60e51b815260206004820152601360248201527f494e53554646494349454e545f414d4f554e540000000000000000000000000060448201526064016105fb565b610ab9565b600088815260028083016020526040909120908101546003909101546001600160a01b03909116906323b872dd9085903090610a27908c90611338565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015610a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab79190611357565b505b600088815260048201602090815260408083206001600160a01b038716845290915281208054899290610aed908490611320565b9091555050600088815260038201602052604081208054899290610b12908490611320565b9091555050600088815260028201602052604090206006015415610b4a5786816001016000828254610b449190611320565b90915550505b5050505050505050565b6000610b5e610ffc565b905090565b60006106f9838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610ba59250610712915050565b60008981526002919091016020526040902060050154610c1a88886040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b1660208201526034810182905260009060540160405160208183030381529060405280519060200120905092915050565b611042565b60008581527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbd60205260408120600401547fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb90610cbe5760405162461bcd60e51b815260206004820152600a60248201527f4e4f545f4558495354530000000000000000000000000000000000000000000060448201526064016105fb565b6000878152600282016020526040902054421015610d1e5760405162461bcd60e51b815260206004820152600b60248201527f4e4f545f5354415254454400000000000000000000000000000000000000000060448201526064016105fb565b6000878152600282016020526040902060010154421115610d815760405162461bcd60e51b815260206004820152600d60248201527f414c52454144595f454e4445440000000000000000000000000000000000000060448201526064016105fb565b60008781526004808301602090815260408084206001600160a01b038b1685528252808420548b8552600286019092529092200154610dc09190611309565b600088815260028301602052604090206005015490925015610ee757600087815260048201602090815260408083206001600160a01b038a1684529091529020548511610e4f5760405162461bcd60e51b815260206004820152600f60248201527f4d415845445f414c4c4f57414e4345000000000000000000000000000000000060448201526064016105fb565b610e5c8787878787610b63565b610ea85760405162461bcd60e51b815260206004820152600f60248201527f4e4f545f414c4c4f574c4953544544000000000000000000000000000000000060448201526064016105fb565b600087815260048201602090815260408083206001600160a01b038a168452909152812054610ed79087611309565b905080831115610ee5578092505b505b5095945050505050565b7f744f4bd40000000000000000000000000000000000000000000000000000000060009081527fff923f4a67695a9cdd5da4b8580a5a20edf2183c42aa111dd7fc15dc7bed26406020527f35d3cc196fdbb37c639d9ccf02c0ac54b3a84c388495dbf9ab724144133fc6255460ff16610f6d5750600019919050565b60008281527f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec6715460209081526040808320548084527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea58352818420547f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea6909352908320549092916105a591611309565b7fdb1d5e345c4903e9a32b6674ecc8b1deaddbbb2551474fb34c9d34becbe7f420546000906001600160a01b0316330361103d575060131936013560601c90565b503390565b60008261104f8584611058565b14949350505050565b600081815b845181101561052e576110898286838151811061107c5761107c6112c4565b602002602001015161109d565b915080611095816112f0565b91505061105d565b60008183106110b95760008281526020849052604090206110c8565b60008381526020839052604090205b9392505050565b6000602082840312156110e157600080fd5b5035919050565b80356001600160a01b03811681146110ff57600080fd5b919050565b6000806040838503121561111757600080fd5b82359150611127602084016110e8565b90509250929050565b60008083601f84011261114257600080fd5b50813567ffffffffffffffff81111561115a57600080fd5b6020830191508360208260051b850101111561117557600080fd5b9250929050565b6000806020838503121561118f57600080fd5b823567ffffffffffffffff8111156111a657600080fd5b6111b285828601611130565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156111f6578351835292840192918401916001016111da565b50909695505050505050565b60008060008060006080868803121561121a57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff81111561124657600080fd5b61125288828901611130565b969995985093965092949392505050565b60008060008060006080868803121561127b57600080fd5b8535945061128b602087016110e8565b935060408601359250606086013567ffffffffffffffff81111561124657600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611302576113026112da565b5060010190565b60008282101561131b5761131b6112da565b500390565b60008219821115611333576113336112da565b500190565b6000816000190483118215151615611352576113526112da565b500290565b60006020828403121561136957600080fd5b815180151581146110c857600080fdfea264697066735822122084ea8630b070460108fa4388d0e02fc06325810f20c653ca92da37c48b5e49e264736f6c634300080f0033","deployedBytecode":"0x6080604052600436106100bc5760003560e01c806353367f081161007457806368c7d37c1161004e57806368c7d37c146102f2578063bd2c18f714610322578063c71b0e1c1461034257600080fd5b806353367f08146102715780635897f878146102bd5780635ea2c91b146102dd57600080fd5b80631123f2ef116100a55780631123f2ef146101ae5780632cb9b2ac1461021057806351607bf41461024457600080fd5b8063039af9eb146100c15780630b81f18014610154575b600080fd5b3480156100cd57600080fd5b506100e16100dc3660046110cf565b610376565b60405161014b919060006101008201905082518252602083015160208301526001600160a01b036040840151166040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b60405180910390f35b34801561016057600080fd5b506101a061016f3660046110cf565b60009081527f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec67154602052604090205490565b60405190815260200161014b565b3480156101ba57600080fd5b506101a06101c9366004611104565b60009182527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbf602090815260408084206001600160a01b0393909316845291905290205490565b34801561021c57600080fd5b507fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbc546101a0565b34801561025057600080fd5b5061026461025f36600461117c565b610460565b60405161014b91906111be565b34801561027d57600080fd5b506101a061028c3660046110cf565b60009081527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbe602052604090205490565b3480156102c957600080fd5b506101a06102d83660046110cf565b610536565b6102f06102eb366004611202565b6105ad565b005b3480156102fe57600080fd5b5061031261030d366004611263565b6106ea565b604051901515815260200161014b565b34801561032e57600080fd5b506101a061033d366004611263565b610703565b34801561034e57600080fd5b507fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb546101a0565b6103ca604051806101000160405280600081526020016000815260200160006001600160a01b0316815260200160008152602001600081526020016000801916815260200160008152602001600081525090565b5060009081527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbd60209081526040918290208251610100810184528154815260018201549281019290925260028101546001600160a01b0316928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b606060008267ffffffffffffffff81111561047d5761047d6112ae565b6040519080825280602002602001820160405280156104a6578160200160208202803683370190505b50905060005b8381101561052e577f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec6715460008686848181106104e9576104e96112c4565b90506020020135815260200190815260200160002054828281518110610511576105116112c4565b602090810291909101015280610526816112f0565b9150506104ac565b509392505050565b60007fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb8161056384610736565b60008581526003840160209081526040808320546002870190925282206007015492935090916105939190611309565b9050808210156105a557509392505050565b949350505050565b6002600054036106045760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260005561061685858585856107f5565b3063b164884b610624610b54565b7f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec67154600089815260209190915260408082205490517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b03909316600484015260248301526044820188905260806064830152608482015260a401600060405180830381600087803b1580156106c657600080fd5b505af11580156106da573d6000803e3d6000fd5b5050600160005550505050505050565b60006106f98686868686610b63565b9695505050505050565b60006106f98686868686610c1f565b7fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb90565b7fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbc547fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb805460009261078791611309565b61079084610ef1565b61079a9190611309565b6000848152600283016020526040902060060154909250156107ef57600083815260038201602090815260408083205460028501909252909120600601546107e29190611309565b6107ec9083611320565b91505b50919050565b60006107ff610b54565b905060006108108783878787610c1f565b90507fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb818711156108835760405162461bcd60e51b815260206004820152600b60248201527f455843454544535f4d415800000000000000000000000000000000000000000060448201526064016105fb565b61088c88610736565b8711156108db5760405162461bcd60e51b815260206004820152601260248201527f455843454544535f414c4c4f434154494f4e000000000000000000000000000060448201526064016105fb565b600088815260028201602090815260408083206007015460038501909252909120546109079089611320565b11156109555760405162461bcd60e51b815260206004820152601260248201527f455843454544535f414c4c4f434154494f4e000000000000000000000000000060448201526064016105fb565b60008881526002808301602052604090912001546001600160a01b03166109ea5760008881526002820160205260409020600301543490610997908990611338565b11156109e55760405162461bcd60e51b815260206004820152601360248201527f494e53554646494349454e545f414d4f554e540000000000000000000000000060448201526064016105fb565b610ab9565b600088815260028083016020526040909120908101546003909101546001600160a01b03909116906323b872dd9085903090610a27908c90611338565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015610a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab79190611357565b505b600088815260048201602090815260408083206001600160a01b038716845290915281208054899290610aed908490611320565b9091555050600088815260038201602052604081208054899290610b12908490611320565b9091555050600088815260028201602052604090206006015415610b4a5786816001016000828254610b449190611320565b90915550505b5050505050505050565b6000610b5e610ffc565b905090565b60006106f9838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610ba59250610712915050565b60008981526002919091016020526040902060050154610c1a88886040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b1660208201526034810182905260009060540160405160208183030381529060405280519060200120905092915050565b611042565b60008581527fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbd60205260408120600401547fb7471df0c7246ed3d4a380504edfbb03f5845b709c7716243791636e4ba46cbb90610cbe5760405162461bcd60e51b815260206004820152600a60248201527f4e4f545f4558495354530000000000000000000000000000000000000000000060448201526064016105fb565b6000878152600282016020526040902054421015610d1e5760405162461bcd60e51b815260206004820152600b60248201527f4e4f545f5354415254454400000000000000000000000000000000000000000060448201526064016105fb565b6000878152600282016020526040902060010154421115610d815760405162461bcd60e51b815260206004820152600d60248201527f414c52454144595f454e4445440000000000000000000000000000000000000060448201526064016105fb565b60008781526004808301602090815260408084206001600160a01b038b1685528252808420548b8552600286019092529092200154610dc09190611309565b600088815260028301602052604090206005015490925015610ee757600087815260048201602090815260408083206001600160a01b038a1684529091529020548511610e4f5760405162461bcd60e51b815260206004820152600f60248201527f4d415845445f414c4c4f57414e4345000000000000000000000000000000000060448201526064016105fb565b610e5c8787878787610b63565b610ea85760405162461bcd60e51b815260206004820152600f60248201527f4e4f545f414c4c4f574c4953544544000000000000000000000000000000000060448201526064016105fb565b600087815260048201602090815260408083206001600160a01b038a168452909152812054610ed79087611309565b905080831115610ee5578092505b505b5095945050505050565b7f744f4bd40000000000000000000000000000000000000000000000000000000060009081527fff923f4a67695a9cdd5da4b8580a5a20edf2183c42aa111dd7fc15dc7bed26406020527f35d3cc196fdbb37c639d9ccf02c0ac54b3a84c388495dbf9ab724144133fc6255460ff16610f6d5750600019919050565b60008281527f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec6715460209081526040808320548084527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea58352818420547f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea6909352908320549092916105a591611309565b7fdb1d5e345c4903e9a32b6674ecc8b1deaddbbb2551474fb34c9d34becbe7f420546000906001600160a01b0316330361103d575060131936013560601c90565b503390565b60008261104f8584611058565b14949350505050565b600081815b845181101561052e576110898286838151811061107c5761107c6112c4565b602002602001015161109d565b915080611095816112f0565b91505061105d565b60008183106110b95760008281526020849052604090206110c8565b60008381526020839052604090205b9392505050565b6000602082840312156110e157600080fd5b5035919050565b80356001600160a01b03811681146110ff57600080fd5b919050565b6000806040838503121561111757600080fd5b82359150611127602084016110e8565b90509250929050565b60008083601f84011261114257600080fd5b50813567ffffffffffffffff81111561115a57600080fd5b6020830191508360208260051b850101111561117557600080fd5b9250929050565b6000806020838503121561118f57600080fd5b823567ffffffffffffffff8111156111a657600080fd5b6111b285828601611130565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156111f6578351835292840192918401916001016111da565b50909695505050505050565b60008060008060006080868803121561121a57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff81111561124657600080fd5b61125288828901611130565b969995985093965092949392505050565b60008060008060006080868803121561127b57600080fd5b8535945061128b602087016110e8565b935060408601359250606086013567ffffffffffffffff81111561124657600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611302576113026112da565b5060010190565b60008282101561131b5761131b6112da565b500390565b60008219821115611333576113336112da565b500190565b6000816000190483118215151615611352576113526112da565b500290565b60006020828403121561136957600080fd5b815180151581146110c857600080fdfea264697066735822122084ea8630b070460108fa4388d0e02fc06325810f20c653ca92da37c48b5e49e264736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/sales/ERC1155TieredSalesOwnable":{"address":{"3":"0x73fb9dDfA54EC7d0fecC22c88B8e9E98a2C1bF78","4":"0xD6C73dc3D628BC2f7d422350cEaB79C5f7e878F7","rinkeby":"0xD6C73dc3D628BC2f7d422350cEaB79C5f7e878F7","ropsten":"0x73fb9dDfA54EC7d0fecC22c88B8e9E98a2C1bF78"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155TieredSalesOwnable","sourceName":"src/token/ERC1155/facets/sales/ERC1155TieredSalesOwnable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"configureTierTokenId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tierIds","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"configureTierTokenId","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b5061041f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063bbc2d43d1461003b578063cd07091c14610050575b600080fd5b61004e6100493660046102d2565b610063565b005b61004e61005e366004610340565b61011f565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146100ee5760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064015b60405180910390fd5b60009182527f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec67154602052604090912055565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146101a55760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016100e5565b8281146102405760405162461bcd60e51b815260206004820152604360248201527f4552433131353554696572656453616c65734f776e61626c653a20746965724960448201527f647320616e6420746f6b656e496473206d7573742062652073616d65206c656e60648201527f6774680000000000000000000000000000000000000000000000000000000000608482015260a4016100e5565b60005b838110156102cb5782828281811061025d5761025d6103ac565b9050602002013561028b7f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec6715490565b600087878581811061029f5761029f6103ac565b9050602002013581526020019081526020016000208190555080806102c3906103c2565b915050610243565b5050505050565b600080604083850312156102e557600080fd5b50508035926020909101359150565b60008083601f84011261030657600080fd5b50813567ffffffffffffffff81111561031e57600080fd5b6020830191508360208260051b850101111561033957600080fd5b9250929050565b6000806000806040858703121561035657600080fd5b843567ffffffffffffffff8082111561036e57600080fd5b61037a888389016102f4565b9096509450602087013591508082111561039357600080fd5b506103a0878288016102f4565b95989497509550505050565b634e487b7160e01b600052603260045260246000fd5b6000600182016103e257634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220d3ca763758d0b21b81c8e7afec94207345b71fc6fc05627f79d187dda605d07564736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063bbc2d43d1461003b578063cd07091c14610050575b600080fd5b61004e6100493660046102d2565b610063565b005b61004e61005e366004610340565b61011f565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146100ee5760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064015b60405180910390fd5b60009182527f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec67154602052604090912055565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146101a55760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016100e5565b8281146102405760405162461bcd60e51b815260206004820152604360248201527f4552433131353554696572656453616c65734f776e61626c653a20746965724960448201527f647320616e6420746f6b656e496473206d7573742062652073616d65206c656e60648201527f6774680000000000000000000000000000000000000000000000000000000000608482015260a4016100e5565b60005b838110156102cb5782828281811061025d5761025d6103ac565b9050602002013561028b7f46f908971db3fbea57e8a21b2e54575e0e567ff2f950ead3c0dc83f15ec6715490565b600087878581811061029f5761029f6103ac565b9050602002013581526020019081526020016000208190555080806102c3906103c2565b915050610243565b5050505050565b600080604083850312156102e557600080fd5b50508035926020909101359150565b60008083601f84011261030657600080fd5b50813567ffffffffffffffff81111561031e57600080fd5b6020830191508360208260051b850101111561033957600080fd5b9250929050565b6000806000806040858703121561035657600080fd5b843567ffffffffffffffff8082111561036e57600080fd5b61037a888389016102f4565b9096509450602087013591508082111561039357600080fd5b506103a0878288016102f4565b95989497509550505050565b634e487b7160e01b600052603260045260246000fd5b6000600182016103e257634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220d3ca763758d0b21b81c8e7afec94207345b71fc6fc05627f79d187dda605d07564736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/sales/ERC1155TieredSalesStorage":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155TieredSalesStorage","sourceName":"src/token/ERC1155/facets/sales/ERC1155TieredSalesStorage.sol","abi":[],"bytecode":"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122081b0052f92ad80bc33de2928513ccf4f563da783a0df12a1923621f83ab01f3964736f6c634300080f0033","deployedBytecode":"0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122081b0052f92ad80bc33de2928513ccf4f563da783a0df12a1923621f83ab01f3964736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/sales/IERC1155TieredSales":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155TieredSales","sourceName":"src/token/ERC1155/facets/sales/IERC1155TieredSales.sol","abi":[{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"tierToTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tierIds","type":"uint256[]"}],"name":"tierToTokenId","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/sales/IERC1155TieredSalesAdmin":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155TieredSalesAdmin","sourceName":"src/token/ERC1155/facets/sales/IERC1155TieredSalesAdmin.sol","abi":[{"inputs":[{"internalType":"uint256","name":"tierId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"configureTierTokenId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tierIds","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"configureTierTokenId","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/supply/ERC1155SupplyOwnable":{"address":{"3":"0xD01F2668247FC1c7334591457dc1a8e3C6a5a8E4","4":"0x5ca0011fF1695bd67DB02F4fAEA7328Aa9CF5589","rinkeby":"0x5ca0011fF1695bd67DB02F4fAEA7328Aa9CF5589","ropsten":"0xD01F2668247FC1c7334591457dc1a8e3C6a5a8E4"},"artifact":{"_format":"hh-sol-artifact-1","contractName":"ERC1155SupplyOwnable","sourceName":"src/token/ERC1155/facets/supply/ERC1155SupplyOwnable.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"newValues","type":"uint256[]"}],"name":"setMaxSupplyBatch","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b50610392806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806337da577c1461003b5780636cf6a3fa14610050575b600080fd5b61004e610049366004610245565b610063565b005b61004e61005e3660046102b3565b61011f565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146100ee5760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064015b60405180910390fd5b60009182527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea6602052604090912055565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146101a55760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016100e5565b6101b1848484846101b7565b50505050565b7f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea660005b8481101561023d578383828181106101f5576101f561031f565b905060200201358260008888858181106102115761021161031f565b90506020020135815260200190815260200160002081905550808061023590610335565b9150506101db565b505050505050565b6000806040838503121561025857600080fd5b50508035926020909101359150565b60008083601f84011261027957600080fd5b50813567ffffffffffffffff81111561029157600080fd5b6020830191508360208260051b85010111156102ac57600080fd5b9250929050565b600080600080604085870312156102c957600080fd5b843567ffffffffffffffff808211156102e157600080fd5b6102ed88838901610267565b9096509450602087013591508082111561030657600080fd5b5061031387828801610267565b95989497509550505050565b634e487b7160e01b600052603260045260246000fd5b60006001820161035557634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220aa9584fe3da60424d3ae042b26fb769ec9cbacdfc39991e2785fb68354541b1c64736f6c634300080f0033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c806337da577c1461003b5780636cf6a3fa14610050575b600080fd5b61004e610049366004610245565b610063565b005b61004e61005e3660046102b3565b61011f565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146100ee5760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064015b60405180910390fd5b60009182527f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea6602052604090912055565b7fc0ea367cb0174dd5521cd2372c76f8c13e6c1f832c71f1d6e0cbc185c9cc8ed45473ffffffffffffffffffffffffffffffffffffffff1633146101a55760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064016100e5565b6101b1848484846101b7565b50505050565b7f7056dcda885936c7a9d7c6385902b4ab5fb09024caea98652b7189a5f7a28ea660005b8481101561023d578383828181106101f5576101f561031f565b905060200201358260008888858181106102115761021161031f565b90506020020135815260200190815260200160002081905550808061023590610335565b9150506101db565b505050505050565b6000806040838503121561025857600080fd5b50508035926020909101359150565b60008083601f84011261027957600080fd5b50813567ffffffffffffffff81111561029157600080fd5b6020830191508360208260051b85010111156102ac57600080fd5b9250929050565b600080600080604085870312156102c957600080fd5b843567ffffffffffffffff808211156102e157600080fd5b6102ed88838901610267565b9096509450602087013591508082111561030657600080fd5b5061031387828801610267565b95989497509550505050565b634e487b7160e01b600052603260045260246000fd5b60006001820161035557634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220aa9584fe3da60424d3ae042b26fb769ec9cbacdfc39991e2785fb68354541b1c64736f6c634300080f0033","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/facets/supply/IERC1155SupplyAdmin":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155SupplyAdmin","sourceName":"src/token/ERC1155/facets/supply/IERC1155SupplyAdmin.sol","abi":[{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"newValues","type":"uint256[]"}],"name":"setMaxSupplyBatch","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/IERC1155":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155","sourceName":"src/token/ERC1155/IERC1155.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"status","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/IERC1155Events":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155Events","sourceName":"src/token/ERC1155/IERC1155Events.sol","abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}},"token/ERC1155/IERC1155Receiver":{"artifact":{"_format":"hh-sol-artifact-1","contractName":"IERC1155Receiver","sourceName":"src/token/ERC1155/IERC1155Receiver.sol","abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x","deployedBytecode":"0x","linkReferences":{},"deployedLinkReferences":{}}}}}